0% found this document useful (0 votes)
312 views

Object-Oriented Analysis and Design: IE 565 B.Ramamurthy

This document provides an introduction to object-oriented analysis and design (OOAD). It discusses key OO concepts like classes, objects, inheritance, polymorphism, and encapsulation. It then outlines the steps to analyze a problem domain, including use case modeling to identify functional requirements and CRC cards to discover classes. Finally, it provides examples of applying these techniques to analyze a library management system, including use case diagrams for borrowers and librarians and CRC cards for some relevant classes.

Uploaded by

Samip Upadhyay
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)
312 views

Object-Oriented Analysis and Design: IE 565 B.Ramamurthy

This document provides an introduction to object-oriented analysis and design (OOAD). It discusses key OO concepts like classes, objects, inheritance, polymorphism, and encapsulation. It then outlines the steps to analyze a problem domain, including use case modeling to identify functional requirements and CRC cards to discover classes. Finally, it provides examples of applying these techniques to analyze a library management system, including use case diagrams for borrowers and librarians and CRC cards for some relevant classes.

Uploaded by

Samip Upadhyay
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 88

Object-oriented Analysis and

Design
IE 565
B.Ramamurthy

12/08/21 B.Ramamurthy 1
Introduction
OOAD: object-oriented analysis and design
Class and object concepts
Discovering classes
 CRC card

 Word problem to classes

Classes and relationships


Inheritance and polymorphism
OOP: Object-oriented programming in Java
At the end of this class you should be able to analyze a
problem, design a OO solution and implement it in Java
programming language

12/08/21 B.Ramamurthy 2
Object-Oriented Principles
OOP

Inheritance Polymorphism
Encapsulation -- Many forms of
-- Hierarchy
(class concept) same function
-- Reusability
-- Information Hiding -- Abstract Methods
-- Extensibility
-- Interface and -- Abstract Classes
-- Expressive power
Implementations
-- Reflects many
-- Standardization
real-world problems
-- Access Control mechanisms
(private /public etc.)

12/08/21 BR 3
What is an Object?

Object-oriented programming supports the view that programs


are composed of objects that interact with one another.
How would you describe an object?
Using its characteristics (has a ----?) and its behaviors (can do
----?)
Object must have unique identity (name) : Basketball, Blue ball
Consider a ball:
 Color and diameter are characteristics (Data Declarations)

 throw, bounce, roll are behaviors (Methods)

12/08/21 BR 4
Classes are Blueprints

A class defines the general nature of a


collection of objects of the same type.
The process creating an object from a class is
called instantiation.
Every object is an instance of a particular
class.
There can be many instances of objects from
the same class possible with different values
for data.

12/08/21 BR 5
Example
objects
Object
References

redRose

class Rose

blueRose

class
12/08/21 BR 6
Inheritance Hierarchy
Food
Food Hierarchy
eat( )

IceCream Spaghetti Pizza

eat( ) eat( ) eat( )

eat() is an example of polymorphic operation.

Object (Java) Object Hierarchy


equals( ) equals(), clone() and toString()
tostring( )
clone( )
illustrate sub-type polymorphism

Salary Automobile FamilyTree

equals( ) equals( ) equals( )


toString( ) clone( ) toString( )
clone( ) toString( ) clone( )

12/08/21 B.Ramamurthy 7
Polymorphism (subtype)
Consider a class Food. What can you do with
Food? What does it have?
Consider specific food items Ice Cream,
Spaghetti and Pizza. How will you eat these?
(Invoke eat() operation on objects of these
classes)?
eat() operation is polymorphically invoked
depending on the type of the item it is
invoked on.

12/08/21 B.Ramamurthy 8
Requirements and Analysis
Methods
See the description of a library management system (LMS)
from Hwk1, a copy of which is attached.
We will follow these steps:
 Functional requirements represented by Use Case

Diagrams
 Classes discovered using CRC cards

 Static Analysis represented by class diagrams

 Dynamic Analysis by a variety of interaction diagrams

