30
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

  • View
    221

  • Download
    2

Embed Size (px)

Citation preview

Page 1: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

1 CS 501 Spring 2002

CS 501: Software Engineering

Lecture 16

Object Oriented Design I

Page 2: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

2 CS 501 Spring 2002

Administration

Page 3: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

3 CS 501 Spring 2002

The Waterfall Model

Requirements Analysis

System design

Unit & Integration Testing

System Testing

Operation & Maintenance

Program design

Coding

Acceptance Testing

Requirements

Design

Implementation

Page 4: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

4 CS 501 Spring 2002

Program Design

The task of program design is to represent the software system functions in a form that can be transformed into one or more executable programs.

Given a system architecture, the program design specifies:

• computers and networks

• programs, components, packages, classes and class hierarchies

• interfaces, protocols

• security mechanisms, operational procedures

Page 5: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

5 CS 501 Spring 2002

The Importance of Modeling

• A model is a simplification of reality.

• We build models so that we can better understand the system we are developing.

• We build models of complex system because we cannot comprehend such a system in its entirety.

Models can be informal or formal. The more complex the project the more valuable a formal model becomes.

BRJ

Page 6: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

6 CS 501 Spring 2002

Principles of Modeling

• The choice of what models to create has a profound influence on how a problem is attacked and how a solution is shaped.

• Every model can be expressed at different levels of precision.

• The best models are connected to reality.

• No single model is sufficient. Every nontrivial system is best approached through a small set of nearly independent models.

BRJ

Page 7: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

7 CS 501 Spring 2002

The Unified Modeling Language

UML is a standard language for modeling software systems

• Serves as a bridge between the requirements specification and the implementation.

• Provides a means to specify and document the design of a software system.

• Is process and programming language independent.

• Is particularly suited to object-oriented program development.

Page 8: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

8 CS 501 Spring 2002

Useful Texts

Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified Modeling Language. Addison-Wesley 1999.

Grady Booch, Object-Oriented Analysis and Design with Applications, second edition. Benjamin/Cummings 1994.

Rob Pooley, Perdita Stevens, Using UML Software Engineering with Objects and Components. Addison-Wesley 1999.

Page 9: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

9 CS 501 Spring 2002

Rational Rose

Rational Rose is a system for creating and managing UML diagrams.

It is available on all Computer Science Department computers.

See: http://adm/Software/purify_install.htm for installation instructions.

Page 10: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

10 CS 501 Spring 2002

Notation: Classes

Window

originsize

open()close()move()display()

name

attributes

operations

A class is a description of a set of objects that share the same attributes, operations, relationships and semantics.

Page 11: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

11 CS 501 Spring 2002

The HelloWorld Example

HelloWorld

paint()

class

name

operations

Page 12: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

12 CS 501 Spring 2002

Notation: Grouping and Annotation

A package is a general-purpose mechanism for organizing elements into groups.

Business rules

return copy of self

A note is a symbol for rendering constraints and comments attached to an element or a collection of elements.

Page 13: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

13 CS 501 Spring 2002

Abstraction for HelloWorld

HelloWorld

paint() g.drawString ("HelloWorld", 0, 10)"

class

name

operations

annotation

Page 14: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

14 CS 501 Spring 2002

Class Diagram

Applet

HelloWorld

paint() Graphics

generalization

dependency

Note that the Applet and Graphics classes are shown elided.

Page 15: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

15 CS 501 Spring 2002

Class Inheritance Diagram

Object

Component

Container

Panel

Applet

HelloWorld

ImageObserver

interface

Page 16: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

16 CS 501 Spring 2002

Packaging Classes

applet

awt

lang

HelloWorld

java

Graphics

package

Page 17: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

17 CS 501 Spring 2002

Notation for Classes and Objects

Classes Objects

AnyClass

attribute1attribute2

operation1()operation2()

AnyClass

or

anObject:AnyClass

:AnyClass

anObject

The names of objects are underlined.

or

or

Page 18: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

18 CS 501 Spring 2002

The "Hello, World" Implementation

import java.awt.Graphics;class HelloWorld extends java.applet.Applet { public void paint (Graphics g) { g.drawString ("Hello, World!", 10, 10); }}

Example from: BJR

Page 19: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

19 CS 501 Spring 2002

Notation: Interface

An interface is a collection of operations that specify a service of a class or component, i.e., the externally visible behavior of that element.

ISpelling

Page 20: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

20 CS 501 Spring 2002

Notation: Collaboration & Use Case

Place order

A use case is a description of a set of sequence of actions that a system performs that yields an observable result.

Chain of responsibility

A collaboration defines an interaction, i.e., a society of roles and other elements that work together to provide some cooperative behavior.

Page 21: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

21 CS 501 Spring 2002

Notation: Active Class

EventManager

eventlist

suspend()flush()

An active class is a class whose objects own one or more processes or threads and therefore can initiate control activity.

Page 22: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

22 CS 501 Spring 2002

Notation: Component & Node

orderform.java

A component is a physical and replaceable part of a system that conforms to and provides the realization of a set of interfaces.

Server

A node is a physical element that exists at run time and represents a computational resource.

Page 23: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

23 CS 501 Spring 2002

Notation: Behavioral Things:Messages & States

display

An interaction is a behavior that comprises a set of messages exchanged among a set of objects within a particular context to accomplish a specific purpose.

Waiting

A state machine is a behavior that specifies the sequence of states an object or an interaction goes through during its lifetime in response to events.

Page 24: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

24 CS 501 Spring 2002

Notation: Relationships

A dependency is a semantic relationship between two things in which a change to one may effect the semantics of the other.

0..1 *

employer employee

An association is a structural relationship that describes a set of links, a link being a connection among objects.

Page 25: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

25 CS 501 Spring 2002

Relationships

Parking

Parking Space

location

is_available()

1

0 ... 1

Page 26: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

26 CS 501 Spring 2002

Notation: Relationships (continued)

A generalization is a specialization/generalization relationship is which objects of the specialized element (child) are substitutable for objects of the generalized element (parent).

child parent

A realization is a semantic relationship between classifiers, wherein one classifier specifies a contract that another classifier guarantees to carry out.

Page 27: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

27 CS 501 Spring 2002

Diagrams in UML

A diagram is the graphical representation of a set of elements, usually rendered as a connected graph of vertices (things) and arcs (relationships).

• Class diagram shows a set of classes, interfaces, and collaborations with their relationships.

• Object diagram shows a set of objects and their relationships.

• Use case diagram shows a set of use cases and actors (a special kind of class) and their relationships.

Page 28: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

28 CS 501 Spring 2002

Diagrams in UML (continued)

Interaction diagram shows an interaction, consisting of a set of objects and the relationships, including the messages that may be dispatched among them.

=> A sequence diagram emphasizes the time ordering.

=> A collaboration diagram emphasizes the structural organization of the objects that send and receive messages.

Page 29: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

29 CS 501 Spring 2002

Example: A Sequence Diagram

BookBorrower

libMem: LibraryMember

theCopy:Copy

theBook:Book

borrow(theCopy)okToBorrow

borrowborrow

Page 30: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 16 Object Oriented Design I

30 CS 501 Spring 2002

Diagrams in UML (continued)

• Statechart diagram shows a state machine consisting of states, transitions, events, and activities.

• Activity diagram is a statechart diagram that shows the flow from activity to activity within a system.

• Component diagram shows the organization and dependencies among a set of components.

• Deployment diagram shows the configuration of processing nodes and the components that live on them.