Class Diagram Notation Lecture Oo12 Classes Packages.
-
Upload
randolph-howard -
Category
Documents
-
view
223 -
download
1
Transcript of Class Diagram Notation Lecture Oo12 Classes Packages.
![Page 1: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/1.jpg)
Class Diagram Notation
Lecture Oo12
Classes
Packages
![Page 2: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/2.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/3.jpg)
Teaching Points
Class Characteristics Packages Package Diagrams
![Page 4: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/4.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/5.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/6.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/7.jpg)
Example (Attribute/Operation Markings)
ExampleClass
privateAttprotectedAttpublicAtt
privateOp()protectedOp()publicOp()
![Page 8: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/8.jpg)
Example (Relationship Markings)
ExampleClass
privateAttprotectedAttpublicAtt
privateOp()protectedOp()publicOp()
AnotherExample-privaterole+publicrole
#protectedrole
![Page 9: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/9.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/10.jpg)
Example (Static Attributes)
ExampleClass
$ privateAttprotectedAttpublicAtt
privateOp()protectedOp()publicOp()
![Page 11: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/11.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/12.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/13.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/14.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/15.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/16.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/17.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/18.jpg)
Example
Rose package diagram for Chemical Process Controller
![Page 19: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/19.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/20.jpg)
Package Diagram (top level)
ControllerLogic
Drivers NewPackage
global
![Page 21: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/21.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/22.jpg)
Drivers Package
VatHeater
setTemp()
PipeHeater
setTemp()
Heater
setTemp()
![Page 23: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/23.jpg)
System Package
Clock
getTime()
(f rom Logical View )
![Page 24: Class Diagram Notation Lecture Oo12 Classes Packages.](https://reader035.fdocuments.us/reader035/viewer/2022062407/56649e535503460f94b4902c/html5/thumbnails/24.jpg)
Teaching Points
Class Characteristics Packages Package Diagrams