Transcript
Page 1: Java Program = collection of Classes

Java Program = collection of Classes

Class::Object

abstract conceptinstances of the class

BankAccount::BankAccountOfJohnSmith#127

Page 2: Java Program = collection of Classes

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

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

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

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

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

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

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

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

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

Return type - void

johnsAccount.depositMoney(500);

public void depositMoney(double amount) { checkingBalance+=amount; }

Page 12: Java Program = collection of Classes

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

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

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

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

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

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

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

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

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

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

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

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

Privacy leaksprivate Address ownersAddress ;

public Address getOwnersAddress() { return ownersAddress; }

address=johnsAccount.getOwnersAddress();

address.set(“John Evil,....”);

Page 25: Java Program = collection of Classes

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

null

ToyBankAccount johnsAccount=null;

does not point to any object...

Page 27: Java Program = collection of Classes

“null Pointer Exception” error

johnsAccount.depositMoney(100);

Page 28: Java Program = collection of Classes

==, = 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

==, = 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

==, = 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

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

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

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

Automatic conversion

johnsAccount.depositMoney(500);

public void depositMoney(double amount) { checkingBalance+=amount; }

int

Page 35: Java Program = collection of Classes

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

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

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

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

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

Class methods public static AverageBalance()

class Bank { public monthlyReport() { system.out.print(Account.AverageBalance()); }}

Page 41: Java Program = collection of Classes

Class methods example - Math

Math.sqrt()

can use to group methods which havesomething in common

Page 42: Java Program = collection of Classes

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

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

Garbage collectionToyBankAccount johnsAccount;johnsAccount=new ToyBankAccount(“John Smith”,0,1234);

johnsAccount=null;

Page 45: Java Program = collection of Classes

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

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

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

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

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

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

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

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

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

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

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

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

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

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); }}


Top Related