GRASP: Designing Objects with Responsibilities

GRASP: Designing Objects with Responsibilities

GRASP: Designing Objects with Responsibilities Applying UML and Patterns Craig Larman Chapter 17 Glenn D. Blank CSE432, Lehigh University Chapter Learning Objectives Learn about design patterns

Learn how to apply five GRASP patterns Youve learned about static class diagrams and dynamic interaction diagrams UML is just notation; now you need to learn how to make effective use of the notation UML modeling is an art, guided by principles Design patterns in architecture A pattern is a recurring solution to a standard problem, in a context.

Christopher Alexander, professor of architecture Why is what a prof of architecture says relevant to software? A pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.

Design and dress patterns Jim Coplein, a software engineer: I like to relate this definition to dress patterns I could tell you how to make a dress by specifying the route of a scissors through a piece of cloth in terms of angles and lengths of cut. Or, I could give you a pattern.

Reading the specification, you would have no idea what was being built or if you had built the right thing when you were finished. The pattern foreshadows the product: it is the rule for making the thing, but it is also, in many respects, the thing itself. Patterns in engineering How do other engineers find and use patterns? Mature engineering disciplines have handbooks

describing successful solutions to known problems Automobile designers don't design cars from scratch using the laws of physics Instead, they reuse standard designs with successful track records, learning from experience Should software engineers make use of patterns? Why? Be sure that you make everything according to the pattern I have shown you here on the mountain. Exodus 25:40. Developing software from scratch is also expensive Patterns support reuse of software architecture design

Definitions and names Alexander: A pattern is a recurring solution to a standard problem, in a context. Larman: In OO design, a pattern is a named description of a problem and solution that can be applied in new contexts; ideally, a pattern advises us on how to apply the solution in varying circumstances and considers the forces and trade-offs. How is Larmans definition similar to

Alexanders? How are these definitions significantly different? Naming Patterns important! Patterns have suggestive names: Arched Columns Pattern, Easy Toddler Dress Pattern, etc.

Why is naming a pattern or principle helpful? It supports chunking and incorporating that concept into our understanding and memory It facilitates communication Star and Plume Quilt GRASP

Name chosen to suggest the importance of grasping fundamental principles to successfully design object-oriented software Acronym for General Responsibility Assignment Software Patterns Describe fundamental principles of object design and responsibility Expressed as patterns Five GRASP patterns: Creator

Information Expert Low Coupling Controller High Cohesion Creator pattern Name: Creator Problem: Who creates an instance of A? Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):

B contains or aggregates A (in a collection) B records A B closely uses A B has the initializing data for A Who creates the Squares? Figure 17.3, page 283 How does Create pattern lead to this partial Sequence diagram?

Figure 17.4, page 283 How does Create pattern develop this Design Class Diagram (DCD)? Figure 17.5 , page 283 Board has a composite aggregation relationship with Square I.e., Board contains a collection of Squares Discussion of Creator pattern

Responsibilities for object creation are common Connect an object to its creator when: Aggregator aggregates Part Container contains Content Recorder records Initializing data passed in during creation

Contraindications or caveats Creation may require significant complexity: recycling instances for performance reasons conditionally creating instances from a family of similar classes In these instances, other patterns are

available Well learn about Factory and other patterns later Information Expert pattern or principle Name: Information Expert Problem: How to assign responsibilities to objects? Solution: Assign responsibility to the class that has the information needed to fulfill it? E.g., Board information needed to get a Square Benefits and

Contraindications Facilitates information encapsulation: why? Classes use their own info to fulfill tasks Encourages cohesive, lightweight class definitions But: Information expert may contradict patterns of Low Coupling and High Cohesion Remember separation of concerns principle

for large sub-systems I.e., keep business or application logic in one place, user interface in other place, database access in another place, etc. Low Coupling Pattern Name: Low Coupling Problem: How to reduce the impact of change and encourage reuse? Solution: Assign a responsibility so that coupling (linking classes) remains low.

Why does the following design violate Low Coupling? Why is a better idea to leave getSquare responsibility in Board? Benefits & Contraindications Understandability: Classes are easier to understand in isolation Maintainability: Classes arent affected by changes in other components

