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

Lab4 ООП

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

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

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

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

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

Протокол

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

«Механизм наследования»

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

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

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

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

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

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

Одесса 2018

Задание 1

Класс Animal

Поля

public String Name

Кличка

public int age

Возраст

public String gender

Пол

Методы

public Animal(String name, int age, String gender)

Конструктор, принимает имя, возраст и пол

public void makeSound()

Выводит в консоль «звук» животного

Код

public class Animal { public String Name; public int age; public String gender; public Animal(String name, int age, String gender) { Name = name; this.age = age; this.gender = gender; } public void makeSound(){ System.out.println("Makes sound"); } }

Класс Dog – наследник Animal

Поля

Аналогичны суперклассу

Методы

public Dog(String name, int age, String gender)

Конструктор, принимает имя, возраст и пол

@Override

public void makeSound()

Выводит в консоль «звук» животного

Код

public class Dog extends Animal { public Dog(String name, int age, String gender) { super(name, age, gender); } @Override public void makeSound() { System.out.println("Gav-Gav"); } }

Класс Frog – наследник Animal

Поля

Аналогичны суперклассу

Методы

public Frog(String name, int age, String gender)

Конструктор, принимает имя, возраст и пол

@Override

public void makeSound()

Выводит в консоль «звук» животного

Код

public class Frog extends Animal { public Frog(String name, int age, String gender) { super(name, age, gender); } @Override public void makeSound() { System.out.println("Kva-Kva"); } }

Класс Cat – наследник Animal

Поля

Аналогичны суперклассу

Методы

public Cat(String name, int age, String gender)

Конструктор, принимает имя, возраст и пол

@Override

public void makeSound()

Выводит в консоль «звук» животного

Код

public class Cat extends Animal { public Cat(String name, int age, String gender) { super(name, age, gender); } @Override public void makeSound() { System.out.println("Meou-Meou"); } }

Класс Kitten – наследник Cat

Поля

Аналогичны суперклассу

Методы

public Kitten(String name, int age)

Конструктор, принимает имя и возраст

@Override

public void makeSound()

Выводит в консоль «звук» животного

Код

public class Kitten extends Cat { public Kitten(String name, int age) { super(name, age, "female"); } @Override public void makeSound() { System.out.println("Miay-Miay"); } }

Класс Tomcat – наследник Cat

Поля

Аналогичны суперклассу

Методы

public Tomcat(String name, int age)

Конструктор, принимает имя и возраст

@Override

public void makeSound()

Выводит в консоль «звук» животного

Код

public class Tomcat extends Cat { public Tomcat(String name, int age) { super(name, age, "male"); } @Override public void makeSound() { System.out.println("What is tomcat?"); } }

Задание 2

Класс Bank

Поля

private Client client;

Объект клиента

private double balance;

Сумма на счету

private float percent;

Проценты по ставке

Методы

public Bank(Client client, double balance, float percent)

Конструктор, принимает объект клиента, сумму на счету и процентную ставку

public Client getClient()

Возвращает объект клиента

public double getBalance()

Возвращает баланс

public float getPercent()

Возвращает процентную ставку

public void setClient(Client client)

Устанавливает объект клиента

public void setBalance(double balance)

Устанавливает баланс

public void setPercent(float percent)

Устанавливает процентную ставку

public double countPercent(int period)

Высчитывает проценты

Код

public class Bank { private Client client; private double balance; private float percent; public Bank(Client client, double balance, float percent) { this.client = client; this.balance = balance; this.percent = percent; } public Client getClient() { return client; } public double getBalance() { return balance; } public float getPercent() { return percent; } public void setClient(Client client) { this.client = client; } public void setBalance(double balance) { this.balance = balance; } public void setPercent(float percent) { this.percent = percent; } public double countPercent(int period){ return 0; } }

Класс Deposit – наследник Bank

Поля

Аналогичны суперклассу

Методы

public Deposit(Client client, double balance, float percent)

Конструктор, принимает объект клиента, сумму на счету и процентную ставку

@Override public double countPercent(int period)

Высчитывает проценты по депозитному счету

Код

public class Deposit extends Bank { public Deposit(Client client, double balance, float percent) { super(client, balance, percent); } @Override public double countPercent(int period) { return getBalance() < 1000 && getBalance() > 0 ? 0 : (getBalance()/100)*getPercent()*period; } }

Класс Credit – наследник Bank

Поля

Аналогичны суперклассу

