Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.