Download Objects First With Java - Chapter 3

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Object interaction
Creating cooperating objects
3.0
A digital clock
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
2
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
3
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
4
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
5
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
6
Object diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
7
Class diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
8
Primitive types vs. object
types
SomeObject obj;
object type
int i;
32
primitive type
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
9
Primitive types vs. object
types
ObjectType a;
ObjectType b;
b = a;
int a;
int b;
32
32
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
10
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
11
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
12
Objects creating objects
public 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
13
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
14
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
15
ClockDisplay object diagram
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
16
Objects creating objects
in class NumberDisplay:
public NumberDisplay(int rollOverLimit);
formal parameter
in class ClockDisplay:
hours = new NumberDisplay(24);
actual parameter
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
17
Method calls
• internal method calls
updateDisplay();
...
private void updateDisplay()
• external method calls
minutes.increment();
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
18
Method calls (2)
object . methodName ( parameter-list )
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
19
Concepts
• abstraction
• modularization
• classes define
types
• class diagram
• object diagram
• object references
primitive types
object types
object creation
overloading
internal/external
method call
• debugger
•
•
•
•
•
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
20
Related documents