Методы

public Credit(Client client, double balance, float percent)

Конструктор, принимает объект клиента, сумму на счету и процентную ставку

@Override public double countPercent(int period)

Высчитывает проценты по кредитному счету

Код

public class Credit extends Bank { public Credit(Client client, double balance, float percent) { super(client, balance, percent); } @Override public double countPercent(int period) { if(getClient() instanceof Entity && period > 2) return (getBalance()/100)*getPercent()*(period - 2); else if(getClient() instanceof Individual && period > 3) return (getBalance()/100)*getPercent()*(period-3); else return 0; } }

Класс Mortgage – наследник Bank

Поля

Аналогичны суперклассу

Методы

public Mortgage(Client client, double balance, float percent)

Конструктор, принимает объект клиента, сумму на счету и процентную ставку

@Override public double countPercent(int period)

Высчитывает проценты по ипотечному счету

Код

public class Mortgage extends Bank { public Mortgage(Client client, double balance, float percent) { super(client, balance, percent); } @Override public double countPercent(int period) { if(getClient() instanceof Entity){ return period <= 12 ? (getBalance()/200)*getPercent()*period : (getBalance()/200)*getPercent()*period + (getBalance()/200)*getPercent()*(period-12); } else{ return period <= 6 ? 0 : (getBalance()/200)*getPercent()*(period-6); } } }

Класс Client

Поля

private String name;

Имя клиента

private String adress;

Адрес клиента

Методы

public Client(String name, String adress)

Конструктор, принимает имя и адрес клиента

public String getName()

Возвращает имя клиета

public String getAdress()

Возвращает адрес клиента

public void setName(String name)

Устанавливает имя клиента

public void setAdress(String adress)

Устанавливает адрес клиента

Код

public class Client{ private String name; private String adress; public Client(String name, String adress) { this.name = name; this.adress = adress; } public String getName() { return name; } public String getAdress() { return adress; } public void setName(String name) { this.name = name; } public void setAdress(String adress) { this.adress = adress; } @Override public String toString() { return "Client{" + "name='" + name + '\'' + ", adress='" + adress + '\'' + '}'; } }

Класс Individual – наследник Client

Код

public class Individual extends Client { public Individual(String name, String adress) { super(name, adress); } }

Класс Entity – наследник Client

Код

public class Entity extends Client { public Entity(String name, String adress) { super(name, adress); } }

Задание 3

Класс Point3D

Поля

private int x

Координата по x(Наследуется от суперкласса)

private int y

Координата по y(Наследуется от суперкласса)

private int z

Координата по z

Методы

public Point3D()

Конструктор, создает точку с координатами (0, 0, 0)

public Point3D(int x, int y, int z)

Конструктор, создает точку с координатами (x, y, z)

public Point3D(Point3D p)

Конструктор, создает точку с координатами переданной в него точки

public int getZ()

Возвращает точку z

public void setZ(int z)

Устанавливает точку z

@Override public void setLocation(int x, int y)

Изменяет координаты точки

public void setLocation(int x, int y, int z)

Изменяет координаты точки

@Override public double distanceFromOrigin()

Возвращает расстояние от точки начала координат до текущей точки

public double distance(Point3D p)

Возвращает расстояние от переданной точки до текущей точки

public void translate(int dx, int dy, int dz)

Сдвигает точку

Код

public class Point3D extends Point { private int z; public Point3D() { this(0,0,0); } public Point3D(int x, int y, int z) { super(x, y); this.z = z; } public Point3D(Point3D p) { super(p.getX(), p.getY()); this.z = p.getZ(); } public int getZ() { return z; } public void setZ(int z) { this.z = z; } @Override public void setLocation(int x, int y) { super.setLocation(x, y); this.z = 0; } public void setLocation(int x, int y, int z){ setX(x); setY(y); this.z = z; } @Override public double distanceFromOrigin() { return distance(new Point3D()); } public double distance(Point3D p) { int dx = getX() - p.getX(); int dy = getY() - p.getY(); int dz = z - p.getZ(); return Math.sqrt(dx * dx + dy * dy + dz * dz); } public void translate(int dx, int dy, int dz) { setLocation(getX() + dx, getY() + dy, z + dz); } @Override public String toString() { return "Point3D{" + super.toString() + "z=" + z + '}'; } }

Выводы

В ходе выполнения лабораторной работы были изучены такие темы как: наследование, полиморфизм, переопределение методов.

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