Law of Demeter - PowerPoint PPT Presentation

About This Presentation
Title:

Law of Demeter

Description:

Proposed by my research group: The Demeter Research Group in 1987, published in 1988. ... The Law of Demeter forms one of the cornerstones of the design ... – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 25
Provided by: andinforma
Category:
Tags: demeter | law

less

Transcript and Presenter's Notes

Title: Law of Demeter


1
Law of Demeter
2
Law of Demeter
  • What is it Style Rule for building systems.
  • Proposed by my research group The Demeter
    Research Group in 1987, published in 1988.
  • Covered in many major books on OO design and
    programming.

3
Law of Demeter Principle
  • Each unit should only use a limited set of other
    units only units closely related to the
    current unit.
  • Each unit should only talk to its friends.
    Dont talk to strangers.
  • Main Motivation Control information overload. We
    can only keep a limited set of items in
    short-term memory.

4
Law of Demeter
FRIENDS
5
closely related
6
Application to OO
  • Unit method
  • closely related
  • methods of class of this/self and other argument
    classes
  • methods of immediate part classes (classes that
    are return types of methods of class of
    this/self)
  • In the following we talk about this application
    of the Law of Demeter Principle to OO example
    follows in a few slides.

7
Citibank Quote Law of Demeter
  • The Law of Demeter forms one of the cornerstones
    of the design approach of the Global Finance
    Application Architecture (quote from Global
    Finance Application Architecture Business
    Elements Analysis, Oct. 1991, Citibank
    confidential document)
  • Widely used in big projects, for example, at JPL
    for the Mars exploration software.

8
Jet Propulsion Laboratory(JPL) Quote Law of
Demeter
  • The Law of Demeter has taken a firm hold in
    many areas of JPL. Major systems which have used
    LoD extensively include Mars Pathfinder
    Software (begun in 1993). We are going to use LoD
    as a foundational software engineering principle
    for the X2000 Europa orbiter mission.

9
What others say about the Law of Demeter
  • Two examples
  • Booch
  • Rumbaugh

10
Booch and the Law of Demeter
  • Context
  • Chapter Classes and Objects, Section On
    Building Quality Classes and Objects, Subsection
    Choosing Relationships

11
Booch and the Law of Demeter
  • Quote The basic effect of applying this Law is
    the creation of loosely coupled classes, whose
    implementation secrets are encapsulated. Such
    classes are fairly unencumbered, meaning that to
    understand the meaning of one class, you need not
    understand the details of many other classes.

12
Rumbaugh and the Law of Demeter
  • Context
  • Chapter Programming Style, Section Extensibility

13
Rumbaugh and the Law of Demeter
  • Quote Avoid traversing multiple links or
    methods. A method should have limited knowledge
    of an object model. A method must be able to
    traverse links to obtain its neighbors and must
    be able to call operations on them, but it should
    not traverse a second link from the neighbor to a
    third class.

14
Law of Demeter(alternative formulation)
  • A method should have limited knowledge of an
    object model.
  • Leads to another Demeter favorite Use grammars
    to define both class structure and an
    application-specific language. See the
    Structure-Shy Object Pattern.

15
Agreement that LoD Good Idea
  • How to follow LoD good solutions exist but not
    widely known. Two approaches to following LoD
  • OO approach
  • Adaptive approaches
  • Traversal support
  • APPC
  • DemeterJ

16
The Law of Demeter (cont.)Violation of the Law
  • class A public void m() P p() B b
  • class B public C c
  • class C public void foo()
  • class P public Q q()
  • class Q public void bar()
  • void Am()
  • this.b.c.foo() this.p().q().bar()

17
Violations Dataflow Diagram
m
foo()
2c
1b
B
C
A
4q()
bar()
3p()
P
Q
18
OO Following of LoD
m
foo2
foo()
c
1b
B
C
A
2foo2()
4bar2()
bar2
bar()
3p()
q()
P
Q
19
Adaptive Following of LoD
  • void Am()
  • (C)
  • Traversal.long_get(this,A-gtC).foo()
  • (Q)
  • Traversal.long_get(this,A-gtQ).bar()
  • void Am()
  • this.b.c.foo() this.p().q().bar() //
    violation

20
Law of Demeter
FRIENDS
21
What if your friends are far away?
  • You pay them to travel to you or you send an
    agent to them to collect the information you
    need.
  • Approximate Directions You give them or your
    agent directions about what kind of information
    to collect but you dont care about accidental
    details of the travel.
  • Detailed Directions You give them or your agent
    detailed travel directions.

22
Adaptive Following LoD
C
A
FRIENDS
a
S
X
c
b
aFrom S to A bFrom S to B cFrom S via X
to C
23
Traversal strategies create friends
  • Class Traversal is an intermediate class between
    classes that need to communicate

Traversal.long_get(Object o, Strategy s)
24
Are not friends for accidental reasons
  • Other classes exist for other reasons
  • Ideal class graph all are friends, even far
    away classes.
Write a Comment
User Comments (0)
About PowerShow.com