Title: Fundamentals of OO
1Fundamentals of OO
2Example Classroom
- Attending the lecture we have several individuals
- Wade - loves Chinese food
- George - an outdoorsman
- Wendle - is a sports nut
- Lee - doesn't eat anything with a vowel in its
name - These are the students of our lecture
- Note that the individuals are not identical.
Wade George
Wendle
Lee
3Abstraction and Classes
- From our perspective, we see them as an
instantiation of a "Class", Student - has a name
- attends class
- has a grade
- completes assignments
- Note the each student looks the same
- even though the are different individuals
- A Class defines an "Abstraction"
- OO Abstractions are based on
- data (name, attendance)
- "Attributes"
- simple access
- behavior (completes assignments, attends class)
- "Operations/Methods"
- complex properties
- relationships (student in course)
- external implementations
4Objects, Instances of a Class
- Classes define what properties will exist in each
instance - Objects provide distinct instances that exhibit
those properties
Class
Objects
George Student
NameGeorge
Attendence100
Current
GradeA
Lee Student
NameLee
Attendence85
Current
Notice that the data members are replicated in
each object. Each object is an instance of
Student. It does not make sense to replicate
member functions.
GradeB
5Encapsulation and Objects
- Classes form the interface for interaction,
Objects provide the implementation - they are instances of a class (student)
- they have unique behavior
- they have state
Class
Objects
6Messaging Supports Encapsulation
- We interact with objects through "messages"
- Messages allow object to determine implementation
rather than the sender determining the
implementation for each instance.
Messages are passed and handled, rather than
invoked like functions.
7Polymorphism Supports Encapsulation
- Allows an object of any implementation type,
which satisfies the interface defined by the
abstraction, to be used by a generic reference to
an abstraction. - Promotes a separation of interface and
implementation
class GraduateStudent Student float
calculateScore(Student s) GraduateStudent
George calculateScore(George)
Wade is an undergraduate Student
George is an graduate Student
Polymorphism says that you can treat both Wade
and George as Students if the distinction between
undergraduate and graduate is not important.
8Hierarchies
- Organize lower level abstractions into more
complex abstractions - Hierarchies allow more complex abstractions to be
understood - Two basic forms
- Inheritance
- Generalization - Specialization
- Base Class - Derived Class
- Parent - Child
- Abstract Class - Concrete Class
- Aggregation (many-to-one relationships)
- Whole - Part
- Containership
- Collection
- Group
9Inheritance Hierarchy
- an "is-A" relationship
- Inheritance
- for type - a re-use of common interface
- for class - a re-use of common interface and
implementation
Student
Person
Name
Name
Attendence
Current
Grade
10Aggregation Hierarchy
- a "has-A" relationship
- assembly-part - where the aggregation of parts
makes up the whole - ex airplane is an aggregation of wings, wheels,
motor, prop, etc. - container-contents - where the container exists
with or without contents - ex classroom is an aggregation of students,
instructor, tables, chairs, etc. - group-member - where members are logically
associated with whole - ex course has students and teachers as members
- "weak has-A" - where there is more of a
peer-to-peer relationship between abstractions
(association) - ex Instructor has students, Students have
instructor
11Summary of Object-Oriented Concepts
- Abstraction
- Class
- Attribute
- Behavior
- Relations
- Encapsulation
- Object
- Message
- Polymorphism
- Hierarchies
- Inheritance
- Aggregation
Is-A relationships are implemented through
inheritance. Has-A relationships are
implemented through data members. Data structures
are used to implement the various Has-A
relationships. For example, multiple children
are maintained through container data structures
such as arrays and linked lists.
12Comparison of Functional vs. OO Views
Register Student
Submit Grade
Students
Grades
Students
Student/Grades
Print Transcript
13Addition of a New Student Type
Register Student
Submit Grade
Students/ Pass Fail Students
Grades/PF
Impact Areas
Students
Student/Grades/PF
Print Transcript
function override
- Changes in data types cause significant impact to
functional approaches - OO approaches allow new object types to re-define
functionality
14Addition of New Report Type
Register Student
Submit Grade
Impact Areas
Students
Grades
Students
Student/Grades/PF
Student/Grades/PF
Print Report Card
Print Transcript
- Changes in functionality based on stable data
causes significant impact across objects - Functional approaches allow new functions to
augment functionality
15Re-organization of OO Abstractions
- Data dependent behavior handled by derived
classes - New functionality handled by new associated
classes ("wrappers", "adapters", "views")
16Exercise Identifying OO Properties
- Provide examples of the following concepts using
an Answering Machine. - Class
- Attribute
- Behavior
- Object
- Association
- Inheritance
- Aggregation
17Assignment Identifying OO Properties
- Provide examples of the following concepts using
a domain you are familiar with. Prepare your
results on a transparency for presentation to the
class. - Class
- Attribute
- Behavior
- Object
- Association
- Inheritance
- Aggregation
18Sample Package View
19Sample Class View
Diamond implies composition All MediaTopics
together comprise a CardCatalog.
Notice that this sample class view does not
include visibility indicators.
20Acknowledgements
- This presentation is an adaptation of material
developed by Jim Stafford, John Hopkins
University. Used by permission.