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

Lab2 ООП

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

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

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

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

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

Протокол

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

«Создание классов и объектов»

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

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

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

Анищенко Никита Александрович

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

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

Одесса 2018

1.TimeSpan

Поля

  • int houts – количество часов

  • int minutes – количество минут

Методы

  • public TimeSpan(int hours, int minutes) – конструктор принимает и устанавливает количество часов и минут

  • public int getHours() – возвращает целое количество часов

  • public int getMinutes() – возвращает целое количество минут

  • public void add(int hours, int minutes) – добавляет часы и минуты к промежутку

  • public void addTimeSpan(TimeSpan timespan) – добавляет к промежутку время из другого объекта этого-же типа

  • public double getTotalHours() – Возвращает количество часов в промежутке в виде дробного числа

  • public void substract(TimeSpan timespan) – вычитает из промежутка время из другого объекта этого-же типа. Если результат будет неотрицательным. Может выбрасывать исключение (IllegalArgumentException)

  • public void scale(int factor) – увеличивает промежуток в factor раз. Может выбрасывать исключение (IllegalArgumentException)

Код

public class TimeSpan {

private int hours;

private int minutes;

public TimeSpan(int hours, int minutes){

this.hours = hours;

this.minutes = minutes;

}

public int getHours() {

return hours; }

public int getMinutes(){

return minutes + hours*60;

}

public void add(int hours, int minutes) {

int summary = this.getMinutes() + hours*60 + minutes;

this.minutes = summary % 60;

this.hours = (summary - this.minutes)/60;

}

public void addTimeSpan(TimeSpan timespan) {

add(0,timespan.getMinutes());

}

public double getTotalHours(){

return hours + (double)minutes/60;

}

public void substract(TimeSpan timespan){

int summary = this.getMinutes() - timespan.getMinutes();

if (summary < 0) {

throw new IllegalArgumentException();

}

this.minutes = summary % 60;

this.hours = (summary - this.minutes)/60;

}

public void scale(int factor){

if (factor < 0) {

throw new IllegalArgumentException();

}

int summary = this.getMinutes()*factor;

this.minutes = summary % 60;

this.hours = (summary - this.minutes)/60;

}

}

2.BankAccount

Поля

  • private String name – имя владельца аккаунта

  • private double balance – баланс клиента

  • private double transactionFee – комиссия при транзакциях

Методы

  • public BankAccount(String name, double balance, double transactionFee) – конструктор, принимает и устанавливает значения полей имени, баланса и комиссии

  • public String getName() – возвращает имя пользователя

  • public double getBalance() – возвращает баланс пользвателя

  • public double getTransactionFee() = возвращает размер комиссии

  • public void setTransactionFee(double transactionFee) – устанавливает размер комиссии

  • public void deposit(double amount) – увеличивает баланс на amount(>0)

  • public void withdraw (double amount) - уменьшает баланс на amount(>0). Может выбрасывать исключение (IllegalArgumentException)

  • public void transfer(BankAccount receiver, double amount) – осуществляет перевод денег из одного счета (текущего) на другой счет (объект receiver). Первый параметр - счет получателя денег, второй параметр - количество денег, которые переводятся со счета на счет.

Код

public class BankAccount {

private String name;

private double balance;

private double transactionFee;

public BankAccount(String name, double balance, double transactionFee) {

this.name = name;

this.balance = balance;

this.transactionFee = transactionFee;

}

public String getName() {

return name; }

public double getBalance() {

return balance;

}

public double getTransactionFee() {

return transactionFee;

}

public void setTransactionFee(double transactionFee) {

this.transactionFee = transactionFee;

}

public void deposit(double amount){

if(amount > 0) {

balance += amount;

}

}

public void withdraw(double amount){

if(balance >= amount + transactionFee && amount > 0) {

balance -= amount + transactionFee;

}

else{

throw new IllegalArgumentException();

}

}

public void transfer(BankAccount receiver, double amount){

if(amount <= 0){

return;

}

if(balance >= amount + transactionFee){

receiver.deposit(amount);

this.withdraw(amount);

} else if(balance < transactionFee) {

return;

} else if(balance < amount + transactionFee)

{

receiver.deposit(balance - transactionFee);

this.withdraw(balance - transactionFee);

}

}

}

Выводы

В ходе лабораторной работы были созданы два класса, первый – описывает промежуток времени, второй – банковский аккаунт. При создании класов соблюдался принцип инкапсуляции(сокрытия данных).

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