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

Lab5 ООП

.docx
Скачиваний:
24
Добавлен:
14.12.2018
Размер:
20.37 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

Одесский национальный политехнический университет

Институт компьютерных систем

Кафедра информационных систем

Протокол

лабораторной работы № 5

«Механизм полиморфизма»

по дисциплине

«Объектно-ориентированное программирование»

студент группы АИ-171

Анищенко Н. А.

Преподаватели:

Годовиченко Н.А.

Одесса 2018

Задание 1

1. Создайте класс Person, который должен содержать конструктор, геттеры\сеттеры и следующие поля:

  • фамилия;

  • имя;

  • возраст.

Переопределите метод toString(), который должен возвращать строку следующего формата: Человек <фамилия> <имя>, возраст: <возраст>

public class Person {

private String name;

private String lastname;

private int age;

public Person(String name, String lastname, int age) {

this.name = name;

this.lastname = lastname;

this.age = age;

}

public String getName() {

return name;

}

public String getLastname() {

return lastname;

}

public int getAge() {

return age;

}

public void setName(String name) {

this.name = name;

}

public void setLastname(String lastname) {

this.lastname = lastname;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Человек " + lastname +

" " + name +

", возраст: " + age;

}

}

2. Создайте класс Student, который должен наследоваться от класса Person. Добавьте конструктор, геттеры\сеттеры и следующие поля:

  • группа;

  • номер студенческого билета.

Переопределите метод toString(), который должен возвращать строку следующего формата: Студент группы <группа>, <фамилия> <имя>, возраст: <возраст>. Номер студенческого билета: <номер>

public class Student extends Person {

private int group;

private int studentID;

public Student(String name, String lastname, int age, int group, int studentID) {

super(name, lastname, age);

this.group = group;

this.studentID = studentID;

}

public int getGroup() {

return group;

}

public int getStudentID() {

return studentID;

}

public void setGroup(int group) {

this.group = group;

}

public void setStudentID(int studentID) {

this.studentID = studentID;

}

@Override

public String toString() {

return "Студент группы " + group +

", " + getLastname() +

" " + getName() +

", возраст: " + getAge() +

". Номер студенческого билета: "+ studentID;

}

}

3. Создайте класс Lecturer, который должен наследоваться от класса Person. Добавьте конструктор, геттеры\сеттеры и следующие поля:

  • кафедра;

  • зарплата.

Переопределите метод toString(), который должен возвращать строку следующего формата: Преподаватель кафедры <кафедра>, <фамилия> <имя>, возраст: <возраст>. Зарплата: <зарплата>

public class Lecturer extends Person { private String department; private int payment; public Lecturer(String name, String lastname, int age, String department, int payment) { super(name, lastname, age); this.department = department; this.payment = payment; } public String getDepartment() { return department; } public int getPayment() { return payment; }

public void setDepartment(String department) { this.department = department; } public void setPayment(int payment) { this.payment = payment; } @Override public String toString() { return "Преподаватель кафедры " + department + ", " + getLastname() + " " + getName() + ", возраст: " + getAge() + ". Зарплата: " + payment; } }

4. Используя восходящее преобразование, создайте в классе Main несколько объектов классов Student и Lecturer, после чего создайте массив, который бы мог включать объекты классов Person, Student, Lecturer. Заполните массив объектами этих классов.

5. Используя цикл, обратитесь к элементам массива и выведите в консоль, с помощью метода toString(), информацию от каждого объекта.

public class Main { public static void main(String[] args) { Lecturer l1 = new Lecturer("Petr", "Ivanov", 33,"IS", 8000); Lecturer l2 = new Lecturer("Grigory", "Veslov", 60,"IM", 10000); Student s1 = new Student("Vasya", "Pupkin",20,33,43535); Student s2 = new Student("Lesha", "Bobuh",29,55,23985);

Person pArray[] = new Person[]{l1,s1,l2,s2}; for (Person p : pArray) { System.out.println(p.toString()); } } }

2. Модификация программы Draw

Скачайте архив с проектом по этому адресу - http://bit.ly/2y1N0AV​

Данная программа позволяет рисовать простые фигуры. С помощью кнопок на верхней панели выбираете нужную фигуру, после чего в поле рисования зажимаете кнопку мыши и рисуете фигуру нужных размеров.

  1. Откройте проект, прочитайте комментарии, разберитесь как работает приложение;

  2. Используя механизм полиморфизма, модифицируйте программу, добавив возможность выбирать и рисовать эллипсы;

  3. Задание на дополнительный балл. Добавьте в программу кнопку Clear, по нажатию на которую программа должна стирать все фигуры.

Измененные фрагменты кода

в PaintSurface.java

if (shapeType == DrawShape.SHAPE_RECTANGLE) { shape = new Rectangle(); } else if (shapeType == DrawShape.SHAPE_ROUNDED_RECT) { shape = new RoundedRectangle(); } else if(shapeType == DrawShape.SHAPE_ELLIPSE){ shape = new Ellipse(); } else { return; }

в DrawFrame.java

BigTextButton ellipse = new BigTextButton("Ellipse"); ellipse.addActionListener(e->{ surface.setShapeType(DrawShape.SHAPE_ELLIPSE); }); buttonPanel.add(ellipse); BigTextButton clear = new BigTextButton("Clear"); clear.addActionListener(e->{ surface.clear(); }); buttonPanel.add(clear);

в Ellipse.java

public class Ellipse extends DrawShape { public Ellipse() { } public Ellipse(Point startPoint, Point endPoint) { super(startPoint, endPoint); } @Override public Shape getShape(Point startPoint, Point endPoint) { return new Ellipse2D.Double(Math.min(startPoint.getX(), endPoint.getX()), Math.min(startPoint.getY(), endPoint.getY()), Math.abs(startPoint.getX() - endPoint.getX()), Math.abs(startPoint.getY() - endPoint.getY())); } }

Выводы

Входе написания лабораторной работы были изучены принципы полиморфизма. А также была усовершенствована программа Draaw

Соседние файлы в предмете Объектно ориентированное программирование