Java Program = collection of Classes
description
Transcript of Java Program = collection of Classes
![Page 1: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/1.jpg)
Java Program = collection of Classes
Class::Object
abstract conceptinstances of the class
BankAccount::BankAccountOfJohnSmith#127
![Page 2: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/2.jpg)
class class-name [extends superclass name] [implements interface name] { [Declaration of variables] [Declaration of methods]}
Defining a class
![Page 3: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/3.jpg)
Instance variablespublic class Book { public String title,author,publisher; public int pages; public double price; ...} Book textbook=new Book();
textbook.title=“JAVA – Introduction to CS and programming”;textbook.author=“W. Savitch”;textbook.publisher=“Prentice Hall”;textbook.pages=1052;...
(file Book.java)
![Page 4: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/4.jpg)
Instance variablespublic class ToyBankAccount { public String ownersName; public double savingsBalance,checkingBalance; public double penalty; public int pin; ...}
ToyBankAccount johnsAccount;johnsAccount=new BankAccount();johnsAccount.ownersName=“John Smith”;johnsAccount.savingsBalance=1000.0;johnsAccount.checkingBalance=500;johnsAccount.pin=7534;...
(file ToyBankAccount.java)
![Page 5: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/5.jpg)
Instance methodspublic class ToyBankAccount { ............ ............ /* * returns true if the withdrawal from checking is succesful */ public boolean withdrawMoney(int pin,double amount) { if (pin==this.pin) { if (checkingBalance>amount) { checkingBalance-=amount; return true; } } return false; }}
![Page 6: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/6.jpg)
Instance methodspublic class ToyBankAccount { ............ ............ /* * returns true if the check clears. */ public boolean payCheck(double amount) { if (checkingBalance>amount) { checkingBalance-=amount; return true; } else { penalty+=25.0; return false; } } }}
![Page 7: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/7.jpg)
Instance methodspublic class ToyBankAccount { ............ ............ /* * returns true if the check clears. */ public boolean payCheck(double amount) { if (checkingBalance>amount) { checkingBalance-=amount; return true; } else { penalty+=25.0; return false; } } }} Not a good programming practice!
![Page 8: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/8.jpg)
Constantspublic class ToyBankAccount { public static final int PENALTY_FOR_CHECK_OVER_LIMIT=25; ............ /* * returns true if the check clears. */ public boolean payCheck(double amount) { if (checkingBalance>amount) { checkingBalance-=amount; return true; } else { penalty+= PENALTY_FOR_CHECK_OVER_LIMIT; return false; } } }}
![Page 9: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/9.jpg)
Parameters
withdrawalOK=johnsAccount.withdrawMoney(7534,500);
formal parameters
actual parameters
object method
public boolean withdrawMoney(int pin,double amount) { if (pin==this.pin) { if (checkingBalance>amount) { checkingBalance-=amount; return true; } } return false; }
![Page 10: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/10.jpg)
Return type public boolean withdrawMoney(int pin,double amount) { if (pin==this.pin) { if (checkingBalance>amount) { checkingBalance-=amount; return true; } } return false; }
withdrawalOK=johnsAccount.withdrawMoney(7534,500);
![Page 11: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/11.jpg)
Return type - void
johnsAccount.depositMoney(500);
public void depositMoney(double amount) { checkingBalance+=amount; }
![Page 12: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/12.jpg)
Creating objects - newToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount();
johnsAccount is a variable which canpoint to an object of type ToyBankAccount
create a new object of type ToyBankAccountand let johnsAccount point to it
![Page 13: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/13.jpg)
ConstructorToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount();
Call to a special method ofthe class – constructor.
public ToyBankAccount() {}default constructor is
![Page 14: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/14.jpg)
Constructorpublic ToyBankAccount(String ownersName, double checkingInitialAmount, int pin) { checkingAmount=checkingInitialAmount; savingsAcount=penalty=0; this.pin=pin; this.ownersName=new String(ownersName);}
ToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount(“John Smith”,0,1234);
![Page 15: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/15.jpg)
Constructor - overloading
public ToyBankAccount(String ownersName, int checkingInitialAmount, int pin) { checkingAmount=checkingInitialAmount; savingsAcount=penalty=0; this.pin=pin; this.ownersName=new String(ownersName);}
public ToyBankAccount(String ownersName, int pin) { savingsAcount=penalty=checkingInitialAmount=0; this.pin=pin; this.ownersName=new String(ownersName);}
![Page 16: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/16.jpg)
Constructor - this()
public ToyBankAccount(String ownersName, int checkingInitialAmount, int pin) { checkingAmount=checkingInitialAmount; savingsAcount=penalty=0; this.pin=pin; this.ownersName=new String(ownersName);}
public ToyBankAccount(String ownersName, int pin) { this(ownersName,0,pin);}
(must be first statement)
![Page 17: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/17.jpg)
public/private for instance variablespublic – anybody can accessprivate – only methods of the class can access
public class ToyBankAccount { public String ownersName; public double savingsBalance,checkingBalance; public double penalty; public int pin; ...}
![Page 18: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/18.jpg)
ToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount(“John Smith”,100,1234);
johnsAccount.savingsAccount+=50;
Not good. Suppose that we want to modifythe code to store all transactions.
Have to find all occurences of
public/private for instance variables
![Page 19: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/19.jpg)
public/private for instance variablespublic – anybody can accessprivate – only methods of the object can access
public class ToyBankAccount { private String ownersName; private double savingsBalance,checkingBalance; private double penalty; private int pin; ...} Instance variables should be private
![Page 20: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/20.jpg)
public class Book { private String title,author,publisher; private int pages; private double price;
public String getTitle() { return title; } public void setTitle(String title) { this.title=title; }}
Accessor/Mutator methods
![Page 21: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/21.jpg)
public for classes
in each file:
one public class withthe same name as the filename
any number of classes whichare visible only to classes inthe file
![Page 22: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/22.jpg)
ToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount(“John Smith”,0,1234);
Variablesof primitive typeof class type
int x;
ToyBankAccount marysAccount=johnsAccount;marysAccount.depositMoney(1000);System.out.println(“”+johnsAccount.balance())
![Page 23: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/23.jpg)
ToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount(“John Smith”,0,1234);ToyBankAccount marysAccount=johnsAccount;marysAccount.depositMoney(1000);System.out.println(“”+johnsAccount.balance())
Variables
marysAccount johnsAccount
int x;x=10;int y=x;y+=10
![Page 24: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/24.jpg)
Privacy leaksprivate Address ownersAddress ;
public Address getOwnersAddress() { return ownersAddress; }
address=johnsAccount.getOwnersAddress();
address.set(“John Evil,....”);
![Page 25: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/25.jpg)
Privacy leaksprivate Address ownersAddress ;
public Address getOwnersAddress() { return new Address(ownersAddress); }
address=johnsAccount.getOwnersAddress();
address.set(“John Evil,....”);
![Page 26: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/26.jpg)
null
ToyBankAccount johnsAccount=null;
does not point to any object...
![Page 27: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/27.jpg)
“null Pointer Exception” error
johnsAccount.depositMoney(100);
![Page 28: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/28.jpg)
==, = and equalsfor variables of class type == testswhether they point to the same object.
String s=“abc”, t=“abc”;if (s==t) system.out.println(“You win $1,000,000”);
![Page 29: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/29.jpg)
==, = and equalsfor variables of class type == testswhether they point to the same object.
String s=“abc”, t=“abc”;if (s.equals(t)) system.out.println( “You were chosen for the next round!”);
You have to implement equals method if you want “deeper” equality testing for your class.
![Page 30: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/30.jpg)
==, = and equals
You have to implement equals method if you want “deeper” equality testing for your class.
boolean equals(Book s) { return author.equals(s.author)&& title.equals(s.title)&& ... ;}
![Page 31: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/31.jpg)
Method overloading
public void depositMoney(double amount,Currency currency) { checkingBalance+=Currency.Convert(amount,currency,Currency.USD);}
public void depositMoney(double amount) { checkingBalance+=amount; }
JohnsAccount.depositMoney(100,Currency.SKK);JohnsAccount.depositMoney(100);
![Page 32: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/32.jpg)
Method overloading
public void depositMoney(double amount,Currency currency) { checkingBalance+=Currency.Convert(amount,currency,Currency.USD);}
public void depositMoney(double amount) { checkingBalance+=amount; }
public void depositMoney(double amountInSkk) { checkingBalance+=amount*50; }
![Page 33: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/33.jpg)
Method overloading
public void depositMoney(double amount,Currency currency) { checkingBalance+=Currency.Convert(amount,currency,Currency.USD);}
public void depositMoney(double amount) { checkingBalance+=amount; }
public char depositMoney(double amountInSkk) { checkingBalance+=amount*50; }
cannot overload based on the returned type
![Page 34: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/34.jpg)
Automatic conversion
johnsAccount.depositMoney(500);
public void depositMoney(double amount) { checkingBalance+=amount; }
int
![Page 35: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/35.jpg)
Class variablespublic class ToyBankAccount { private static int totalAccounts=0; private static totalAccountBalance;
private String ownersName; private double savingsBalance,checkingBalance; private double penalty; private int pin; ...}
![Page 36: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/36.jpg)
Class variablespublic class ToyBankAccount { private static int totalAccounts=0;{totalAccounts++;} private static totalAccountBalance;
private String ownersName; private double savingsBalance,checkingBalance; private double penalty; private int pin; ...}
initializer block
![Page 37: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/37.jpg)
Class variablespublic class ToyBankAccount { private static final int PENALTY_FOR_CHECK_OVER_LIMIT=25;
private static int totalAccounts=0; private static totalAccountBalance;
private String ownersName; private double savingsBalance,checkingBalance; private double penalty; private int pin; ...}
![Page 38: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/38.jpg)
Class methods public class ToyBankAccount { private static final int PENALTY_FOR_CHECK_OVER_LIMIT=25;
private static int totalAccounts=0; private static double totalAccountBalance;
.....
public static AverageBalance() { return totalAccountBalance/totalAccounts; }}
![Page 39: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/39.jpg)
Class methods public static AverageBalance()
public endOfMonthUpdate() { if (balance>AverageBalance()) balance+=BONUS;}
class methods cannot use instance fields or methods
![Page 40: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/40.jpg)
Class methods public static AverageBalance()
class Bank { public monthlyReport() { system.out.print(Account.AverageBalance()); }}
![Page 41: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/41.jpg)
Class methods example - Math
Math.sqrt()
can use to group methods which havesomething in common
![Page 42: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/42.jpg)
Instance vs Class methods
public boolean bigger(Account a) { return (balance>a.balance);}
public static boolean bigger(Account a,Account b) { return (a.balance>b.balance);}
(a.bigger(b))
(Account.bigger(a,b))
![Page 43: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/43.jpg)
main
public static void main(String[] args) {
}
can be defined for any class, not just forthe one that is running (good for debugging)
![Page 44: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/44.jpg)
Garbage collectionToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount(“John Smith”,0,1234);
johnsAccount=null;
![Page 45: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/45.jpg)
EXERCISE #1:public class ToyBankAccount { private String ownersName; private double savingsBalance,checkingBalance; private double penalty; private int pin; ...}
1a) implement method transferSavingToChecking
1b) implement method transferToAccount
1c) implement method transferBetweenAccounts (takes two accounts and amount)
![Page 46: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/46.jpg)
Default initialization
instance variables are initialized to the default value (zero for numericalclasses, false for boolean)
(this is not true for local variables (i.e. variablesdeclared in methods))
![Page 47: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/47.jpg)
EXERCISE #2:Class Test { private int x,y; public Test(int x,int y) { x=x; this.y=y; System.out.println(“”+x+”,”,y); } public Values() { System.out.println(“”+x+”,”+y); }}
public class Runs { public main(String[] args) { Test r,p; r=new Test(2,3); r.Values(); p=r; p=new Test(3,4); r.Values(); }}
What is the output?
![Page 48: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/48.jpg)
EXERCISE #3:public class Runs { public main(String) { int x=14,y=7,z=5,i;
for (i=0;i<300;i++) { x = x+y+z; y = x-y-z; z = x-y-z; x = x-y-z; } System.out(“”+x+”,”+y+”,”+z); }}
What is the output?
![Page 49: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/49.jpg)
EXERCISE #4:public class MyClass { private int data; public boolean equals(MyClass a) { return (this==a) } public MyClass(int x) { data=x; }}
MyClass a,b;a=new MyClass(3); b=a;System.out.println(a.equals(b));b=new MyClass(3);System.out.println(a.equals(b));
What is the output?
![Page 50: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/50.jpg)
EXERCISE #5:public class MyClass { private int data; public boolean equals(MyClass a) { return (this.data==a.data) } public MyClass(int data) { data=data; }}
MyClass a,b;a=new MyClass(3); b=a;System.out.println(a.equals(b));b=new MyClass(4);System.out.println(a.equals(b));
What is the output?
![Page 51: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/51.jpg)
EXERCISE #6:public class MyClass { private String name; public boolean equals(MyClass a) { return (this.name==a.name) } public MyClass(String name) { this.name=name; }}
MyClass a,b;a=new MyClass(“John”); b=a;System.out.println(a.equals(b));b=new MyClass(“John”);System.out.println(a.equals(b));
What is the output?
![Page 52: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/52.jpg)
public class myInt { public int x;}
myInt a = new myInt(); a.x = 10; myInt b = a; System.out.println("a = "+a.x+"; b = "+b.x); b.x = 20; System.out.println("a = "+a.x+"; b = "+b.x);
EXERCISE #7:What is the output?
![Page 53: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/53.jpg)
public class myInt { public int x; public static void switch(myInt a,myInt b) { int c; c=a.x; a.x=b.x; b.x=c; } public static void switch(int a,int b) { int c; c=a; a=b; b=c; }}
myInt a = new myInt(); a.x = 10; myInt b = new myInt(); b.x = 20;myInt.switch(a.x,b.x);System.out.println("a = "+a.x+"; b = "+b.x); myInt.switch(a.b);System.out.println("a = "+a.x+"; b = "+b.x);
EXERCISE #8:What is the output?
![Page 54: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/54.jpg)
public class myString{ public String x; public static void switch(myInt a,myInt b) { String c; c=a.x; a.x=b.x; b.x=c; } public static void switch(String a,String b) { String c; c=a; a=b; b=c; }}
myString a = new myString(); a.x = “10”; myString b = new myString(); b.x = “20”;myString.switch(a.x,b.x);System.out.println("a = "+a.x+"; b = "+b.x); myString.switch(a.b);System.out.println("a = "+a.x+"; b = "+b.x);
EXERCISE #9:What is the output?
![Page 55: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/55.jpg)
EXERCISE #10:What is the output?class Test {
public int x; public static int y;
public Test(int x,int y) { this.x=x; this.y=y; }}
Test a,b; a=new Test(3,4); System.out.println(""+a.x+","+a.y); b=new Test(5,6); System.out.println(""+b.x+","+b.y); System.out.println(""+a.x+","+a.y);
![Page 56: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/56.jpg)
EXERCISE #11:What is the output?
public class Test { static Test first=null; Test next; public int x;
public Test(int x) { this.x=x; next=first; first=this; }
public static void list() { for (Test p=first;p!=null;p=p.next) System.out.println(" "+p.x); }
public static void main(String[] args) { Test a=new Test(2),b=new Test(3),c=new Test(4); Test.list(); }}
![Page 57: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/57.jpg)
EXERCISE #12:Where is the error?
public class Test { Test next; public int x;
public void print() { int y; while (y<10) { System.out.println(x+y); y++; } } public static void main(String[] args) { Test a=new Test(); a.print(); }}
![Page 58: Java Program = collection of Classes](https://reader035.fdocuments.us/reader035/viewer/2022062722/56813af1550346895da36e82/html5/thumbnails/58.jpg)
EXERCISE #13:Where are the errors
public class Test { Test next; public int x;
public Test(int x) { Test.x=x; }
public static void main(String[] args) { double y=1; Test a=new Test(y); }}