Я попытался воплотить некоторые базовые операции с банкоматом в объектно-ориентированной манере для практики. Хотелось бы некоторых обзорных указателей с точки зрения структуры, объектно-ориентированных принципов. Также, какими должны быть мои следующие шаги, чтобы хорошо освоить объектно-ориентированный дизайн (я хотел бы читать больше кода, а не книг / видео, это заставило меня забыть о 5-летнем аду учебников).
Предположения. Моя реализация банкомата включает создание пользователя и открытие банковского счета в банкомате.
Банкоматы
Класс учетной записи
- Открытый счет
- Проверить баланс
- Отзывать
- Смена PIN-кода
- Мини-заявление
package templates;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Account {
private long accountBalance;
private List<String> miniStatement;
private boolean accountStatus;
private String accountPIN;
public Account() {
this.accountBalance = 10000;
this.accountStatus = true;
this.accountPIN = "1111";
this.miniStatement = new ArrayList<>();
}
public String doWithdraw(long amount) {
if(this.accountStatus) {
if(getBalance() > 0.00 && amount > 0.00 && getBalance() >= amount) {
this.accountBalance -= amount;
String str = "Account debited with $"+amount;
this.miniStatement.add(str);
return str;
}else
return "Amount entered is high, please enter less amount !!! ";
}else
return "Account is already closed";
}
public double getBalance() {
if(checkAccountStatus())
return this.accountBalance;
return -1.00;
}
public boolean changePIN(String newPin) {
if(checkAccountStatus()) {
this.accountPIN = newPin;
return true;
}
return false;
}
private boolean checkAccountStatus() {
return this.accountStatus;
}
public String closeAccount() {
if(checkAccountStatus()) {
String str = "Please collect $"+ getBalance();
this.accountStatus = false;
return str+". Account is now closed";
}
return "Account is already closed";
}
public Iterator<String> printMiniStatement() {
return this.miniStatement.iterator();
}
}
Класс пользователя
- Создать пользователя
- Установить имя
- Получить имя
- Установить фамилию
- Получить фамилию
- Установить адрес пользователя
- Получить адрес пользователя
- Установить номер телефона
- Получить номер телефона
package templates;
public class User {
private String firstName;
private String lastName;
private String address;
private String phoneNumber;
public User(String firstName,String lastName,String address,String phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.phoneNumber = phoneNumber;
}
public void setFirstName(String fname) {
this.firstName = fname;
}
public String getFirstName() {
return this.firstName;
}
public void setLastName(String lname) {
this.lastName = lname;
}
public String getLastName() {
return this.lastName;
}
public void setAddress(String addr) {
this.address = addr;
}
public String getAddress() {
return this.address;
}
public void setPhoneNumer(String phonenum) {
this.phoneNumber = phonenum;
}
public String getPhoneNumber() {
return this.phoneNumber;
}
}
Главная / Тестовый класс
package test;
import java.util.Iterator;
import templates.*;
public class ATMTest {
public static void main(String[] args) {
Account savings = new Account();
User user1 = new User("Dummy","Name","27, First Floor, Suok-I","8888888888");
System.out.printf("%s%n", "Account Balance is $"+savings.getBalance());
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(50));
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(5540));
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(3350));
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(1090));
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(90));
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(966));
System.out.println("-------------------------------------");
System.out.printf("%s%n", "Account Balance is $"+savings.getBalance());
System.out.println("-------------------------------------");
savings.changePIN("1611");
Iterator<String> itr = savings.printMiniStatement();
System.out.printf("%20s%n", "MINI STATEMENT");
while(itr.hasNext()) {
System.out.printf("%s%n", itr.next());
}
System.out.println("-------------------------------------");
System.out.printf("%s%n", user1.getFirstName());
System.out.printf("%s%n", user1.getLastName());
System.out.printf("%s%n", user1.getAddress());
System.out.printf("%s%n", user1.getPhoneNumber());
System.out.println("-------------------------------------");
user1.setFirstName("Rain");
user1.setLastName("Man");
user1.setAddress("32, Second Floor, Suok-I");
user1.setPhoneNumer("9999999999");
System.out.printf("%s%n", user1.getFirstName());
System.out.printf("%s%n", user1.getLastName());
System.out.printf("%s%n", user1.getAddress());
System.out.printf("%s%n", user1.getPhoneNumber());
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.closeAccount());
System.out.println("-------------------------------------");
System.out.printf("%s%n", savings.doWithdraw(1111));
System.out.println("-------------------------------------");
}
}