(inter-class) and state diagram (intra-class).


 Component diagram showing the various modules.

 Deployment diagram showing the platforms and

machines used.

12/08/21 B.Ramamurthy 9
Use-case Analysis
Use case analysis involves reading and
analyzing the specifications, as well as
discussing the system with potential users of
the system.
Actors of the LMS are identified as the
librarians and borrowers.
Librarians directly interact with the system
whereas borrowers interact with the system
through the librarian.

12/08/21 B.Ramamurthy 10
Use-case Diagram For
Borrower
Borrower
(from Logical View)

makeReservation

<<uses>>

removeReservation
borrowItem

returnItem

12/08/21 B.Ramamurthy 11
Use-case Diagram for
Librarian
addTitle
Librarian

removeUpdateTitle

addItem

removeUpdateItem

addBorrower

removeUpdateBorrower
12/08/21 B.Ramamurthy 12
Use Cases For Borrower and
Librarian
Use cases for the borrower:
 Borrow item

 Return item

 Make reservation

 Remove reservation

Use cases for the librarian:


 Add title, Update or remove title

 Add borrower, Update or remove borrower

 Add item, Update or remove item

Note 1: A title may have many items: A book may have many
copies.
Note 2: Titles may be book or magazine titles
Note 3: Persistence: All use cases involve database access

12/08/21 B.Ramamurthy 13
Use-case Descriptions
Use Case: Lend Item

Pre-condition: Item may or may be reserved

Post-condition: Borrower gets Item. Database updated.

Exceptions: Title not avail, Item not avail

Actions: Case 1. If borrower has not reserved the item:


a. A title is identified
b. An available item of the title is identified
c. The borrower is identified
d. The item is borrowed(transaction)
c. A new loan (transaction) is registered.
Case 2. If the borrower has a reservation for the item:
a. The borrower is identified
b. The item is borrowed
c. New loan is registered
d. reservation is removed.

12/08/21 B.Ramamurthy 14
CRC Card Example
Weather Station Collaborations
User Interface(UI)
Responsibilities
Date
1. Select 24hr/Current Time
2. Set Date Time Temp
3. Display Current Wind
1. Temp(T) Pressure
2. Wind (W) Humidity
3. Pressure (P)
4. Humidity (H)
4. Display 24hours
1. Hi/Lo for (TWPH)
5. Display Trends in TWPH
6. Calibrate Calibrator
12/08/21 B.Ramamurthy 15
CRC Card: UserInterface

UserInterface Collaborators
Responsibilities Keypad

Display
1. Input date
2. Input time Temp
3. Input selection Wind
4. Display data Pressure
Humidity

12/08/21 B.Ramamurthy 16
CRC Card: Keypad
Keypad Collaborators

Date
Responsibilities
Time
1. Store date
2. Store time Selection
3. Store selection

12/08/21 B.Ramamurthy 17
CRC Card: Temperature
Temperature Collaborations

Responsibilities T.Device

1. Measure and Record temperature StatDataBase


2. Determine and record Hi/Lo
3. Determine trend Date

Time

12/08/21 B.Ramamurthy 18
Class Discovery
The entries in the collaborations column are
possible classes or non-software entities.
In this case these are: UserInterface, Display,
Tempertaure, Wind, Pressure, Humidity,
StatDataBase, Selection, Date, Time, Keypad,
Callibrator.
The responsibility of designing one or more of these
classes can be assigned to the members of the
group who participated in this discovery process.
On to relations among classes and class diagrams.

12/08/21 B.Ramamurthy 19
Classes
OO paradigm supports the view that a system is
made up of objects interacting by message passing.
Classes represent collection of objects of the same
type.
An object is an instance of a class.
A class is defined by its properties and its
behaviors.
A class diagram describes the static view of a
system in terms of classes and relationships among
the classes.

12/08/21 B.Ramamurthy 20
Discovering Classes
(Alternative)
Underline the nouns in a problem statement.
Using the problem context and general
knowledge about the problem domain decide
on the important nouns.
Design and implement classes to represent
the nouns.
Underline the verbs. Verbs related to a class
may represent the behavior of the class.

