Object Oriented Analysis and Design
Dr Abu-Eesa
Islamic Online University
Introduction
What is Object–Oriented Analysis (OOA)?
History
New programming approach
Design and analysis came later
Simula (1960)
Dynabook (1970) – Smalltalk } First OOPL
1980’s Ada
Software life-cycle (Royce’s original waterfall
model)
By Peter Kemp / Paul Smith - Adapted from Paul
Smith's work at wikipedia, CC BY 3.0,
[Link]
0633070
OOA
Identify software engineering requirements
Develop specification
keeping in mind interacting objects)
Data and functions
Real world objects
Traditionally functional and data considered separately
Primary tasks in OOA
Identify
Organise
Define internals
Define behaviours
Describe object interactions
Use case and object models are used
Real world problem/example
Object/class = Vehicle
What things does a vehicle have?
Differences between a car and a truck?
Forget car or truck – continue describing a vehicle
It moves
Has an operator/driver
Back to car
Has doors, windows
Truck
Has doors, windows, more wheels
Class: Vehicle
Vehicle
-Moves
-has operator
Car Truck Aeroplane
-Windows -windows -wings
-Doors -doors
-wheels
Polymorphism
Animal
-Speak()
Dog Cat Cow
-Speak(): -Speak(): -Speak():
output:Bark() output:meow() output:moo()
Popular OO languages
C++
C#
Delphi
Java
MatLab
Python
Visual Basic
Key concepts
Central role of objects
Classes
Abstract specification
UML
Standard solutions
Analysis process for modelling a system
Extendibility and adaptability
Other concepts
The central role of objects
Object-oriented programming
(OOP) is a programming paradigm
based on the concept of
"objects", which may contain
data, in the form of fields, often
known as attributes; and code, in
the form of procedures, often
known as methods.(wikipedia)
Image : [Link]
Class
Animal
-Speak()
Dog Cat Cow
-Speak(): -Speak(): -Speak():
output:Bark() output:meow() output:moo()
Abstract Specification of functionality
Design process
Specification is abstract
Specification (interface or abstract class) -contract
UML –Unified Modelling Language
Language to define system
Standard tool – design activities
Universally understood
Standard Solutions
Object structure – facilitates documenting (design patterns)
All stages of software development but design patterns perhaps most
common
Modelling via an Analysis Process
OO allows function specification to conceptual design in a systematic
way
Design in terms of conceptual classes
Extendibility and Adaptability
Flexibility in software – unlike hardware
Create new entities by modifying existing ones
inheritance
Other related concepts
Modular design and encapsulation
Cohesion and couping
Modifiability and testability
Advantages & disadvantages of OO
Objects reflect entities in application system
OO helps increase productivity
Changes are easier to make
Can isolate changes
Summary
History
Primary Tasks
Key Concepts
Central role of objects, Classes, Abstract specification, UML, Standard solutions,
Analysis process for modelling a system, Extendibility and adaptability
Other concepts
Pros
Objects reflect entities in application system, OO helps increase productivity,
Changes are easier to make, Can isolate changes
Summary cohesion & coupling
Low cohesion High cohesion
Staff Staff
-salary
-emailAddr
checkEmail() setSalary(newSalary)
sendEmail() getSalary()
emailValidate() setEmailAddr(newEmail)
PrintLetter() getEmailAddr()