Lab2 ООП
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
Одесский национальный политехнический университет
Институт компьютерных систем
Кафедра информационных систем
Протокол
лабораторной работы № 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);
}
}
}
Выводы
В ходе лабораторной работы были созданы два класса, первый – описывает промежуток времени, второй – банковский аккаунт. При создании класов соблюдался принцип инкапсуляции(сокрытия данных).