580 likes | 594 Views
This course explores UML concepts and design patterns, providing a comprehensive understanding of object-oriented design principles and their practical implementation. Recommended texts and online resources are also provided.
E N D
UML and Patterns Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: www.cs.wcupa.edu/~zjiang
Outline • Introduction to UML • Objects and Classes • Class Diagrams • Class Icon • Relationships • Constraints
Introduction to UML • What’s UML • Goals of UML • Overview
UML: Unified Modeling Language • The Unified Modeling Language (UML) is an industry-standard language for specifying, visualizing, constructing, and documenting the artifacts of software systems • The UML definition was led by Grady Booch, Ivar Jacobson, and Jim Rumbaugh (all now at Rational Software)
UML simplifies the process of software design, making a "blueprint" for construction Target Usage: for building object-oriented and component-based systems In Essence: a tool used through the analysis and design phases of system development for expressing the constructs and relationships of complex systems
Or in a simple word: Target on: class components In Essence: analysis and design of relations (among components)
Many free learning materials on the web • e.g. www.rational.com/uml • Standard of UML www.cs.wcupa.edu/~zjiang/01-09-67.pdf • Some recommended texts on UML: • The Unified Modeling Language User Guide, [G. Booch, J. Rumbaugh, I. Jacobson, 2000] • UML Explained, [Kendall Scott, 2001] • Applying UML and Patterns 2nd Ed., [Craig Larman, 2002] • UML Distilled 2nd Ed., [Martin Fowler with K. Scott, 2000] • UML and C++, [R. Lee & W. Tepfenhart, 2001]
UML Overview • What is the target of UML, class?
Objects and Classes • What’s object • Identity • State • Behavior • Sequence Diagram • Statechart Diagram • Messages and methods • What’s class • Objects and Classes • Nature of a class • Class Attributes • Operation (Method) • Interfaces • Interfaces and Implementation • Corresponding C++ code
Objects and Classes • Fundamentals of Object-Oriented Programming
Objects • Conceptually, there are many ways to think of an object • something that can be seen or touched • a thing to which some action is directed • something that performs an action • The structure and behaviour of similar objects are defined in their common class • Objects have thee properties: identity , state, and behaviour
Object Property 1: Identity • Identity is that property of an object which distinguishes it from all other objects • Most programming languages use variable names to refer to objects • Keep in mind, however, that an object may not have a name; Similarly, an object might have multiple names (aliases) • For this reason, there is a subtle distinction made between the concepts of "name" and "identity"
Object Property 2: State • The state of an object encompasses all of the (usually static) properties of the object plus the current (usually dynamic) values of each of these properties
Object Property 3: Behaviour • Behavior is how an object acts and reacts, in terms of its state changes • The state of an object represents the cumulative results of its behavior • In object-oriented programming, a behavior is invoked by an interaction to this object • If the receiver object does not have a method for that message, an error is reported
Example Objects • There are many physical objects we can examine right in this room • each person is an object • any chair is not an object • each light bulb is an object • Any book is not an object • this room itself is an object (full or not)
See if the followings are objects or not, in a system to handle our CST class: • Desk • Light • Person • Log • The Earth • Clock • Computer • Saving account • Answer: N, Y, Y, N, N, Y, Y, Y
Objects versus Classes • How would we describe the state, behaviour, and identity for each of these objects • We have looked at rows as objects and we have seen that objects can be "classified" into a table, i.e., class. • As programmers, we work with both classes and objects
Classes and Objects • An object is called an "instance" of a class • The terms instance and object are interchangeable • Creating an object from a class is often called instantiation • For example, there are many person objects in this room -- each person is an instance of the person class
The Nature of a Class • A class describes the common structure (attributes/state) and behaviour of its instances • For example, • 3.14, 2.71, and 5.5 can be classified as Floats • the following shapes can be classified as Circles
In a 2D drawing package, circles have a radius, a line thickness, a line colour, and a fill colour • Each individual circle (instance) drawn by the user has its own value for each attribute • The programmer writes a Circle class and the program instantiates a Circle object every time the user draws a Circle a snowman made from 9 Circle instances
Class Attributes • An attribute is a named property of a class that describes the range of values that instances of the property may hold.(Booch,1999) • An attribute has a type that defines the type of its instances. • Only the object itself should be able to change the value of its attributes. • The values of the attributes define the state of the object
Operation (Methods) • An operation is the implementation of a service that can be requested from any object of the class to affect behavior (Booch, 1999) • An operation in database can be: • Creation (or adding a new one) • Search & read • Write / update • Closing / deletion
Review something Object action action state1 state2 operations/methods attributes: {attribute1, attribute2} structure operation/method attribute1 attribute2 value
Light Turn on/off On Off operations/methods: Turn_on/off ( ) attributes: {True, False} structure Turn_on True False Turn_off value
UML Class Diagram • Introduction • Class Icon • Relationships • Constraints
Introduction • The class diagram is fundamental to object-oriented programming • UML’s class diagrams capture the attributes and operations of each class as well the relationships (information ownership) that exist between classes
Class Icon • Class Icon • Hiding Details • Visibility Notation • Attribute Specification • Operation Specification
UML Class Icon • The UML class icon is a rectangle with three compartments: • class name • class attributes • class operations • Attributes are specified in the following form: • object:class name
Hiding Detail • You can optionally leave out the attributes, operations, or both in a class icon:
UML Class Relationships • A class relationship is a connection between two (or more) classes • The three most important class relationships are generalizations, associations, and aggregations • UML provides a graphical representation for each of the relationships using a different line type for each relationship
Class Relationships • Generalization • Association • Association Class • Qualified Association • Ternary Association • Aggregation
Generalization • A generalization is a relationship between a general thing (superclass) and a more specific kind of that thing (subclass) • In the UML, generalization requires that objects of the subclass may be used anywhere an object of the superclass appears
Association • An association is a structural relationship that specifies that objects of one thing are connected to objects of another
Association • Associations can be adorned with a name. Teaching
Association • Associations can be adorned with the roles. teacher learner
Association • Associations can be adorned with the multiplicity. 1 4..*
Association Class (relation attributes) • Each object of association class is one instance of relationship (link) in an association. 1..* 4..*
Qualified Association • Qualified association relates two classes and a qualifier. • The qualifier is a special attribute that reduces the effective multiplicity of an association.
Ternary Association • A ternary association is a structural relationship that specifies that objects of one thing are connected to objects of other two’s.
Aggregation • An aggregation is an association that represents whole/part relationship • The “whole” end of the association relationship is adorned with an open diamond shape (e.g. X is part of Y) • e.g. door:Door is part of car:Car X Y
Generalization, Aggregation, and Association • See if the following pairs of classes have generalization, aggregation or association • Faculty & student (as) • Hospital & doctor (as) • Door & Car (ag --<>) • Member & Organization (ag --<>) • People & student (ge <|-- ) • Circle & point (ge --|>) • Department & Faculty (as) • Employee & Faculty (ge <|--) • Item & Printer (ge <|--) • Account & Checking account (ge <|-- )
Constraints • Constraints on Object • Constraints on Relations (Ordering) • General Constraints (Dependency)
Constraints on Object • The constraints restricts the values that objects can be. • Example: No employee’s salary can exceed the salary of the employee’s boss. {salary <=boss.salary}
General Constraints (Dependency) • A dependency is a using relationship that states that a change in specification of one thing may affect another thing that uses it (but not necessarily the reverse)
General Constraints (Dependency) • Dependencies are often used when one class uses another class as an argument of the operation • Dependencies are also often used to express general constraints. member-of {subset} chair-of
Design • Organize the data into “something” (i.e., object) being queried. • Observe the relationship between objects. • Describe the queries into methods, updating, and even deleting the attribute information. • At the end, translate class, object, attribute value, and method to table, row, field value, and query, resepctively.
For example, this CST class! • What you think important? • What are objects? • What are relations? • Class? • TA? • Attributes, and methods?
Mischief • UML class diagram is not object diagram. • How to describe the behaviors/actions of objects in UML class diagram? • UML class diagram is not data flow chart. • What kind of relationship is generalization? • How to keep the consistency of all the constraints?
UML class diagram is not object diagram • Should we add relation between Bank and Other-Loans? • Can Bank change Other-loans? • Instance of Loan and Other-Loans? Other-Loan Customer Bank Loan
UML class diagram is not object diagram Customer Loan Bank Bank-Loan Other-Loan