Module 3 – Advanced Features: Part I – Structural Diagrams 1

71 Slides1.39 MB

Module 3 – Advanced Features: Part I - Structural Diagrams 1

3 basic building blocks of UML - Diagrams Graphical representation of a set of elements. Represented by a connected graph: Vertices are things; Arcs are relationships/behaviors. 5 most common views built from UML 1.x: 9 diagram types. Structural Diagrams Represent the static aspects of a system. – Class; Object – Component – Deployment Behavioral Diagrams Represent the dynamic aspects. – Use case – Sequence; Collaboration – Statechart – Activity UML 2.0: 12 diagram types Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package Behavioral Diagrams Interaction Diagrams – Use case – Sequence; Communication – Statechart – Activity – Interaction Overview – Timing 2

Class Diagrams Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package 3

Class Diagram The basis for all object modeling All things lead to this Most common diagram. Shows a set of classes, interfaces, and collaborations and their relationships (dependency, generalization, association and realization); notes too. Represents the static view of a system (With active classes, static process view) Three modeling perspectives for Class Diagram Conceptual: the diagram reflects the domain Specification: focus on interfaces of the software (Java supports interfaces) Implementation: class (logical database schema) definition to be implemented in code and database. Most users of OO methods take an implementation perspective, which is a shame because the other perspectives are often more useful. -- Martin Fowler 4

Classes type/class Names Account simple name - start w. upper case balance: Real 0 default value Attributes constructor Operations may cause object to change state short noun - start w. lower case addAccount() process signature setBalance( a : Account) getBalance(a: Account): Amount query isValid( loginID : String): Boolean Bank Customer Java::awt::Polygon ellipsis for additional attributes or operations stereotypes to categorize only the name compartment, ok path name package name ::package name::name 5

Account Responsibilities Responsibilities -- handles deposits -- reports fraud to managers anything that a class knows or does (Contract or obligation) An optional 4th item carried out by attributes and operations. Free-form text; one phrase per responsibility. Technique - CRC cards (Class-Responsibility-Collaborator); Kent Beck and Ward Cunningham’89 A collaborator is also a class which the (current) class interacts with to fulfill a responsibility Customer Opens account Knows name Knows address Account Account Knows interest rate Knows balance Handles deposits Reports fraud to manager Manager 6

Scope & Visibility Instance Scope — each instance of the classifier holds its own value. Class Scope — one value is held for all instances of the classifier Instance scope class scope public protected private (underlined). Frame header : FrameHeader uniqueID : Long addMessage( m : Message ) : Status # setCheckSum() - encrypt() - getClassName() Public class Public method Public attribute Private class Protected class Public - access allowed for any outside classifier ( ). Protected - access allowed for any descendant of the classifier (#). Private - access restricted to the classifier itself (-). (using adornments in JBuilder) 7

Multiplicity singleton multiplicity NetworkController 1 3 ControlRod consolePort [ 2.* ] : Port Using Design Pattern Singleton - instance getInstance():Singleton NetworkController consolePort [ 2.* ] : Port public class Singleton { private static Singleton instance null; private Singleton() {} public static Singleton getInstance() { if (instance null) { instance new Singleton(); } return instance; } } 8

Relationships Window Event open() close() dependency generalization association ConsoleWindow DialogBox generalization (multiple inheritance) Controller EmbeddedAgent association navigation interface URLStreamHandler openConnection() parseURL() setURL() toExternalForm() Control SetTopController authorizationLevel startUp() shutDown() Connect() realization PowerManager friend ChannelIterator 9 stereotyped dependency