12/08/21 B.Ramamurthy 21
Examples
Drawing package: Design a user interface for
drawing various shapes: circle, square,
rectangle.
Football scores: Keep track of football score.
General purpose counter: To keep of track of
count for various applications.
Library: Books, different categories of books,
details of student borrower, library
personnel.

12/08/21 B.Ramamurthy 22
Designing Classes (Take 2)
A class represents a class of objects.
A class contains the data declarations (“parts”) and
methods (“behaviors” or “capabilities” ).
OO Design:
Class properties or characteristics are answers to “What is
it made of?” (It has a ____, ____, etc.)
Behaviors, capabilities or operations are answers to “What
can it do?” (verbs in the problem)

12/08/21 B.Ramamurthy 23
Classes are Blueprints
(Take 2)
A class defines the general nature of a collection of
objects of the same type.
The process creating an object from a class is called
instantiation.
Every object is an instance of a particular class.
There can be many instances of objects from the
same class possible with different values for data.
A class structure implements encapsulation as well as
access control: private, public, protected.

12/08/21 B.Ramamurthy 24
Example (Take 2)
objects
Object
References

redRose

class Rose

blueRose

class
12/08/21 B.Ramamurthy 25
Class Diagram : Automobile
Automobile
public:
seat
seatBelt
accelerator
private:
sparkPlugs
gear
protected:
gloveCompartment
public:
startEngine
brake
protected: transmission
private: fuelInjection
12/08/21 B.Ramamurthy 26
Automobile Class Using
Rational Rose Tool
Automobile
seat
seatBelt
acceleratorPedal
sparkPlugs
gear
gloveCompartment

startEngine( )
brake( )
transmission( )
fuelInjection( )

12/08/21 B.Ramamurthy 27
Access Control
Public, protected, private
Public properties and behaviors are available
to any other object to use/invoke
Private: available only within the objects.
Protected: available within the objects and to
the class hierarchy inherited from the class.
(We will discuss more about this when
dealing with OO concept Inheritance.)

12/08/21 B.Ramamurthy 28
Relationships
Typically an application consists of
many related classes.
Commonly used relationships include:
associations, aggregations, and
generalizations.

12/08/21 B.Ramamurthy 29
Association
An association is a connection between classes, a
semantic connection between objects of classes
involved in the association.
Association typically represents “has a” or “uses”
relationships.
Indicated by a line,
 sometimes with arrow indicating unidirectional
relationship,
 adorned by the name of the relation, and
 the ends of the line adorned by cardinality of relationship
and optionally by the roles connected to each class.

12/08/21 B.Ramamurthy 30
Association : Examples
Uses
Person Computer

A person uses a computer.

Owns
Person 0..* Car

A person may own many (zero..many) cars.

12/08/21 B.Ramamurthy 31
Roles in Association
drives
Person Car
driver company car

A person (driver) drives a (company) car.

wife
Person

husband

married to

12/08/21 B.Ramamurthy 32
Aggregation
Aggregation represents a relation
“contains”, “is a part of”, “whole-part”
relation.
Indicated by a line adorned on the
“whole” by a hollow diamond
 Along with name of relationship and
 Cardinality.

12/08/21 B.Ramamurthy 33
Aggregation: Example
contains
League Team
*

Membership aggregation: A league is made up of


Many teams.

4 wheel

made of
Auto engine Strong aggregation.
1

*
part

12/08/21 B.Ramamurthy 34
Generalization
Generalization is a relationship between a
general and a specific class.
The specific class called the subclass inherits
from the general class, called the superclass.
Public and protected properties (attributes)
and behaviors (operations) are inherited.
Design representation “inheritance” OO
concept.

12/08/21 B.Ramamurthy 35
Generalization: Symbol
It represents “is a” relationship among
classes and objects.
Represented by a line with an hollow
arrow head pointing to the superclass
at the superclass end.

12/08/21 B.Ramamurthy 36
Generalization: Example
Vehicle

Car Boat Truck

