
Лаб_5 Головков И.Е. 12002108 ООП
.docx
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ (НИУ «БелГУ») ИНСТИТУТ ИНЖЕРЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ
Отчет по лабораторной работе №5
Вариант №5 Тема работы «Наследование. Переопределение методов. Класс Object.» по дисциплине «Объектно-ориентированное программирование»
студента очного отделения
2 курса группы 12002108
Головкова Игоря Евгеньевича
Проверил:
Резников Н. Г.
Белгород 2022
Цель работы: получить основные понятия по следующим разделам языка Java: наследование, переопределение методов, класс Object.
Общая постановка задачи:
1. Изучить предлагаемый теоретический материал, а также лекционный
материал по данной теме.
2. Разработать класс, описанный в Вашем варианте задания. Класс должен
содержать следующие элементы: скрытые поля, конструкторы с
параметрами и без параметров, методы. Функциональные элементы
класса должны обеспечивать непротиворечивый, полный, минимальный
и удобный интерфейс класса. При возникновении ошибок должны
выбрасываться исключения.
3. В разрабатываемом классе должны быть переопределены следующие
методы класса Object:
boolean equals(Object ob) – предназначен для сравнения
содержимого двух объектов;
int hashCode() – возвращает хэш-код объекта;
String toString() – возвращает представление объекта в виде
строки.
4. Для разработанного класса создать класс-наследник или же создать
базовый абстрактный класс, для которого разработанный класс будет
наследником.
5. В программе должна выполняться проверка всех разработанных классов.
Для проверки необходимо создать отдельный класс с методом main.
6. Набрать программу и отладить её работу в среде NetBeans IDE.
7. Подобрать тестовые данные. Протестировать.
8. Оформить отчет по лабораторной работе, включающий:
o титульный лист;
o цель работы;
o постановку задачи для Вашего варианта;
o текст программы на языке Java;
o скриншоты результатов выполнения тестовых примеров;
o ответы на контрольные вопросы.
Листинг программы:
Файл 1:
public abstract class Digits { private double veshChast; private double mnimChast; abstract void plus(Complex a, Complex b); abstract void minus(Complex a, Complex b); abstract void umnozh(Complex a, Complex b); }
Файл 2: public class Complex extends Digits{ private double veshChast; private double mnimChast; public Complex(){ setVeshChast(0); setMnimChast(0); } public Complex(double veshChast, double mnimChast) { setVeshChast(veshChast); setMnimChast(mnimChast); } @Override public void plus(Complex a, Complex b) { double summVesh = (a.getVeshChast() + b.getVeshChast()) ; double summMnim = (a.getMnimChast() + b. getMnimChast()); if (summMnim>=0) System.out.println("Summa: " + summVesh + "+" + summMnim + "i"); else System.out.println("Summa: " + summVesh + "-" + summMnim + "i"); } @Override public void minus(Complex a, Complex b) { double raznVesh = (a.getVeshChast() - b.getVeshChast()); double raznMnim = (a.getMnimChast() - b. getMnimChast()); if (raznMnim>=0) System.out.println("Raznost: " + raznVesh + "+" + raznMnim + "i"); else System.out.println("Raznost: " + raznVesh + "-" + raznMnim + "i"); } @Override public void umnozh(Complex a, Complex b) { double proizvVesh = (a.getVeshChast()*b.getVeshChast()-a.getMnimChast()*b.getMnimChast()); double proizvMnim = (a.getMnimChast()*b.getVeshChast()+a.getVeshChast()*b.getMnimChast()); if (proizvMnim>=0) System.out.println("Proizvedenie: " + proizvVesh + "+" + proizvMnim + "i"); else System.out.println("Proizvedenie: " + proizvVesh + "-" + proizvMnim + "i"); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof Complex) { Complex temp = (Complex) obj; if (this.getMnimChast() == temp.getMnimChast() && this.getVeshChast() == temp.getVeshChast()) return true; } return false; } @Override public String toString(){ String str = this.getVeshChast() + "+" + this.getMnimChast() + "i"; return str; } @Override public int hashCode() { int hash = 10; hash = (int) (31 * hash + this.getVeshChast()); hash = (int) (31 * hash + this.getMnimChast()); return hash; } public double getVeshChast() { return veshChast; } public double getMnimChast() { return mnimChast; } public void setVeshChast(double veshChast) { this.veshChast = veshChast; } public void setMnimChast(double mnimChast) { this.mnimChast = mnimChast; } }
Файл 3:
public class Main { public static void main(String[] args) { Complex a = new Complex(); a.setVeshChast(10); a.setMnimChast(-2); Complex b = new Complex(10, 3); Complex operation = new Complex(); operation.plus(a, b); operation.umnozh(b, a); Complex c = new Complex(10, 3); System.out.println("dannye a: " + a.toString()); System.out.println("dannye b: " + b.toString()); System.out.println("dannye c: " + c.toString()); System.out.println("a ravno c:" + a.equals(c)); System.out.println("b ravno c:" + b.equals(c)); System.out.println("hashcode a: " + a.hashCode()); System.out.println("hashcode b: " + b.hashCode()); System.out.println("hashcode c: " + c.hashCode()); } }
Результаты работы java-приложения:
Индивидуальные данные для выполнения работы:
Вариант №5. Составить описание класса для представления
комплексных чисел. Обеспечить выполнение операций сложения, вычитания
и умножения комплексных чисел. Написать программу, демонстрирующую
все разработанные элементы класса.
Контрольные вопросы к защите
1. Дайте определение класса.
Класс — это элемент программного обеспечения, описывающий
абстрактный тип данных и его частичную или полную реализацию.
2. Что такое объект и в чем его отличие от класса?
Объект – это мыслимая или реальная сущность, обладающая
характерным поведением, отличительными характеристиками и являющаяся
важной в предметной области. Объектом является экземпляр класса,
созданный путем вызова конструктора класса.
3. Какие методы доступа к отдельным элементам класса существуют?
Private, protected, public.
4. Для чего используется конструктор?
Конструктор – специальный метод класса, решающий задачу
начальной инициализации полей объекта
5. Что такое метод класса?
Методы – функции, реализующие требуемое поведение класса
6. Перечислите набор методов определенных в классе Object.
protected Object clone() – создает и возвращает копию
вызывающего объекта;
boolean equals(Object ob) – предназначен для переопределения
в подклассах с выполнением общих соглашений о сравнении содержимого
двух объектов;
Class<? extends Object> getClass() – возвращает объект типа
Class;
protected void finalize() – вызывается перед уничтожением
объекта автоматическим сборщиком мусора (garbage collection);
int hashCode() – возвращает хэш-код объекта;
String toString() – возвращает представление объекта в виде
строки.
А также методы notify(), notifyAll() и wait()