Software Development CSE3311

Slides:



Advertisements
Similar presentations
Modeling Main issues: What do we want to build How do we write this down ©2008 John Wiley & Sons Ltd. vliet.
Advertisements

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. The Composite Design Pattern (1) –A structural design pattern.
March Ron McFadyen1 Composite Used to compose objects into tree structures to represent part-whole hierarchies Composite lets clients treat.
Fall 2009ACS-3913 Ron McFadyen Composite Pattern Problem: How do we treat a composition structure of objects the same way as a non-composite object? Arises.
The Composite Pattern. Owners (No Twins, Expos) Managers (No Twins, Expos) Congress (No Twins, Expos) Media (No Twins, Expos) Radio (No Twins, Expos)
7M701 1 Class Diagram advanced concepts. 7M701 2 Characteristics of Object Oriented Design (OOD) objectData and operations (functions) are combined 
Requirements Analysis 2 What objects collaborate to achieve the goal of a use case?
Software Design and Documentation Individual Presentation: Composite Pattern 9/11/03.
The Composite Pattern.. Composite Pattern Intent –Compose objects into tree structures to represent part-whole hierarchies. –Composite lets clients treat.
SE-565 Software System Requirements More UML Diagrams.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns VI Composite, Iterator, and Visitor Patterns.
Object-Oriented Analysis and Design
1 Dept. of Computer Science & Engineering, York University, Toronto Software Development CSE3311 Composite Pattern.
Composite Design Pattern. Motivation – Dynamic Structure.
Linzhang Wang Dept. of Computer Sci&Tech, Nanjing University The Composit Pattern.
SE2811 Week 7, Class 1 Composite Pattern Applications Conceptual form Class structure Coding Example Lab Thursday: Quiz SE-2811 Slide design: Dr. Mark.
Topic 14 The BinaryTree ADT Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms.
UML diagrams What is UML UML diagrams –Static modeoing –Dynamic modeling 1.
© 2005 Prentice Hall9-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
The Static Analysis Model Class Diagrams Prof. Hany H. Ammar, CSEE, WVU, and Dept. of Computer Science, Faculty of Computers and Information, Cairo University.
Discovering object interaction. Use case realisation The USE CASE diagram presents an outside view of the system. The functionality of the use case is.
Design Model Lecture p6 T120B pavasario sem.
Lecture 9-1 : Intro. to UML (Unified Modeling Language)
The Visitor Pattern (Behavioral) ©SoftMoore ConsultingSlide 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Modelling with Classes.
COMPOSITE PATTERN NOTES. The Composite pattern l Intent Compose objects into tree structures to represent whole-part hierarchies. Composite lets clients.
Composite Pattern Himanshu Gupta Shashank Hegde CSE776 – Design Patterns Fall 2011 Good composition is like a suspension bridge - each line adds strength.
Microsoft Foundation Classes MFC
OOP - Object Oriented Programming
Topic 2: binary Trees COMP2003J: Data Structures and Algorithms 2
The Tree ADT.
UML Diagrams: Class Diagrams The Static Analysis Model
Object-oriented and Structured System Models
UML Diagrams By Daniel Damaris Novarianto S..
Slide design: Dr. Mark L. Hornick
Main issues: • What do we want to build • How do we write this down
Chapter 5: Structural Modeling
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Object-Oriented Analysis and Design
Chapter 16 UML Class Diagrams.
Architecture Concept Documents
Linzhang Wang Dept. of Computer Sci&Tech, Nanjing University
The Object-Oriented Thought Process Chapter 1
Behavioral Design Patterns
The Object-Oriented Thought Process Chapter 09
Collaborations and Hierarchies
Composite Design Pattern
UML Diagrams Jung Woo.
Abstract descriptions of systems whose requirements are being analysed
Composite Pattern SE2811 Software Component Design
Iterator and Composite Design Patterns
UML dynamic Modeling (Behavior Diagram)
More Design Patterns 1.
Design Patterns - A few examples
More Design Patterns 1.
Object Oriented Analysis and Design
Design Patterns A Case Study: Designing a Document Editor
Jim Fawcett CSE776 – Design Patterns Summer 2003
Systems Analysis and Design With UML 2
Chapter 20 Object-Oriented Analysis and Design
CIS 375 Bruce R. Maxim UM-Dearborn
Analysis models and design models
Copyright 2007 Oxford Consulting, Ltd
13. Composite Pattern SE2811 Software Component Design
Software Design Lecture : 35.
13. Composite Pattern SE2811 Software Component Design
CIS 375 Bruce R. Maxim UM-Dearborn
Composite Design Pattern By Aravind Reddy Patlola.
Software Design Lecture : 36.
Visitor Pattern Intent
Presentation transcript:

