object-oriented design and programming cs 2210: sw development methods reading: chapter 2 of msd...
TRANSCRIPT
Object-oriented Design and Programming
CS 2210: SW Development Methods
•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. Name equivalence2. Content equivalence3. Neither one4. Both
Do you think equals() returns true for:
1. Name equivalence2. Content equivalence3. Neither one4. 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