kate gregory week 8 midterm discussion interaction / sequence diagrams design patterns raii lab 4

25
Kate Gregory Week 8 • Midterm discussion • Interaction / Sequence Diagrams • Design Patterns • RAII • Lab 4

Upload: justin-blake

Post on 04-Jan-2016

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Week 8

• Midterm discussion

• Interaction / Sequence Diagrams

• Design Patterns

• RAII

• Lab 4

Page 2: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Date Week Topic Hand Out Due Back Test

6-Sep-13 1 Administrivia / Overview / Motivation, benefits of OO

13-Sep-13 2 Use Cases Lab 1: Use cases

20-Sep-13 3 CRC Cards, collab graphs Lab 2: CRC cards lab 1 5%

27-Sep-134 start class diag lab 2 5%

4-Oct-13 5 Finish class diag, Associations Lab 3: Class Diag

11-Oct-13 6 Inh & Polymorphism / midterm review lab 3 5%

18-Oct-13 7 midterm Midterm 25%

25-Oct-13 Reading Break

1-Nov-13 8 Interaction diag / Design Patterns Lab 4: Interaction Diag    

8-Nov-13 9 Good Design / Modules & Packages / Deployment and component diagrams /Metrics / SOLID

Lab 5: Critiques lab 4 5%

15-Nov-13 10 State diagrams / Activity diagrams / Summary and Conclusion / The Future

22-Nov-13 11 Critiques critique lab (before class) 15%

29-Nov-13 12 Critiques

TBD Final Exam Final 40%

Page 3: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Sequence Diagrams

• Also called interaction diagram and interaction sequence diagram

• Based on a use case instance

• Document the ways that objects co-operate

• Two dimensions:– down represents time passing– across represents different objects

Page 4: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Sample Sequence DiagramChecking AccountBank Client

ATMMachine

Account

Withdraw Checking Account

Withdraw Successful

Request Kind

Enter Kind

Request Amount

Enter Amount

Process Transaction

Transaction succeed

Dispense Cash

Request Take Cash

Take Cash

Request Continuation

Terminate

Print Receipt

Page 5: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Tips for Good Sequence Diagrams

• Give your objects good names– especially when two objects of the same class

are featured

• Record the parameters and return values being sent

• Refer to your use case often

Page 6: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Sequence Diagrams Clarify Responsibilities

• Invoice, Customer, and Line Item co-operate to print an invoice:

Page 7: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Return arrows clarify meaning

Page 8: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Show the flow of information

Page 9: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Lifetimes can vary

Page 10: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Design Patterns• Patterns provide

a mechanism for capturing and describing commonly recurring design ideas that solve a general design problem.

Page 11: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Singleton

• Classes (such as inventory or member list) must have one, and only one, object instance.

• Must be able to call a method and get either the new object, or if one already exists, a pointer to it.

Page 12: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Singleton

• Make the constructor of the class private – not accessible outside of the class structure– How do you create an object?

• Have a public class method like Instance( ) – checks an internal class variable, _instance, of

the class type. – if _instance is NULL, create new object and

return it, else return _instance.

Page 13: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Singleton – Code Example

class Singleton

{

public:

static Singleton* Instance();

private:

Singleton();

static Singleton* _instance;

};

Singleton* Singleton::_instance = 0;

Singleton* Singleton::Instance(){ if(_instance == 0) {

_instance = new Singleton(); } return _instance;}

Page 14: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Singleton-itis

• Singleton is good in certain situations– Application settings, pools (eg db connections),

inventory, etc

• Almost impossible to write a thread-safe version

• Can be overused – Unrecorded dependencies

Kate Gregory

Page 15: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Façade

“Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use.” - Design Patterns, Gamma et al.

Page 16: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Façade

• Hide the many interfaces of a detailed, complex subsystem by inserting a single interface (façade) between the high level classes and the subsystem.

• Insulate the consumers of your system from all your details

• Prevent other programmers from consuming your system “wrongly”

Page 17: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Façade example

Page 18: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Composite

• Perfect for unstructured hierarchies– Chains vary in length

• Employee reports to another Employee, who reports to another …

• A container holds items, some of which are actually containers, holding more items, which might be containers…

Kate Gregory

Page 19: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Composite Pattern

Page 20: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

RAII

• Resource Acquisition is Initialization– Terrible name

• C++ concept– Applicable in many other languages

• Key is known lifetime of objects– And automatic cleanup

Kate Gregory

Page 21: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

RAII Example

• Imagine a FILE resource you can get from your operating system– Open(string filename) returns handle– Read(handle h) returns some bytes– Write(handle h, byte[] b) writes data into it– Close(handle h) closes it

• You must remember to close the file

Kate Gregory

Page 22: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

FileWrapper class

• Constructor takes file name, calls Open• Keep handle in member variable• Read and Write are member functions

– No need to pass handle

• Destructor (in C++ - other names other languages) calls Close– Cannot be forgotten– Works even in the presence of exceptions

Kate Gregory

Page 23: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

RAII in General

• Constructor acquires a resource– Source of the name

• Destructor frees the resource

• Cannot forget

• Works with exceptions

• Incredibly powerful

Kate Gregory

Page 24: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Lab 4

• Draw a sequence diagram– One diagram– One path through one use case

• Read the hints!– They are based on troubles students had in the

past

• Don’t be surprised if you think a LOT for a single page you hand in

Page 25: Kate Gregory Week 8 Midterm discussion Interaction / Sequence Diagrams Design Patterns RAII Lab 4

Kate Gregory

Next Week

• Modules and Packages, Metrics

• Lab 4 due

• Lab 5 will be handed out