Dependency A change in one thing may affect another. The most common dependency between two classes is one where one class use s another as a parameter to an operation. AudioClip name record(m:Microphone) start() stop() Microphone dependency Using relationship CourseSchedule addCourse(c : Course) removeCourse(c : Course Course 10 Usually initial class diagrams will not have any significant number of dependencies in the beginning of analysis but will as more details are identified.

Dependency – Among Classes AbstractClass {abstract} metaclass interface attribut e concreteOperation() abstractOperation() MetaClassName InterfaceName operation() instanceOf realization generalization ClassName -simpleAttribute: Type Default #classAttribute: Type /derivedAttribute: Type operation(in arg: Type Default): ReturnType use instanceOf objectName: ClassName ClientClass Attribute value simpleAttribute: Type Default classAttribute: Type /derivedAttribute: Type 11

Dependency –Among Classes Eight Stereotypes of Dependency Among Classes – bind: the source instantiates the target template using the given actual parameters – – – – – derive: the source may be computed from the target friend: the source is given special visibility into the target instanceOf : the source object is an instance of the target classifier instantiate: the source creates instances of the target powertype: the target is a powertype of the source; a powertype is a classifier whose objects are all the children of a given parent – refine: the source is at a finer degree of abstraction than the target – use: the semantics of the source element depends on the semantics of the public part of the target 12

Dependency –Among Use Cases Two Stereotypes of Dependency Among Use Cases: – extend: the target use case extends the behavior of the source – include: the source use case explicitly incorporates the behavior of another use case at a location specified by the source System Use Case A Actor actor Actor Order Processing System include extend Place Order Use Case B Use Case C 1 SalesPerson * Extension points extend Request Catalog Additional requests: after creation of the order The sales person asks for the catalog include include Supply Customer Info. include Order Item Make Payment 13

Generalization Four Standard Constraints – complete: all children in the generalization have been specified; no more children are permitted – incomplete: not all children have been specified; additional children are permitted – disjoint: objects of the parent have no more than one of the children as a type – overlapping: objects of the parent may have more than one of the children as a type One Stereotype – implementation: the child inherits the implementation of the parent but does not make public nor support its interfaces 14

Generalization – Along Roles 15

Generalization –Among Actors Place Order Extension points 1 * Additional requests: after creation of the order SalesPerson Sales person can do only “Place Order”; Sales manager can do both “Place Order” and “Grant Credit” 1 * Grant Credit SalesManager 16

Associations Represent conceptual relationships between classes (cf. dependency with no communication/message passing) direction indicator: relationship name Professor teaches * teacher how to read relation name 1.* navigability Course class role names {visibility} {/} role name {: interface name} Multiplicity defines the number of objects associated with an instance of the association. Default of 1; Zero or more (*); n.m; range from n to m inclusive 17

Associations – A Question How would you model the following situation? “You have two files, say homework1 and myPet, where homework1 is read-accessible only by you, but myPet is write-accessible by anybody.” You could create two classes, File and User. Homework1 and MyPet are files, and you are a user. File instanceOf homework1:File User instanceOf u:User myPet:File anyoneElse:User User anyoneElse: Approach 1: Now, would you associate the file access right with File? Approach 2: Or, would you associate the file access right with User? 18

Associations – Links – link is a semantic connection among objects. – A link is an instance of an association. association class association name Worker 1.* works for employee setSalary( s : Salary) setDept( d : Dept) named object employer Company ? instanceOf w : Worker * class assign(development) link instanceOf : Company anonymous object Association generalization is not automatic, but should be explicit in UML 19

Associations – Link Attributes Link Attributes The most compelling reason for having link attributes is for-many-to-many relationships File User link attribute access permission Association Class File 1.* * User visual tie AccessRight access permission association class With a refactoring File 1 1.* AccessRight access permission * 1 User 20

Modeling Structural Relationships Considering a bunch of classes and their association relationships School 1 has 1.* 1.* Department 0.1 1.* 1.* assigned to member * Student 1.* attends * * Course 1.* teaches1.* * 1 chairperson Instructor The model above is from Rational Rose. How did the composite symbol ( )get loaded versus the aggregation? Use the Role Detail and select aggregation and then the “by value” radio button. 21

Modeling Structural Relationships Aggregation - structural association representing “whole/part” relationship. - “has-a” relationship. multiplicity part Department 1.* Company association Composite Body aggregation Composite is a stronger form of aggregation. Composite parts live and die with the whole. Composite parts may belong to only one composite. Car Part - whole? Liver Body Heart Liver whole Heart Can aggregations of objects be cyclic? Wheel Engine 22

Association – Qualification Bank account # Qualifier, cannot access person without knowing the account # * 0.1 Person Chessboard rank:Rank file:File 1 1 Square * WorkDesk jobId : int 0.1 returnedItem 23

Association – Interface Specifier association worker : IEmployee * Person 1 supervisor : IManager Interface Specifier Realization A semantic relationship between classifiers in which one classifier specifies a contract that another guarantees to carry out. In the context of interfaces and collaborations An interface can be realized by many classes/components A class/component may realize many interfaces IManager getProject() getSchedule() Person 24

Modeling a Logical Database Class diagrams to provide more semantics From a general class diagram, first identify classes whose state must be persistent (e.g. after you turn off the computer, the data survives, although the program doesn’t). Create a class diagram using standard tagged value, (e.g. {persistent} ). Include attributes and associations. Use tools, if available, to transform logical design (e.g., tables and attributes) into physical design (e.g., layout of data on disk and indexing mechanisms for fast access to the data). School Department { persistent} name : Name { persistent} 0.1 name : Name address : String phone : Number 1.* addStudent() removeStudent() addInstructor() removeInstructor() getInstructor() 1.* getAllInstructors() getStudent() getAllStudents() 1.* addDepartment() removeDepartment() getDepartment() getAllDepartments() 1.* 1.* * Student Course { persistent} name : Name studentId : Number 0.1 1.* Instructor { persistent} * * name : Name courseId : Number chairperson { persistent} * 1.* name : Name 25

Forward/ Reverse Engineering translate a collaboration into a logical database schema/operations transform a model into code through a mapping to an implementation language. Steps – – Selectively use UML to match language semantics (e.g. mapping multiple inheritance in a collaboration diagram into a programming language with only single inheritance mechanism). Use tagged values to identify language. successor EventHandler { Java} Client { Java} currentEventId : Integer source : Strings handleRequest() : void public abstract class EventHandler { private EventHandler successor; private Integer currentEventId; private String source; EventHandler() {} public void handleRequest() {} } translate a logical database schema/operations into a collaboration transform code into a model through mapping from a specific implementation language. 26

Object Diagrams Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package 27

Instances & Object Diagrams “instance” and “object” are largely synonymous; used interchangeably. difference: instances of a class are called objects or instances; but instances of other abstractions (components, nodes, use cases, and associations) are not called objects but only instances. What is an instance of an association called? Object Diagrams very useful in debugging process. – walk through a scenario (e.g., according to use case flows). – Identify the set of objects that collaborate in that scenario (e.g., from use case flows). – Expose these object’s states, attribute values and links among these objects. 28

Instances & Objects - Visual Representation named instance anonymous instance myCustomer t : Transaction keyCode ::keyCode multiobject agent : active object (with a thicker border; owns a thread or process and can initiate control activity) c : Phone [WaitingForAnswer] orphan instance (type unknown) r : FrameRenderThread : Multimedia :: AudioStream instance with current state myCustomer id : SSN “432-89-1738” active True instance with attribute values 29

Instances & Objects - Modeling Concrete Instances Expose the stereotypes, tagged values, and attributes. Show these instances and their relationships in an object diagram. current: Transaction primaryAgent instanceOf LoanOfficer [searching] current : retrieve() Transaction ::Transaction Instances & Objects - Modeling Prototypical Instances Show these instances and their relationships in an interaction diagram or an activity diagram. 2.1 : startBilling 1 : create a: CallingAgent 2: enableConnection c: Connection 30

Instances & Objects list() 1: sort() d: Directory c : Company contents:File File contents: addFile(f:File) 1: addElement(f) contents:File File d: Directory contents: secureAll() client – More Examples 1*: changeMode(readOnly) d: Directory f: File * :Server servers :Server 1: aServer : find(criteria) aServer:Server 2: process(request) call :: label [guard] [“*”] [return-val-list “: “] msg-name “(“ arg-list “)” s : Department rd : Department name “Sales” name “R&D” uss : Department name “US Sales” manager erin : Person name “Erin” employeeID 4362 title “VP of Sales” : ContactInfomation address “1472 Miller St.” 31

Component Diagrams Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package 32

Component Diagram UML1.x – implementation view Shows a set of components and their relationships. Represents the static implementation view of a system. Components map to one or more classes, interfaces, or collaborations. Mapping of Components into Classes loanOfficer.dll LoanOfficer Components and their Relationships component Registrar.exe CreditSearch LoanPolicy Student.dll Course.dll classes 33

Component Diagram UML2.0 – architectural view Big demand, hmm Short history behind architecture Architecture still an emerging discipline Challenges, a bumpy road ahead UML and architecture evolving in parallel Component diagram in need of better formalization and experimentation 34

Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf) 35

Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf) 36

Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf) 37

