static vs instance - university of maryland · 2013-06-17 · announcements •lecture examples on...

26
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

Upload: others

Post on 15-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.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

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

(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

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?