1 / 24

Designing for Visibility

Designing for Visibility. Chapter 19 Applying UML and Patterns Craig Larman. Objectives. Identify four kinds of visibility Design to establish visibility Illustrate kinds of visibility in the UML notation. Introduction. Q. What is visibility?

makelina
Download Presentation

Designing for Visibility

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Designing for Visibility Chapter 19 Applying UML and Patterns Craig Larman

  2. Objectives • Identify four kinds of visibility • Design to establish visibility • Illustrate kinds of visibility in the UML notation

  3. Introduction Q. What is visibility? A. Visibility is the ability of one object to see or have reference to another.

  4. Visibility Between Objects Q. When is visibility necessary? A. To send a message from one object to another, the receiver object must be visible to the sender, so the sender has to have a pointer or reference to the receiver.

  5. Visibility Between Objects Example: Q. If A sends messages to B, which must be visible to which? A. B is visible to A means A can send a message to B. Some say that "B is an acquaintance of A".

  6. Visibility Between Objects

  7. Visibility • Visibility is related to the scope: • Is one resource (such as an instance) within the scope of another? • The motivation to consider visibility: • For an object A to send a message to an object B, B must be visible to A.

  8. Four Kinds of Visibility How visibility can be achieved from object A to object B: • Attribute visibility - B is an attribute of A • Parameter visibility - B is a parameter of a method of A • Local visibility - B is a local object in a method of A • Global visibility - B is in some way globally visible

  9. Attribute Visibility • Attribute visibility from A to B exists when B is an attribute of A • Relatively permanent visibility because it persists as long as A and B exist • Common form of visibility public class Register {… private ProductCatalog Catalog; … }

  10. Attribute Visibility

  11. Parameter Visibility • Parameter visibility from A to B exists when B is passed as a parameter to a method of A. • Relatively temporary visibility because it persists only within the scope of the method • The 2nd most common form of visibility in the OO systems

  12. Parameter Visibility

  13. Parameter to attribute Visibility • It is common to transform parameter visibility into attribute visibility.

  14. Local Visibility • Local visibility from A to B exists when B is declared as a local object within a method of A. • Relatively temporary visibility since it persists only within the scope of the method.

  15. Local Visibility There are two common means by which local visibility is achieved: • Create a new local instance and assign it to a local variable. • Assign the returning object from a method invocation to a local variable. A variation of this method does not explicitly declare a variable, but one implicitly exists as the result of a returning object from a method invocation Ex: anObject.getAnotherObject.doSomething();

  16. Global Visibility • Global visibility from A to B exists when B is global to A. • Relatively permanent visibility since it persists as long as A and B exist. • The least common form of visibility in OO Systems.

  17. Global Visibility • Ways to achieve global visibility: • Assign an instance to a global variable. • Use the Singleton pattern

  18. Singleton Pattern (Gang of Four) • Problem: • Exactly one instance of a class is needed. Objects need a single point of access. • Solution: • Define a class method that returns the singleton object, instantiating it if it does not exist. • Example: • A print queue—many programs must access one queue

  19. Illustrating Visibility in the UML

  20. Visibility in the UML • Public: • Any outside classifier with visibility to the given classifier can use the feature; specified by pre-pending the symbol “+” • Protected: • Any descendant of the classifier can use the feature; specified by pre-pending the symbol “#” • Private: • Only the classifier itself can use the feature; specified by pre-pending the symbol “-”

  21. Terms: Classifier • A classifier is a mechanism that describes structural and behavioral features. • Modeling elements that can have instances are called classifiers. • Classifiers include classes, interfaces, datatypes, signals, components, nodes, use cases, and subsystems. • A classifier has structural feature (in the form of attributes), as well as behavioral features (in the form of operations).

  22. Terms: Feature A feature is a property, such as operations or attributes that is encapsulated within entity such as an interface, a class, or a datatype.

  23. Questions & Answers Q. Which would you use if you wanted a relatively permanent connection? A. attribute, or global Q. Which would you use if you didn't want a permanent connection? A. parameter, or local Q. How would you create a local visibility? A. create a new instance - use result of a method call

  24. Questions & Answers Q. how would you achieve a global visibility? A. use a global variable in C++, static (or class) variable (in C++ or Java) - use the Singleton pattern (a static method that returns the object)

More Related