12/08/21 B.Ramamurthy 37
Combined Example
drives
Person 0..* Vehicle

Car Boat Truck

12/08/21 B.Ramamurthy 38
Discovering Classes
Library Management System (LMS)
RESPONSIBILITIES COLLABORATIONS

1. Borrow item Item


2. Reserve item
3. Return item
4. Remove reservation Reservation
5. Add borrower Borrower
6. Update or remove borrower
7. Add title (book or magazine) Title
8. Update or remove title Book Title
9. Add item Magazine Title
10. Update or remove item
11. Store loan details
Loan (Transaction)

Database

12/08/21 B.Ramamurthy 39
CRC Cards
LMS
(Librarian)
Borrower
Title: Book Title, Magazine Title
Item
Reservation
Transaction (Loan)
Database for storage

12/08/21 B.Ramamurthy 40
Static Analysis: Initial Class
Diagram
Item Title
0..*

0..1 0..*
BookTitle MagazineTitle
LoanTransaction Reservation

0..* 0..*

Objects of these
classes are all
persistent data (in
Borrower a Database)

12/08/21 B.Ramamurthy 41
Dynamic Analysis
“Borrow Item” use case using Sequence
Diagram
“Add Title” use case using Collaboration
diagram
“Add Item” using Activity diagram
“Reservation” state diagram

12/08/21 B.Ramamurthy 42
Borrow Item: Sequence Diagram
: Borrower Bison : LMS : Title : Borrower : Loan : Item
Transaction

1: findTitle ( )
2: find ( )

3: findItem ( )
4: searchItem ( )

5: identifyBorrower ( )
6: findBorrower ( )

7: createLoanTrans ( )

12/08/21 B.Ramamurthy 43
Add Title: Collaboration Diagram
Assuming that
add title implies
adding an item

1: create ( )
3: addItem ( )
name, ISBN
id Objid
: Title

: Librarian 2: setItem ( )
ObjId,id
titleObj

: Item
4: storeTitle ( )

itemObj

5: storeItem ( )

DB : DB

12/08/21 B.Ramamurthy 44
Add Item: Activity Diagram
Title Item Database

createItem

setItem

addToTitle updateDatabase

12/08/21 B.Ramamurthy 45
Component Diagram
Business Package
+ Item
+ Loan
+ Title
+ Borrower information
+ Book Title
+ Reservation
+ Magazine Title

GUI Package
+ Lend Window
+ Return Window
+ Reservation Window
+ Maintenance Window

12/08/21 B.Ramamurthy 46
Analysis, Design
Implementation/programming

What is the deliverable at the end of


the analysis and design phase?
One or more class diagrams showing
the classes and the relationships that
define the OOD.
On to OOP: Object-oriented
programming.

12/08/21 B.Ramamurthy 47
Problem Solving Using Java
OO Design and Progamming in Java

Write an
Identify classes needed Write an applet
application class
class

Reuse API Reuse Design new Create and use objects


classes your classes classes

12/08/21 BR 48
Instantiation :
Examples
class FordCar ---- defines a class name FordCar
FordCar windstar; ---- defines a Object reference windStar
windstar = new FordCar(); ---- instantiates a windstar
Object

