Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб_5 Головков И.Е. 12002108 ООП

.docx
Скачиваний:
3
Добавлен:
26.06.2024
Размер:
170.22 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ (НИУ «БелГУ») ИНСТИТУТ ИНЖЕРЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ

Отчет по лабораторной работе №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()