1 / 41

And so to Code

And so to Code. Forward , Reverse, and Round-Trip Engineering. Forward Engineering Reverse Engineering Round-Trip Engineering. Generate. Forward Engineering. Forward engineering means the generation of code from UML diagrams Many of the tools can only do the static models:

hagen
Download Presentation

And so to Code

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. And so to Code

  2. Forward, Reverse, and Round-Trip Engineering • Forward Engineering • Reverse Engineering • Round-Trip Engineering

  3. Generate Forward Engineering • Forward engineering means the generation of code from UML diagrams • Many of the tools can only do the static models: • They can generate class diagrams from code, but can't generate interaction diagrams. • For forward engineering, they can generate the basic (e.g., Java) class definition from a class diagram, but not the method bodies from interaction diagrams. • Demo

  4. Re-Engineer Reverse Engineering • Reverse engineering means generation of UML diagrams from code • Demo

  5. Round-Trip Engineering • Round-trip engineering closes the loop • the tool supports generation in either direction and can synchronize between UML diagrams and code, ideally automatically and immediately as either is changed. • Demo

  6. Mapping Designs to Code • Creating Class Definitions from Class Diagram • Creating Methods from Interaction Diagrams • Using Collection Classes to implement relationships Code

  7. Creating Class Definitions from Class Diagram

  8. Creating Methods from Interaction Diagrams

  9. Collection Classes in Code

  10. .NET Sequence & Object Diagrams Exercises

  11. 1. Draw a sequence diagram to model the following code public class Cat { private Person owner; public void Kick() { Meow(); owner.Bite(); } public void Meow() { } } public class Person { private Cat cat; public void KickCat() { // start here cat.Kick(); } public void Bite() { } }

  12. Solution public class Cat { private Person owner; public void Kick() { Meow(); owner.Bite(); } public void Meow() { } } public class Person { private Cat cat; public void KickCat() { // start here cat.Kick(); } public void Bite() { } } /owner : Person cat : Cat Kick() Meow() Bite()

  13. 2. Draw a sequence diagram to model the following code public class Cat { private Person owner; public void Kick() { Meow(); if(owner != null) { owner.Bite(); } } public void Meow() { } } public class Person { private IList cats; public void KickCat() { // start here foreach(Cat cat in cats) { cat.Kick(); } } public void Bite() { } } /owner : Person cat : Cat Kick() Meow() [owner != null] Bite() [for each cat in cats]

  14. Solution public class Cat { private Person owner; public void Kick() { Meow(); if(owner != null) { owner.Bite(); } } public void Meow() { } } public class Person { private IList cats; public void KickCat() { // start here foreach(Cat cat in cats) { cat.Kick(); } } public void Bite() { } }

  15. UML Exercises : Class Diagrams for .NET Developers

  16. Draw a class diagram based on the following code <<interface>> Foxtrot public class Whiskey { private IList tangos; public Whiskey() { tangos = new ArrayList(); } public void AddTango(Tango tango) { tangos.Add(tango); } } public class Tango : Foxtrot { public void Lima() { } } public interface Foxtrot { void Lima(); } Lima() tangos Whiskey Tango * Whiskey() AddTango(tango : Tango) Lima() Multiplicity at this end is ambiguous

  17. Solution public class Whiskey { private IList tangos; public Whiskey() { tangos = new ArrayList(); } public void AddTango(Tango tango) { tangos.Add(tango); } } public class Tango : Foxtrot { public void Lima() { } } public interface Foxtrot { void Lima(); }

  18. 4. Draw a class diagram based on the following code Party # id : int FullName() : string Person • firstName : string • lastName : string FirstName() : string FirstName(value : string) LastName() : string LastName(value : string) FullName() : string = firstName + “ “ + lastName

  19. Solution public abstract class Party { protected int id; public abstract string FullName { get; } } public class Person : Party { private string firstName; private string lastName; public string FirstName { get { return firstName; } set { firstName = value; } } public string LastName { get { return lastName; } set {lastName = value; } } public override string FullName { get { return firstName + " " + lastName; } } }

  20. Three Very Simple Use Cases Create New Supplier Update Supplier Details Delete Supplier Let’s consider some coding issues!

  21. One “Entity” Class

  22. Three Control Classes Update Supplier Details Create New Supplier Delete Supplier

  23. One Boundary Class for all Three Use Cases

  24. One Boundary Class

  25. One Class to Talk to the Database

  26. Create New Supplier Sequence Diagram for DB Connection DBSupplier Control Class “Create Supplier” Entity Class “Supplier” Supplier Form

  27. Overview of the System Architecture

  28. Project Window for the entire application

  29. More Sophisticated Use Cases Perhaps we could ask the Customer object to: • Project future sales to this customer. This would involve analysing past sales to identify trends. Implies the need for a “Customer Sales History” class not currently included in the model. • Collect overdue payments. This would involve generating standard letters to be sent to the customer. Implies collaboration with a “Payment” class (associated with Order or Invoice?) not currently included in the model.

  30. Another Case Study

  31. A Domain Model

  32. A Class Diagram

  33. Background to Naked Objects

  34. ‘Best practice’ in contemporary business systems design splits an application into four principal layers Presentation Application, Process, Task or Controller Domain object model Persistence

  35. But “The Naked Objects Pattern” eliminates the controller layer by encapsulating all business functionality on the entity objects Presentation Application, Process or Use-case controller Domain object model Persistence

  36. And has a generic presentation layer that automatically reflects the domain object model as an object-oriented user interface Presentation Application, Process or Use-case controller Domain object model Persistence

  37. CarServ: A tale of two business applications

  38. Good Idea? • One of the research topics for the coursework element of this module • Final project???

More Related