CS 2210: SW Development Methods Object-oriented Design and Programming •Reading: Chapter 2 of MSD text – Section 2.3.2 on UML: look at class diagrams but ignore the rest for now This Unit Overview • • • • • • Review OO, objects, classes Object identity, equality and Java Intro to abstraction and inheritance Class identification and modeling Modeling object interaction More Java details on classes etc. – inheritance, abstract classes, types What’s OO All About? • At a very high level, programs are: – procedures operating on – data-objects • The “old” view sometimes called procedural – Procedures are the starting point – Access data through parameters, shared values – Only approach for languages like C, Pascal • A system is: a hierarchy of procedure calls The OO Approach • Object-oriented: – Emphasis on the data-objects first • Data encapsulation – Associate procedures with the data-objects • Procedural encapsulation • Call operations on data-objects, or • Send a data-object a message • A system is: a group of collaborating objects What’s an Object? • Grady Booch’s definition: an object has: state, behavior, identity • State – encapsulates data (e.g. fields in Java objects) – contains relationships with other objects (e.g. references to other objects) What’s an Object? (2) • Behavior – Responds to operations, messages (e.g. Java method calls on that object) – Interacts with other objects to accomplish a task What’s an Object? (3) • Identity – Simple idea, but… • Are two objects the same? Or are they equal? – Reference variables in Java, C++, etc. – Identity means: refers to the same object – Book calls this: name equivalence Object Equality • Equality: perhaps two things can be different things, but equal according to some problem-defined condition – E.g. two Course objects: equal if same courseID field (let’s say) – Book’s term: content equivalence For objects, do you think == tests for: 1. 2. 3. 4. Name equivalence Content equivalence Neither one Both Do you think equals() returns true for: 1. 2. 3. 4. Name equivalence Content equivalence Neither one Either Example: x.equals(y) is true means what about x and y? Java and Object Equivalence • Java supports both. You must understand them both! – If not: see slides at the end of this deck • name equivalence: operator == – E.g. x==y means “do x and y reference the same (one) object”? • method boolean equals() – E.g. x.equals(y) means “do x and y stored the same values to make them content equivalent”? Classes • So far we’ve just talked about objects • We note that many objects are a “type of” the same kind of thing – The same “abstraction” – E.g. 1, 2, 7 and 10 – whole numbers – E.g. 1, 3.5, 25, pi – numbers – Bob, Sally, Joe – Students • But, they are Persons too, aren’t they? – cs2110, cs2102, engr1620 – Courses Classes, Type • Classes define a set of objects with the same properties (state, behavior) • A class definition serves as a “cookie cutter” for creating new objects – Instantiation of an object of a certain class – In Java, we do this with new and a constructor is called – Creates an individual object, also called an instance • Variables and data objects have a type – What the rules are for that object – An object’s class is one form of object-type