View
234
Download
2
Tags:
Embed Size (px)
Citation preview
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 2
A digital clock
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 3
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 4
Modularizing the clock display
One four-digit display?
Or two two-digit displays?
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 5
Implementation - NumberDisplay
public class NumberDisplay{ private int limit; private int value;
Constructor and methods omitted.}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 6
Implementation - ClockDisplay
public class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes;
Constructor and methods omitted.}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 7
Object diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 8
Class diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 9
Primitive types vs. object types
32
object type
primitive type
SomeObject obj;
int i;
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 10
Primitive types vs. object types
32
ObjectType a;
int a;
ObjectType b;
32
int b;
b = a;
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 11
Source code: NumberDisplay
public NumberDisplay(int rollOverLimit){ limit = rollOverLimit; value = 0;}
public void increment(){ value = (value + 1) % limit;}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 12
Source code: NumberDisplay
public String getDisplayValue(){ if(value < 10) { return "0" + value; } else { return "" + value; }}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 13
Objects creating objectspublic class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); }}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 14
Method calling
public void timeTick(){ minutes.increment(); if(minutes.getValue() == 0) { // it just rolled over! hours.increment(); } updateDisplay();}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 15
Internal method
/** * Update the internal string that * represents the display. */private void updateDisplay(){ displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue();}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 16
ClockDisplay object diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 17
Objects creating objects
hours = new NumberDisplay(24);
public NumberDisplay(int rollOverLimit);
in class ClockDisplay:
in class NumberDisplay:
formal parameter
actual parameter
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 18
Method calls
• internal method callsupdateDisplay();
...
private void updateDisplay()
• external method callsminutes.increment();
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 19
Method calls (2)
object . methodName ( parameter-list )
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 20
Concepts
• abstraction• modularization• classes define
types• class diagram• object diagram• object references
• primitive types• object types• object creation• overloading• internal/external
method call• debugger