public class testbanking
TRANSCRIPT
Programación Orientada a Objetos
public class TestBanking {
public static void main(String[] args) {
Customer customer;
Account account;
Bank.addCustomer("Diego", "Diaz");
customer = Bank.getCustomer(0);
customer.addAccount(new SavingsAccount(500.00, 0.05));
customer.addAccount(new CheckingAccount(200.00, 500.00));
Bank.addCustomer("Estefani", "Diaz");
customer = Bank.getCustomer(1);
customer.addAccount(new SavingsAccount(100.00, 0.02));
Bank.addCustomer("Leticia", "Garcia");
customer = Bank.getCustomer(2);
customer.addAccount(new SavingsAccount(600.00, 0.07));
Bank.addCustomer("Felipe", "Diaz");
customer = Bank.getCustomer(3);
customer.addAccount(new SavingsAccount(100.00, 0.03));
customer = Bank.getCustomer(0);
account = customer.getAccount(1);
System.out.println("Cliente [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
+ " has a checking balance of "
+ account.getBalance()
+ " with a 500.00 overdraft protection.");
try {
System.out.println("Checking Acct [Diego Diaz] : deposito 1400.00");
account.deposit(1400.00);
System.out.println("Checking Acct [Diego Diaz] : Retiro 200.00");
account.withdraw(200.00);
System.out.println("Checking Acct [Diego Diaz] : deposito 1700.50");
account.deposit(1700.50);
System.out.println("Checking Acct [Diego Diaz] : Retiro 125.62");
account.withdraw(125.62);
System.out.println("Checking Acct [Diego Diaz] : Retiro 600.00");
account.withdraw(600.00);
} catch (OverdraftException e1) {
System.out.println("Exception: " + e1.getMessage()
+ " Deficit: " + e1.getDeficit());
} finally {
System.out.println("Cliente [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
+ " has a checking balance of "
+ account.getBalance());
}
System.out.println();
customer = Bank.getCustomer(1);
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
account = customer.getAccount(0);
System.out.println("Cliente [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
+ " has a savings balance of "
+ account.getBalance());
try {
System.out.println("Savings Acct [Estefani Diaz] : Retiro 450.00");
account.withdraw(450.00);
System.out.println("Savings Acct [Estefani Diaz] : deposito 79.00");
account.deposit(79.00);
System.out.println("Savings Acct [Estefani Diaz] : Retiro 2000.00");
account.withdraw(2000.00);
} catch (OverdraftException e1) {
System.out.println("Exception: " + e1.getMessage()
+ " Deficit: " + e1.getDeficit());
} finally {
System.out.println("Cliente [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
+ " has a savings balance of "
+ account.getBalance());
}
System.out.println();
customer = Bank.getCustomer(2);
account = customer.getAccount(0);
System.out.println("Cliente [" + customer.getLastName()
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
+ ", " + customer.getFirstName() + "]"
+ " has a savings balance of "
+ account.getBalance());
try {
System.out.println("Savings Acct [Leticia Garcia] : Retiro 100.00");
account.withdraw(100.00);
System.out.println("Savings Acct [Leticia Garcia] : deposito 255.00");
account.deposit(255.00);
System.out.println("Savings Acct [Leticia Garcia] : Retiro 1650.00");
account.withdraw(1650.00);
} catch (OverdraftException e1) {
System.out.println("Exception: " + e1.getMessage()
+ " Deficit: " + e1.getDeficit());
} finally {
System.out.println("Customer [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
+ " has a savings balance of "
+ account.getBalance());
}
System.out.println();
customer = Bank.getCustomer(3);
account = customer.getAccount(0);
System.out.println("Cliente [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
+ " has a savings balance of "
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
+ account.getBalance());
try {
System.out.println("Savings Acct [Felipe Diaz] : deposito 15000.00");
account.deposit(15000.00);
System.out.println("Savings Acct [Felipe Diaz] : deposito 500.00");
account.deposit(500.00);
System.out.println("Savings Acct [Felipe Diaz] : Retiro 1000.00");
account.withdraw(1000.00);
System.out.println("Savings Acct [Felipe Diaz] : deposito 420.00");
account.deposit(420.00);
System.out.println("Savings Acct [Felipe Diaz] : Retiro 6000.00");
account.withdraw(6000.00);
System.out.println("Savings Acct [Felipe Diaz] : Retiro 8000.00");
account.withdraw(8000.00);
} catch (OverdraftException e1) {
System.out.println("Exception: " + e1.getMessage()
+ " Deficit: " + e1.getDeficit());
} finally {
System.out.println("Cliente [" + customer.getLastName()
+ ", " + customer.getFirstName() + "]"
+ " has a savings balance of "
+ account.getBalance());
}
}
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public class Bank
{
private static Customer[] customers = new Customer[10];
private static int numberOfCustomers = 0;
public Bank()
{
customers = new Customer[10];
numberOfCustomers = 0;
}
public static void addCustomer(String f, String l)
{
int i = numberOfCustomers++;
customers[i] = new Customer(f,l);
}
public static int getNumOfCustomers() {
return numberOfCustomers;
}
public static Customer getCustomer(int customer_index) {
return customers[customer_index];
}
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public class OverdraftException extends Exception {
private final double deficit;
public OverdraftException(String msg, double deficit) {
super(msg);
this.deficit = deficit;
}
public double getDeficit() {
return deficit;
}
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public class Customer
{
private String firstName;
private String lastName;
private Account[] accounts;
private int numberOfAccounts;
public Customer(String f, String l) {
firstName = f;
lastName = l;
accounts = new Account[10];
numberOfAccounts = 0;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getNumOfAccounts() {
return numberOfAccounts;
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public Account getAccount(int account_index) {
return accounts[account_index];
}
public void addAccount(Account acct) {
int i = numberOfAccounts++;
accounts[i] = acct;
}
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public class Account {
protected double balance;
protected Account(double initBalance) {
balance = initBalance;
}
public double getBalance() {
return balance;
}
public void deposit(double amt) {
balance = balance + amt;
}
public void withdraw(double amt) throws OverdraftException {
if ( amt <= balance ) {
balance = balance - amt;
} else {
throw new OverdraftException("Insufficient funds", amt - balance);
}
}
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public class CheckingAccount extends Account {
private double overdraftAmount;
public CheckingAccount(double initBalance, double overdraftAmount) {
super(initBalance);
this.overdraftAmount = overdraftAmount;
}
public CheckingAccount(double initBalance) {
this(initBalance, 0.0);
}
public void withdraw(double amount) throws OverdraftException {
if ( balance < amount ) {
double overdraftNeeded = amount - balance;
if ( overdraftAmount < overdraftNeeded ) {
throw new OverdraftException("Insufficient funds for overdraft protection",
overdraftNeeded);
} else {
balance = 0.0;
overdraftAmount -= overdraftNeeded;
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
}
} else {
// Yes, there is enough balance to cover the amount
// Proceed as usual
balance = balance - amount;
}
}
}
DIAZ GARCIA DIEGO DANIEL ISC
Programación Orientada a Objetos
public class SavingsAccount extends Account
{
private double interestRate;
public SavingsAccount(double initBalance, double interestRate)
{
super(initBalance);
this.interestRate = interestRate;
}
}
DIAZ GARCIA DIEGO DANIEL ISC