© Wolfgang Pelz 2001-04 Introduction Object-Oriented Methods: Analysis, Design & Programming Dr. Wolfgang Pelz Dr. Yingcai Xiao The University of Akron
Dec 21, 2015
© Wolfgang Pelz 2001-04
Introduction
Object-Oriented Methods:Analysis, Design &
Programming
Dr. Wolfgang PelzDr. Yingcai Xiao
The University of Akron
© Wolfgang Pelz 2001-04Introduction 3
OOA - OOD - OOPHenderson
Analysis
Design
Implementation
Coad/Nicola
“Baseball Model”
© Wolfgang Pelz 2001-04Introduction 4
Outline
• Software Development Models
• Object-Oriented Concepts
• Introduction to C
• UML
© Wolfgang Pelz 2001-04Introduction 5
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
© Wolfgang Pelz 2001-04Introduction 6
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
© Wolfgang Pelz 2001-04Introduction 7
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
© Wolfgang Pelz 2001-04Introduction 10
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.
© Wolfgang Pelz 2001-04Introduction 11
The Large Picture
Design Reuse =>
Computer Science
The study of the theoretical foundations of information and computation and their implementation and application in computer systems.
(http://en.wikipedia.org/wiki/Computer_science)
Computer Science = Data + Data Manipulation
Programming = Data Structures + Algorithms
Code Reuse of algorithms and data structures.
Design Patterns
© Wolfgang Pelz 2001-04Introduction 12
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)
© Wolfgang Pelz 2001-04Introduction 13
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
© Wolfgang Pelz 2001-04Introduction 14
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
© Wolfgang Pelz 2001-04Introduction 15
3 Pillars of Object-Orientation• encapsulation
• inheritance
• polymorphism
© Wolfgang Pelz 2001-04Introduction 16
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
© Wolfgang Pelz 2001-04Introduction 17
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
© Wolfgang Pelz 2001-04Introduction 18
Single Inheritance• classes/objects inherit from only one parent
• no ambiguity due to name clashes
• examples: Java, Smalltalk
© Wolfgang Pelz 2001-04Introduction 19
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
© Wolfgang Pelz 2001-04Introduction 22
Inheritance for Teaching Assistant
• birthday
• library privileges
© Wolfgang Pelz 2001-04Introduction 23
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
© Wolfgang Pelz 2001-04Introduction 24
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
© Wolfgang Pelz 2001-04Introduction 26
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.
• InheritanceReuse the code of the parents as is.
• PolymorphismObjects of similar type have the same interface. Easily to be reused.
© Wolfgang Pelz 2001-04Introduction 27
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