class HousePlan1 { color….


HousePlan1 blueHouse;
blueHouse = new HousePlan1(BLUE);
HousePlan1 greenHouse = new HousePlan1(GREEN);

12/08/21 BR 49
Operator new and “dot”
new operator creates a object and
returns a reference to that object.
After an object has been instantiated,
you can use dot operator to access its
methods and data declarations (if you
have access permissions).
EX: redRose.bloom(); greenHouse.color

12/08/21 BR 50
Elements of a Class
class

methods data declarations (variables,


header constants)

body
header

modifiers, variables, statements


parameters
type, name constants

selection repetition others


assignment

12/08/21 BR 51
Class Structure
class

variables
constants

methods

12/08/21 BR 52
Defining Classes
Syntax:
class class_name {
data-declarations
constructors
methods }
Constructors are special methods used for
instantiating (or creating) objects from a class.
Data declarations are implemented using variable
and constant declarations.

12/08/21 BR 53
Naming Convention
Constants: All characters in uppercase, words in the
identifier separated by underscore: EX: MAX_NUM
Variables, objects, methods: First word all
lowercase, subsequent words start with uppercase.
EX: nextInt, myPen, readInt()
Classes: Start with an uppercase letter. EX: Tree,
Car, System , Math
Packages: are formed by set of related classes and
packages.

12/08/21 BR 54
A complete example
Problem Statement: You have been
hired to assist in an secret encryption
project. In this project each message
(string) sent out is attached to a
randomly generated secret code
(integer) between 1 and 999. Design
and develop an application program in
Java to carry out this project.

12/08/21 BR 55
Identify Objects
There are two central objects:
 Message
 Secret code
Is there any class predefined in JAVA
API that can be associated with these
objects? Yes ,
 “string” of java.lang and “Random” of
java.util

12/08/21 BR 56
The Random class
Random class is defined in java.util
package.
nextInt() method of Random class
returns an integer between 0 and
MAXINT of the system.

12/08/21 BR 57
Design
Class String Class Random

An instance of Random
An instance of string number generator
Input and fill up message. Generate Random integer

Attach (concatenate)

Output combined message.

Lets look at an implementation.


12/08/21 BR 58
Debugging and Testing
Compile-time Errors : Usually typos or syntax errors
Run-time Errors : Occurs during execution. Example:
divide by zero .
Logic Errors: Software will compile and execute with
no problem, but will not produce expected results.
(Solution: testing and correction)
See /projects/bina/java/Peets directory for an
exercise.

12/08/21 BR 59
Class Components
Class name (starts with uppercase),
constants, instance variables, constructors
definitions and method definitions.
Constants:
public final static double PI = 3.14;
Variables:
private double bonus;
public string name;

12/08/21 BR 60
Method Invocation/Call
Syntax:
method_name (values);
object_name.method_name(values);
classname.method_name(values);
Examples:
computeSum(); // call to method from within the class
where it is located
YourRose.paintIt(Red);
Math.abs(X);

12/08/21 BR 61
Defining Methods
A method is group of (related) statements
that carry out a specified function.
A method is associated with a particular
class and it specifies a behavior or
functionality of the class.
A method definition specifies the code to
be executed when the method is
invoked/activated/called.

12/08/21 BR 62
Method Definition : Syntax

visibility return_type method_name


(parameter_list)
{
statements
}

12/08/21 BR 63
Return Type
can be void, type or class identifier
void indicates that the method called to
perform an action in a self-standing
way: Example: println
type or class specify the value returned
using a return statement inside the
method.

12/08/21 BR 64
Return Statement
Syntax of return statement:
return; // for void methods
return expression; // for type or class
return value
// the expression type and return type
should be same

12/08/21 BR 65
Parameter List
Parameter list specified in method header provides a
mechanism for sending information to a method.
It is powerful mechanism for specializing an object.
The parameter list that appears in the header of a
method
 specifies the type and name of each parameter

and
 is called formal parameter list.

The corresponding parameter list in the method


invocation is called an actual parameter list.

12/08/21 BR 66
Parameter list : Syntax
Formal parameter list: This is like molds or
templates
(parm_type parm_name, parm_type parm_name, ....)
Actual parameter list: This is like material that fit
into the mold or template specified in the formal
list:
(expression, expression....)

12/08/21 BR 67
Method Definition : review
definition

header
body
Visibility
modifiers

parameter list
return type Name

{ statements }

12/08/21 BR 68
Method Definition : Example
Write a method that computes and
returns the perimeter of a rectangle
class.
Analysis:
 Send to the method: Length and Width
 Compute inside the method: Perimeter
 Return from the method: Perimeter

12/08/21 BR 69
...Example (contd.)
public int Perimeter (int Length, int Width)
{
int Temp; // local temporary variable
Temp = 2 * (Length + Width); // compute
perimeter
return Temp; // return computed value
}

12/08/21 BR 70
What happens when a method
is called?
Control is transferred to the method
called and execution continues inside
the method.
Control is transferred back to the caller
when a return statement is executed
inside the method.

12/08/21 BR 71
Method Invocation :
semantics
Operating
System
1 1. OS to main method
2 2. Main method execution
Main method 3. Invoke Area
Rect.Area(….)
8 4. Transfer control to Area
3 5. Execute Area method
7 6. Return control back to
4 main method
8
7. Resume executing main
8. Exit to OS

Area
5 method 6

12/08/21 BR 72
Constructors
A Constructor is used to create or instantiate an
object from the class.
Constructor is a special method:
 It has the same name as the class.
 It has no return type or return statement.
Typically a class has more than one constructor:
a default constructor which has no parameters,
and other constructors with parameters.

12/08/21 BR 73
Constructors (contd.)
You don’t have to define a constructor if you need
only a default constructor.
When you want initializing constructors :
1. you must include a default constructor in this case.
2. You will use initializing constructors when you want
the object to start with a specific initial state rather
than as default state.
3. Example: Car myCar(Red); // initializing constructor
for Car class with color as parameter

12/08/21 BR 74
Visibility Modifiers
type Method/variable name

public protected
“nothing”
DEFAULT private

static “nothing”
DEFAULT
To indicate
class method/
To indicate
variable
object
method/
variable
12/08/21 BR 75
..Modifiers (contd.)
private : available only within class
“nothing” specified : DEFAULT: within
class and within package
protected : within inherited hierarchy
(only to sub classes)
public : available to any class.

12/08/21 BR 76
Inheritance
Inheritance is the act of deriving a new class
from an existing one.
A primary purpose of inheritance is to reuse
existing software.
Original class used to derive a new class is
called “super” class and the derived class is
called “sub” class.
Inheritance represents “is a” relationship
between the superclass and the subclass.

12/08/21 BR 77
Syntax
class subclass extends superclass {
class definition
}
Example:
class Windstar extends FordCar // meaning it inherits
from class Fordcar{ ....}
Windstar myCar();
In this example, FordCar is the super-class and Windstar is a
sub-class and myCar is an object Windstar class.

12/08/21 BR 78
Representing the Relationship
BankClass
has a has a
has a

Account [ ] MortgageSVC BrokerageSVC


is a is a

Checking Savings

is a : use inheritance
has a : use composition, or membership

12/08/21 BR 79
Modifers
Visibility modifiers: private, public,
protected
Protected modifier is used when the
entity needs to be available to the
subclass but not to the public.

12/08/21 BR 80
Example : Words
Main class

Book class

Super class

Uses
is a

Dictionary Class

subclass
12/08/21 BR 81
Example : School
Student
Main class

uses

Grad Student

12/08/21 BR 82
Example
Food Abstract super class

Pizza Hamburger HotDog

subclasses

12/08/21 BR 83
Interface
An abstract method is one that does not have a
definition within the class. Only the prototype is
present.
An interface is collection of constants and abstract
methods.
Syntax
interface interface_name {
constant -declarations;
abstract methods;
}

12/08/21 BR 84
Example
interface EPA {
bool emissionControl();
bool pollutionControl();

}
class NYepa implements EPA {
bool emissionControl () {
details/semantics /statements how to implement it }
class CAepa implements EPA {
bool emissionControl () {….
// different details on implementation….}

12/08/21 BR 85
Inheritance and Interfaces
In Java class may inherit (extend) from only
one class. (C++ allows multiple inheritance).
But a Java class may implement many
interfaces.
For example,
public class Scribble extends Applet implements
MouseListner, MouseMotionListner {

12/08/21 BR 86
Next Steps
Develop a multi-class java application
Develop a application with graphical
user interface
Develop the solution for LMS
Where can you get more info?
http://www.netbeans.org/kb/trails/java-se.html

12/08/21 B.Ramamurthy 87
Summary
We studied object-oriented analysis and
design.
 From problem statement to class diagram
We also studied basics of object-
oriented programming (OOP).

12/08/21 B.Ramamurthy 88

You might also like