Presentation is loading. Please wait.

Presentation is loading. Please wait.

COS 260 DAY 5 Tony Gauvin.

Similar presentations


Presentation on theme: "COS 260 DAY 5 Tony Gauvin."— Presentation transcript:

1 COS 260 DAY 5 Tony Gauvin

2 Agenda Questions? 2nd Mini quiz Assignment 1 Due Next Class
Password “squareRootChess” 6 questions and 1 extra credit Assignment 1 Due Next Class Assignment 2 will be posted soon Begin Object Interaction

3 Objects First with Java Creating cooperating objects
Object interaction Creating cooperating objects 5.0 © David J. Barnes and Michael Kölling

4 Objects First with Java
A digital clock Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

5 Source: http://www. autoevolution
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

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
Objects First with Java 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 © David J. Barnes and Michael Kölling

8 Modularizing the clock display
Objects First with Java Modularizing the clock display One four-digit display? Or two two-digit displays with similar behaviours? Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

9 Implementation - NumberDisplay
Objects First with Java 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 © David J. Barnes and Michael Kölling

10 Implementation - ClockDisplay
Objects First with Java 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 © David J. Barnes and Michael Kölling

11 Objects First with Java
Object diagram Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

12 Objects First with Java
Class diagram Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

13 Primitive types vs. object types
Objects First with Java Primitive types vs. object types object type SomeObject obj; int i; primitive type 32 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

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 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 © David J. Barnes and Michael Kölling

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 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 © David J. Barnes and Michael Kölling

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: / 5 gives result 3, remainder 2 In Java: / 5 == % 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 Source code: NumberDisplay public String getDisplayValue() { if(value < 10) { return "0" + value; } else { return "" + value; Pad leading zeros for single digits Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

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 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); } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

23 Objects creating objects
Objects First with Java Objects creating objects hours = new NumberDisplay(24); in class ClockDisplay: actual parameter public NumberDisplay(int rollOverLimit); in class NumberDisplay: formal parameter Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

24 ClockDisplay object diagram
Objects First with Java ClockDisplay object diagram Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

25 Objects First with Java
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 © David J. Barnes and Michael Kölling

26 Objects First with Java
External method call external method calls minutes.increment(); object . methodName ( parameter-list ) Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling © David J. Barnes and Michael Kölling

27 Objects First with Java
Internal method call internal method calls updateDisplay(); 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 © David J. Barnes and Michael Kölling

28 Objects First with Java
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 © David J. Barnes and Michael Kölling

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 Objects First with Java
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 © David J. Barnes and Michael Kölling


Download ppt "COS 260 DAY 5 Tony Gauvin."

Similar presentations


Ads by Google