Grasp

fizzadurrani 11,693 views 38 slides Oct 16, 2014
Slide 1
Slide 1 of 38
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38

About This Presentation

Design Patterns


Slide Content

GRASP Submitted To: Submitted by: Fizza Durrani 11073 7 th Semester UET(A) October 15, 2014 1 Lahore Garrison University

GRASP “The critical design tool for software development is a mind well educated in design principles. It is not the UML or any other technology.“ Craig Larman Thus, GRASP is really a mental toolset, a learning aid to help in the design of object-oriented software. 2 Lahore Garrison University

GRASP It stands for: General Responsibilities Assignment Software Patterns (Principles) 3 Lahore Garrison University

GRASP Responsibility A contract / obligation that a class / module / component must accomplish Knowledge Private state Computed state     Behavior Send messages itself and modify its private state Instantiate another objects Send messages to another objects 4 Lahore Garrison University

Responsibility-Driven Design “doing” responsibilities Doing something itself, such as creation an object or doing a calculation. Initiating action in other objects Controlling and coordinating activities in other objects. “knowing” responsibilities Knowing about encapsulated data. Knowing about related objects. Knowing about things it can derive or calculate. 5 Lahore Garrison University

GRASP Patterns 6 Lahore Garrison University

GRASP Patterns Informational Expert  Creator Low Coupling High Cohesion Controller Polymorphism Pure Fabrication Indirection Controlled Variation 7 Lahore Garrison University

8 Lahore Garrison University

Informational Expert Problem: Which class possesses information about object A? More common question: What is a general principle of assigning responsibilities to objects? Assign the responsibility to the class that knows the necessary information for performing required action and fulfill the responsibility. 9 Lahore Garrison University

Informational Expert A B C D DO GetDataX () GetDataY () GetDataZ () return Z return Y return X 10 Lahore Garrison University

Informational Expert A B C D DO DoAction () DoAction (X) DoAction (Y) 11 Lahore Garrison University

12 Lahore Garrison University

Creator Problem: Who should be responsible for creating object A? Class B must have that responsibility if: B is composed by A (composition) B knows the necessary information in order to instantiate A objects B depends heavily on A 13 Lahore Garrison University

The goal is to define creator-object, which will be related to all created objects. Board Square 64 Square Board create create Creator 14 Lahore Garrison University

15 Lahore Garrison University

Low Coupling Problem: How to minimize dependencies between classes ? Coupling  is the degree, defines how tightly one component linked to other components, or how much information it knows about other components. Examples Inheritance Composition / aggregation / association A send messages to B 16 Lahore Garrison University

Low Coupling Assign a responsibility so that coupling remains low. Low Coupling  is an evaluative pattern, which dictates how to assign responsibilities to support: lower dependency between the classes, change in one class having lower impact on other classes, higher reuse potential. 17 Lahore Garrison University

18 Lahore Garrison University

High Cohesion Problem: How to keep objects focused, understandable, manageable, and support low coupling? Cohesion  is a measure of how strongly related or focused the responsibilities of a single module are. High Cohesion  is an evaluative pattern that attempts to keep objects appropriately focused, manageable and understandable. 19 Lahore Garrison University

High Cohesion Alternatively, low cohesion is a situation in which a given element has too many unrelated responsibilities (“God Object”) Low Cohesion implies: Hard to reuse Hard to maintain Constantly changing 20 Lahore Garrison University

A A ?? ?? DoA () DoB () DoC () DoA () DoB () DoC () High Cohesion 21 Lahore Garrison University

22 Lahore Garrison University

Controller Problem: Who should be responsible for handling events and messages from external actors (UI, …)? Assign the responsibility to a class, such as: A class that represents the overall system, device, or subsystem. Façade Controller Pattern A class that represent a use case, whereby performs handling particular system operation. Use Case Controller Pattern Generally does not perform operation by itself, but delegate responsibility to component objects. 23 Lahore Garrison University

24 Lahore Garrison University

Polymorphism Problem: How to act different depending in object’s class, or how to design pluggable components? In case of class behavior might changes, responsibilities segregates to different behavior specific classes, using polymorphic operations for this class. Advise: Do not use type checking, but conditional logic for implementation different variations based on object type. 25 Lahore Garrison University

There are (roughly) 3 types a polymorphism: Ad hoc Polymorphism Parametric Polymorphism Subtype Polymorphism Polymorphism Player Square landedOn RegularSquare landedOn GoSquare landedOn OtherSquare landedOn 26 Lahore Garrison University

27 Lahore Garrison University

Problem: How to assign responsibilities if applying the Informational Expert principle decreases cohesion and increases coupling? Assign the responsibility to an artificial class that does not belongs to the domain model. Pure Fabrication is a class that does not reflect any business domain object, but required only for increase cohesion and decrease coupling. Pure Fabrication 28 Lahore Garrison University

29 Lahore Garrison University

Problem: How to assign responsibilities in order to avoid direct coupling between two components, and keep ability for reuse. Assign responsibility to intermediate class for providing linking between objects not linking directly. Related design patterns: Adapter, Bridge, Mediator. Indirection 30 Lahore Garrison University

31 Lahore Garrison University

Problem: How to design system and subsystems, that changes in these components does not affects on other components. Identify points of possible variations and instability; create stable interfaces upon instable components. Open-Closed Principle almost equivalent to CV pattern. Controlled Variation 32 Lahore Garrison University

There are 2 types of points: Variation point – branching point on existing system or in requirements. For example we need to support several types of interfaces for tax payment system Evolution point – supposed branching point, which might occur in future, but does not declared by existing requirements. Protected variation pattern applying for both variation and evolution points. Controlled Variation 33 Lahore Garrison University

Informational Expert Assign a responsibility to the class that has the information needed to fulfill it. Creator 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 compositely aggregates A.  B records A.  B closely uses A.  B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A. Controller Assign the responsibility to a class representing one of the following choices: Major subsystem classes A use case scenario classes within which the system event occurs Low Coupling Assign a responsibility so that coupling remains low. High Cohesion Assign a responsibility so that cohesion remains high. Overview 34 Lahore Garrison University

Polymorphism The same name operations (methods) in the difference classes is defined. And assign a responsibility to the class the class that the behavior is changed. Pure Fabrication Define a class for convenience' sake that doesn't express the concept of the problem area at all. Indirection Assign the responsibility to an intermediate object to mediate between other components or services, so that they are not directly coupled. Protected Variations Assign responsibility to create a stable interface around an unstable or predictably variable subsystem or component. Overview 35 Lahore Garrison University

http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29 http://www.slideshare.net/snmgian/grasp-principles http://www.slideshare.net/eduardo_diederichsen/design-talk-grasp-patterns?related=1 http://www.slideshare.net/eduardo_diederichsen/design-talk-grasp-patterns?related=1 Bibliography 36 Lahore Garrison University

Any Question 37 Lahore Garrison University

38 Lahore Garrison University
Tags