Component Diagram UML2.0 – architectural view Explicit description of interfaces: lollipop provided services to other components requested services from other components Component Component socket An interface is a collection of 1.* methods, and 0.* attributes Interfaces can consist of synchronous and / or asynchronous operations A port (square) is an interaction point between the component and its environment. Can be named; Can support uni-directional (either provide or require) or bi-directional (both provide and require) communication; Can supp multiple interfaces. possibly concurrent interactions fully isolate an object’s internals from its environment caller or callee? security StudentAdministration Student Encription Incoming Incoming signals/calls signals/calls StudentSchedule AccessControl Persistence Data[1.*] DataAccess Outgoing Outgoing signals/calls signals/calls 38

Component Diagram: UML 1.x and UML 2.0 (http://www.agilemodeling.com/artifacts/componentDiagram.htm) 39

Component Diagram: UML 1.x and UML 2.0 (http://www.agilemodeling.com/artifacts/componentDiagram.htm) So, how many different conventions for components in UML2.0? 40

Building a Component simplified the ports to either provide or require a single interface relationships between ports and internal classes in three different ways: i) as stereotyped delegates (flow), as delegates, and as realizes (logical- physical) relationships 41 Cohesive reuse and change of classes; acyclic component dependency ?

Component Diagram – Connector & Another Example a connector: just a link between two or more connectable elements (e.g., ports or interfaces) 2 kinds of connectors: assembly and delegation. For “wiring” An assembly connector: a binding between a provided interface and a required interface (or ports) that indicates that one component provides the services required by another; simple line/ball-and-socket/lollipop-socket notation A delegation connector binds a component’s external behavior (as specified at a port) to an internal realization of that behavior by one of its parts (provide-provide, request-request). delegation delegation assembly connector store Left delegation: direction of arrowhead indicates “provides” So, what levels of abstractions for connections? Right delegation: direction of arrowhead indicates 42 “requests”

Structured Class A structured class(ifier) is defined, in whole or in part, in terms of a number of parts contained instances owned or referenced by the structured class(ifier). With a similar meaning to a composition relation Any difference? A structured classifier’s parts are created within the containing classifier (either when the structured classifier is created or later) and are destroyed when the containing classifier is destroyed. Like classes and components, combine the descriptive capabilities of structured classifiers with ports and interfaces component or class? connector label /roleName : type Components extend classes with additional features such as the ability to own more types of elements than classes can; e.g., packages, constraints, use cases, and artifacts deployment specifications that define the execution parameters of a component43 deployed to a node

Classifiers Classifier—mechanism that describes structural (e.g. class attributes) and behavioral (e.g. class operations) features. In general, those modeling elements that can have instances are called classifiers. cf. Packages and generalization relationships do not have instances. class an asynchronous stimulus communicated between instances signal interface Shape IUnknown origin move() resize() display() data type type Int { values range from -2**31 to 2**31 - 1 } signal OffHook use case Process loan kernel32.dll component egb server membership server subsystem Customer Service node Generalizable Element, Classifier, Class, Component? subsystem 44

Structured Class – Another Example what kind? 45

Deployment Diagrams Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package 46

Deployment Diagram Shows a set of processing nodes and their relationships. Represents the static deployment view of an architecture. Nodes typically enclose one or more components. TCP/IP TCP/IP J2EE Server IIS PhP Server Membership Server DecNet Tomcat Server 47

Structural Diagrams - Deployment Diagram (http://www.agilemodeling.com/artifacts/deploymentDiagram.htm) Student administration application Physical nodes - stereotype device WebServer - physical device or software artifact RMI/message bus: connection type Nodes can contain other nodes or software artifacts recursively Deployment specs: configuration files: name and properties 48

Structural Diagrams - Deployment Diagram (http://www.agilemodeling.com/artifacts/deploymentDiagram.htm) Is this better? More concrete Implementation-oriented 49

Composite Structure Diagrams Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package 50

Composite Structure Diagrams (http://www.agilemodeling.com/artifacts/compositeStructureDiagram.htm) Depicts the internal structure of a classifier (such as a class, component, or collaboration), including the interaction points of the classifier to other parts of the system. Enroll in Seminar Enroll in Seminar applicant Student prereq: Seminar Add to Wait list applicant Seminar seats: Integer waitList: Student Student prereq: Seminar applicant Determine eligibility seminar Seminar seats: Integer waitList: Student desired seminar Enroll existing students Determine Seat availability constrainer desired seminar registration Enroll Enrollment Course req: Course constrainer registration Enrollment Course req: Course refine desired course 51 structured class, structured component, structured use case, structured node, structured interface,

Variations [Rumbaugh – UML 2.0 Reference: p234] collaboration name Sale role name role seller: Agent buyer: Agent role type item: Property Collaboration definition collaborating object Bala: Analyst Edward: Architect role name buyer seller ShiloPurchase: Sale collaboration name use name item Shilo: Land Collaboration use in object diagram 52

53

Structural Diagrams – Class; Object – Component – Deployment – Composite Structure – Package 54

Packages Package — general-purpose mechanism for organizing elements into groups. Nested Elements: Composite relationship (When the whole dies, its parts die as well, but not necessarily vice versa) (C namespace; specialization means “derived”) simple names visibility Business rules Client OrderForm TrackingForm - Order Client textual nesting Visibility path names Client OrderForm -Order enclosing package name package name TrackingForm graphical nesting Sensors::Vision { version 2.24 } Packages that are friends to another may see all the elements of that package, no matter what their visibility. If an element is visible within a package, it is visible within all packages 55 nested inside the package.

Dependency –Among Packages Two Stereotypes of Dependency Among Packages: – access: the source package is granted the right to reference the elements of the target package (:: convention) – import: a kind of access; the public contents of the target package enter the flat namespace of the source as if they had been declared in the source Client packageName import packageName subPackageName OrderForm TrackingForm - Order access exports packageName PackageClass Policies import OrderRules -GUI:Window imports GUI Window Form #EventHandler import 56

Modeling Groups of Elements Look for “clumps” of elements that are semantically close to one another. Surround “clumps” with a package. Identify public elements of each package. Identify import dependencies. Use Case package Diagram Java.awt Included and extending use cases belong in the same package as the parent/base use case Cohesive, and goal-oriented packaging Actors could be inside or outside each package utd.administration registration Tools.db db interfaces Cloudscape Oracle 57

Class Package Diagrams (http://www.agilemodeling.com/artifacts/packageDiagram.htm) Classes related through inheritance, composition or communication often belong in the same package Schedule Seminar Registration application Student Professor import Contact Point import Java Infrastructure technical import import import A frame depicts the contents of a package (or components, classes, operations, etc.) Heading: rectangle with a cut-off bottom-right corner, [kind] name [parameter] Package Schedule 1.* Seminar 1 1.* 1 Course held at 0.* Enrollment A frame encapsulates a collection of collaborating instances or refers to another representation of such 1 Time Location 58

Common Mechanisms Adornments Notes & Compartments Extensibility Mechanisms –Stereotypes - Extension of the UML metaclasses. –Tagged Values - Extension of the properties of a UML element. –Constraints - Extension of the semantics of a UML element. 59

Adornments Textual or graphical items added to an element’s basic notation. Notes - Graphical symbol for rendering constraints or comments attached to an element or collection of elements; No Semantic Impact Rendered as a rectangle with a dog-eared corner. See smartCard.doc for details about this routine. See http://www.rational.com for related info. May contain combination of text and graphics. May contain URLs linking to external documents. Additional Adornments Placed near the element as named compartment – Text – Graphic Special compartments for adornments in – Classes – Components anonymous compartment – Nodes Transaction addAction() Exceptions Resource Locked Client bill.exe report.exe contacts.exe 60

Stereotypes Mechanisms for extending the UML vocabulary. Allows for new modeling building blocks or parts. Allow controlled extension of metamodel classes. [ UML11 Metamodel Diagrams.pdf] Graphically rendered as – Name enclosed in guillemets ( ) «metaclass» ModelElement stereotype – New icon Internet The new building block can have its own special properties through a set of tagged values its own semantics through constraints 61

Tagged Values a (name, value) pair describes a property of a model element. Properties allow the extension of “metamodel” element attributes. modifies the semantics of the element to which it relates. Rendered as a text string enclosed in braces { } Placed below the name of another element. Server {channels 3} library accounts.dll {customerOnly} tagged values «subsystem» AccountsPayable { dueDate 12/30/2002 status unpaid } 62

Constraints Extension of the semantics of a UML element. Allows new or modified rules Rendered in braces {}. – Informally as free-form text, or – Formally in UML’s Object Constraint Language (OCL): E.g., {self.wife.gender female and self.husband.gender male} Corporation Portfolio BankAccount {secure} Department * * {subset} {or} Person id : {SSN, passport} BankAccount member 1.* Constraint across multiple elements A simple constraint Person employees age: Integer 0.* employers 1 manager Person Company 0.* Company self.employees.forAll(Person p p.age 18 and p.age 65) 63

Appendix Some Additional Material 64

Classes: Notation and Semantics Class - Name attribute-name-1 : data-type-1 default-value-1 attribute-name-2 : data-type-2 default-value-2 operation-name-1 ( argument-list-1) : result-type-1 operation-name-2 ( argument-list-2) : result-type-2 responsibilities To model the semantics (meaning) of a class: Specify the body of each method (pre-/post-conditions and invariants) Specify the state machine for the class Specify the collaboration for the class 65

Attributes Syntax Visibility [ visibility ] name [ multiplicity ] [ : type ] [ initial-value ] [ {property-string } ] public; - private; # protected; {default } type – – There are several defined in Rational Rose. Or you can define your own: e.g. {leaf} You can define your own. property-string Built-in property-strings: – changeable—no restrictions (default) – addOnly—values may not be removed or altered, but may be added – frozen—may not be changed after initialization origin Name only origin Visibility and name origin : Point Name and type head : *Item Name and complex type name [ 0.1 ] : String Name, multiplicity, and type origin : Point { 0, 0 } Name, type, and initial value id : Integer { frozen } Name and property 66

Operations Syntax [ visibility ] name [ (parameter-list ) ] [ : return-type ] [ (property-string) ] Visibility public; - private; # protected; {default } parameter-list syntax [ direction ] name : type [ default-value ] direction – in—input parameter; may not be modified – out—output parameter; may be modified – inout—input parameter; may be modified property-string – – – – – leaf isQuery—state is not affected sequential—not thread safe guarded—thread safe (Java synchronized) concurrent—typically atomic; safe for multiple flows of control 67

Template Classes; Primitive Types A template class is a parameterized element and defines a family of classes In order to use a template class, it has to be instantiated Instantiation involves binding formal template parameters to actual ones, resulting in a concrete class template parameters template class Map Item Value Buckets : int bind( in i : Item; in v : Value ) : Boolean isBound( in i : Item ) : Boolean {isQuery} explicit binding Uses bind Map Customer, Order, 3 implicit binding Primitive Types using a class notation enumeration Boolean false true bind ( Customer, Order, 3 ) OrderMap Item Value Buckets stereotype dataType Int constraint { value range 68 –2**31 to 2**31-1 }

Interface: A Java Example public interface SoundFromSpaceListener extends EventListener { void handleSoundFromSpace(SoundFromSpaceEventObject sfseo); } public class SpaceObservatory implements SoundFromSpaceListener public void handleSoundFromSpace(SoundFromSpaceEventObject sfseo) { soundDetected true; callForPressConference(); } Can you draw a UML diagram corresponding to this? 69

Package Diagrams: Standard Elements Façade — only a view on some other package. Framework — package consisting mainly of patterns. Stub — a package that serves as a proxy for the public contents of another package. Subsystem — a package representing an independent part of the system being modeled. System — a package representing the entire system being modeled. Is import transitive? Is visibility transitive? Does friend apply to all types of visibility: , -, #? 70

Dependency –Among Objects 3 Stereotypes of Dependency in Interactions among Objects: – become: the target is the same object as the source but at a later point in time and with possibly different values, state, or roles – call: the source operation invokes the target operation – copy: the target object is an exact, but independent, copy of the source 71

Back to top button