Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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