1 / 15

Good for DJ over Java

Good for DJ over Java. Extending traversals for collections (b..*) returning a single object instead of a collection (Find) modifying the collection (Add, Delete) implementations are different for different implementations of collections. Embedding versus path control.

moke
Download Presentation

Good for DJ over Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Good for DJ over Java • Extending traversals for collections (b..*) • returning a single object instead of a collection (Find) • modifying the collection (Add, Delete) • implementations are different for different implementations of collections

  2. Embedding versus path control • Embedding does mapping work once but requires mapping construct • Path control may repeat mapping work

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

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

  5. Checkout a book for a user 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

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

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

  8. For DJ 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); User u = cg.Find(lib,“to User”,“uId”,uId); cg.Add(u,“to Copy”,c); cg.Set(c,“to Boolean”,”avail”,false); return c; } }

  9. For DJ/paper Book b = cg.Find(lib,“to Book”,“bN”,bN); Copy c = cg.Find (b,“to Copy”,“avail”,true); User u = cg.Find(lib,“to User”,“uId”,uId); cg.Add(u,“to Copy”,c); 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);

  10. For DJ/paper/constraints 0..*, 1..*: Book b = cg.Find(lib,“to Book”,“bN”,bN); cg.Add(u,“to Copy”,c); 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”);

  11. For DJ/paper/constraints 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 Copy cg.Delete(u,“to Copy”, “avail”,true); Delete from user u a copy with avail == true

  12. For DJ/paper/constraints 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”);

  13. 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 ... CheckOut (lib,bN,uId){ lib:Library( Find(this.bN==bN)-> Book 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 } }

  14. 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

More Related