You are on page 1of 28

Object-Oriented Methods:

Analysis, Design &


Programming
Dr. Wolfgang Pelz
Dr. Yingcai Xiao

The University of Akron

Introduction © Wolfgang Pelz 2001-04


Outline

• OOA
• OOD: UML
• OOP: C++

Introduction © Wolfgang Pelz 2001-04 2


OOA - OOD - OOP
Henderson
Coad/Nicola
Analysis “Baseball Model”

Design

Implementation

Introduction © Wolfgang Pelz 2001-04 3


Outline
• Software Development Models
• Object-Oriented Concepts
• Introduction to C
• UML

Introduction © Wolfgang Pelz 2001-04 4


UML Bibliography
• The Unified Modeling Language User Guide
Booch et al, Addison-Wesley
• UML Toolkit
Hans-Erik Eriksson et al, Wiley
• UML in a Nutshell
Sinan Si Alhir, O’Reilly

Introduction © Wolfgang Pelz 2001-04 5


General Bibliography
• Design Patterns
Erich Gamma et al, Addison-Wesley
• Applying UML and Patterns
Craig Larman, Prentice-Hall
• The Practice of Programming
Brian Kernighan et al, Addison-Wesley

Introduction © Wolfgang Pelz 2001-04 6


C++ References
• “C++ for Java Programmers”
Mark Allen Weiss, Pearson / Prentice Hall
• “C++: How to Program",
Deitel & Deitel, Prentice Hall
• "C++ Primer”
Stanley Lippman, Addison-Wesley
• "The C++ Programming Language"
Bjarne Stroustrup, Addison-Wesley
• "The Annotated C++ Reference Manual“
Bjarne Stroustrup and Margareth Ellis, Addison
Wesley

Introduction © Wolfgang Pelz 2001-04 7


The Spiral Software Cycle
Traditional

Introduction © Wolfgang Pelz 2001-04 8


The Spiral Software Cycle
Object-Oriented

Introduction © Wolfgang Pelz 2001-04 9


The Large Picture

• Hardware Engineering: automated mass production of


standard components.
• Software Engineering: treat software development as an
engineering process.
• CASE : Computer-Aided Software Engineering
• CASE Tools: Automation of Software Development
• The fundamental software component is an object.
• An important goal of OO is code reuse.

Introduction © Wolfgang Pelz 2001-04 10


The Large Picture
Computer Science (http://en.wikipedia.org/wiki/Computer_science)
The study of the theoretical foundations of information and
computation and their implementation and application in
computer systems.
Computer Science = Data + Data Manipulation

Programming = Data Structures + Algorithms

Code Reuse of algorithms and data structures.

Design Reuse => Design Patterns

Introduction © Wolfgang Pelz 2001-04 11


Objects
• concepts, concrete or abstract, with meaning
derived from the problem domain “the real
world”
• promote an understanding of the problem
domain
• provide a basis for implementation
• encapsulation of state (data values) and
behavior (operations)

Introduction © Wolfgang Pelz 2001-04 12


Objects (cont.)
• Exhibit behavior by invoking a method in
response to a message
• instances of classes
• an object-oriented program is a collection of
autonomous interacting and collaborating
objects

Introduction © Wolfgang Pelz 2001-04 13


Classes
• objects sharing common characteristics
• dictate the behavior of the object
• contain
– state: attributes, fields, variables, data member
– behavior: functions, methods, function member
• access specifiers
• instantiation
• abstract versus concrete

Introduction © Wolfgang Pelz 2001-04 14


3 Pillars of Object-Orientation
• encapsulation

• inheritance

• polymorphism

Introduction © Wolfgang Pelz 2001-04 15


Encapsulation
• combination of state and behavior
• implementation details are hidden internally
• internal mechanisms can change while
public interfaces remain stable
• state may be retrieved using public methods
• behavior consists of methods activated by
receipt of messages

Introduction © Wolfgang Pelz 2001-04 16


Inheritance
• organization of classes into a hierarchical
inheritance tree
• data and behavior associated with classes higher in
the tree are accessible to those classes lower in the
tree
• terminology
– ancestor/descendant
– superclass/subclass
– generalization/specialization

Introduction © Wolfgang Pelz 2001-04 17


Single Inheritance
• classes/objects inherit from only one parent
• no ambiguity due to name clashes
• examples: Java, Smalltalk

Introduction © Wolfgang Pelz 2001-04 18


Multiple Inheritance
• classes/objects may have more than one
parent
• ambiguity (name clashes) can occur
• allows abstract classes to be more specific
in characteristics (kitchen sink problem)
• examples: C++, Eiffel

Introduction © Wolfgang Pelz 2001-04 19


Inheritance Diagram

Introduction © Wolfgang Pelz 2001-04 20


Another Inheritance Diagram

Introduction © Wolfgang Pelz 2001-04 21


Inheritance for
Teaching Assistant
• birthday

• library privileges

Introduction © Wolfgang Pelz 2001-04 22


Polymorphism
• polymorphism: many forms
• localizes responsibility for behavior
• object automatically uses correct
implementation for a method
• many objects can respond to the same
message
• minimizes interface parameter passing

Introduction © Wolfgang Pelz 2001-04 23


Polymorphism
• determination of method is done at:
– run-time: dynamic binding, late binding
– compile-time: static binding, early binding
• treat many types (all derived from the same
type) as if they were all one type
• single piece of interface works on all these
types

Introduction © Wolfgang Pelz 2001-04 24


Polymorphism Example

Introduction © Wolfgang Pelz 2001-04 25


3 Pillars of Object-Orientation
• Encapsulation
Combine data structures and algorithm together
and insulate internal code and data from their
interface. Easily to be reused.
• Inheritance
Reuse the code of the parents as is.
• Polymorphism
Objects of similar type have the same interface.
Easily to be reused.

Introduction © Wolfgang Pelz 2001-04 26


Relationships
• is-a: code reuse through inheritance
– instances of a subclass must be more
specialized forms of the superclass
– instances of a subclass can be used where
quantities of the superclass are expected
• has-a: code reuse through inclusion
– component or contains
– instances of a class possess fields of a given
type

Introduction © Wolfgang Pelz 2001-04 27


OOA: Objects & Methods
• write description of problem domain
• nouns are candidates for objects
• verbs are candidates for methods
• designs are implementation-language independent
• UML can be used to depict the designs

Introduction © Wolfgang Pelz 2001-04 28

You might also like