Programming in Java: lecture 6 -...
Transcript of Programming in Java: lecture 6 -...
![Page 1: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/1.jpg)
1
Programming in Java: lecture 6
Objects, Classes and Instances Getters and setters Constructors and object initialization Wrapper Classes and Autoboxing Garbage collection and the heap Object oriented analysis and design Example
Slides made for use with ”Introduction to Programming Using Java, Version 5.0” by David J. EckSome figures are taken from ”Introduction to Programming Using Java, Version 5.0” by David J. EckLecture 6 covers Section 5.1 to 5.4
![Page 2: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/2.jpg)
2
Classes and Objects
A Class is a template Objects are objects Objects are instances of a given class
Integer Classstatic members
parseInt(String s)
Integer Objectnon-static member
equals(int i)
![Page 3: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/3.jpg)
3
Instances
Instance Instance variable Instance method Class Simple
class variable static int x
(only on copy)
Simple Object
int y
Simple Object
int y
class Simple { static int x; int y;}
class MyMain { public static void main (String[] args) {
Simple a = new Simple();Simple b = new Simple();
}
}
![Page 4: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/4.jpg)
4
Instance methods
Class Simple
class variable static int x
(only on copy)
Simple Object
int y
Simple Object
int y
class Simple { static int x; int y;
static int getX() { return x; }
int getY() {return y;
}}
class MyMain { public static void main (String[] args) {
Simple a = new Simple();Simple b = new Simple();
}
}
![Page 5: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/5.jpg)
5
Instance methods
Class Simple
class variable static int x
(only on copy)
Simple Object
int y
Simple Object
int y
class Simple { static int x; int y;
int getX() { return x; }
static int getY() {return y;
}}
class MyMain { public static void main (String[] args) {
Simple a = new Simple();Simple b = new Simple();
}
}
ERROR!
![Page 6: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/6.jpg)
6
null
References A variable does not contain an object
Heap
Main
Simple s = new Simple()
s = address
Simple Object
int y
![Page 7: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/7.jpg)
7
null
References A variable does not contain an object
Heap
Main
Simple s = new Simple()Simple s2 = s; // no new object
s = addresss2 = address
Simple Object
int y
![Page 8: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/8.jpg)
8
null
References A variable does not contain an object
Heap
Main
Simple s = new Simple()Simple s2 = s; // no new objectSimple s3; // no object at all
s = addresss2 = address
s3 = null
Simple Object
int y
![Page 9: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/9.jpg)
9
null
References A variable does not contain an object
Heap
Main
Simple s = new Simple()Simple s2 = s; // no new objectSimple s3; // no object at allSimple s4 = new Simple()
s = addresss2 = address
s3 = nulls4 = address
Simple Object
int y
Simple Object
int y
![Page 10: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/10.jpg)
10
Getter and Setters
Why not public variables Change all places where they have been used
class example { public int badIdea; int goodIdea;
public void setGoodIdea(int n) throws IllegalArgumentException { if (n > 5) {
throw new IllegalArgumentException(“n too large”);} goodIdea = n;
}}
![Page 11: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/11.jpg)
11
Getter and Setters
Why not public variables Change all places where they have been used
class example { public int badIdea; int goodIdea; int accessCount = 0;
public void setGoodIdea(int n) throws IllegalArgumentException { if (n > 5) {
throw new IllegalArgumentException(“n too large”);} goodIdea = n;
}
public int getGoodIdea() {accessCount++;return goodIdea;
}}
![Page 12: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/12.jpg)
12
Constructors
Object initialization Initializing instance variables Default constructor Same name as class Many constructors with different parameters
![Page 13: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/13.jpg)
13
Example
![Page 14: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/14.jpg)
14
Example2
![Page 15: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/15.jpg)
15
Calling a constructor
new <class-name> (<parameter-list>)
![Page 16: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/16.jpg)
16
Wrapper classes, Autoboxing
We have seen wrapper classes Integer x; int h = 20 x = h //Autoboxing x = x*20 //unboxing
![Page 17: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/17.jpg)
17
Garbage collection
Heap Object that no one knows exist Manual memory management Leaking memory Garbage collection
![Page 18: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/18.jpg)
18
StringBuffer
String b = “hej” b = b + “, goddag” b = b + “ og hallo” New object everytime StringBuffer b2 = “hej” b2.append(“, goddag”) b2.append(“ og hallo”)
Heap
hej
![Page 19: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/19.jpg)
19
StringBuffer
String b = “hej” b = b + “, goddag” b = b + “ og hallo” New object everytime StringBuffer b2 = “hej” b2.append(“, goddag”) b2.append(“ og hallo”)
Heap
hej
hej, goddag
![Page 20: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/20.jpg)
20
StringBuffer
String b = “hej” b = b + “, goddag” b = b + “ og hallo” New object everytime StringBuffer b2 = “hej” b2.append(“, goddag”) b2.append(“ og hallo”)
Heap
hej
hej, goddag
hej, goddagog hallo
![Page 21: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/21.jpg)
21
StringBuffer
String b = “hej” b = b + “, goddag” b = b + “ og hallo” New object everytime StringBuffer b2 = “hej” b2.append(“, goddag”) b2.append(“ og hallo”)
Heap
hej
hej, goddag
hej, goddagog hallo
StringBufferhej
![Page 22: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/22.jpg)
22
StringBuffer
String b = “hej” b = b + “, goddag” b = b + “ og hallo” New object everytime StringBuffer b2 = “hej” b2.append(“, goddag”) b2.append(“ og hallo”)
Heap
hej
hej, goddag
hej, goddagog hallo
StringBufferhej, goddag
![Page 23: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/23.jpg)
23
StringBuffer
String b = “hej” b = b + “, goddag” b = b + “ og hallo” New object everytime StringBuffer b2 = “hej” b2.append(“, goddag”) b2.append(“ og hallo”)
Heap
hej
hej, goddag
hej, goddagog hallo
StringBufferhej, goddag og hallo
![Page 24: Programming in Java: lecture 6 - people.cs.aau.dkpeople.cs.aau.dk/~ulrik/teaching/F09/PJAVA/lecture6/slides6.pdf · 1 Programming in Java: lecture 6 Objects, Classes and Instances](https://reader035.fdocuments.in/reader035/viewer/2022070722/5f01becb7e708231d400d545/html5/thumbnails/24.jpg)
24
OOA&D
Object Oriented Analysis and Design Programming with objects Reusable components