Внедрение ООП ATM

Я попытался воплотить некоторые базовые операции с банкоматом в объектно-ориентированной манере для практики. Хотелось бы некоторых обзорных указателей с точки зрения структуры, объектно-ориентированных принципов. Также, какими должны быть мои следующие шаги, чтобы хорошо освоить объектно-ориентированный дизайн (я хотел бы читать больше кода, а не книг / видео, это заставило меня забыть о 5-летнем аду учебников).

Предположения. Моя реализация банкомата включает создание пользователя и открытие банковского счета в банкомате.

Банкоматы

Класс учетной записи

  1. Открытый счет
  2. Проверить баланс
  3. Отзывать
  4. Смена PIN-кода
  5. Мини-заявление
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();
            
    }
        
}

Класс пользователя

  1. Создать пользователя
  2. Установить имя
  3. Получить имя
  4. Установить фамилию
  5. Получить фамилию
  6. Установить адрес пользователя
  7. Получить адрес пользователя
  8. Установить номер телефона
  9. Получить номер телефона
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("-------------------------------------");
    }

}

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *