CS 2210: SW Development Methods Object-oriented Design and Programming

advertisement
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
Download