1 / 43

Object Oriented Software Development

Object Oriented Software Development. 7. Implementing a model. UML models. UML may be used to visualise, specify, construct and document the artefacts of a software system Part of a software development method

ehoward
Download Presentation

Object Oriented Software Development

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. Object Oriented Software Development 7. Implementing a model

  2. UML models • UML may be used to visualise, specify, construct and document the artefacts of a software system • Part of a software development method • To produce a working application the artefacts in the model must be implemented using development tools, languages and frameworks Object Oriented Software Development 7. Implementing a model 2

  3. Implementing a model • We will use Visual Studio, C# and the .NET framework to begin the implementation of a UML model • Based on examples from Software Modelling Analysis and Design 1 • That module and this one represent two closely related aspects of the same process Object Oriented Software Development 7. Implementing a model 3

  4. UML diagrams and C# code • Class Diagram – a C# application is constructed as classes, which generally correspond to classes in the class diagram • Sequence/Collaboration Diagrams – these describe the messages which pass between objects, and relate to method calls in C# code • Object Diagram – represents the objects which exist as the program runs • Use Case Flow of Events/Activity Diagrams – describe sequences of events and workflows which must be implemented in C# code Object Oriented Software Development 7. Implementing a model 4

  5. Example – order system • In the system, an order consists of a number of order lines • An order line specifies a single product and the quantity of that product ordered • Each order is associated with a customer, who has a discount level which is applied to all his or her orders • Sample code in OrderSystem project Object Oriented Software Development 7. Implementing a model 5

  6. Use case – calculate order price • We will look at the use case, the classes involved in it and the sequence diagram for it • Use Case Description • Calculates the total price of a single order including the customer’s discount • Use Case Flow of events • Calculate the price of each order line as (product price) x (quantity) and add to total • Apply the customer’s discount to the total and calculate the final price Object Oriented Software Development 7. Implementing a model 6

  7. Class diagram customer can be associated with many orders orderline only exists as part of an order - composition order line contains one product only Object Oriented Software Development 7. Implementing a model 7

  8. Sequence diagram collaborates with other objects to do so responsibility for calculating its price belongs to order Object Oriented Software Development 7. Implementing a model 8

  9. Create classes using class diagram • Create a new C# class for each class in the diagram • Declare instance variables based on the attributes in the diagram • Define (empty) methods based on the operations in the diagram • Methods which simply access instance variables (e.g. GetDiscount) can be implemented in C# as properties Object Oriented Software Development 7. Implementing a model 9

  10. Create classes using class diagram • Consider whether properties should be read-write or read-only • Define constructor to set values of instance variables Object Oriented Software Development 7. Implementing a model 10

  11. Implement relationships • Add code to implement relationships between classes shown in the diagram • May need to refine model to clarify the meaning of the relationship in some cases • Purpose of relationship is to allow objects to collaborate, so sequence diagram may help clarification by showing what collaborations are needed Object Oriented Software Development 7. Implementing a model 11

  12. OrderLine – Product association • OrderLine is associated with a single product • OrderLine sends a message to Product • Product does not need to send message to OrderLine, so doesn’t need an OrderLine reference • Association is navigable in one direction only, OrderLine to Product Object Oriented Software Development 7. Implementing a model 12

  13. OrderLine-Product implementation • Implement this with an instance variable in OrderLine of type Product • Product has no reference to OrderLine • C# implementation option – create LinePrice property instead of a GetLinePrice method • Cleaner syntax but no difference conceptually – accessing a property is a message, just like a method call Object Oriented Software Development 7. Implementing a model 13

  14. OrderLine-Product Note – when constructor would only set properties, can omit it and create objects with object initialiser syntax in C# sends message to product object to ask for its price Object Oriented Software Development 7. Implementing a model 14

  15. Coding patterns • This is an example of a one-to-one “has-a” association • OrderLine has-a Product • Common type of association, usually implemented using the same coding pattern • One class has an instance variable whose type is the name of the other class • Can also provide a property or accessor method for this instance variable if required Object Oriented Software Development 7. Implementing a model 15

  16. Coding patterns • A pattern is a general reusable solution to a common problem • Patterns can be applied to many aspects of software design and programming, from loops to complex groups of collaborating classes • Here we are using patterns for relationships between two classes (binary relationship coding patterns) Object Oriented Software Development 7. Implementing a model 16

  17. Coding patterns • The coding pattern for a relationship includes: • Implementation • The code artefact without which the relationship does not exist • Helpers • Properties and methods which may be required to make use of the relationship in particular situations Object Oriented Software Development 7. Implementing a model 17

  18. Coding pattern: one-to-one “has-a” association • Implementation • Instance variable in one class whose type is the name of the other class • Helpers • Property in the first class which can be used to get or set the associated object Object Oriented Software Development 7. Implementing a model 18

  19. Order – OrderLine association • Order is associated with many OrderLines • Order “has-a” set of OrderLines • OrderLine only exists as part of an order – composition • This is a whole-part relationship • Order sends a message to OrderLine (GetLinePrice) • Association is navigable in one direction only, Order to OrderLine Object Oriented Software Development 7. Implementing a model 19

  20. Order – OrderLine implementation • Implement this with an instance variable in Order which is a collection of type OrderLine • OrderLine has no reference to Order • Order will call GetLinePrice method of each of its OrderLines • C# implementation option – what kind of collection should we use? • No need to search, will only add to end of collection, best option is List<OrderLine> Object Oriented Software Development 7. Implementing a model 20

  21. Order - OrderLine sends message to OrderLine object to get its line price Object Oriented Software Development 7. Implementing a model 21

  22. Order – OrderLine helper method • Need a method which can add a new OrderLine to an Order • Composition – the new OrderLine object is created within this method • OrderLine is added to List using its Add method Object Oriented Software Development 7. Implementing a model 22

  23. Coding pattern: one-to-many “has-a” association • Implementation • Instance variable in one class whose type is a collection which holds instances of the other class • Helpers • Method to add objects to the collection (will create objects if the association is composition) • Method to remove an object • Method to return a specific object • Method to return the whole collection • Only need to implement helper(s) as needed Object Oriented Software Development 7. Implementing a model 23

  24. Coding pattern example code • CodingPatterns solution • OneToManyCompositionPattern project • Demonstrates pattern with a full set of helpers Object Oriented Software Development 7. Implementing a model 24

  25. Order-Customer association • Customer can have many Orders • Customer “has-a” set of Orders • But Order is not part of a Customer • Customer does not create Order • Association or aggregation, not composition • Order is associated with one Customer • Order “has-a” Customer Object Oriented Software Development 7. Implementing a model 25

  26. Order-Customer association • In this use case, Order needs to send message to Customer • Order class needs reference to Customer object • Order is associated with one Customer • Order “has-a” Customer • Association or aggregation • So the relationship between Order and Customer is navigable in both directions Object Oriented Software Development 7. Implementing a model 26

  27. Order-Customer association • Actually, this use case does not require any messages from Customer to Order • Don’t strictly need to implement association in that direction • Implementing it here because it is likely that other use cases will require it • e.g. Show orders for a customer Object Oriented Software Development 7. Implementing a model 27

  28. Aggregation and association • Aggregation • Implies ownership • Whole-part, or “has-a” relationship • Part may be shared with other Wholes, unlike composition • Association • No implication of ownership • “uses-a” relationship • Difference in meaning - makes little difference to code Object Oriented Software Development 7. Implementing a model 28

  29. Aggregation and association • “Few things in the UML cause more consternation than aggregation and composition, in particular how they vary from regular association...” • Martin Fowler, 2003 • See link below for full quote: http://www.martinfowler.com/bliki/AggregationAndComposition.html Object Oriented Software Development 7. Implementing a model 29

  30. Class diagram with navigabilities Object Oriented Software Development 7. Implementing a model 30

  31. Order-Customer implementation • Need an instance variable in Customer which is a collection of type Order • Need an instance variable in Order which is a reference to a Customer • Order will call GetDiscount method of its Customer • Need some code to make relationship consistent • Order object should be part of the orders collection belonging to its associated Customer Object Oriented Software Development 7. Implementing a model 31

  32. Order-Customer implementation implemented as a Dictionary for fast searching Object Oriented Software Development 7. Implementing a model 32

  33. Order-Customer consistency constructor of Order when you create an order, you specify the customer it’s for, and add it to that customer’s orders method in Customer Object Oriented Software Development 7. Implementing a model 33

  34. Creating objects create Customer object create Order object Object Oriented Software Development 7. Implementing a model 34

  35. Coding pattern: one-to-many bidirectional association • Implementation • Implement as a one-to-many and a one-to-one in opposite directions • Code in constructor of one class ensures consistency • Helpers • Same as one-to-many • Remove method may need additional code to deal with consistency Object Oriented Software Development 7. Implementing a model 35

  36. Coding pattern example code • OneToManyAssociationPattern project • OneToManyBidirectionalPattern project • Demonstrate patterns with a full set of helpers Object Oriented Software Development 7. Implementing a model 36

  37. Order – Product association • We didn’t show an association on the class diagram between Order and Product • No message passed between Order and Product in sequence diagram • But there is a relationship • Order “uses-a” Product to create an OrderLine • Simple association • Sometimes modelled as a dependency Object Oriented Software Development 7. Implementing a model 37

  38. Order – Product association • AddOrderLine method in order has a parameter of type Product • Temporary association – only exists while this method runs • Sets up permanent association between Product and OrderLine Object Oriented Software Development 7. Implementing a model 38

  39. Class diagram with Order-Product Object Oriented Software Development 7. Implementing a model 39

  40. Coding pattern: simple association • Implementation • One class has a reference to instance(s) of the other in one of the following places: • Method parameter • Method return value • Local variable Object Oriented Software Development 7. Implementing a model 40

  41. Coding pattern example code • SimpleAssociationPattern project Object Oriented Software Development 7. Implementing a model 41

  42. Other relationship examples • These examples and patterns don’t capture all possible types of relationship • Provide examples on which to base solutions to real problems • Object oriented systems model the real world, and reality can be complicated! Object Oriented Software Development 7. Implementing a model 42

  43. What’s next? • We will go on to look at some practical issues which are important in developing robust programs, including handling error situations with exceptions, debugging and testing Object Oriented Software Development 7. Implementing a model 43

More Related