ObjectOriented Methods Analysis Design Programming Dr Wolfgang Pelz
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-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 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
- Slides: 28