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 state1 action 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 objectoriented 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 Circle radius: float center_x: int center_y: int area() display() Hiding Detail You can optionally leave out the attributes, operations, or both in a class icon: Circle area() display() Circle radius: float center_x: int center_y: int Circle 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 Person Student Association An association is a structural relationship that specifies that objects of one thing are connected to objects of another Faculty Student Association Associations can be adorned with a name. Teaching Faculty Student Association Associations Faculty can be adorned with the roles. teacher learner Student Association Associations Faculty can be adorned with the multiplicity. 1 4..* Student Association Class (relation attributes) Each object of association class is one instance of relationship (link) in an association. Faculty 1..* 4..* Course Student Qualified Association Qualified association relates two classes and a qualifier. The qualifier is a special attribute that reduces the effective multiplicity of an association. Directory file name File Ternary Association A ternary association is a structural relationship that specifies that objects of one thing are connected to objects of other two’s. Project Language Developer 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} Employee Salary Employer 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 Aerodrome checkRVR( r: Runway ) Runway Dependencies are also often used to express general constraints. member-of Person {subset} chair-of Committee 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 Other-Loan Customer Bank Loan •Should we add relation between Bank and OtherLoans? •Can Bank change Otherloans? •Instance of Loan and OtherLoans? UML class diagram is not object diagram Customer Bank Loan Bank-Loan Other-Loan How to describe the behaviors/actions of objects in UML class diagram Person sSN address ? email Customer Faculty Casher Student 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 can be: – Question (does not change the value of the object) – Command (may change the value of the object) UML class diagram is not data flow chart bargain Customer Dealer sign buy Product sell authorize report Manager UML class diagram is not data flow chart •Customer, Dealer, and Manager •Bargain Product Customer Salesman Dealer Manager What kind of relationship is generalization Position Point x: int y: int People Student Circle radius: double Point Position Rectangle *Tip 4: Class A is a super class of class B if and only if any object of class B can also play the role as an object of class A. How to keep the consistency of all the constraints Ticket-buyer 1 Traveler 1 1 0..6 Dependent 1..6 1 How to keep the consistency of all the constraints Ticket-buyer 0..1 Traveler 1 1 0..6 Dependent 0..1 0..1 How to keep the consistency of all the constraints Traveler 0..1 Ticket-buyer 1 0..6 Dependent