class diagram notation lecture oo12 classes packages

24
Class Diagram Notation Lecture Oo12 Classes Packages

Upload: randolph-howard

Post on 28-Dec-2015

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Class Diagram Notation Lecture Oo12 Classes Packages

Class Diagram Notation

Lecture Oo12

Classes

Packages

Page 2: Class Diagram Notation Lecture Oo12 Classes Packages

References

Ambler, S., The Object Primer, Cambridge Univ. Press, 2001, Section 6.3, 6.9, 7.1, 7.2,

Page 3: Class Diagram Notation Lecture Oo12 Classes Packages

Teaching Points

Class Characteristics Packages Package Diagrams

Page 4: Class Diagram Notation Lecture Oo12 Classes Packages

Review

What are the different visibility types? Describe each type When does a visibility type make sense

to use?

Page 5: Class Diagram Notation Lecture Oo12 Classes Packages

Access Control

also known as visibility in UML (encapsulation visibility vs. object visibility)

Three kinds of encapsulation visibility– Private– Protected– Public

Page 6: Class Diagram Notation Lecture Oo12 Classes Packages

Encapsulation Visibility Markings - (or a pad lock) = Private # (or a key) = Protected + (or no marking) = Public

Page 7: Class Diagram Notation Lecture Oo12 Classes Packages

Example (Attribute/Operation Markings)

ExampleClass

privateAttprotectedAttpublicAtt

privateOp()protectedOp()publicOp()

Page 8: Class Diagram Notation Lecture Oo12 Classes Packages

Example (Relationship Markings)

ExampleClass

privateAttprotectedAttpublicAtt

privateOp()protectedOp()publicOp()

AnotherExample-privaterole+publicrole

#protectedrole

Page 9: Class Diagram Notation Lecture Oo12 Classes Packages

Static Class Members

Static attributes (data members) are held in the program static data space

There is only one copy of such data for the class (i.e. one for all object instances of that class)

These can be thought of as “Class data” Can be used to reduce global data

Page 10: Class Diagram Notation Lecture Oo12 Classes Packages

Example (Static Attributes)

ExampleClass

$ privateAttprotectedAttpublicAtt

privateOp()protectedOp()publicOp()

Page 11: Class Diagram Notation Lecture Oo12 Classes Packages

Class Specifications

Diagrams by themselves do not provide enough detail to fully understand the problem/solution

Specifications provide a detailed understanding of the class and its semantics

Diagrams really must be accompanied by some specification

Page 12: Class Diagram Notation Lecture Oo12 Classes Packages

Class name: Heater

Category: Logical View Documentation: This is an abstract class that provides a common interface to heaters in the system. A client object can provide a required temperature to a heater. The heaters have a temperature sensor built in and feedback from this sensor is used to contol the temperature.

External Documents: Export Control: Public Cardinality: n Hierarchy: Superclasses: none Associations:

<no rolename> : TempController in association <unnamed>

Public Interface: Operations: setTemp

Private Interface: Attributes: desiredTemp : Temperature The currently required temperature for the object to be heated.

Implementation: Attributes: desiredTemp : Temperature The currently required temperature for the object to be heated.

State machine: No Concurrency: Sequential Persistence: Transient

Page 13: Class Diagram Notation Lecture Oo12 Classes Packages

Operation Specification

Operation name: getTemp

Public member of: TempRamp Return Class: Temperature Arguments:

Time currentTime Documentation: Given a normalized time this function returns the temperature computed from the ramp function.

Concurrency: Sequential

Page 14: Class Diagram Notation Lecture Oo12 Classes Packages

Package Diagrams

Large flat (non-hierarchical) class diagrams are complex and hard to understand

It is hard to see structure It is hard to find a class for maintenance

or reuse

Page 15: Class Diagram Notation Lecture Oo12 Classes Packages

Package Diagrams

Solution:– apply abstraction, decomposition and

hierarchy– group the classes together in higher level

units

Page 16: Class Diagram Notation Lecture Oo12 Classes Packages

Packages

A grouping of mutually dependent classes

Apply rules of coupling and cohesion Packages are elements of a class

diagram (i.e. package diagrams are class diagrams)

Page 17: Class Diagram Notation Lecture Oo12 Classes Packages

Package Dependencies The relationship between packages is the

Dependency relationship Classes in packages have visibility (access

control) applied to them for information hiding purposes– only some of the classes are visible (public) to

users of the package– some classes are private (implementation) to the

package and can be changed without effecting users of the package

Page 18: Class Diagram Notation Lecture Oo12 Classes Packages

Example

Rose package diagram for Chemical Process Controller

Page 19: Class Diagram Notation Lecture Oo12 Classes Packages

Flat Model

VatHeater

setTemp()

(from Drivers)PipeHeater

setTemp()

(from Drivers)

Heater

setTemp()

(from Drivers)

ProcessController(from ControllerLogic)

TempRamp

getTemp()

(from ControllerLogic)

Clock

getTime()

TempController

setJob()

(from ControllerLogic)

11

1

-controlledHeater

1

1

0..*

1

0..*

heaterList

-currentRamp

-systemClock

Page 20: Class Diagram Notation Lecture Oo12 Classes Packages

Package Diagram (top level)

ControllerLogic

Drivers NewPackage

global

Page 21: Class Diagram Notation Lecture Oo12 Classes Packages

Controller Logic Package

Heater

setTemp()

(from Drivers)

ProcessControllerTempRamp

getTemp()

Clock

getTime()

(from Logical View)TempController

setJob()

-controlledHeater

1

-currentRamp

-systemClock

11

1

1

0..*

1

0..*

heaterList

Page 22: Class Diagram Notation Lecture Oo12 Classes Packages

Drivers Package

VatHeater

setTemp()

PipeHeater

setTemp()

Heater

setTemp()

Page 23: Class Diagram Notation Lecture Oo12 Classes Packages

System Package

Clock

getTime()

(f rom Logical View )

Page 24: Class Diagram Notation Lecture Oo12 Classes Packages

Teaching Points

Class Characteristics Packages Package Diagrams