Reusability: easier to grab hold of classes But: Dont sweat coupling to stable classes (in libraries or pervasive, well-tested classes) Controller pattern Name: Controller (see Model-View-Controller architecture) Problem: Who should be responsible for UI

events? Solution: Assign responsibility for receiving or handling a system event in one of two ways: Represent the overall system (faade pattern) Represent a use case scenario within which the system event occurs (a session controller) Who is the controller of playGame operation? Figure 17.9, p. 288 What class represents the overall system

or relevant use case scenario? High Cohesion pattern Cohesion measures how strongly related and focused are the responsibilities of an element Name: High Cohesion Problem: How to keep classes focused and manageable?

Solution: Assign responsibility so that cohesion remains high. How does the design on right promote high cohesion? Delegate responsibility & coordinate work Benefits &

Contraindications Understandability, maintainability Complements Low Coupling But: Avoid grouping of responsibilities or code into one class or component to simplify maintenance by one person. Why? Sometimes desirable to create less cohesive server objects that provide an interface for many operations, due to performance needs associated with remote objects and remote

communication Summary Skillful assignment of responsibilities is extremely important in object-oriented design (CRC cards are one technique) Patterns are named problem/solution pairs

that codify good advice and principles related to assignment of responsibilities GRASP identifies five patterns or principles: Creator, Information Expert, Controller, Low Coupling and High Cohesion

Recently Viewed Presentations

  • Iceland Snapshot, February 2019 Retailer performance 2017 Must

    Iceland Snapshot, February 2019 Retailer performance 2017 Must

    The Food Warehouse, Phoenix Retail Park, Stafford St, Wolverhampton WV1 1NT. The largest of the new format stores was rolled out in March 2018, offering innovative ranges and premium products at discount prices.
  • Umoja Course Catalogue Cluster 1 December 2013 Copyright

    Umoja Course Catalogue Cluster 1 December 2013 Copyright

    101 - Umoja Overview . High-Level Overview: Modules: Umoja Overview is designed to be introductory in nature. This course will discuss the benefits, governance structure and changes occurring as a result of Umoja.
  • INVESTING IN STOCK: - United Capital Plc

    INVESTING IN STOCK: - United Capital Plc

    Thus, payment of dividends does not on its face value determine its financial status, it remains crucial to ascertain the real financial state of affairs of any company in deciding questions of investment or financial transactions. ... (Central Securities Clearing...
  • Asymptotic Notation

    Asymptotic Notation

    The word algorithm is a corruption of the older word algorism (by false connection to the Greek arithmos, meaning 'number', and the aforementioned), used to describe the modern decimal system for writing and manipulating numbers—in particular, the use of a...
  • Non-Academic Staff Compensation Structure & Administration Leadership Presentation

    Non-Academic Staff Compensation Structure & Administration Leadership Presentation

    Leadership Presentation 2013. Welcome to the leadership presentation that will provide you an overview of the staff compensation structure and administration. Much of the information may be new to you but it lays the foundation for how we will work...
  • Crosscutting Programs at NSF 1 National Science Board

    Crosscutting Programs at NSF 1 National Science Board

    Finance & Award . Management (BFA) Office of Information Resource . Management (OIRM) Biological . Sciences. Office of . Cyber-infrastructure (OCI) Office of Polar Programs (OPP) Office of International Sci & Eng (OISE) Office of Integrated Activities (OIA) Social, Behavioral...
  • Year 11 Revision - Learning Together (KS4 Science)

    Year 11 Revision - Learning Together (KS4 Science)

    Year 11 Revision. Double Science Students. Targeted Students to their class teacher. Any Students Able to Attend. 2.30pm to 3.00pm. 3.00pm to 3.30pm. 3.30pm to 4.00pm. Class: 11B/DS1. C2 Topic - Electrolysis & Bonding recap. MRT S7. Changing pathogens. B1...
  • Pharyngeal Apparatus

    Pharyngeal Apparatus

    By seventh week it has reached its final site in the neck The proximal opening of the thyroglossal duct persists as a small pit in the tongue, the foramen cecum A pyramidal lobe extends upward from the isthmus in about...