visitors framework generator
TRANSCRIPT
![Page 1: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/1.jpg)
Visitors Framework Generator
Computer Science DepartmentUniversity of York
Adolfo Sánchez-Barbudo Herrera ([email protected])
![Page 2: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/2.jpg)
Agenda
● Visitor Pattern● Visitors Framework Generator
○ Overview○ Model traversals○ Visitors framework○ Example
● Visitors in Eclipse OCL/QVTd● Conclusions
2
![Page 3: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/3.jpg)
Visitor Pattern● OOP design pattern● Separate structure from behaviour
2
![Page 4: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/4.jpg)
Visitor Pattern II
● Add/Remove/Modify/Replace behaviour without changing structure.○ Ideal when working with third party structures.
3
![Page 5: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/5.jpg)
Visitor Pattern III
● Main disadvantage○ It’s not the ideal pattern with evolving structures.
4
![Page 6: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/6.jpg)
Visitor Pattern IV
● Visitors applied to modeling languages
5
![Page 7: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/7.jpg)
Visitors Framework Generator
● VFG Overview
VFGEcoreModel
VisitableModel
Implementation
Visitor/Visitable
Interfaces
AbstractVisitors
Impl.
Model-Specific Visitors Framework
ManualVisitors
GeneratedVisitors
More MDE-basedgenerators
Manual Generated
6
![Page 8: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/8.jpg)
Visitor Generation Framework II
● Visitable implementation from Ecore MM
7
![Page 9: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/9.jpg)
Visitor Generation Framework III
● Ecore MM specific visitors framework
1. Visitor/Visitable Interfaces
2. Default Abstract Implementations
● Contextful Visitor● Null Visitor● Extending Visitor● Delegating Visitor● ...
8
![Page 10: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/10.jpg)
Model traversals9
![Page 11: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/11.jpg)
Model Traverals II
● Traversal in accept method○ Doomed to the same traversal algorithm.
10
● Traversal in client code○ Ok, but traversal is part of the algorithm
● Traversal in visitors○ Best, but more patterns for reuse sake
Traversal
Visitor
Action
![Page 12: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/12.jpg)
Visitors Framework 11
![Page 13: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/13.jpg)
Visitors Framework II12
![Page 14: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/14.jpg)
Visitors Framework III13
![Page 15: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/15.jpg)
Example14
![Page 16: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/16.jpg)
Visitors Usage in Eclipse OCL/QVTd
● Eclipse OCL○ 7 Ecore metamodels○ 48 generated abstract visitors○ 67 manual visitors
● Eclipse QVTd○ 10 Ecore metamodels○ 89 generated abstract visitors○ 76 manual visitors
15
![Page 17: Visitors Framework Generator](https://reader031.vdocuments.us/reader031/viewer/2022030311/58ee6e4a1a28abc4348b46c3/html5/thumbnails/17.jpg)
Conclusions
● VFG:○ Automatically brings the benefits of the visitor
pattern to Ecore-based models○ Automatically creates a MM-specific framework to
leverage visitors creation○ It´s a convenient practice when your models have
unclear behaviour or an evolving one○ It´s a key practice to let clients add their specific
behaviour algorithms○ A key tool in the development of Eclipse OCL/QVTd
16