0% 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.

Uploaded by

anandammca2013
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% 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.

Uploaded by

anandammca2013
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
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?

You might also like