Module 1: Introduction To OOAD: (Object-Oriented Analysis and Design)
This document provides an introduction to object-oriented analysis and design (OOAD). It discusses why the OO approach was developed, including to help manage complexity and facilitate communication. It then defines key OO concepts like objects, classes, encapsulation, inheritance, polymorphism, and the class diagram notation. The document also outlines the OO analysis and design process, showing where OO fits within the typical software development lifecycle. It provides an example of a child's concept diagram and explains how OO modeling can help capture conceptual models.
Download as PPT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
56 views
Module 1: Introduction To OOAD: (Object-Oriented Analysis and Design)
This document provides an introduction to object-oriented analysis and design (OOAD). It discusses why the OO approach was developed, including to help manage complexity and facilitate communication. It then defines key OO concepts like objects, classes, encapsulation, inheritance, polymorphism, and the class diagram notation. The document also outlines the OO analysis and design process, showing where OO fits within the typical software development lifecycle. It provides an example of a child's concept diagram and explains how OO modeling can help capture conceptual models.
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38
1
Module 1: Introduction to OOAD
(Object-Oriented Analysis and Design) 2 Objectives Why OO?
What is OOAD?
How to do OOAD? 3 Why Object-Oriented?
Genesis 11:1-9 Acts 2:1-4 The Tower Of Babel
Let's become famous by building a city with a tower that reaches up to heaven (verse four).
Let's go down and confuse their speech right away, and make it so that they will not understand each other's speech. (verses five through seven).
4 Why Object-Oriented?
5 What kind of language can alleviate difficulties with communication & complexity hopefully well? Why Object-Oriented?
The "software crises" came about when people realized the major problems in software development were caused by communication difficulties and the management of complexity [Budd]
The Whorfian Hypothesis: Human beings are very much at the mercy of the particular language which has become the medium of expression for their society the 'real world' is built upon the language habits We cut nature up, organize it into concepts, and ascribe significances as we do, largely because we are parties to an agreement to organize it in this way and is codified in the patterns of our language.
Cp +
=E 6 Why Object-Oriented? Consider Human Growth & Concept Formation Communication & complexity about the problem and the solution, all expressed in terms of concepts in a language! But then, What is CONCEPT? [Martin & Odell] Consider Human Growth & Concept Formation
stage concepts infant the world is a buzzing confusion very young age "blue" "sky (individual concepts) "blue sky (more complex concept) hypothesis: humans possess an innate capacity for perception getting older -> increased meaning, precision, subtlety, ... the sky is blue only on cloudless days the sky is not really blue it only looks blue from our planet Earth because of atmospheric effects elaborate conceptual constructs Concept formation: from chaos to order! 7 Why Object-Oriented? - concepts and objects So, concepts are needed to bring order into But, What is CONCEPT? [Martin & Odell] [Novak, 1984, Cambridge University Press] Study of a first grade class When given a list of concepts (water, salt water, Oceans, Penguins,...), Harry constructed a concept diagram through which he understands his world and communicates meaning Does Harry understand the concepts? Do you understand what Harry understands? Agree or Diagree? 8 Why Object-Oriented? for Conceptual Modeling Reasons What kind of language can be used to create this concept diagram, or Harrys mental image?
Water Rivers Oceans Fish Penguins Crocodiles Fresh water Salt water have have have live in have have 9 Why Object-Oriented -> What is a model and why? A model is a simplification of reality. E.g., a miniature bridge for a real bridge to be built
Well...sort of.but not quite A model is our simplification of our perception of reality (that is, if it exists, otherwise it could be a mere illusion). communication is not about reality but about your/my/his/her perception of reality => validation and verification hard but needed
A model is an abstraction of something for the purpose of understanding, be it the problem or a solution. To understand why a software system is needed, what it should do, and how it should do it. To communicate our understanding of why, what and how. To detect commonalities and differences in your perception, my perception, his perception and her perception of reality. To detect misunderstandings and miscommunications.
10
What is Object-Orientation? - What is Object?
An "object" is anything to which a concept applies, in our awareness Things drawn from the problem domain or solution space. E.g., a living person in the problem domain, a software component in the solution space.
A structure that has identity and properties and behavior It is an instance of a collective concept, i.e., a class. 11 Encapsulation a.k.a. information hiding Objects encapsulate: property behavior as a collection of methods invoked by messages state as a collection of instance variables
Abstraction Focus on the essential Omits tremendous amount of details Focus on what an object is and does
What is Object-Orientation - Abstraction and Encapsulation 12 What is Object-Orientation - Another Example of Abstraction and Encapsulation Class Car
Attributes O Model O Location O #Wheels = 4
Operations O Start O Accelerate <<instanceOf>> <<instanceOf>> <<instanceOf>> What is generalization? What is over-generalization?? Forall x [Car(x) -> ] 13 What is Object-Orientation? - Class What is CLASS? a collection of objects that share common properties, attributes, behavior and semantics, in general. What are all these???
A collection of objects with the same data structure (attributes, state variables) and behavior (function/code/operations) in the solution space.
Classification Grouping of common objects into a class Instantiation. The act of creating an instance. Class Car Attributes O Model O Location O #Wheels = 4 Operations O Start O Accelerate <<instanceOf>> <<instanceOf>> <<instanceOf>> 14 What is Object-Orientation - Subclass vs. Superclass Specialization: The act of defining one class as a refinement of another.
Subclass: A class defined in terms of a specialization of a superclass using inheritance.
Superclass: A class serving as a base for inheritance in a class hierarchy
Inheritance: Automatic duplication of superclass attribute and behavior definitions in subclass.
multiple inheritance? Person name SSN Student std-id level Employee emp-id age 15 What is Object-Orientation - Subclass vs. Superclass A B C A B A B C A B c: C A B c: C <<instanceOf>> <<instanceOf>> A B <<instanceOf>> A B <<instanceOf>> 16 What is Object-Orientation - Subclass vs. Superclass and A B C <<instanceOf>> A B c: C <<instanceOf>> <<instanceOf>> A B <<instanceOf>> C A B C <<instanceOf>> d: D <<instanceOf>> A C D <<instanceOf>> B 1 2 3 17 What is Object-Orientation - Polymorphism Objects of different classes respond to the same message differently. payTuition Person name SSN Student std-id level Employee emp-id In-State Student state payTuition payTuition Out-of-State Student payTuition 18 What is Object-Orientation - Interfaces Information hiding - all data should be hidden within a class, at least in principle. make all data attributes private provide public methods to get and set the data values (cf. Java design patterns) e.g. Grade information is usually confidential, hence it should be kept private to the student. Access to the grade information should be done through interfaces, such as setGrade and getGrade payTuition setGrade() getGrade() Student std-id level getGrade setGrade grade 19 What is Object-Orientation - Abstract Class vs. Concrete Class Abstract Class. An incomplete superclass that defines common parts. Not instantiated. Concrete class. Is a complete class. Describes a concept completely. Is intended to be instantiated.
Work out an example! 20 What is Object-Orientation? -State What is STATE? "State" is a collection of association an object has with other objects and object types.
What is STATE CHANGE? A "state change" is the transition of an object from one state to another.
What is EVENT? An "event" is a noteworthy change in state [Rumbaugh] Work out an example! 21 What is Object-Orientation? -State transition impossible? tom: Actor name = Tom Cruise katie: Actor name = Katie Holmes tom: Actor name = Tom Holmes katie: Actor name = Katie Holmes married/changeLastName tom: Actor name = Tom Holmes katie: Actor name = Katie Holmes suri: BabyActor name = Suri Holmes newArrival/getName 22
What is Object-Oriented Application?
Collection of discrete objects, interacting w. each other Objects have property and behavior (causing state transition) Interactions through message passing (A sender object sends a request (message) to another object (receiver) to invoke a method of the receiver objects)
Fn Data O1 Fn Data O2 Fn Data O3 m1 m2 m3 {m in Fn} 23 What is OOAD?
Analysis understanding, finding and describing concepts in the problem domain. Design understanding and defining software solution/objects that represent the analysis concepts and will eventually be implemented in code. OOAD Analysis is object-oriented and design is object- oriented. A software development approach that emphasizes a logical solution based on objects.
Traceability! Involves both a notation and a process 24 Harry again What do we see here?
Water Rivers Oceans Fish Penguins Crocodiles Fresh water Salt water have have have live in have have Things, Relationships, Diagram 25 How to do OOAD - notation vs. process UML is a notation. So are English, Elvish, Ku, But as yet I cant 26 Systems Engineering Requirements Analysis Project Planning Architectural Design Detailed Design Implementation Release Maintenance Q u a l i t y
A s s u r a n c e
Software Lifecycle How to Do OOAD Where to Use OO?
Traceability! Something missing? Whats yours like? 27 Traceability! Artificial problem Accidental design 28 Specifications are important too 29 How to Do OOAD OMT as Object-Oriented Methodology OMT (Object Modeling Technique) by J ames Rumbaugh
Object Model: describes the static structure of the objects in the system and their relationships -> Object Diagrams.
Dynamic Model: describes the interactions among objects in the system -> State Diagrams.
Functional Model: describes the data transformation of the system -> DataFlow Diagrams. Traceability! 30 Analysis: i) Model the real world showing its important properties; ii) Concise model of what the system will do
System Design: Organize into subsystems based on analysis structure and propose architecture
Object Design: Based on analysis model but with implementation details; Focus on data structures and algorithms to implement each class; Computer and domain objects
Implementation: Translate the object classes and relationships into a programming language How to Do OOAD OMT as Object-Oriented Methodology OMT (Object Modeling Technique) by J ames Rumbaugh
Traceability! 31 A Unified Language + A Good Process + A Good Goal, perhaps 32 Introduction to OOAD - Summary Why Once Software Crisis due to Communication and Complexity Languages, Concepts, Models OO for Conceptual Modeling
What Fundamental OO Concepts A little taste of UML
How OO development processes & (Design) Patterns 33 How to Do OOAD - Historical Perspective OO Prog. Languages (Smalltalk, C++) just program! OO Design (Booch) design then program OO Analysis (Rumbaugh, Jacobson) Process Perspective OO Technology Analyze (use case) first, then design, T then program Where are we heading? 34 How to Do OOAD - OO Development Processes Fusion Hewlett Packard Recommended Process and Models ObjectSpace best practices Larmans experiences
The Rational Unified Process (RUP) Rational; Booch, Jacobson, and Rumbaugh Some Popular OOAD Processes (for reference only) 35 How to Do OOAD One Good Way: Use (OO) Design Patterns Reusable solutions to typical problems. Each design pattern systematically names, explains, and evaluates an important and recurring design in object-oriented systems. [Gamma]
Name identifies a particular pattern, creating a vocabulary. Problem identifies context when pattern should be applied. Solution an abstract description of a design problem along with a template object design that solves the problem. Consequences results and trade-offs of applying the pattern. 36 Knowledge Representation (in A.I.) Psychological Validity Philosophical Validity Computational Validity
Databases Emphasis in Persistent Data (and now ACID properties) RelationalDB Network DB Hierarchical DB OODB Programming Languages Emphasis in Efficiency Simula, SmallTalk, C++, Protel, Java ERD SDM CM ADT ERD: Entity Relationship Diagram SDM: Semantic Data Model ADT: Abstract Data Type CM: Conceptual Model Why Object-Oriented - Whos Behind Object-Orientation w. Diff. Concerns System/Software Engineering Where does Unified Modeling Language come into this? 37 Why Object-Oriented A New Paradigm with Evolving Object Orientation OOP: Object-Oriented Programming Simula (1967), Smalltalk (70s), C++ (mid 80s), Eiffel, Ada95, Turing, OOD: Object-Oriented Design Taxis (1976), Adaplex, , Grady Booch (1980) OOA: Object-Oriented Requirements RML (1981), James Rumbaugh (late 80s) OO-Databases (OODBs): 1980-90s OLE/DCOM, VisualBasic, CORBA, Java: mid 90s .Net, C#, (eb/voice/-)XML, J2EE: into 2000+ UML: mid 90s and still evolving
38 Introduction to OOAD - Points to Ponder 1. How do you think your mental image is represented? 2. What kinds of languages are used for what purpose in our daily life? 3. What are the differences among a concept, a model and a language? 4. What are the differences between a language and a methodology? 5. Can we use C# for analysis? 6. If C++ is a language, does it model anything? If so, what? 7. What does a concept in C++ refer to (i.e., semantics)? 8. What does a concept in a (OO) design refer to? 9. What does a concept in an (OO requirements) analysis refer to? 10. Is the current OOAD for Functional Analysis and Design, or Non- Functional Analysis and Design? 11. What is the relationship between OO (Object-Orientation) and GO (Goal-Orientation), between OO and AO (Agent-Orientation), and between GO and AO? 12. Can you prove you and I communicate with each other perfectly?