Software Development CSE3311 Composite Pattern some more UML

Tree structures with part-whole hierarchies CABINET CHASSIS POWER_SUPPLY DVD-CDROM HARD_DRIVE CARD

price power_consumption

Problem Many manufactured systems, such as computer systems or stereo systems, are composed of individual components and sub-systems that contain components. For example, a computer system can have cabinets that contain various types of chassis that (in turn) contain components (hard-drive chassis, power-supply chassis) and busses that contain cards. The entire system is composed of individual pieces of equipment (hard drives, cd-rom drives), as well as composites such as cabinets, busses and a chassis. Each piece of equipment has properties such as power-consumption and cost. Design a system that will allow us to easily build systems and calculate their total cost and power consumption.

Composite Pattern Compose objects into tree structures that represent whole-part hierarchies. Composites let clients treat individual objects (leafs) and compositions (nodes) of objects uniformly. We can then apply the same operation (e.g. calculate price or power consumption) over both composites and individual objects (i.e. we can ignore the difference between leafs and nodes).

May implement default behavior for add(child) etc. The client uses abstract class EQUIPMENT to manipulate objects in the composition. Class EQUIPMENT defines an interface for all objects in the composition: both the composite and leaf nodes. May implement default behavior for add(child) etc. price: VALUE add(child: EQUIPMENT) children: LIST[EQUIPMENT] Class COMPOSITE ‘s role is (a) implement leaf related ops such as price and (b) to define component behaviour such as storing a child. In this solution, both leafs and nodes are coerced to have (a) leaf related ops and (b) tree related ops. This is good because it means that a leaf can always be later expanded to be a node (e.g. a DISK_DRIVE may itself later have components). It is bad if a leaf will always remain a leaf because then we have unnecessary tree ops. In such a case a multiple inheritance solution as in the next slide is better. A leaf has no children. Note that the leaf also inherits features like children and add that don’t necessarily make all that sense for a leaf node.

Cleaner solution – Multiple Inheritance Put the tree behavior such as adding a child and list of children here where it is needed Put the price & power consumption behavior here

class COMPOSITE [T] feature children : LIST [T] add (new_child: T) require new_child /= Void do children.extend(new_child) ensure has (new_child) remove (child: T) require child /= Void ensure not has (child) has (child: T): BOOLEAN -- does 'child' belong to the composite? invariant children_not_void: children /= Void end

deferred class EQUIPMENT feature make (its_name: STRING) discount_price: REAL name: STRING net_price, discount_price: REAL power: REAL invariant name_not_void: name /= Void positive_power: power >= 0.0 positive_price: discount_price >= 0.0 real_discount: net_price >= discount_price end

class COMPOSITE_EQUIPMENT inherit COMPOSITE [EQUIPMENT] EQUIPMENT feature net_price : REAL -- Sum the net prices of the subequipments local i : INTEGER do from i := 1 until i > children.count loop Result := Result + children[i].net_price i := i + 1 end -- loop end … end

Cabinet Chassis BUS DISK CARD class MAIN create make feature e : EQUIPMENT local cabinet : CABINET -- Will hold a CHASSIS chassis : CHASSIS -- Will contain a BUS and a DISK_DRIVE bus : BUS -- Will hold a CARD do create cabinet.make("PC Cabinet"); create chassis.make("PC Chassis") cabinet.add(chassis) create bus.make("MCA Bus"); create {CARD}e.make("16Mbs Token Ring"); bus.add(e); chassis.add(bus) create{DISK_DRIVE}e.make("500 GB harddrive"); chassis.add(e) print("The net price is ") print(cabinet.net_price); io.put_new_line end -- make end -- MAIN Cabinet Chassis BUS DISK CARD

