520 likes | 632 Views
Implementing Classes. Learning objectives. By the end of this lecture you should be able to:. design classes using the notation of the Unified Modeling Language (UML) ; write the Java code for a specified class;
E N D
Implementing Classes Learning objectives By the end of this lecture you should be able to: • design classes using the notation of the Unified Modeling Language (UML); • write the Java code for a specified class; • explain the difference between public and private access to attributes and methods; • explain the use of the static keyword; • pass objects as parameters; • implement collection classes based on arrays.
Implementing classes in Java A class consists of: a set of attributes(the data); a set of methods (double) setLength setHeight getLength getHeight calculateArea calculatePerimeter Oblong length height : double (double) : double () : double () : double () : double Oblong () : double (double, double)
The notation of the Unified Modeling Language (UML) Oblong length : double height : double Oblong(double, double) setLength(double) setHeight(double) getLength() : double getHeight() : double calculateArea() : double calculatePerimeter() : double
public class Oblong { double length; double height; private private Oblong(double lengthIn, double heightIn) { } // more methods here } public length = lengthIn; height = heightIn;
getLength() { } public double return length; getHeight() { } public double return height;
setLength( ) { } public void double lengthIn length = lengthIn; setHeight( ) { } public void double heightIn height = heightIn;
calculateArea() { } public double return length * height; calculatePerimeter() { } public double return 2 * (length + height);
The BankAccount class BankAccount accountNumber : String accountName : String balance : double BankAccount (String, String) getAccountNumber() : String getAccountName() : String getBalance() : double deposit(double) withdraw(double)
public class BankAccount { private String accountNumber; private String accountName; private double balance; public BankAccount(String numberIn, String nameIn) { accountNumber = numberIn; accountName = nameIn; balance = 0; }
public String getAccountName() { return accountName; } public String getAccountNumber() { return accountNumber; } public double getBalance() { return balance; }
public void deposit(double amountIn) { balance = balance + amountIn; } public void withdraw(double amountIn) { balance = balance – amountIn; } }
public class BankAccountTester { public static void main(String[ ] args) { BankAccount account1 = new BankAccount("99786754","Susan Richards"); account1.deposit(1000); System.out.println("Account number: " + account1.getAccountNumber()); System.out.println("Account name: " + account1.getAccountName()); System.out.println("Current balance: " + account1.getBalance()); } }
acc1 acc2 acc3 Amending the BankAccount class acc1.getBalance(); acc1.getInterestRate(); “0012765” “Funmi Odulopo” £1200.49 1.25% acc2.addInterest (); acc2.getInterestRate(); “09887254” “Mary Stephenson” £975.12 acc3.deposit( 500 ); acc3.setInterestRate(1.5); 1.25% Bank.setInterestRate(1.4); Bank.getInterestRate(); “07721009” “Dilraj Mann” £3975.75 1.25%
The static keyword private static double interestRate; public static void setInterestRate(double rateIn) { interestRate = rateIn; } public static double getInterestRate() { return interestRate; }
The addInterest method public void addInterest() { balance = balance + (balance * interestRate)/100; }
public class BankAccountTester2 { public static void main(String[] args) { BankAccount2 account1 = new BankAccount2("99786754","Varinder Singh"); BankAccount2 account2 = new BankAccount2("99887776","Lenny Roberts"); account1.deposit(1000); account2.deposit(2000); BankAccount2.setInterestRate(10); account1.addInterest();
System.out.println("Account number: " + account1.getAccountNumber()); System.out.println("Account name: " + account1.getAccountName()); System.out.println("Interest Rate " + BankAccount2.getInterestRate()); System.out.println("Current balance: " + account1.getBalance()); System.out.println(); System.out.println("Account number: " + account2.getAccountNumber()); System.out.println("Account name: " + account2.getAccountName()); System.out.println("Interest Rate " + BankAccount2.getInterestRate()); System.out.println("Current balance: " + account2.getBalance()); } }
Account number: 99786754 Account name: Varinder Singh Interest rate: 10.0 Current balance: 1100.0 Account number: 99887776 Account name: Lenny Roberts Interest rate: 10.0 Current balance: 2000.0
int Objects double char boolean Initializing attributes Java does not give an initial value to local variables but does initialize attributes; 0 false null private static double interestRate = 0;
import java.util.*; public class EasyScanner { public static int nextInt() { Scanner sc = new Scanner(System.in); int i = sc.nextInt(); return i; } // more methods here }
public static double nextDouble() { Scanner sc = new Scanner(System.in); double d = sc.nextDouble(); return d; } public static String nextString() { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); return s; }
public static char nextChar() { Scanner sc = new Scanner(System.in); char c = sc.next().charAt(0); return c; }
public class ParameterTest { public static void main(String[] args) { BankAccount acc = new BankAccount("1", "Samsun Okoyo"); test(acc); System.out.println("Account Number: " + acc.getAccountNumber()); System.out.println("Account Name: " + acc.getAccountName()); System.out.println("Balance: " + acc.getBalance()); } private static void test(BankAccount accIn) { accIn.deposit(2500); } }
Account Number: 1 Account Name: Samsun Okoyo Balance: 2500.0
acc a BankAccount object accIn Effect on computer memory Computer Memory Java Instructions public static void main (String[] args) { BankAccount acc = new BankAccount(….) ; } test(acc); private static void test(BankAccount accIn) { } accIn.deposit(2500);
Bank BankAccount * Collection classes When one object itself consists of other objects, this relationship is called aggregation; A collection class is an implementation of the aggregation relationship.
Bank list: BankAccount [ ] total : int Bank(int) search(String) : int getTotal() : int isEmpty() : boolean isFull() : boolean add(BankAccount) : boolean getItem(String) : BankAccount depositMoney(String, double) : boolean withdrawMoney(String, double) : boolean remove(String) : boolean
public class Bank { private BankAccount[] list; private int total; public Bank(int sizeIn) { list = new BankAccount[sizeIn]; total = 0; }
private int search(String accountNumberIn) { for(int i = 0; i ; i++) { } return -999; } < total BankAccount tempAccount = list[i]; String tempNumber = tempAccount.getAccountNumber(); if(tempNumber.equals(accountNumberIn)) { return i; }
public int getTotal() { return total; } public boolean isEmpty() { if (total == 0) { return true; } else { return false; } }
public boolean isFull() { if (total == list.length) { return true; } else { return false; } }
public boolean add(BankAccount accountIn) { if( ) { return true; } else { return false; } } (!isFull() list[total] = accountIn; total++;
public BankAccount getItem(String accountNumberIn) { int index; index = search(accountNumberIn); if(index == -999) { return null; } else { return list[index]; } }
public boolean depositMoney (String accountNumberIn, double amountIn) { int index = search(accountNumberIn); if(index == -999) { return false; } else { list[index].deposit(amountIn); return true; } }
public boolean remove(String numberIn) { int index = search(numberIn); if(index == -999) { return false; } else { // remove item from list return true; } }
Smith 5th item Smith Adams 4th item list[index] = list[index+1]; for(int i = index; i<= total-2; i++) { } Adams list[index+1] = list[index+2]; 3rd item Patel list[i] = list[i+1]; Item to delete list[index+2] = list[index+3]; Patel Okoya 2nd item total--; Ling 1st item list
public class BankProgram { public static void main(String[] args) { char choice; int size; System.out.print("Maximum number of accounts? "); size = EasyScanner.nextInt(); Bank myBank = new Bank(size);
do { System.out.println(); System.out.println("1. Create new account"); System.out.println("2. Remove an account"); System.out.println("3. Deposit money"); System.out.println("4. Withdraw money"); System.out.println("5. Check account details"); System.out.println("6. Quit"); System.out.println(); System.out.print("Enter choice [1-6]: "); choice = EasyScanner.nextChar(); System.out.println();
switch (choice) { case '1': option1(myBank); break; case '2': option2(myBank); break; case '3': option3(myBank); break; case '4': option4(myBank); break; case '5': option5(myBank); break; case '6': break; default: System.out.println("Invalid entry"); } }while (choice != '6'); }
// add account private static void option1(Bank bankIn) { System.out.print("Enter account number: "); String number = EasyScanner.nextString(); System.out.print("Enter account name: "); BankAccount account = new BankAccount(number, name); boolean ok = bankIn.add(account); if (!ok) { System.out.println("The list is full"); } else { System.out.println("Account created"); } }
// remove account private static void option2(Bank bankIn) { System.out.print("Enter account number: "); String number = EasyScanner.nextString(); boolean ok = bankIn.remove(number); if (!ok) { System.out.println("No such account number"); } else { System.out.println("Account removed"); } }
// deposit money private static void option3(Bank bankIn) { System.out.print("Enter account number: "); String number = EasyScanner.nextString(); System.out.print("Enter amount to deposit: "); double amount = EasyScanner.nextDouble(); boolean ok = bankIn.depositMoney(number, amount); if (!ok) { System.out.println("No such account number"); } else { System.out.println("Money deposited"); } }
// withdraw money from an account private static void option4(Bank bankIn) { System.out.print("Enter account number: "); String number = EasyScanner.nextString(); System.out.print("Enter amount to withdraw: "); double amount = EasyScanner.nextDouble(); boolean ok = bankIn.withdrawMoney(number, amount); if (!ok) { System.out.println("No such account number"); } else { System.out.println("Money withdrawn"); } }
// check account details private static void option5(Bank bankIn) { System.out.print("Enter account number "); String number = EasyScanner.nextString(); BankAccount account = bankIn.getItem(number); if (account == null) { System.out.println("No such account number"); } else { System.out.println("Account number: " + account.getAccountNumber()); System.out.println("Account name: " + account.getAccountName()); System.out.println("Balance: " + account.getBalance()); System.out.println(); } }
Maximum number of accounts? 100 1. Create new account 2. Remove an account 3. Deposit money 4. Withdraw money 5. Check account details 6. Quit Enter choice [1-6]: 1
Enter account number: 63488965 Enter account name: Paula Wilkins Account created 1. Create new account 2. Remove an account 3. Deposit money 4. Withdraw money 5. Check account details 6. Quit Enter choice [1-6]: 1
Enter account number: 14322508 Enter account name: Sydney Isaacs Account created 1. Create new account 2. Remove an account 3. Deposit money 4. Withdraw money 5. Check account details 6. Quit Enter choice [1-6]: 1
Enter account number: 90871435 Enter account name: Delroy Joseph Account created 1. Create new account 2. Remove an account 3. Deposit money 4. Withdraw money 5. Check account details 6. Quit Enter choice [1-6]: 3
Enter account number: 90871435 Enter amount to deposit: 1500 Money deposited 1. Create new account 2. Remove an account 3. Deposit money 4. Withdraw money 5. Check account details 6. Quit Enter choice [1-6]: 2
Enter account number: 14322508 Account removed 1. Create new account 2. Remove an account 3. Deposit money 4. Withdraw money 5. Check account details 6. Quit Enter choice [1-6]: 5