pattern language for ap1 pattern language for adaptive programming (ap) karl lieberherr northeastern...
DESCRIPTION
Pattern Language for AP3 On-line information $D = $D is Demeter Home Page $SD course home directory Lectures are in: $SD/lecturesTRANSCRIPT
![Page 1: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/1.jpg)
Pattern Language for AP 1
Pattern Language for Adaptive Programming (AP)
Karl LieberherrNortheastern University
![Page 2: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/2.jpg)
Pattern Language for AP 2
Introduction
Four Patterns• Structure-shy Traversal• Selective Visitor• Structure-shy Object• Class Graph
![Page 3: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/3.jpg)
Pattern Language for AP 3
On-line information
• $D = www.ccs.neu.edu/research/demeter • $D is Demeter Home Page• $SD course home directory • Lectures are in: $SD/lectures
![Page 4: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/4.jpg)
Pattern Language for AP 4
Summary
Present ideas of AP at a high-level of abstraction.
Explain concepts independent of tools and languages.
![Page 5: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/5.jpg)
Pattern Language for AP 5
Vocabulary
• Pattern: Reusable solution to a problem in a context.
• Class graph = Class diagram: Graph where nodes are classes and edges are relationships between the classes.
• Design pattern book: Gamma, Helm, Johnson, Vlissides: 23 design patterns
![Page 6: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/6.jpg)
Pattern Language for AP 6
Vocabulary
• Visitor pattern: Define behavior for classes without modifying classes.
• Parser: Takes a sequence of tokens and creates a syntax tree or object based on a grammar.
• Grammar: a class graph annotated with concrete syntax.
![Page 7: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/7.jpg)
Pattern Language for AP 7
Overview
• Patterns a useful way to write down experience.
• Use a standard format: Intent, Motivation, Applicability, Solution, Consequences, etc.
• Patterns are connected and refer to each other.• Extended version at:
$D/adaptive-patterns/pattern-lang-conv
![Page 8: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/8.jpg)
Pattern Language for AP 8
Connections
• There are several connections between the AP patterns and other design patterns.
• Class Graph is the basis for Structure-shy Traversal, Selective Visitor and Structure-shy Object.
![Page 9: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/9.jpg)
Pattern Language for AP 9
Structure-shy Traversal
• Intent– Succinctly represent a traversal to be performed
on objects– Commit only to navigation strategy and specify
navigation details later
![Page 10: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/10.jpg)
Pattern Language for AP 10
Solve Law of Demeter Dilemma
Small Method Goat Big Method Goat
![Page 11: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/11.jpg)
Pattern Language for AP 11
Structure-shy Traversal
• Could also be called:– Adaptive Traversal– Structure-shy Walker– Adaptive Visitor (significantly improves the
Visitor pattern)
![Page 12: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/12.jpg)
Pattern Language for AP 12
Structure-shy Traversal
• Motivation– Noise in objects for specific task– Focus on long-term intent– Don’t want to attach every method to a specific
class explicitly. Leads to brittle programs.– Small methods problem (example: 80% of
methods are two lines long or shorter)
![Page 13: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/13.jpg)
Pattern Language for AP 13
Structure-shy Traversal
• Applicability– Need collaboration of at least two classes.– In the extreme case, each data member access is
done through a succinct traversal specification.– Some subgraphs don’t have a succinct
representation, for example a path in a complete graph. More generally: avoid well connected, dense graphs.
![Page 14: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/14.jpg)
Pattern Language for AP 14
Structure-shy Traversal
• Solution– Use succinct subgraph specifications– Use succinct path set specifications
![Page 15: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/15.jpg)
Pattern Language for AP 15
Structure-shy Traversal: Solution
• Traversal Strategy Graphs (Strategies)– First stage: A strategy is a graph with nodes
and edges. Nodes are labeled with nodes of a class graph. Edges mean: all paths.
– Second stage: label edges with constraints excluding edges and nodes in class graph
– Third stage: Encapsulated strategies. Use symbolic elements and map to class graph.
![Page 16: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/16.jpg)
Pattern Language for AP 16
Structure-shy Traversal: Solution
• Traversal Strategy Graphs (Strategies)– Simplest useful strategy: One Edge. Possible
syntax: • from Company to Salary or • {Company -> Salary}
– Line graph. Several edges in a line. Possible syntax:
• From Company via Employee to Salary• {Company -> Employee Employee -> Salary}
![Page 17: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/17.jpg)
Pattern Language for AP 17
Structure-shy Traversal: Solution
• Traversal Strategy Graphs (Strategies)– Star graph
• From Company to {Personnel, Travel, Employee}
Company
TravelPersonnel
Employee
![Page 18: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/18.jpg)
Pattern Language for AP 18
UML Class Diagram
BusRoute BusStopList
BusStopBusList
Bus PersonList
Person
passengers
buses
busStops
waiting
0..*
0..*
0..*
![Page 19: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/19.jpg)
Pattern Language for AP 19
Traversal Strategy
BusRoute BusStopList
BusStopBusList
Bus PersonList
Person
passengers
buses
busStops
waiting
0..*
0..*
0..*
from BusRoute through BusStop to Person
find all persons waiting at any bus stop on a bus route
![Page 20: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/20.jpg)
Pattern Language for AP 20
Robustness of Strategy
BusRoute BusStopList
BusStopBusList
Bus PersonList
Person
passengers
busesbusStops
waiting
0..*
0..*
0..*
from BusRoute through BusStop to Person
VillageList
Village
villages
0..*
find all persons waiting at any bus stop on a bus route
![Page 21: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/21.jpg)
Pattern Language for AP 21
Structure-shy Traversal
• Consequences– Programs become shorter and more powerful.
A paradox. With less work we achieve more. Polya’s inventor paradox.
– Program will adapt to many changes in class structure.
![Page 22: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/22.jpg)
Pattern Language for AP 22
Structure-shy Traversal
• Implementation– Many different models for succinct traversal
specifications.– Best one: Strategies– Correct implementation of strategies is tricky.
See paper by Lieberherr/Patt-Shamir strategies.ps in my FTP directory.
![Page 23: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/23.jpg)
Pattern Language for AP 23
Structure-shy Traversal
• Known Uses– Adaptive Programming: Demeter/C++, DemeterJ,
Dem/Perl, Dem/CLOS etc.– Databases (limited use): Structure-shy queries: See
Cole Harrison’s Master’s Thesis (Demeter Home Page)
– XML: XPath– Artificial Intelligence (limited use): Minimal
ontological commitment
![Page 24: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/24.jpg)
Pattern Language for AP 24warm climate cold climate
same strategy in different class graphs: similar traversalssame seeds in different climates: similar trees
Nature Analogy
![Page 25: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/25.jpg)
Pattern Language for AP 25
same cone different planes define similar point setssame strategy different class graphs define similar path sets
Mathematical Analogy
![Page 26: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/26.jpg)
Pattern Language for AP 26
Selective Visitor
• Intent– Loosely couple behavior modification to
behavior and structure.– Would like to write an editing script to modify
traversal code instead of modifying the traversal code manually.
![Page 27: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/27.jpg)
Pattern Language for AP 27
Selective Visitor
• Could also be called:– Structure-shy Behavior Modification– Event-based Coupling– Traversal Advice
![Page 28: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/28.jpg)
Pattern Language for AP 28
Selective Visitor
• Motivation:– Avoid tangling of code for one behavior with
code for other behaviors.– Localize code belonging to one behavior.– Compose behaviors.– Modify the behavior of a traversal call
(traversals only traverse).
![Page 29: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/29.jpg)
Pattern Language for AP 29
Selective Visitor
• Applicability:– Need to add behavior to a traversal.
![Page 30: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/30.jpg)
Pattern Language for AP 30
Selective Visitor
• Solution:– Use visitor classes and objects.– Pass visitor objects as arguments to traversals.– Either use naming conventions for visitor
methods (e.g., before_A()) or extend object-oriented language (e.g. before A, before is a new key word).
![Page 31: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/31.jpg)
Pattern Language for AP 31
Selective Visitor
• Solution:– before, after methods for nodes and edges in the
class graph – Activated during traversal as follows:
• Execute before methods• Traverse• Execute after methods
![Page 32: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/32.jpg)
Pattern Language for AP 32
Visitor visits objects
following strategy
Visitor collects information in suitcase (variables)
![Page 33: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/33.jpg)
Pattern Language for AP 33
Selective Visitor
• Solution: Focus on what is important.SummingVisitor { {{ int total; }} init {{ total = 0; }} before Salary {{ total = total + host.get_v(); }} return {{ total }}}
host is object visited
Code between {{ and }} is Java code
![Page 34: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/34.jpg)
Pattern Language for AP 34
Selective Visitor
• Solution: Use of visitorCompany { traversal allSalaries(UniversalVisitor) {do S;} int sumSalaries() {{ SummingVisitor s = new SummingVisitor(); this.allSalaries(s); return s.get_return_val(); }}}
![Page 35: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/35.jpg)
Pattern Language for AP 35
Selective Visitor
• Consequences– Easy behavior adjustments: Add visitor– Reuse of visitors
![Page 36: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/36.jpg)
Pattern Language for AP 36
Selective Visitor
• Consequences: Easy behavior enhancementCompany { // enhancements in red traversal allSalaries(UniversalVisitor, UniversalVisitor) {do S;} {{ float averageSalaries() { SummingVisitor s = new SummingVisitor(); CountingVisitor c = new CountingVisitor(); this.allSalaries(s, c); return s.get_return_val() / c.get_return_val(); } }}}
summing counting
![Page 37: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/37.jpg)
Pattern Language for AP 37
Writing Programs with StrategiesExample of Adaptive Program
BusRoute { traversal waitingPersons(PersonVisitor) { through BusStop to Person; } // from is implicit int printWaitingPersons() // traversal/visitor weaving instr. = waitingPersons(PrintPersonVisitor);PrintPersonVisitor { before Person {{ … }} … }PersonVisitor {init {{ r = 0 }} … }
Extension of Java: keywords: traversal initthrough bypassing to before after etc.
strategy: from BusRoute through BusStop to Person
![Page 38: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/38.jpg)
Pattern Language for AP 38
Selective Visitor
• Consequences:– Can reuse SummingVisitor and
CountingVisitor in other applications.
![Page 39: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/39.jpg)
Pattern Language for AP 39
Selective Visitor
• Implementation– Translate to object-oriented language.– See DemeterJ, for example.
![Page 40: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/40.jpg)
Pattern Language for AP 40
Selective Visitor
• Known uses– Propagation patterns use inlined visitor objects
(see AP book). – DemeterJ.– The Visitor Design Pattern from the design
pattern book uses a primitive form of Selective Visitor.
![Page 41: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/41.jpg)
Pattern Language for AP 41
Differences to Visitor pattern
• Focus selectively on important classes. Don’t need a method for each traversed class.
• Finer control: not only one accept method but before and after methods for both nodes and edges.
![Page 42: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/42.jpg)
Pattern Language for AP 42
Structure-shy Object
• Intent– Make object descriptions for tree objects
robust to changes of class structure.– Make object descriptions for tree objects
independent of class names.
![Page 43: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/43.jpg)
Pattern Language for AP 43
Example• Tree = “tree” [“left“ <left> Tree] [“right” <right> Tree]
<n> Node.• Node = int.tree left tree 8 right tree left tree 7 3 1
1
8 3
7new Tree( new Tree(null, null, new Node(8)), new Tree( new Tree(null, null, new Node(7)), null, new Node(3)), new Node(1))
![Page 44: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/44.jpg)
Pattern Language for AP 44
Example• BT = “tree” [“left“ <left> BT] [“right” <right>
BT] <n> int.tree left tree 8 right tree left tree 7 3 1
1
8 3
7new Tree( new Tree(null, null, new Node(8)), new Tree( new Tree(null, null, new Node(7)), null, new Node(3)), new Node(1))
COMPLETELYBROKENSTILL CORRECT
![Page 45: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/45.jpg)
Pattern Language for AP 45
Flexibility
• There are many ways to clothe a tree!!• clothing = syntax• Two goals with clothing:
– objects look nice– avoid ambiguity: two distinct objects must look
different
![Page 46: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/46.jpg)
Pattern Language for AP 46
Example
• Tree = “(“ <subtrees> TreeList <n> Node “)”.• TreeList ~ {Tree}.• Node = int.• ((8) ((7) 3) 1)
1
8 3
7
![Page 47: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/47.jpg)
Pattern Language for AP 47
Example: bare Tree
• Tree = <subtrees> TreeList <n> Node.• TreeList ~ {Tree}.• Node = int. • 8 7 3 1• ((8) ((7) 3) 1)• ((8) (7) (3) 1)
1
8 3
71
8 37
![Page 48: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/48.jpg)
Pattern Language for AP 48
Structure-shy Object
• Could also be called:– Object Parsing– Grammar– Abstract=Concrete Syntax
![Page 49: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/49.jpg)
Pattern Language for AP 49
Terminology used
• Grammar G: defines a language L(G) as a set of sentences. Consider unambiguous grammars only.
• The parser constructs a concrete syntax tree in T(G) from a sentence in L(G).
• When we delete all literal tokens (not the ones representing values) from a concrete syntax tree in T(G), we call it an abstract syntax tree in O(G) (this is a somewhat limited notion of abstract syntax tree).
![Page 50: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/50.jpg)
Pattern Language for AP 50
Grammar = Data Structure
• A more general notion of abstract syntax tree would be a programmed abstraction of a concrete syntax tree.
• But we don’t loose unimportant information when we delete the tokens without values!
• This works because the grammar is written in a particular way.
![Page 51: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/51.jpg)
Pattern Language for AP 51
Syntax as aspect
• Need to turn syntax into an aspect.• Concrete syntax tree with all literal
![Page 52: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/52.jpg)
Pattern Language for AP 52
• The point of the Structure-shy object pattern is: – Grammars can be designed in such a way that sentences
serve as canonical abstract syntax trees. Let G be such a grammar. G: L(G) ->A(G), by parsing.
– A particular family of abstract syntax trees is selected by writing a grammar G’ that defines a super language of G. s in L(G): G’ -> A(G’)
– G’ will automate the creation of the abstract syntax trees.
– Example: Fig. 15.1 in AP book to Figure 15.9
Structure-shy Object
![Page 53: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/53.jpg)
Pattern Language for AP 53
• The point of the Structure-shy object pattern is: – A sentence s: G -> T(G). Constraint: s in L(G). A
sentence maps a grammar to a tree. Start with a grammar G0. G is language equivalent to G0. Can alter structure of grammar.
– A sentence is more abstract than a syntax tree because a sentence is a mapping of grammars to trees.
– A tree t: G -> L(G). Constraint: t in T(G). A syntax tree maps a grammar to sentences. but there is less freedom. Can only alter concrete syntax.
– Freedom of a dependent function.
Structure-shy Object
![Page 54: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/54.jpg)
Pattern Language for AP 54
• Consider a grammar G0, the language L(G0) and s in L(G0) and t in T(G0): – A sentence s: G -> T(G). Constraint: s in L(G).
L(G) =L(G0). A sentence maps a grammar to a tree. Can alter structure of grammar. MUCH FREEDOM.
– A tree t: G -> L(G). Constraint: t in T(G). T(G) = T(G0). A syntax tree maps a grammar to a sentence. Can only alter concrete syntax. LITTLE FREEDOM.
Structure-shy Object
![Page 55: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/55.jpg)
Pattern Language for AP 55
![Page 56: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/56.jpg)
Pattern Language for AP 56
Structure-shy Object
• Grammars can be designed in such a way that sentences are more abstract than concrete syntax trees.
![Page 57: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/57.jpg)
Pattern Language for AP 57
Structure-shy Object
• Motivation– Data maintenance a major problem when class
structure changes– Tedious updating of constructor calls– The creational patterns in the design pattern
book also recognize need
![Page 58: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/58.jpg)
Pattern Language for AP 58
Structure-shy Object
• Applicability– Useful in object-oriented designs of any kind.– Especially useful for reading and printing
objects in user-friendly notations. Ideal if you control notation.
– If you see many constructor calls: think of Structure-shy Object.
![Page 59: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/59.jpg)
Pattern Language for AP 59
Structure-shy Object
• Solution– Extend the class structure definitions to define
the syntax of objects.– Each class will define a parse function for
reading objects and a print visitor for printing all or parts of an object.
![Page 60: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/60.jpg)
Pattern Language for AP 60
Structure-shy Object
• Solution– Start with familiar grammar formalism and
change it to make it also a class definition formalism. In the Demeter group we use Wirth’s EBNF formalism.
– Use a parser generator (like YACC or JavaCC) or a generic parser.
![Page 61: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/61.jpg)
Pattern Language for AP 61
Parsers weave sentences into objects
Problem in OO programs: Constructor calls for compoundobjects are brittle with respect to structure changes.
Solution: Replace constructor calls by calls to a parser. Annotateclass diagram to make it a grammar.
Benefit: reduce size of code to define objects, object descriptions are more robust
Correspondence: Sentence defines a family of objects. Adaptive program defines family of object-oriented programs. In both cases,family member is selected by (annotated) class graph.
Structure-shy Object
![Page 62: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/62.jpg)
Pattern Language for AP 62
Run-time weaving: DescriptionSentence* 3 + 4 5
GrammarCompound=Op <f>Exp <s>Exp.Simple=Integer.Exp : Simple | Compound.Mult=“*”.Add=“+”.Op : Add|Mult.
C
M*
S
3
C
A
+
S S
4 5Object in linear form (Constructor calls)
C M * S I 3 C A + S I 4 S I 5
Object as tree
Grammar defined by annotating UML class diagram
SENTENCE IS MORE ROBUST THAN OBJECT
Structure-shy Object
III
![Page 63: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/63.jpg)
Pattern Language for AP 63
Structure-shy Object
• Consequences– more robust and shorter object descriptions– Need to deal with unique readability with
respect to an efficient parsing algorithm– Can guarantee unique readability by adding
more syntax– debug class structures by reading objects
![Page 64: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/64.jpg)
Pattern Language for AP 64
Structure-shy Object
• Related patterns– Creational patterns in design pattern book.– Interpreter pattern uses similar idea but fails to
propose it for general object-oriented design.– Structure-shy Object useful in conjunction with
Prototype pattern.
![Page 65: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/65.jpg)
Pattern Language for AP 65
Structure-shy Object
• Known uses– Demeter Tools since 1986, T-gen, applications
of YACC, programming language Beta and many more.
![Page 66: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/66.jpg)
Pattern Language for AP 66
Structure-shy Object
• References– Chapters 11 and 16 of AP book describe
details.• Exercise
– Use your favorite grammar notation and modify it to also make it a class graph notation.
![Page 67: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/67.jpg)
Pattern Language for AP 67
Class Graph
• Intent– Write class relationships once and reuse them
many times.– Generate a visitor library from class graph for
copying, displaying, printing, checking, comparing and tracing of objects.
![Page 68: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/68.jpg)
Pattern Language for AP 68
Class Graph
• Could also be called:– Class diagram– Class dictionary
![Page 69: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/69.jpg)
Pattern Language for AP 69
Class Graph
• Applicability– For every application having more than one
class.• Implementation
– Preferred: Use UML class graph model and notation
– Use tool to generate visitor library (see DemeterJ).
![Page 70: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/70.jpg)
Pattern Language for AP 70
UML Class Diagram
BusRoute BusStopList
BusStopBusList
Bus PersonList
Person
passengers
buses
busStops
waiting
0..*
0..*
0..*
![Page 71: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/71.jpg)
Pattern Language for AP 71
Class Graph
• Known uses:– Almost all object-oriented design methods use
some form of class diagram. Only DemeterJ generates visitor library and allows strategies to refer to the class graph.
• References– UML class graphs, see UML doc– Demeter class graphs, see chapter 6 of AP book
![Page 72: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/72.jpg)
Pattern Language for AP 72
Summary
• State what has been learned: Principles of AP in high-level form.
• How to apply: Do homework one and recognize those patterns in the thousands of lines Java code.
![Page 73: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/73.jpg)
Pattern Language for AP 73
Where to get more information
• Those patterns will be discussed in much more detail.
• AP book covers the concepts.• UML documentation• See $D for more information.
![Page 74: Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University](https://reader033.vdocuments.us/reader033/viewer/2022052608/5a4d1b867f8b9ab0599bcd15/html5/thumbnails/74.jpg)
Pattern Language for AP 74
Feedback
• Please see me after class or send me email if you have improvements to those patterns.