Contracts MSL_NUMERIC_SEQ[G -> {COMPARABLE, NUMERIC}] How would you write the contracts? price: power_consumption sum_all e in composite e.price

Non-software analogy Arithmetic expressions are composites Each arithmetic expression has An operand An operator such as + - * / Another operand Each operand may be another arithmetic expression Valid arithmetic expressions 2 + 3 (2 + 3) + (4 * 6)

Composite Pattern Intent Compose objects into tree structures representing part-whole hierarchies Clients deal uniformly with individual objects and hierarchies of objects

Composite – Motivation Applications that have recursive groupings of primitives and groups Drawing programs Lines, text, figures and groups Directory structure Folders and files Operations on groups are different than primitives but clients treat them in the same way

Whole-Part Hierarchy Example DIAGRAM TEXT LINE DIAGRAM OVAL TEXT

Composite – Example Architecture GRAPHIC * draw * CLIENT DIAGRAM + LINE + TEXT + OVAL + draw + add remove draw + draw + draw +

Composite – Alternative Architecture GRAPHIC * draw * T COMPOSITE[T] * CLIENT add * remove * DIAGRAM + LINE + TEXT + OVAL + draw + add + remove + draw + draw + draw +

Composite – Abstract Architecture COMPONENT * op_1 * op_2 * T COMPOSITE[T] * CLIENT add * remove * LEAF + COMPOSITE_COMPONENT + op_1 + op_2 + op_1 + op_2 + add + remove +

Composite – Applicability Represent part-whole hierarchies of objects Clients can ignore difference between individual objects and compositions Clients deal with all objects in a composition in the same way

Composite – Participants Component Defines properties of an entity Leaf Component Defines properties of a primitive entity Composite Declares properties of a collection of entities Composite Component Combines properties of a collection of entities and properties of a primitive entity Client Uses components (leaf or composite)

Composite – Consequences Whenever client expects a primitive it can accept a composite Client is simplified by removing tag-case statements to identify parts of the composition Easy to add new components by subclassing, client does not change If compositions are to have restricted sets of components, have to rely on run-time checking

Composite real-world examples java.awt.Component is a class representing objects that have a graphical representation that can be displayed on the screen and that can interact with the user [COMPONENT] java.awt.Container represents components that can contain other components [COMPOSITE] Contains methods add(Component) and remove(Component) Example subclasses: Panel, Window java.awt.Button is a component that does not contain other components [LEAF]

UML class diagram

UML aggregations/compositions Generalization (an abstraction hierarchy) Aggregation (a partitioning hierarchy) :patient :patient Name Date of Birth physician history Name Date of Birth physician history Shows how UML class diagrams contain some of these modeling principles (e.g. abstraction, partitioning), but perhaps not others (e.g. no projection mechanisms built into any UML notations). The multiplicities on the organs are correct for some interpretation of the problem domain (e.g. a heart can belong to either zero or one patient, depending on whether it’s sitting in a box waiting to be transplanted). Note that the decision for whether to cover such weird cases is a modeling choice - this is where the model may include or exclude phenomena that can really happen, depending on whether those phenomena are important enough to be worth describing. (If time: challenge audience to think of more cases that break this model. E.g. siamese twins sharing a heart, etc). 0..1 0..1 0..1 1 1..2 0..2 :out-patient :in-patient :heart :kidney :eyes Last visit next visit prescriptions Room Bed Treatments food prefs Natural/artif. Orig/implant normal bpm Natural/artif. Orig/implant number Natural/artif. Vision colour

BON Diagram

UML modelling Dependency Association Class diagrams show the static structure of classes, interfaces and the relationships between them Aggregation Composition Inherits/implements <multiplicity> <role> <name>

Sequence diagrams To emphasise time-ordering of method calls, object lifelines are used A lifeline is a dashed vertical line and represents the duration of an object’s existence. Message1 is sent before message2. TIME

UML Diagrams A model is a complete description of a system and may comprise many views. A view is represented using a particular type of diagram. UML Diagrams State Diagrams Class Use Case Diagrams Sequence Scenario Diagrams Collaboration State Diagrams Component Model Component Diagrams Deployment Behavioural view State Diagrams Object Structural view

Questions Write out complete code for the equipment example How would you contract it.