1. Trang chủ
  2. » Công Nghệ Thông Tin

Software design: Lecture 36 - Sheraz Pervaiz

27 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 477,87 KB

Nội dung

Software design - Lecture 36. The main topics covered in this chapter include: composite design pattern; motivation for composite design pattern; intend of composite design pattern; discussion on whole-part relation; tree structure revisited; composite pattern defined;...

1 Software Design Lecture : 36 Composite  Design Pattern Motivation for Composite Design Pattern Every component or object can be classified into one  of the two categories — i Individual Components ii.Composite Components — which are composed of                 individual  components  or  other  composite            components Intend of Composite Design Pattern   To  have  a  common  interface  for  both  individual  and  composite  components  so  that  client  programs  can  view  both  the  individual  components  and  groups  of  components uniformly  Usually  a  Tree  structure  having  nodes  and  leave  nodes  represents  composite  and  individual  components  respectively.  Discussion on Whole­Part  relation Aggregation or “ has –a “ relationship  Specialized form of association i­e Weak Association  Assembling a class from other classes  Aggregation is a special type of relationship used      to model a "whole to its parts" relationship  Part class is independent from the whole class's  lifecycle Aggregation In  an  aggregation  relationship,  the  child  class  instance can outlive its parent class Child class can be a part of multiple parent classes To represent an aggregation relationship, you draw a  solid line from the parent class to the part class, and  draw an unfilled diamond shape on the parent class's  association end Example Aggregation Example 10 Tree Structure Revisited  13 Class Diagram of Composite Design  Pattern 14 15 Example of Composite Pattern  Let  us  create  an  application  to  simulate  the  Windows/UNIX  file  system.  The  file  system  consists  mainly  of  two  types  of  components  —  directories  and  files.  Directories  can  be  made  up  of  other  directories  or  files,  whereas  files  cannot  contain  any  other  file  system  component. In this aspect, directories act as nonterminal       nodes  and  files  act  as  terminal  nodes  or  leaf  node  of  a  tree structure 16 Design Approach  Let us define a common interface for both directories and  files  in  the  form  FileSystemComponent  of    The  a  Java  interface    FileSystemComponent  interface declares methods that are common for both file  components  and  directory  components.  Let  us  further  define two classes — FileComponent and DirComponent  —  as  implementers  of  the  common  FileSystemComponent interface as shown in next slide 17 Class Diagram of Proposed Approach 18 Description of Classes FileComponent         The  FileComponent  class  represents  a  file  in  the  file  system  and  offers  implementation  for  the  following  methods getComponentSize() • This  method  returns  the  size  (in  kilobytes)  of  the  file  represented by the File­ Component object 19 Class Descriptions DirComponent     This class represents a directory in the file system. Since  directories  are  composite  entities,  the  DirComponent  provides methods to deal with the components it     contains. These methods are in addition to the common  getComponentSize  method  FileSystemComponent interface declared  in  the  20 Class Description addComponent(FileSystemComponent) This method is used by client applications to add different  DirComponent  and  FileComponent  objects  to  a  DirComponent object  getComponent(int) The  DirComponent  stores  the  other  FileSystemComponent  objects  inside  a  vector.  This  method  is  used  to  retrieve  one such object stored at the specified location 21 Class Description getComponentSize() This  method  returns  the  size  (in  kilobytes)  of  the  directory  represented  by  the  DirComponent  object.  As  part  of  the  implementation,  the  DirComponent  object iterates  over the collection  of FileSystemComponent objects it contains, in a recursive  manner,  and  sums  up  the  sizes  of  all  individual  FileComponents.  The  final  sum  is  returned as the size of the directory it represents 22 Processing of Class Diagram A  typical  client  would  first  create  a  set  of  FileSystemComponent  objects  (both  DirComponent  and  FileComponent instances). It can use the addComponent method  of  the  DirComponent  to  add  different  FileSystemComponents  to  a  DirComponent,  creating  a  hierarchy of file system (FileSystemComponent) objects 23 Calculating the Size of Object When the client wants to query any of these objects for its size, it  can  simply  invoke  the  getComponentSize  method.  The  client  does not have to be aware of the calculations involved or the  manner  in  which  the  calculations  are  carried  out  in  determining  the  component  size.  In  this  aspect,  the  client  treats both the FileComponent  and  the  DirComponent  object  in  the  same  manner. No separate code is required to query FileComponent  objects and DirComponent objects for their size 24 Problem in Current Design Client to keep track when calling a non­common  method like addcomponent and getcomponent as  these methods exists only in DirComponent 25 Design Approach ­II Provide  the  same  advantage  of  allowing  the  client  application  to  treat  both  the  composite  DirComponent  and  the  individual  FileComponent  objects  in  a  uniform  manner while invoking the getComponentSize method 26 27 Code in Word File

Ngày đăng: 05/07/2022, 14:08