Presentation is loading. Please wait.

Presentation is loading. Please wait.

Good for DJ over Java Extending traversals for b..* –returning a single object instead of a collection (Find) –modifying the collection (Add, Delete)

Similar presentations


Presentation on theme: "Good for DJ over Java Extending traversals for b..* –returning a single object instead of a collection (Find) –modifying the collection (Add, Delete)"— Presentation transcript:

1

2 Good for DJ over Java Extending traversals for b..* –returning a single object instead of a collection (Find) –modifying the collection (Add, Delete)

3

4 UML Class Diagram Library Book 0..* books User users 0..* Copy copies 0..* book checkOutItems 0..* Boolean avail bN BookName UserId uId

5 UML Class Diagram Library Book 0..* books User users 0..* Copy copies 0..* book checkOutItems 0..* Boolean avail bN BookName UserId uId CheckOutItem copy

6 How can addition be expressed with ACs Required: participant graph Provided: modified participant graph: has all the paths in original but may have more

7 Interaction schema CheckOut { Library( Find-> Book Find(avail==true)-> c:Copy; Find-> u:User;) addCopy { u:User Add-> Copy; c:Copy Set(avail,false)-> Boolean } }//participants: Library, Book, Copy, User Checkout a book for a user

8 CheckOut (Library lib,BookName bN, UserId uId){ lib:Library( )-> Book Find(this.bN==bN)-> Book Find(avail==true)-> Find(avail==true)->c:Copy; Find(this.uId==uId)-> u:User;) addCopy { u:User Add(c)-> Copy; c:Copy Set(avail,false)-> Boolean } Compiler asks for information or determines it by rules

9 class Library { Copy CheckOut (Library lib,BookName bN, UserId uId){ Book b = lib.Find(“Book”,“bN”,bN); Copy c = b.Find (“Copy”,“avail”,true); Copy c = b.Find (“Copy”,“avail”,true); User u = lib.Find(“User”,“uId”,uId); User u = lib.Find(“User”,“uId”,uId); u.Add(“Copy”,c); c.Set(“avail”,false); return c; } Compiler asks for information or determines it by rules

10 class Library { Copy CheckOut (Library lib,BookName bN, UserId uId){ Book b = cg.Find(lib,“to Book”,“bN”,bN); Copy c = cg.Find (b,“to Copy”,“avail”,true); Copy c = cg.Find (b,“to Copy”,“avail”,true); User u = cg.Find(lib,“to User”,“uId”,uId); User u = cg.Find(lib,“to User”,“uId”,uId); cg.Add(u,“to Copy”,c); cg.Set(c,“to Boolean”,”avail”,false); return c; } For DJ

11 Book b = cg.Find(lib,“to Book”,“bN”,bN); Copy c = cg.Find (b,“to Copy”,“avail”,true); Copy c = cg.Find (b,“to Copy”,“avail”,true); User u = cg.Find(lib,“to User”,“uId”,uId); User u = cg.Find(lib,“to User”,“uId”,uId); cg.Add(u,“to Copy”,c); “avail”,true Copy cg.Delete(u,“to Copy”, “avail”,true); cg.Set(c,“to Boolean”,”avail”,false); Boolean cg.Get(c,“to Boolean”,”avail”); int cg.Traverse(company,”to Salary”,v); For DJ/paper

12 0..*, 1..*: Book b = cg.Find(lib,“to Book”,“bN”,bN); cg.Add(u,“to Copy”,c); “avail”,true cg.Delete(u,“to Copy”, “avail”,true); cg.Traverse(company,”to Salary”,v); cg.Gather(company,”to Salary”); 0..1, 1..1 cg.Set(c,“to Boolean”,”avail”,false); cg.Get(c,“to Boolean”,”avail”); For DJ/paper/constraints

13 0..*, 1..*: Book cg.Find(lib,“to Book”,“bN”,bN); Find in library lib a book with data member “bN” = bN. void cg.Add(u,“to Copy”,c); Add to user u a copy c “avail”,true Copy cg.Delete(u,“to Copy”, “avail”,true); Delete from user u a copy with avail == true For DJ/paper/constraints

14 0..*, 1..*: int cg.Traverse(company,”to Salary”,v); traverse from company to Salary and perform visiting actions of v. Vector cg.Gather(company,”to Salary”); collect all Salary-objects reachable from company 0..1, 1..1 Boolean cg.Set(c,“to Boolean”,”avail”,false); Boolean cg.Get(c,“to Boolean”,”avail”); For DJ/paper/constraints

15 CheckOut { )-> Book Find(this.bN==bN)-> Book Find(avail==true)-> Find(avail==true)->Copy; Find(this.uId==uId)-> User; addCopy { u:User Add(c)-> Copy; } Aspect Language: don’t use

16 CheckOut (lib,bN,uId){ lib:Library( )-> Book Find(this.bN==bN)-> Book Find(avail==true)-> Find(avail==true)-> c:Copy; Find(this.uId==uId)-> u:User;) addCopy { only one choice u:User Add(c)-> Copy; c:Copy Set(avail,false)-> Boolean } Compiler asks for information or determines it by rules Definition: an interaction schema is a sequence of navigation statements of the form o1:T1 -Action1-> o2:T2 -Action2-> o3:T3...

17 Advantages High-level description of behavior in terms of an ideal UML class diagram Behavior can be adapted to many concrete class diagrams –Some details of action parameters may be filled in under compiler control

18 Generalized Traversals Library Find-> Book Traversal from Library to Book must have upper cardinality > 1, e.g., 0..*, 1..*. Compiler will ask for properties to select a book. Rule: if an object of the class of a data member of Book is available, it will choose that one as default

19 Generalized traversals lib:Library Find-> b:Book DJ: Book b = cg.Find(lib, new Strategy(“from Library to Book”), “property bN”,bookName); Book b = cg.Find(lib, new Strategy(“from Library to Book”), “property isbn”,isbnNumber);

20 Connection actions/class graph lib:Library Find-> b:Book u:User Add(c)-> Copy lib:Library Delete-> b:Book 0..*, 1..*

21 Connection actions/class graph c:Copy Set(avail,false)-> Boolean c:Copy Get(avail)-> b:Boolean == c:Copy Fetch(avail)-> b:Boolean 1..1, 0..1 --- traverse a little different c:Company Traverse(v1)-> r:Result traverses to all classes mentioned in v1 and performs visiting action. There must be a path to each such class?

22 Generalized traversals lib:Library Find-> b:Book DJ: Book b = cg.Find(lib, new Strategy(“from Library to Book”), “property author”,authorName); Find is like a generalized fetch

23 Generalized traversals u:User Add(c)-> Copy; cg.Add(u,new Strategy (“from User to Copy”), c); Expects a unique path from User to Copy that is “insertable” and it adds c at end. Insertable means...

24 New Operations for DJ Find, Delete, Add Set, Get=Fetch Traverse, Gather c:Copy Set(avail,false)-> Boolean cg.Set(c, new Strategy( “from Copy through -> *,avail,* to Boolean”), false);


Download ppt "Good for DJ over Java Extending traversals for b..* –returning a single object instead of a collection (Find) –modifying the collection (Add, Delete)"

Similar presentations


Ads by Google