OO Concepts and Principals
OO Concepts and Principals
Introduction
• We live in a world of objects
• Object-Oriented view is an abstraction that
models the world in ways that help us to better
understand and navigate it
• OO approach was first proposed in the late
1960s
• As time passes, object technologies are
replacing classical software development
approaches. Why?
• Object technologies lead to reuse, OO software
is easier to maintain, to adapt, and to scale.
OO Paradigm
• For many years, the term OO was used to
denote a software development approach that
used one of a number of OO programming
languages(e.g. Ada 95, C++, Eiffel, Smalltalk)
• Today, the OO paradigm encompasses a
complete view of software engineering
• Although any one of process models, could be
adapted for use with OO, the best choice would
be an evolutionary process model
The OO Process Model
identify
candidate
classes
Pla n n in g
Risk Ana lysis construct look-up
nth iteration classes
C usto m e r of system in library
C o m m unic a tio n
engineer
classes
C usto m e r Eng ine e ring , if unavailable
Eva lua tio n Co nstruc tio n & Re le a se
OO analysis
OO design
OO programming
OO testing
OO Concepts
• Classes and class hierarchies
– Instances
– Inheritance
– Abstraction and hiding
• Objects
– Attributes
– Methods
– Encapsulation
– Polymorphism
• Messages
Object
method
#6
method method
#5 #4
attributes:
receiver object
attributes:
operations:
operations:
message:
[sender, return value(s)]
• UML analysis modeling focuses on the first two views of the system.
• UML design modeling addresses the other three views.
Domain Analysis
• OO Analysis can occur at many different levels of
abstraction:
– At the business or enterprise level
– At the business area level
– At an application level
• OOA at the middle level called Domain Analysis.
• Domain Analysis is performed to create a library of
reusable classes applicable to an entire category of
applications.
• Using a robust class library produces the system faster,
cheaper and more reliable.
• But where did such a library come from? By applying
domain analysis.
Domain Analysis Process
• The goal: to find or create those classes that are broadly applicable,
so that they may be reused.
• It can be viewed as an umbrella activity for the software process.
• The role of domain analyst is to design and build reusable
components that maybe used by many people working on similar but
not necessarily the same applications.
• Key inputs and outputs for the domain analysis process:
class taxonomies
technical literature
SOURCES OF reuse standards DOMAIN
DOMAIN existing applications DOMAIN ANALYSIS
KNOWLEDGE ANALYSIS functional models MODEL
customer surveys
domain languages
expert advice
current/future requirements
Domain Analysis Activities (1)
• Define the domain to be investigated.
– Isolate the business area, system type, product category
– Extract both OO and non-OO items.
• OO-items such as: application and support (GUI, DB) classes,
Commercial off-the-shelf (COTS) component libraries and test
cases.
• Non-OO items such as: policies, procedures, plans, standards and
guidelines; parts of existing non-OO applications, metrics and COTS
non-OO software.
• Categorize the items extracted from the domain.
– Organize items into categories.
– Define the general defining characteristics of the categories.
– Propose a classification scheme for the categories.
– Define naming conventions for each item.
– Establish classification hierarchy when appropriate.
Domain Analysis Activities (2)
• Collect a representative sample of applications in the
domain.
– Ensure that the application has items that fit into categories.
• Analyze each application in the sample.
– Identify candidate reusable objects.
– Indicate the reasons that the object has been identified for reuse.
– Define adaptions to the object that may also be reusable.
– Estimate the percentage of applications in the domain that make
reuse of the object.
– Identify the object by name and use configuration management
techniques to control them (chapter 9).
• Develop an analysis model for the objects.
– As a basis for design and construction of domain objects.
OOA- A Generic View
• define use cases
• extract candidate classes
• establish basic class relationships
• define a class hierarchy
• identify attributes for each class
• specify methods that service the attributes
• indicate how classes/objects are related
• build a behavioral model
• iterate on the first five steps
The OOA Process
• The OOA process begins with an understanding
of the manner in which the system will be used
by:
– People, if the system is human-interactive.
– Machines, if the system is involved in process control.
– Programs, if the system coordinates and controls
applications
• Once the scenario of usage has been defined,
the modeling of the software begins.
• A series of techniques may be used to gather
basic customer requirements.
Use Cases
Object Oriented Design
OOD
• OOD transforms the analysis model created using OOA
into a design model that serves as a blueprint for
software construction.
• OOD results in a design that achieves a number of
different levels of modularity.
• Subsystems: Major system components.
• Objects: Data and the operations.
• Four important software design concepts:
– Abstraction
– Information Hiding
– Functional Independence
– Modularity
OOD
• The subsystem layer:
Representation of each of the
subsystems that enable the
software to achieve its customer
defined requirements.
• The class and object layer: The responsibilities
class hierarchies, (generalization) design
and representation of objects.
• The message layer: The design
details of communication of each message
design
object with its collaborators.
(external and internal interfaces) class and object
• The responsibilities layer: Data design
Structure and algorithmic design
for all attributes and operations. subsystem
design
OOA to OOD
Attributes, operations,
collaborators responsibilities
Object- design
CRC relationship
Index Cards model
message
Use cases design
subsystem
design
contract
request
peer peer
subsystem subsystem
request
contract contract
Subsystem Example
Control
request for status Sensor
panel assign to zone subsystem
subsystem test status
Central
communication
subsystem
Subsystem Design Criteria
• The subsystem should have a well-defined
interface through which all communication
with the rest of the system occurs.
• With the exception of a small number of
“communication classes,” the classes within
a subsystem should collaborate only with
other classes within the subsystem.
• The number of subsystems should be kept
small.
• A subsystem can be partitioned internally to
help reduce complexity.
Subsystem Collaboration Table
Object Design
• A protocol description establishes the interface
of an object by defining each message that the
object can receive and the related operation that
the object performs
• An implementation description shows
implementation details for each operation
implied by a message that is passed to an
object.
– information about the object's private part
– internal details about the data structures that describe
the object’s attributes
– procedural details that describe operations
Design Patterns
• add some example