Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San José State University One Washington Square San José, CA 95192-0180 http://www.engr.sjsu.edu/~fayad 2003 SJSU -- CmpE L15-S1 Relationships Lesson 15: Relationships 2 2003 SJSU -- CmpE M.E. Fayad L15-S2 Relationships Lesson Objectives Objectives Discuss UML Associations Discuss UML – aggregation Understand UML- inheritance Understand How to identify UML Artifacts 3 2003 SJSU -- CmpE M.E. Fayad L15-S3 Relationships Relationships A relationship is a connection among things Three most important relationships in OO – dependencies – generalizations – associations Different kind of lines are used to distinguish various kinds of relationships 2003 SJSU -- CmpE M.E. Fayad 4 L15-S4 Relationships Dependencies (1) Dependencies are using relationships State that a change in specification of one thing (the supplier) may affect another thing that uses it (the client), but not necessary the reverse Graphically, it is rendered as a dashed directed line 5 2003 SJSU -- CmpE M.E. Fayad L15-S5 Relationships Dependencies (2) Dependent Class Independent Class Client Supplier Order Book 2003 SJSU -- CmpE M.E. Fayad L15-S6 6 Relationships Associations (1) An association shows a two-way relationship between objects (instances) of two or more classes and requiring special implementation to ensure integrity. A particular instance of an association is often called a link. Associations between classes are required if the objects need to communicate. Associations are often named, and have role-names for each side of the link. 7 2003 SJSU -- CmpE M.E. Fayad L15-S7 Relationships Types of Association Unary association – both ends of an association circle back to the same class Binary association – an association that connects exactly two classes N-ary association – an association that connects more than two classes 8 2003 SJSU -- CmpE M.E. Fayad L15-S8 Relationships Associations (2) Name – an association can have a name, and the name is used to describe the nature of the relationship Role – when a class participates in an association, it has a specific role that it plays in that relationship – a role is just the face the class at the near end of the association presents to the class at the other end of the association 9 2003 SJSU -- CmpE M.E. Fayad L15-S9 Relationships Associations (3) Association Name Car model year # of doors Person Vehicle Registration registeredCar owner name age address Roles Names 10 2003 SJSU -- CmpE M.E. Fayad L15-S10 Relationships Associations (4) Multiplicity Name 1..* Owns by * Person employee Company employer 11 Role Name 2003 SJSU -- CmpE M.E. Fayad L15-S11 Relationships More on Associations Simple example: Window displays 0..* GeomFigure An association has a name and a numerical specification (multiplicity indication) of how many objects on one side of the association are connected with how many objects on the other side. Associations are called use relationships – even if this may seem somewhat cheeky in the example below Company employs Employer 2003 0..* Person Employee SJSU -- CmpE M.E. Fayad L15-S12 12 Relationships More on Associations Associations are directed (one way), bidirectional, and undirected. UML makes no distinction between bidirectional and undirected associations. Multiplicity Stereotype RelationName {Constraints} Class1 role1 2003 * Class2 Role2: interface SJSU -- CmpE M.E. Fayad L15-S13 13 Relationships More on Associations 2003 Recursive association: A class has a relation with itself. It is also possible to model associations that are valid only temporarily “stereotype or temporary” Constraints may be used to restrict the relation under specific aspects. A role name describes how the object is seen by the opposite object in the association. An association can be described in more detail by means of constraints, tagged values, and stereotypes. Stereotypes are noted before or above the relation name, constraints, and tagged values after or below the name. SJSU -- CmpE M.E. Fayad L15-S14 14 Relationships More on Associations Directed association is a one-way association, in which one side knows the other, but not vice versa. Multiplicity Specification: – 1 exactly one – 0, 1 zero or one – 0..4 between zero and four – 3, 7 either three or seven 15 2003 SJSU -- CmpE M.E. Fayad L15-S15 Relationships More on Associations More multiplicity specifications: – 0..* greater than or equal to zero (default) – * ditto – 1..* greater than or equal to one – 0..3, 7, 9..* between zero and three, or exactly seven, or greater than or equal to nine. 16 2003 SJSU -- CmpE M.E. Fayad L15-S16 Relationships More Multiplicities Multiplicity – how many objects may be connected across an instance of an association – can be a range of values or an explicit value • • • • • exactly one zero or one (optional) zero or more (many) one or more (mandatory) numerically specified 1 0..1 0..* 1..* m..n 17 2003 SJSU -- CmpE M.E. Fayad L15-S17 Relationships More on Associations Recursive associations are associations in which one class is involved. has Patient Employee name staffNo roomNo manager office clerk relative * * 1 Person leads 18 reports to 2003 SJSU -- CmpE M.E. Fayad L15-S18 Relationships N-ary Association An n-ary association is like a common (binary) association, except that more than two association roles involved in it. N-ary association Class1 Class2 Ternary association 19 Class3 2003 SJSU -- CmpE M.E. Fayad L15-S19 Relationships More on n-ary Association Reservation Train date trainNo 1..* 1 Seat carriageNo seatNo 1..* Passenger name title 2003 SJSU -- CmpE M.E. Fayad Ternary association L15-S20 20 Relationships More on Associations • Recursive Associations • N-ary Associations • Attributed Associations (Association Class) • Association Constraints • Qualified Associations • Derived Associations • Directed Associations • Ordered Associations • Realization/Refinements • Dependency 2003 SJSU -- CmpE M.E. Fayad L15-S21 21 Relationships More on Associations Associations are usually bidirectional Allows each object involved in the relationship to refer to the object to which it is related. Bidirectional association means at the relationship has an inverse. Associations do not have to be bidirectional. 2003 SJSU -- CmpE M.E. Fayad L15-S22 22 Relationships Man husband Screen Woman Marriage Windows wife Association Type One-to-One Window One-to-Many (One-to-Zero-or-More) Nets Authorization User Many-to-Many Car Trailer Zero or One 2003 SJSU -- CmpE M.E. Fayad L15-S23 23 Relationships Association Type Square Line Sides Specified the # of instances on the “many” side Secure Room Male Person Occupants TraditionalFamily father Female mother Specify the possible # of instances using “or” Ternary relationship children Child 2003 24 SJSU -- CmpE M.E. Fayad L15-S24 Relationships Association Class Server Connection Client Connection baudRate protocol wireType disconnect rerouteLink • These attributes don’t belong in either the Client or Server class. • They are attributes of the connection itself. • The association class can have behaviors as well as attributes. 2003 SJSU -- CmpE M.E. Fayad L15-S25 25 Relationships Aggregation & Composite Aggregation is a special form of association. Aggregation is used when the relationship is “part/whole” or “contains/is-part-of” Aggregation is transitive and operations on “whole” often cascade down to “parts”. 26 2003 SJSU -- CmpE M.E. Fayad L15-S26 Relationships Aggregation & Composite Server Aggregation Computer “whole” 52 “part” Client * CPU Disk Drive Keyboard Mouse 27 2003 SJSU -- CmpE M.E. Fayad L15-S27 Relationships Aggregation & Composite 2003 Special diamond symbol used on “whole” side to indicate aggregation. Aggregation is an anti-symmetric that is, if A is part of B, then B is not part of A. DO NOT confuse aggregation with generalization An essential property of aggregates is that the whole acts as a proxy for its parts. A composition is a strict form of aggregation, in which the parts are existence-dependent on the entirely SJSU -- CmpE M.E. Fayad L15-S28 28 Relationships Aggregation Whole Car Anywhere from four to many 1 1 1 1 1 4..* Body Motor Wheel 29 2003 Part SJSU -- CmpE M.E. Fayad L15-S29 Relationships Aggregation & Composite Aggregation Part Entirely Composition ExistenceDependentPart 30 2003 SJSU -- CmpE M.E. Fayad L15-S30 Relationships Aggregation Problem Mr. Clinton’s hand is part-of Mr. Clinton & Mr. Clinton is part-of U.S.A. 2003 Therefore: Mr. Clinton’s hand is part-of U.S.A. SJSU -- CmpE M.E. Fayad L15-S31 31 Relationships Keypad Cash Register Example * Number Keys Total Key display Subtotal Key display display drawer Drawer Display 32 2003 SJSU -- CmpE M.E. Fayad L15-S32 Relationships Attributes Attributes are simply the information associated with the object. The data type used to hold the attributes is often a fundamental type, such as int or char. Sometimes the attribute can be a non-fundamental type, such as String type and Address type. Avoid using attributes which might be better implemented as an association to a new class. 33 2003 SJSU -- CmpE M.E. Fayad L15-S33 Relationships More on Attributes For example: x Using Association Using Attributes TV String model String serialNum String manName TV product String model String serialNum * Manufacturer manufacturer String name Address address • Why? Using an association to a Manufacturer class, the name and address of each manufacturer will be stored in one place rather than in each of the TV objects made by that manufacturer. 34 2003 SJSU -- CmpE M.E. Fayad L15-S34 Relationships More on Attributes If attributes only make sense in some instances of a given class but not in others. It will make sense to split the single class into two classes or more. Employee String name float salary Employee String name float salary long clearanceNum Split into two classes inheritance ClearedEmployee • Not all employees have clearances long clearanceNum 35 openVault() 2003 SJSU -- CmpE M.E. Fayad L15-S35 Relationships Generalization (1) A relationship between a general thing (called the superclass or parent) and a more specific kind of that thing (called the subclass or child) – also known as the “is-a-kind-of” relationship A child – is substitutable for the parent – inherits the properties of its parents 2003 SJSU -- CmpE M.E. Fayad 36 L15-S36 Relationships Generalization (2) A class – may have zero, one, or more parents – that has no parents and has one or more children is called a root class or a base class – that has no children is called a leaf class Inheritance – a class with exactly one parent uses single inheritance – a class with more than one parent uses multiple inheritance 2003 Graphically, it is rendered as a solid directed line with a large open arrowhead, pointing to the parent 37 SJSU -- CmpE M.E. Fayad L15-S37 Relationships Inheritance 2003 When a relationship exists between classes such that lower-level classes (called subclasses) share certain attributes and behaviors which can be defined once in a higher-level class (called superclasses). Subclasses inherit properties (attributes and behaviors) of its superclass and then adds its own unique properties and modifies any inherited properties. This is called Generalization or Inheritance. SJSU -- CmpE M.E. Fayad L15-S38 38 Relationships Base and Leaf Classes Base Class Account Bank book Checking Loan 39 Leaf Class 2003 SJSU -- CmpE M.E. Fayad L15-S39 Relationships More on Inheritance Window paintWindow size icon bitmaps textWindow contents 40 2003 SJSU -- CmpE M.E. Fayad L15-S40 Relationships Single and Multiple Inheritance Account Bank book Checking Loan Passenger Car Service Taxi Private Car Multiple inheritance Single inheritance 2003 SJSU -- CmpE M.E. Fayad L15-S41 41 Relationships Aggregation vs. Inheritance 2003 Aggregation Inheritance Instances of distinct classes Instances of a single class “a-part-of” “a-kind-of” or “is-a” (AKO) (APO) Contains superclass-of Aggregate + parts Superclass + subclass “and” relationship “or” relationship Propagated only if specified Inheritance SJSU -- CmpE M.E. Fayad 42 L15-S42 Relationships Discussion Questions 2003 • What are the other terms for attributes & operations? • Define an object and a class in UML • What is an association? Give examples • Associations are usually bidirectional. Please describe. • Describe the basic difference between aggregation and inheritance. What do they have in common? • What do you think “multiple inheritance” means? • Which type of association is more likely to yield savings in the amount of code required for implementation? why? • Define the process of identifying objects, classes, inheritance, associations & aggregation, attributes, and behaviors • Define Polymorphism with examples • What do we mean by saying “Model/View/Controller”? SJSU -- CmpE M.E. Fayad L15-S43 43 Relationships