© Wolfgang Pelz Introduction Object-Oriented Methods: Analysis, Design & Programming Dr. Wolfgang Pelz Dr. Yingcai Xiao The University of Akron
© Wolfgang Pelz Introduction 2 Outline OOA OOD: UML OOP: C++
© Wolfgang Pelz Introduction 3 OOA - OOD - OOP Henderson Analysis Design Implementation Coad/Nicola “Baseball Model”
© Wolfgang Pelz Introduction 4 Outline Software Development Models Object-Oriented Concepts Introduction to C UML
© Wolfgang Pelz Introduction 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 Introduction 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 Introduction 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 Introduction 8 The Spiral Software Cycle Traditional
© Wolfgang Pelz Introduction 9 The Spiral Software Cycle Object-Oriented
© Wolfgang Pelz Introduction 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 Introduction 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.information computation computer systems ( Computer Science =Data+ Data Manipulation Programming =Data Structures+ Algorithms Code Reuse of algorithms and data structures. Design Patterns
© Wolfgang Pelz Introduction 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 Introduction 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 Introduction 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 Introduction 15 3 Pillars of Object-Orientation encapsulation inheritance polymorphism
© Wolfgang Pelz Introduction 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 Introduction 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 Introduction 18 Single Inheritance classes/objects inherit from only one parent no ambiguity due to name clashes examples: Java, Smalltalk
© Wolfgang Pelz Introduction 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 Introduction 20 Inheritance Diagram
© Wolfgang Pelz Introduction 21 Another Inheritance Diagram
© Wolfgang Pelz Introduction 22 Inheritance for Teaching Assistant birthday library privileges
© Wolfgang Pelz Introduction 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 Introduction 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 Introduction 25 Polymorphism Example
© Wolfgang Pelz Introduction 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. Inheritance Reuse the code of the parents as is. Polymorphism Objects of similar type have the same interface. Easily to be reused.
© Wolfgang Pelz Introduction 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
© Wolfgang Pelz Introduction 28 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