СВЕДЕНИЯ ОБ ОТЛАДКЕ ПРОГРАММЫ И ПРОВЕРКЕ
ЕЕ РАБОТОСПОСОБНОСТИ
В данном пункте сначала следует описать ошибки, которые возникли при отладке программы и способ их устранения.
Результаты выполнения программы представлены на рисунке 7.1.
|
Рисунок 7.1 – Результаты выполнения программы
Результаты работы программы при отсутствии в классе Box метода toString () (определение метода было закомментировано в программе) приведены на рисунке 7.2.
|
Рисунок 7.2 – Результаты работы программы
при отсутствии в классе Box метода toString ()
Результаты работы программы при добавлении в метод main() строки
System.out.printf ("b2==(Object)b3: %s\n", b2.equals((Object)b3)); приведены на рисунке 7.3.
|
Рисунок 7.3 – Результаты работы программы, осуществляющей
вызовы метода equals() из класса Box (выделено синим) и из
суперкласса Object (выделено красным) для сравнения двух объектов с
одинаковыми значениями полей и разными адресами
Проанализируйте значения ссылок на рисунке 7.2 и объясните (опишите здесь) результаты сравнения объектов. Объясните (опишите здесь), какое влияние оказывает изменение типа аргумента (явное преобразование в Object) в вызове метода equals(). Объясните (опишите здесь), почему метод toString () является переопределенным, а метод equals () – перегруженным.
|
|
На тестовых примерах программа выдала ожидаемый результат, что позволяет сделать вывод о ее работоспособности.
ВЫВОД
В ходе выполнения лабораторной работы были исследованы следующие принципы ООП (и их реализация в Java): принцип инкапсуляции и принцип полиморфизма (параметрический полиморфизм и его частный случай – конструкторский полиморфизм).
Разработана программа, манипулирующая объектами класса «Класс1»: объекты создаются, выводится информация о созданных объектах, объекты сравниваются на равенство. В программе демонстрируется операция присвоения ссылки, в результате которой у объекта появляется еще один псевдоним. В программе также демонстрируется сравнение объекта с самим собой, с его копией, с объектом, отличающимся по значениям полей, и с null-ссылкой. С программой проведены эксперименты, показывающие разницу между переопределенным (override) методом и перегруженным (overload).
Класс «Класс1» является классом, по шаблону которого создаются объекты – экземпляры класса. Поэтому все его члены (переменные и методы) являются экземплярными , а статических переменных и методов в классе нет.
Переменные скрыты в классе с помощью спецификатора доступа private. Доступ к ним осуществляется с помощью public-методов класса. Класс содержит два перегруженных конструктора (конструкторский полиморфизм).
|
|
В конструкторе с параметрами проблема сокрытия переменных экземпляра локальными параметрами с теми же именами решается с помощью использования ссылки this (ссылка на текущий объект, т.е. объект, запустивший метод).
Любой класс в Java является наследником класса Object. Метод toString() класса «Класс1» переопределяет одноименный метод суперкласса Object, т.к. имеет такую же сигнатуру. Метод equals() класса «Класс1» перегружает одноименный метод суперкласса Object, т.к. сигнатуры у этих методов разные (отличаются типом параметра – параметрический полиморфизм).
Присутствие в классе «Класс1» метода toString() делает невозможным вызов одноименного метода суперкласса Object от имени объекта подкласса.
Метод equals(), определенный в суперклассе, можно вызвать от имени объекта подкласса, если передать в качестве аргумента ссылку на объект суперкласса.
Для вывода результатов работы программы в методе main () применялся метод System.out.printf(), т.к. он позволяет не использовать операцию конкатенации символьных строк, способствующую появлению в памяти «мусорных» объектов.
|
|
|
Дата добавления: 2021-01-21; просмотров: 41; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!