27
Object Collaboration

Object Collaboration. Sales ClerkSystem 1. Fill in retailer’s number2. Show retailer’s details. ** Set up a new order. 3. Inputs design number4. Retrieve

Embed Size (px)

Citation preview

Object Collaboration

Sales Clerk System

1. Fill in retailer’s number 2. Show retailer’s details. **Set up a new order.

3. Inputs design number 4. Retrieve and display garment price, size range and description

5. Input design no, quantity and size 6. Write order line with order no, design no, quantity and size. Write ‘quantity’ new instances of garment with status ‘not started’.Display accumulated price.Display new set of orderliness.

7. Indicate finished 8. Enable ‘confirm order’ button.

9. Order confirmed 10. Order saved.

Happy path

** New retailer is now an alternate path!

Elaborate Steps 1 & 2

1. Control class RegisterNewOrder displays OrderUI.

– Sales clerk responds• Uses OrderUI to enter the retailer’s number

2. System responds:– RecordOrder requests retailer info from Retailer.

– If successful, • requests constructor on order, giving retailer number and

waiting for order number in response.

3. Signals to OrderUI to display order number and value.4. Sales clerk responds

• Clicks AddLine on OrderUI

5. RecordOrder displays DesignUI6. Sales Clerk responds

– Enters Design number

• RecordOrder requests design info from Design.– If successful,

• Sends info to DesignUI• DesignUI

– displays info– Waits for size and quantity– enables buttons.– Awaits confirmation…

Continue building…

• Invent your classes as you go.

Messages…No Message From class To class

1 Enter CustomerId Sales clerk OrderUI

2 GetRetailer OrderUI RegisterNewOrder

3 Get Customer RegisterNewOrder Retailer

4 DisplayCustomer RegisterNewOrder OrderUI

5 AddOrder Retailer Retailer Order

6 AddGarment Sales Clerk OrderUI

7 Display OrderUI DesignUI

…Messages…No Message From class To class

8 Enter Design Sales Clerk DesignUI

9 PickDesign DesignUI RegisterNewOrder

10 Get Design RegisterNewOrder Design

11 Show Design RegisterNewOrder DesignUI

12 EnterSize and Quantity

Sales Clerk DesignUI

13 EnableOrder DesignUI DesignUI

14 ConfirmLine Sales Clerk DesignUI

…Messages

No Message From class To class

15 OrderDesignSize DesignUI RegisterNewOrder

16 AddaLine RegisterNewOrder RetailerOrderLine

17 DisplayLine+Totals RegisterNewOrder OrderUI

18 ConfirmOrder Sales Clerk OrderUI

19 ConfirmOrder OrderUI RegisterNewOrder

20 ConfirmOrder RegisterNewOrder Retailer Order

Collaboration Diagram

• Is another illustration of the interaction between objects during a Use Case.

• Classes are shown as icons on the diagram.• Classes that collaborate are linked.• The links are populated with messages, showing

the operation that the sender invokes on the recipient.

Making a Collaboration diagram

• Identify the objects involved– Sales Clerk, OrderUI, RegisterNewOrder, Retailer,

Retailer Order, Retailer Order Line, DesignUI, Design.

• Arrange them in layers.• Link all objects that communicate with each other.• Add the messages.

The objects added to the diagram

: Sales clerk

: OrderUI

: RegisterNewOrder

: Design

: DesignUI

: Retailer Order

: Retailer Order Line : Retailer

The objects as icons, in layers

: Sales clerk

: OrderUI

: RegisterNewOrder

: Design

: DesignUI

: Retailer Order

: Retailer

: Retailer Order Line

The objects communicating

: Sales clerk

: OrderUI

: RegisterNewOrder

: Design

: DesignUI

: Retailer Order

: Retailer

: Retailer Order Line

: Sales clerk : OrderUI : RegisterNewOrder

: Retailer

: Retailer Order Line

1. Enter CustomerId( )2. getRetailer( )

3. Get customer( )

4. DisplayCustomer( )6. AddGarment( )

: DesignUI

7. display( )8. enter design( )

: Design

9. PickDesign( )

11. show design( )

12. Enter size and quantity( )

: Retailer Order

5. add order( )

13. EnableOrder( )

14. ConfirmLine( )

15. OrderDesignSize( )

17. DisplayLine and totals( )18. ConfirmOrder( )

19. confirmOrder( )

10. get design( ) 16. addaline( )

20. confirm order( )

Collaboration Diagram

Adding the garment class

: Sales clerk : OrderUI : RegisterNewOrder

: Retailer

: Retailer Order Line

: DesignUI

: Design

: Retailer Order

13. EnableOrder( )

1. Enter CustomerId( )

6. AddGarment( )

18. ConfirmOrder( )

8. enter design( )

12. Enter size and quantity( )

14. ConfirmLine( )

2. getRetailer( )

4. DisplayCustomer( )

17. DisplayLine and totals( )

19. confirmOrder( )

7. display( )

10. get design( )

16. addaline( )

20. confirm order( )

3. Get customer( )

5. add order( )

9. PickDesign( )

11. show design( )

15. OrderDesignSize( )

: Garment

16.1. create garment( )

Messages…No Message From class To class

1 Enter CustomerId Sales clerk OrderUI

2 GetRetailer OrderUI RegisterNewOrder

3 Get Customer RegisterNewOrder Retailer

