Upload
catherine-gray
View
212
Download
0
Embed Size (px)
Citation preview
1
COS 260 DAY 5
Tony Gauvin
2
Agenda
• Questions? • 2nd Mini quiz
– Password “squareRootChess” – 6 questions and 1 extra credit
• Assignment 1 Due Next Class• Assignment 2 will be posted soon • Begin Object Interaction
Object interaction
Creating cooperating objects
5.0
4
A digital clock
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
5 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Source: http://www.autoevolution.com/news/lexus-ct-200h-disassembled-after-100000km-german-endurance-test-79389.html
6
How to design a car?
• Divide and Conquer– Every engineering team has their part(s)– Wheels & tires– Engines & transmissions– Interiors– Electronics– Body and Paint
• Have to agree on standard interfaces
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
7
Abstraction and modularization
• Abstraction is the ability to ignore details of parts to focus attention on a higher level of a problem.
• Modularization is the process of dividing a whole into well-defined parts, which can be built and examined separately, and which interact in well-defined ways.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
8
Modularizing the clock display
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
One four-digit display?
Or two two-digit displays with similar behaviours?
9
Implementation - NumberDisplay
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class NumberDisplay{ private int limit; private int value;
Constructor and methods omitted.}
10
Implementation - ClockDisplay
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes;
Constructor and methods omitted.}
11
Object diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
12
Class diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
13
Primitive types vs. object types
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
32
object type
primitive type
SomeObject obj;
int i;
14
Quiz: What is the output?
• int a;int b;a = 32;b = a;a = a + 1;System.out.println(b);
• Person a;Person b;a = new Person("Everett");b = a;a.changeName("Delmar");System.out.println(b.getName());
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
15
Primitive types vs. object types
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
32
ObjectType a;
int a;
ObjectType b;
32
int b;
b = a;
16
Number Display behaviors
00 (or some other value) limit 00 Possible methods increment setValue hitLimit
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
17
Source code: NumberDisplay
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public NumberDisplay(int rollOverLimit){ limit = rollOverLimit; value = 0;}
public void increment(){ value = (value + 1) % limit;}
18
The modulo operator• The 'division' operator (/), when applied to
int operands, returns the result of an integer division.
• The 'modulo' operator (%) returns the remainder of an integer division.
• E.g., generally: 17 / 5 gives result 3, remainder 2
• In Java: 17 / 5 == 3 17 % 5 == 2 – what is largest passible remainder
• Some times called “clock math” Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
19
Quiz
• What is the result of the expression 8 % 3
• For integer n >= 0, what are all possible results of:
n % 5
• Can n be negative?
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
20
Source code: NumberDisplay
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public String getDisplayValue(){ if(value < 10) { return "0" + value; } else { return "" + value; }}
Pad leading zeros for single digits
21
Concepts• abstraction• modularization• classes define new types• class diagram
• object diagram• object references • object types• primitive types
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
22
Objects creating objects
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); … }}
23
Objects creating objects
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public NumberDisplay(int rollOverLimit);
in class NumberDisplay:
formal parameter
hours = new NumberDisplay(24);
in class ClockDisplay:
actual parameter
24
ClockDisplay object diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
25
Method calling
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public void timeTick(){ minutes.increment(); if(minutes.getValue() == 0) { // it just rolled over! hours.increment(); } updateDisplay();}
26
External method call
• external method callsminutes.increment();
object . methodName ( parameter-list )
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
27
Internal method call
• internal method callsupdateDisplay();
• No variable name is required.• this
– could be used as a reference to the invoking object, but not used for method calls.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
28
Internal method
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
/** * Update the internal string that * represents the display. */private void updateDisplay(){ displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue();}
29
Method calls
• NB: A method call on another object of the same type would be an external call.
• ‘Internal’ means ‘this object’.• ‘External’ means ‘any other
object’, regardless of its type.
30
null
• null is a special value in Java• Object fields are initialized to null by default.
• You can test for and assign null:
private NumberDisplay hours;
if(hours != null) { ... }
hours = null;
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
31
The debugger
• Useful for gaining insights into program behavior …
• … whether or not there is a program error.
• Set breakpoints.• Examine variables.• Step through code.
32
The debugger
33
Concept summary
• object creation• overloading• internal/external method
calls• debugger
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling