Classes All Java code must be inside classes Class types – Utility classes Used to store...
-
Upload
holly-barker -
Category
Documents
-
view
215 -
download
1
Transcript of Classes All Java code must be inside classes Class types – Utility classes Used to store...
Classes
• All Java code must be inside classes• Class types– Utility classes• Used to store constants, utility methods, etc.
– Driver classes– Abstract Data Types (ADTs)• “blue-prints” to build objects
Defining ADT classes
• class attributes are normally encapsulated (i.e. private)
• class methods are normally public• avoid using input/output inside the methods
of a class• static attributes and methods• class constants
class BankAccount { private double balance; private int accountNumber; private static int lastAssignedNumber; //automatically initialized with zero public static final double OVERDRAFT_FEE=5; // constant /*overloaded constructors */ public BankAccount() { balance=0; lastAssignedNumber++; accountNumber= lastAssignedNumber; } public BankAccount(double initialBalance) { balance= initialBalance; lastAssignedNumber++; accountNumber= lastAssignedNumber; } public static int showLastAccountNumber(){ return lastAssignedNumber; } public void deposit(double amount) { double newBalance=balance+amount;//newBalance and amount are local variables balance=newBalance; } public void withdraw(double amount) {// a mutator method double newBalance=balance-amount; balance=newBalance; }
Case Study
public double getBalance() { // an accessor method return balance; } public void transfer (double amount, BankAccount other) { // a side effect balance=balance-amount; other.balance=other.balance+amount; } }
/* A class to test the BankAccount class */public class BankAccountTest { public static void main (String[] args) { BankAccount harrysChecking=new BankAccount(); int a=100; BankAccount tomsChecking=new BankAccount(a); a=2000; harrysChecking.deposit(a); harrysChecking.withdraw(500); harrysChecking.transfer(500, tomsChecking); System.out.println(harrysChecking.getBalance()); System.out.println(tomsChecking.getBalance()); System.out.println(BankAccount. showLastAccountNumber()); System.out.println(BankAccount. OVERDRAFT_FEE); }}
Scope of variables
• Instance attributes/variables• Local variables• Parameter variables• Static variables and constants
Parameter Passing
• Pass by value– Variables of primitive data types
a=2000;harrysChecking.deposit(a);
• Pass by reference– Objects/arrays
Checking.transfer(500, tomsChecking);
Other things to consider…
• Constructors– Default constructor • Used only to initialize the encapsulated variables to the
default values (0, false, null)
• Accessors and mutators– “Getters” and “setters”
• Static methods– Utility methods or– Used to handle static variables
public class CashRegister{ public CashRegister() { purchase = 0; payment = 0; } public void recordPurchase(double amount) { double total = purchase + amount; purchase = total; } public void enterPayment(double amount) { payment = amount; } public double giveChange() { double change = payment - purchase; purchase = 0; payment = 0; return change; } private double purchase; private double payment;}
Case StudyCash Register
public class CashRegisterTester{ public static void main(String[] args) { CashRegister register = new CashRegister(); register.recordPurchase(29.50); register.recordPurchase(9.25); register.enterPayment(50); double change = register.giveChange(); System.out.println(change); }}