870 likes | 1.76k Views
Basic Structural Modeling. Pertemuan ke 4 Classes. Overview. Classes Attributes Operations Responsibilities Modeling the vocabulary of a system. Modeling the distribution of responsibilities. Modeling non-software “things”. Modeling primitive types. Modeling quality abstractions.
E N D
Basic Structural Modeling Pertemuanke 4 Classes
Overview • Classes • Attributes • Operations • Responsibilities • Modeling the vocabulary of a system. • Modeling the distribution of responsibilities. • Modeling non-software “things”. • Modeling primitive types. • Modeling quality abstractions. CS6359
Window name attributes operations origin size open() close() Classes • Description of a set of objects that share the same attributes, operations, relationships, and semantics. CS6359
Names • Distinguishing identity. • Textual string. • Simple name. • Prefixed by package name to generate path name. Account Java::awt::Rectangle Simple names Customer path name Circuit Temperature Sensor CS6359
Name Rules • Consists of letters, numbers, and certain punctuation marks. • Short noun phrases drawn from vocabulary of the domain. • First letter of every word capitalized. TemperatureSensor BrokerageAccount CS6359
Attributes • Named property of a class. • Describes a range of values that an instance of the property may hold. • Short noun representing property of its enclosing class. • First letter of every word capitalized except the first. birthDate userAccount CS6359
height : Float width : Float isStudent : Boolean = false origin size Attributes (cont’d) attributes You can further specify an attribute by stating its class and possibly a default initial value CS6359
Operations • Abstraction of something that can be done to an object. • Shared by every object of the same class. • May cause object to change state. • Short verb representing behavior of representing class. • First letter of every word capitalized except the first. addUser() isEmpty() CS6359
Operations (cont’d) operations reset() setAlarm( t : Temperature ) value() : Temperature add() move() You can specify an operation by stating its signature, covering the name, type and default value of all parameters and a return type CS6359
Organizing • Only a subset of attributes and operations are typically relevant to any one view. • Elide a class; hide non-relevant information. • Use stereotypes to categorize. • Use ellipsis to specifyadditional attributes oroperations <<constructor>> new() new( p : Policy ) <<process>> process( o : Order ) … <<query>> isSuspect( o : Order ) CS6359
Responsibilities • Contract or obligation of a class. • Carried out by attributes and operations. • Techniques • CRC cards (Class-Responsibility-Collaborator);Kent Beck and Ward Cunningham; ’89 • Use case based analysis. CS6359
Responsibilities (cont’d) • Free-form text; one phrase per responsibility. FraudAgent responsibilities Responsibilities -- determine the risk of a customer order -- handle customer-specific criteria for fraud CS6359
Modeling Techniques • Vocabulary. • Distribution of responsibilities. • Non-software things. • Primitive types. CS6359
Modeling Vocabulary • Things used to describe the problem or solution. Found through CRC cards and/or use case analysis. • Identify responsibilities for each abstraction. • Provide attributes and operations needed to carry out responsibilities. CS6359
Modeling Distribution of Responsibilities • Identify a set of classes that work together to carry out some behavior. • Identify responsibilities for each class. • Split classes with too much responsibility. • Collapse classes with trivial responsibility. • No class should do too little or too much. CS6359
Modeling Non-software Things • Model the thing as a class. • Use stereotypes to give a distinctive cue. • Consider nodes to model hardware. • Use a unique icon. CS6359
Modeling Primitive Types • Model as a type using a class notation. • Use stereotypes as necessary. • Use constraints to represent valid values. <<enumeration>> Boolean <<datatype>> Int false true { value range –2**31 to +2**31-1 } CS6359
Hints & Tips • Well-structured class • Provides a crisp abstraction drawn from vocabulary of problem or solution. • Embodies small, well-defined set of responsibilities. • Provides clear separation of the abstractions specification and implementation. • Understandable and simple. • Extensible and adaptable. CS6359
Hints & Tips (cont’d) • Drawing a UML class • Show only properties that are important in a specific context. • Organize long lists of attributes and operations by grouping. • Show related classes in the same diagrams. CS6359
Summary • Classes • Name. • Attributes. • Operations. • Responsibilities. • Modeling techniques. • Vocabulary. • Responsibilities. • Non-software things. • Primitive types. CS6359
Basic Structural Modeling Class Diagrams
Overview • Modeling simple collaborations. • Modeling a logical database schema. • Forward and reverse engineering. CS6359 Chapter 8
Class Diagram • Typical Contents • Classes • Interfaces • Collaborations • Relationships • Dependencies • Generalizations • Associations • Notes CS6359 Chapter 8
Class Diagram Uses • Model static design view of a system. • Vocabulary of the system. • Collaborations • Logical database schema. CS6359 Chapter 8
Modeling Simple Collaborations • Identify the mechanism to be modeled; a mechanism represents some function or behavior. • For each mechanism, identify the classes, interfaces, and other collaborations that participate in this collaboration. • Identify the relationships among those entities. • Use scenarios to walk through the model. CS6359 Chapter 8
Example Collaboration CS6359 Chapter 8
Modeling a Logical Database • Identify classes whose state must be persistent. • Create a class diagram using standard tagged value. • Expand to include structural details, specifically attributes and associations. • Identify common patterns which cause database problems; create intermediate abstractions if necessary. • Use tools if available to transform logical design into physical design. CS6359 Chapter 8
Example Logical Database CS6359 Chapter 8
Forward Engineering • Forward engineering—the process of transforming a model into code through a mapping to an implementation language. • Steps • Identify the rules of mapping to a specific language. • Constrain use of UML to match language semantics (e.g. inheritance). • Use tagged values to identify language. • Use tools when possible. CS6359 Chapter 8
Example Forward Engineering public abstract class EventHandler { private EventHandler successor; private Integer currentEventId; private String source; EventHandler() {} public void handleRequest() {} } CS6359 Chapter 8
Reverse Engineering • Reverse engineering—the process of transforming code into a model through mapping from a specific implementation language. • Steps • Identify the rules of mapping from a specific language. • Use a tool; point the tool to the code. • Query the model to obtain desired information for the model. CS6359 Chapter 8
Hints & Tips • Separate your analysis models from your design models. • Different levels of abstraction. • Different contextual vocabulary. • Elements of a well-structure class diagram. • Focused on one aspect of a system’s static design view. • Contains only essential elements for that aspect. • Provides sufficient details for the level of abstraction. CS6359 Chapter 8
Hints & Tips (cont’d) • Give diagrams a name that communicates their purpose. • Diagram layout. • Minimize crossing of arcs. • Co-locate semantically related elements. • Use notes and color as visual cues. • In general one relationship type will dominate each diagram; don’t confuse the issue. CS6359 Chapter 8
Summary • Class diagram contents. • Modeling simple collaborations. • Modeling logical databases. • Forward engineering • Reverse engineering. CS6359 Chapter 8
Advanced Structural Modeling Advanced Classes
Overview • Classifiers • Advanced notations • Special properties • Attributes • Operations • Template Classes CS6359 Chapter 9
Advanced UML Notations CS6359 Chapter 9
Classifiers • Classifier—mechanism that describes structural and behavioral features. CS6359 Chapter 9
Classifier Examples CS6359 Chapter 9
Visibility • Public—access allowed for any outside classifier with visibility to the given classifier (+). • Protected—access allowed for any descendant of the classifier (#). • Private—access restricted to the classifier itself (-). CS6359 Chapter 9
Frame instance scope class scope header : FrameHeader uniqueID : Long Scope • Instance—each instance of the classifier holds its own value. • Classifier—one value is held for all instances of the classifier (underlined). CS6359 Chapter 9
Generalization CS6359 Chapter 9
could be singleton multiplicity 1 NetworkController 3 ControlRod consolePort [ 2..* ] : Port Multiplicity • Constraint on the number of instances of a class or attribute. CS6359 Chapter 9
Attributes • Syntax[ visibility ] name [ multiplicity ] [ : type ] [ = initial-value ] [ {property-string } ] • property-string • changeable—no restrictions (default) • addOnly—values may not be removed or altered, but may be added • frozen—may not be changed after initialization CS6359 Chapter 9
Attributes (cont’d) • Examples CS6359 Chapter 9
Operations • Syntax[ visibility ] name [ (parameter-list ) ] [ : return-type ] [ (property-string) ] • 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 CS6359 Chapter 9
Operations (cont’d) • property-string • isQuery—state is not affected • sequential—not thread safe • guarded—thread safe (Java synchronized) • concurrent—typically atomic; safe for multiple flows of control CS6359 Chapter 9
Template Classes • Parameterizedelement CS6359 Chapter 9
Summary • Classifiers • Visibility • Scope • Multiplicity • Attributes • Operations • Template Classes CS6359 Chapter 9