4 DisplayCustomer RegisterNewOrder OrderUI

5 AddOrder Retailer Retailer Order

6 AddGarment Sales Clerk OrderUI

7 Display OrderUI DesignUI

…Messages…No Message From class To class

8 Enter Design Sales Clerk DesignUI

9 PickDesign DesignUI RegisterNewOrder

10 Get Design RegisterNewOrder Design

11 Show Design RegisterNewOrder DesignUI

12 EnterSize and Quantity

Sales Clerk DesignUI

13 EnableOrder DesignUI DesignUI

14 ConfirmLine Sales Clerk DesignUI

…MessagesNo Message From class To class

15 OrderDesignSize DesignUI RegisterNewOrder

16 AddaLine* RegisterNewOrder RetailerOrderLine

17 DisplayLine+Totals RegisterNewOrder OrderUI

18 ConfirmOrder Sales Clerk OrderUI

19 ConfirmOrder OrderUI RegisterNewOrder

20 ConfirmOrder RegisterNewOrder Retailer Order

* This version omits the creation of garment instances – see later

…MessagesNo Message From class To class

15 OrderDesignSize DesignUI RegisterNewOrder

16 AddaLine* RegisterNewOrder RetailerOrderLine

16a AddAGarment RetailerOrderLine Garment

17 DisplayLine+Totals RegisterNewOrder OrderUI

18 ConfirmOrder Sales Clerk OrderUI

19 ConfirmOrder OrderUI RegisterNewOrder

20 ConfirmOrder RegisterNewOrder Retailer Order

Refining the OCD

• 2. Separate out reusable functionality into another control class.

• There are a group of messages that only use the DesignUI boundary class and the Design entity.– Introduce a new control class called OrderDesign.– The main control class invokes OrderDesign.– OrderDesign acts as ‘go-between’ between the DesignUI

and the Design entity.– When all functionality relating to picking a quantity of a

particular design has been completed, OrderDesign hands control back to RegisterNewOrder.

Contained functionality

Msge no

Message From class To class

11 Show Design OrderDesign DesignUI

12 EnterSize and Quantity

Sales Clerk DesignUI

13 EnableOrder DesignUI DesignUI

14 ConfirmLine Sales Clerk DesignUI

15 OrderDesignSize DesignUI OrderDesign

• Make all the messages in a happy path step be increments of the step.– To do this, you need to

• Check the model properties to ensure that hierarchical numbering is enabled on diagrams.

• Create the Sequence diagram from the OCD.

• Move the messages so that they originate in the lifeline that has been created by the previous message in the group.

Messages…No Message From class To class

1 Enter CustomerId Sales clerk OrderUI

1.1 GetRetailer OrderUI RegisterNewOrder

1.1.1 Get Customer RegisterNewOrder Retailer

1.1.2 DisplayCustomer RegisterNewOrder OrderUI

1.1.1.1 AddOrder Retailer Retailer Order

2 AddGarment Sales Clerk OrderUI

2.1 PickDesign OrderUI RegisterNewOrder

2.1.1 AddOrderLine RegisterNewOrder OrderDesign

2.1.1.1 Display OrderDesign DesignUI

…Messages…No Message From class To class

3 Enter Design Sales Clerk DesignUI

3.1 GetDesign DesignUI OrderDesign

3.1.1 Get Design OrderDesign Design

3.1.2 Display OrderDesign DesignUI

4. EnterSize and Quantity

Sales Clerk DesignUI

4.1 EnableOrder DesignUI DesignUI

4.2 Showsubtotal DesignUI DesignUI

…MessagesNo Message From class To class

5. ConfirmLine Sales Clerk DesignUI

5.1 AddOrderLine DesignUI OrderDesign

5.1.1 OrderDesignSize OrderDesignSize RegisterNewOrder

5.1.1.1 AddALine RegisterNewOrder RetailerOrderLine

5.1.1.1.1 AmendOrder RetailerOrderLine RetailerOrder

* This version omits the creation of garment instances – see later

…Messages…No Message From class To class

5.1.1.1.2

Create garment RetailerOrderLine Garment

5.1.1.2

DisplayLine and total

RegisterNewOrder OrderUI

6. ConfirmOrder Sales Clerk OrderUI

6.1 ConfirmOrder OrderUI RegisterNewOrder

6.1.1 ConfirmOrder RegisterNewOrder Retailer Order

: Sales clerk

: OrderUI

: RegisterNewOrder

: Retailer

: Retailer Order Line

: DesignUI

: Design

: Retailer Order

: OrderDesigns

3.2. EnableOrder( )4.1. ShowSubTotal( )

: Garment

1. Enter CustomerId( )2. AddGarment( )6. ConfirmOrder( )

3. enter design( )4. Enter size and quantity( )

5. ConfirmLine( )

1.1.2. DisplayCustomer( )5.1.1.2. DisplayLine and totals( )

1.1. getRetailer( )2.1. PickDesign( )

6.1. confirmOrder( )

1.1.1. Get customer( )

1.1.1.1. add order( )

5.1.1.1.2. create garment( )

5.1.1.1.1. amend order( )

2.1.1.1. display ( )2.1.1.3. show design( )

3.1. get design( )5.1. AddOrderLine( )

2.1.1.2. get design( )

5.1.1.1. addaline( )

6.1.1. confirm order( )

2.1.1. AddOrderLine( )

5.1.1. OrderDesignSize( )