Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on...
Transcript of Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on...
![Page 1: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/1.jpg)
Announcements
• Lecture examples on CVS
• Quiz Thursday – OOP concepts (last Monday through this
Wednesday)
– Study questions up tonight
• Lab tomorrow – Grading policy + “challenge question”
• P3 on Wednesday
• Midterm 1
![Page 2: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/2.jpg)
Midterm 1
0 10 20 30 40 50 60 70 80 90 1000
1
2
3
4
5
6
• Handed back tomorrow in lab • 1 week for written re-grade requests
≈A ≈B ≤C
![Page 3: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/3.jpg)
Static fields and instance fields
obj1 this. onesData
3
obj2 this. onesData
4
obj3 this. onesData
2
obj4 this. onesData
0
obj5 this. onesData
8
Static fields
everyOnesData 8
Instance fields
![Page 4: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/4.jpg)
Static/instance usage
//Static usage
MyClassname.staticField e.g. Integer.MAX_VALUE
//Instance usage
myObject.instanceField
e.g. myInt.intValue
Something previously constructed with the new keyword
![Page 5: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/5.jpg)
Static methods and instance methods
obj1 this. onesData
3
obj2 this. onesData
4
obj3 this. onesData
2
obj4 this. onesData
0
obj5 this. onesData
8
Instance methods
Static methods …obj.onesData…
onesData
![Page 6: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/6.jpg)
Static methods and instance methods
obj1 this. onesData
3
obj2 this. onesData
4
obj3 this. onesData
2
obj4 this. onesData
0
obj5 this. onesData
8
Instance methods
Static methods …obj.onesData…
onesData
![Page 7: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/7.jpg)
Static methods and instance methods
//instance method
public void doSomething() {
//access this.instanceField
}
//static method
public void doSomething(MyClass myObject) {
//access myObject.instanceField
}
![Page 8: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/8.jpg)
Static “Constructor”
//Typical constructor
public MyClass(int valueToAssign) {
this.value = valueToAssign;
}
//Rewritten as a static method
public static MyClass makeNew(int val) {
MyClass mc = new MyClass(); //default constructor
mc.value = val;
return mc;
}
![Page 9: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/9.jpg)
Access modifiers - APIs
Application Programming Interface
• A set of methods available to programmers
• “Encapsulation”: The inner workings behind the method calls are treated like a black box – Java APIs
• String
• Math
• Etc.
– What are the trade-offs of encapsulation?
![Page 10: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/10.jpg)
Access modifiers – member level
• “Members” of a class: fields and methods • Modifying access to members:
– public keyword: Accessible to any object of any class
– private keyword: only accessible to other methods within the same class
– More to come: • package-private (Wednesday) • protected (In a few weeks)
• “Top-level” modifiers: modify access to classes as a whole (more on Wednesday)
![Page 11: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/11.jpg)
Memory Model
• Stack Contains the local variables used in each method call:
– primitive data values
– reference variables (memory addresses)
• Heap Contains all of the object instance data
– Where the reference variables “point to”
• Permanent generation – Stores class definitions (things like the instructions for
each method)
![Page 12: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/12.jpg)
Stack
Stack frame example:
x 3
method1
![Page 13: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/13.jpg)
Stack
Stack frame example:
x 3
method1
x @
method2
![Page 14: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/14.jpg)
Stack
Stack frame example:
x 3
method1
x 3
method2
x 7
method3
![Page 15: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/15.jpg)
Stack
Stack frame example:
x 3
method1
x @
method2
![Page 16: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/16.jpg)
Stack
Stack frame example:
x 3
method1
![Page 17: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/17.jpg)
Stack vs Heap
@
Stack Heap Integer object
intValue 2
//any other //instance //fields
This is how you should draw the stack, heap, variables, and objects on exams
x(m1) 3
7
x(m2)
x(m3)
![Page 18: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/18.jpg)
Aliasing
@
Stack Heap one object
data 1 a 3
7
b
c
another
data 1
@ d
@ e
![Page 19: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/19.jpg)
Deeper referencing
@
Stack Heap one object
data 1 a 3
7
b
c
ref @
another
data 8
ref @
another
data 8
ref ?
![Page 20: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/20.jpg)
The literal
• Used to indicate an empty reference variable (Doesn’t point to a location in memory)
• E.g.
MyClass myObject = null;
• Not a keyword
![Page 21: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/21.jpg)
Deeper referencing
@
Stack Heap one object
data 1 a 3
7
b
c
ref @
another
data 8
ref @
another
data 8
ref null
![Page 22: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/22.jpg)
Deeper aliasing
@
Stack Heap one object
data 1 a 3
7
b
c
ref @
another
data 8
ref @
another
data 8
ref null
@ d
![Page 23: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/23.jpg)
.equals method
• == compares memory addresses • .equals can compare instance data • Should contain a null-check: public boolean equals(MyObject other) { if(other != null) { return this.data == other.data; } else { return false; } //Rewrite using a single line? }
![Page 24: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/24.jpg)
Hard coding data structure
//Data for student 01 String student_01_Name; int student_01_Age; int student_01_Year; String student_01_Major; //Data for student 02 String student_02_Name; … //Data for student 03 String student_03_Name; …
![Page 25: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/25.jpg)
(Partially) soft-coding data structure
//Data for student 01
Student student_01 = new Student(“Bob”, 17, 2, “CMSC”);
//Data for student 02
Student student_02 = new Student(“Bill”, 20, 4, “CMSC”);
…
//Data for student 03
Student student_02 = new Student(…);
…
![Page 26: Static vs instance - University Of Maryland · 2013-06-17 · Announcements •Lecture examples on CVS •Quiz Thursday –OOP concepts (last Monday through this Wednesday) –Study](https://reader033.fdocuments.in/reader033/viewer/2022042011/5e725a36994b79525025a0b4/html5/thumbnails/26.jpg)
Fully soft-coding data structure
• Arrays (more later)
– Contiguous block of memory addresses
• Linked list
– Non-contiguous: each entry saves the memory address of the subsequent entry
• Trade-offs?