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
Analysis
Coad/Nicola
“Baseball Model”
Design
Implementation
Introduction
© Wolfgang Pelz 2001-04
3
Outline
•
•
•
•
Introduction
Software Development Models
Object-Oriented Concepts
Introduction to C
UML
© 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,
Wesley
Introduction
© Wolfgang Pelz 2001-04
Addison
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
Descargar

Object-oriented Analysis, Design & Programming