Advanced Structural Modeling 1. Advanced Classes Classifier A modeling element that describes structural features (attributes) and behavioral features (operations). A modeling element that can have instances. UML classifiers Shape origin move() resize() display() IUnkno wn Process Loan <<subsystem>> kernel32.d ll Visibility Public Protected Private Customer Service subsystem Toolbar # currentSelection : Tool # toolCount : Integer + picItem(i : Integer) + addTool(t : Tool) + removeTool(i : Integer) # checkorphans() - compact() egb_server Scope Instance Each instance of the classifier holds its own value for the feature. Classifier There is just one value of the feature for all instances of the classifier. Frame header : FrameHeader $ uniqueID : Long Abstract, Root, Leaf, and Polymorphic Elements Abstract class: no instance, unimplemented operation(s) Concrete class: has instance(s) and all operations are implemented. Abstract operation: no implementation Root class: no parent class or super class Leaf class: no subclasses Leaf operation: cannot be overridden or redefined by subclasses Polymorphic operation: can be overridden or redefined by subclasses. Rectangle height : Integer width : Integer Button display() Icon {root} ArbitraryIcon origin : Point edge : LineCollection <<abstract>> display() getID() : Integer {leaf} isInside(p : Point) : Boolean OkButton {leaf} display() Multiplicity Number of class instances Number of elements of an array attribute NetworkController consolePort[2..*] : Port 1 ControlPad 3 Attribute specification Full form [visibility] name [multiplicity] [:type] [=initial-value] [{property}] Standard properties changeable addOnly: add element(s) only, no remove frozen: no value change Operation specification Full form [visibility] name [(parameter-list)] [:return-type] [{property}] Standard properties leaf: cannot be overridden isOuery: does not change state sequential: semantics of concurrent calls cannot be guaranteed. guarded: sequencing and synchronizing concurrent calls concurrent: semantics of concurrent calls are guaranteed Parameter specification Full form [direction] name : type [=default-value] Standard directions in: an input parameter with input value, may not be modified out: an output parameter, without input value, may be modified inout: an input parameter with input value, may be modified What is a utility class A class with stereotype <<utility>> whose all attributes and operations have classifier scope (i.e. static). Example: <<utility>> Math 2. Advanced Relationship Association Navigation Association (role) visibility Public: can be seen outside of the association Private: cannot be seen outside of the association Protected: can be only seen by subclasses of the association UserGroup + user +user User +owner -key - key Passward + owner Qualification through Qualifier Bank Account 0..* accountNumber : Integer owner (bankAccount, accountNumber) 0 or 1 person person many(bankAccount, accountNumber) 0..1 Person Association class Company 1..* * employer Person employee Job description dateHired salary Realization What A realization is a semantic relationship between classifiers in which one (target) classifier specifies a contract that another (source) guarantees to carry out. Where to use A class realizes an interface <<Interface>> IRuleAgent AccountBusinessRules addRule() changeRule() explainAction() A component realizes an interface AcctRule. dll IRuleAgent A use-case realization realizes a use case or realization Validate user Validation-Analysis Validation-Design 3. Interfaces What is an interface An interface is a collection of operations that are used to specify a service of a class or component. An interface does not specify any structure (attributes) nor any implementation of the operations in the collection. An interface defines a line between the specification of what an abstraction does and the implementation of how that abstraction does it. Relationships between interfaces and other classifiers A class can realize one or more interfaces An interface can be realized by one or more interfaces A class can depend on an interface Inheritance relationship between interfaces Tracker TargetTracker Observer java::util::Observable Target id currentPosition <<Interface>> Observer TargetTracker setPosition() setVelocity() ExpectedPosition() Interface for role Company 1..* * e: Employee employer <<Interface>> Empolyee gwtEmploymentHistory() getCompensation() getBenefits() Person 4. Packages What is a package A package is a general-purpose mechanism for organizing elements into groups. Owned elements A package can own other elements, even other packages. Every element is uniquely owned by exactly one package. A package forms a name space. Two elements owned by two different packages may have the same name. Examples: BuyerPackage::Information class SellerPackage::Information class Elements of different kinds may have the same name Example: BuyerPackage::Information class BuyerPackage::Information component Path names in nested packages Example: CustomerPackage::BuyerPackage::Information class Visibility of owned elements Public (+) Private (-) Protected (#) A package exports all its public elements Server + Database + LoggingService Client + OrderForm + TrackingForm - Order GUI Policies + Window + Form # EventHandler + OrderRules - GUI::Window Subsystem – a stereotyped package It is a package of elements treated as a unit, including a specification of the behavior of the entire package contents as a coherent unit. A subsystem is modeled both as a package and as a class. A subsystem has a set of interfaces that describe its relationship to the rest of the system <<design subsystem>> Buyer's Invoice Managemenr InvoiceReceiver <<service subsystem>> Payment Scheduling management PaymentScheduling <<design subsystem>> Account Management Transfer <<design subsystem>> Buyer's Invoice Management InvoiceReceiver <<service subsystem>> Payment Scheduling Management <<design subsystem>> Account Management Transfer PaymentScheduling