งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Object Oriented Analysis and Design

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Object Oriented Analysis and Design"— ใบสำเนางานนำเสนอ:

1 Object Oriented Analysis and Design
Design Patterns Introduction to Design Patterns Week #9 Jarungjit Parnjai

2 Lecture Outline What is A Pattern? Why Patterns? Software Patterns
GoF Design Patterns Singleton (Object Creational Design Patterns)

3 What is A Pattern? A Pattern
ถูกใช้ในงานของสถาปนิก ชื่อ Christopher Alexander Alexander ศึกษาแนวทางการปรับปรุงกระบวนการออกแบบอาคาร และสิ่งก่อสร้าง “Each pattern is a three-part rule, which expresses a relation between a certain context, a problem and a solution.” definition : “A solution to a problem in a context”

4 A Solution to a Problem in a Context
สถานการณ์ที่เกิดปัญหาการออกแบบขึ้น Problem ปัญหาที่เกิดขึ้นซ้ำๆ กันใน Context Solution แนวทางการแก้ปัญหาที่พิสูจน์แล้วว่าใช้งานได้จริง ระบุส่วนผสมขององค์ประกอบเพื่อสร้างความสมดุลของแนวทางการแก้ปัญหา

5 Why Patterns? Erich Gamma
“Designing object-oriented software is hard and designing reusuable object-oriented software is even harder.” นักออกแบบที่เชี่ยวชาญนำใช้ Solution ที่สามารถทำงานได้ผลในอดีตกลับมาใช้ไหม่ โครงสร้างของระบบเชิงวัตถุที่ดีจะมี Pattern ของ Class และ Object เกิดขึ้นซ้ำแบบเดิม ความรู้เกี่ยวกับ Pattern ที่สามารถทำงานได้ผลในอดีต ทำให้นักออกแบบระบบสามารถทำงานได้อย่างมีประสิทธิผล และทำให้เกิดความยืดหยุ่นในการออกแบบ และนำมาใช้ใหม่

6 Software Patterns History
CunningHam และ Beck ใช้แนวคิดของ Alexander ในการพัฒนา Pattern Language สำหรับ Smalltalk Gang of Four (Gamma, Helm, Johnson และ Vlissides ; GoF) เริ่มต้นรวบรวม catalog ของ design pattern Bruce Anderson จัด Patterns Workshop ครั้งแรกขึ้นที่ OOPSLA Kent Back และ Grady Booch ให้การสนับสนุน meeting ครั้งแรกของ Hillside Group จัดประชุม Pattern Languages of Programs (PLoP) ครั้งแรก GoF ตีพิมพ์หนังสือ “Design Pattern”

7 Types of Software Patterns
Analysis Design Organizational Process Project Planning Configuration Management

8 Types of Software Patterns
Software Pattern 3 ประเภท (Riehel และ Zullighoven) Conceptual Pattern Pattern whose form is described by means of terms and concepts from the application domain. Design Pattern Pattern whose form is described by means of software design constructs such as objects. Classes, inheritance and aggregation. Programming Pattern Pattern whose form is described by means of programming langugage

9 Design Patterns Levels of Abstraction
Complex design for an entire application or subsystem Solution to a general design problem in a particular context Simple reusable design class such as a linked list, hash table, etc. More Abstract More Concrete

10 GoF Classification of Design Patterns
GoF Design Patterns อยู่ในตรงกลางของ Levels of Abstraction “ A design pattern names, abstracts, and identifies key aspects of a common design structure that makes it useful for creating a reusable object-oriented design.” GoF Design Pattern “description of communicating objects and classes that are customized to solve a general design problem in a particular context.”

11 GoF Design Patterns Purposes - what a pattern does
Creational Patterns เกี่ยวกับกระบวนการสร้าง Object Structural Patterns เกี่ยวกับโครงสร้าง และองค์ประกอบของ Class และ Object Behavioral Patterns เกี่ยวกับปฏิสัมพันธ์ระหว่าง Class และ Object Scope - what the pattern applies to Class Patterns เน้นความสัมพันธ์ระหว่าง Class และ Subclass ซึ่งเกี่ยวข้องกับการนำ Inheritance กลับมาใช้ใหม่ Object Patterns เน้นความสัมพันธ์ระหว่าง Object ซึ่งเน้นการนำ Composition กลับมาใช้ใหม่

12 GoF Design Patterns Class Object Scope Purpose Creational Structural
Behavioral Factory Method Abstract Factory Builder Prototype Singleton Adapter Abstract Bridge Composite Façade Flyweight Proxy Interpreter Template Method Chain of Responsibility Command Iterator Mediator Memento State Strategy

13 Design for Change Creating an object by specifying a class explicitly
Abstract Factory, Factory Method, Prototype Dependence on specific operation Chain of Responsibility, Command Dependence on h/w and s/w platforms Abstract Factory, Bridge Dependence on object representations or implementations Abstract Factory, Bridge, Memento, Proxy Algorithm Dependencies Builder, Iterator, Strategy, Template Method, Visitor

14 Design for Change (Continued)
Tight Coupling Abstract factory, Bridge, Chain of Responsibility, Command, Façade, Mediator, Observer Extending functionality of subclassing Bridge, Chain of Responsibility, Composite, Decorator, Observer, Strategy Inability to alter classes conveniently Adapter, Decorator, Visitor

15 GoF Essential Elements of Design Patterns
Pattern Name ชื่อสั้น และมีความหมาย เอื้อประโยชน์ในการสื่อสารภายในทีมผู้พัฒนา Problem problem และ context ที่ใช้ใน Pattern นี้ เงื่อนไขที่ต้องมีก่อนที่จะใช้ Pattern นี้ Solution คำอธิบายของ Element ที่ประกอบเป็น Design Pattern เน้นที่ relationship responsibilities และ collaboration ไม่ใช่ concrete design หรือการ implemenation แต่เป็น abstract description Consequences Pros และ Cons ของการใช้ pattern ซึ่งรวมถึงผลกระทบต่างๆ

16 GoF Pattern Template Pattern Name และ Classification
ชื่อสั้น และมีความหมาย สำหรับ Pattern และ ประเภทของ Pattern Intent ประโยคสั้นๆ ที่อธิบายหน้าที่การทำงานของ pattern Also Known As ชื่ออื่นที่เป็นที่รู้จักของ Pattern นี้ Motivation สถานการณ์ที่ใช้ในการจำลองเหตุการณ์ที่นำ Pattern ไปใช้ประโยชน์ Applicability แนวทาง และ เทคนิคสำหรับการ implement

17 GoF Pattern Template (Continued)
Structure การนำเสนอ pattern โดยใช้รูปภาพ Participants Class และ Object ที่มีส่วนร่วมใน pattern นี้ Collaborations การปฏิสัมพันธ์ระหว่าง participant เพื่อทำหน้าที่ที่ตัวเองมี responsibilities Consequences Pros และ Cons ของการเลือกใช้ Pattern นี้ Implementation แนวทาง และ เทคนิคสำหรับการ implement

18 GoF Pattern Template (Continued)
Sample Code ส่วนของ Code ที่เป็นตัวอย่างสำหรับการ implement Known Uses ตัวอย่างของ Pattern ในระบบที่มีการใช้งานจริง Relatted Patterns Patterns อื่นที่ใกล้เคียงกับ Pattern นี้

19 Singleton Design Pattern

20 Singleton Case Study พิจารณาบริษัทแห่งหนึ่งต้องการพัฒนาระบบ ที่ต้องการเก็บข้อมูลต่างๆ เกี่ยวกับบริษัทได้แก่ ชื่อ, ที่อยู่ของสำนักงานใหญ่, ข้อมูลการจดทะเบียนของบริษัท และสามารถนำข้อมูลเหล่านั้นมาแสดงผ่านทาง application interface และพิมพ์รายงาน ข้อมูลต่างๆ ควรเก็บอยู่ในที่ใดที่หนึ่งภายใน application แต่สามารถถูกนำไปใช้โดยวัตถุที่แตกต่างกัน หลายๆ วัตถุ

21 Singleton First Design approach :
อาจออกแบบให้สร้าง global data ภายใน ที่สามารถเข้าถึงได้จากวัตถุใดๆภายนอก ละเมิดกฏของ Encapsulation การเปลี่ยนแปลงใดๆที่เกิดขึ้นกับโครงสร้างข้อมูลที่เป็น global data มีผลกระทบถึงวัตถุที่เรียกใช้ข้อมูลเหล่านั้น

22 Singleton Second Design approach :
วัตถุใดๆ ที่ต้องการเรียกใช้ วัตถุ “Company” ต้องรู้ Object Identifier (อาจอยู่ในรูปของตัวแปรอ้างอิง) ไปยังวัตถุ Object Identfier ต้องประกาศให้เป็น global ละเมิดกฏของ Encapsulation!!! Company - CompanyName - CompanyAddress - CompanyRegistrationNumber + getCompanyDetails()

23 Singleton Second Design approach : public class Company {
private String name; private String address; private String regNumber; public Company(String n, String a, String r) { name = n; address = a; regNumber = r; } public String getCompanyName() { return name; } public String getCompanyAddress() { return address; } public String getCompanyRegistrationNumber() { return regNumber;

24 Singleton Third Design approach :
คลาส “Company” มีเพียง instance เดียวเท่านั้น ใช้ Class Operation (Static Operation ในจาวา) ในการเข้าถึง Object Identifier Company - CompanyInstance : Company - CompanyName : String - CompanyAddress : String - CompanyRegistrationNumber : int + getCompanyInstance( ) : Comapany + getCompanyDetails() : String

25 Singleton Third Design approach : public class Company {
private static Company instance = new Company("Company., Ltd.", "Burapha Unviersity", "99999"); private String name; private String address; private String regNumber; private Company(String n, String a, String r) { name = n; address = a; regNumber = r; } public static Company getCompanyInstance() { return instance; } public String getCompanyName() { return name; } public String getCompanyAddress() { return address; } public String getCompanyRegistrationNumber() { return regNumber;

26 Singleton Third Design approach : public class TestCompany {
public static void main(String[] args) { Company instance1 = Company.getCompanyInstance(); if (instance1 == null) { System.out.println("null!!!"); } else { System.out.println("not null!!!"); System.out.println(instance1); System.out.println(instance1.getCompanyName()); System.out.println(instance1.getCompanyAddress()); System.out.println(instance1.getCompanyRegistrationNumber()+"\n");

27 Company instance2 = Company.getCompanyInstance();
if (instance2 == null) { System.out.println("null!!!"); } else { System.out.println("not null!!!"); System.out.println(instance2); System.out.println(instance2.getCompanyName()); System.out.println(instance2.getCompanyAddress()); System.out.println(instance2.getCompanyRegistrationNumber()); }

28 not null!!! Company., Ltd. Burapha Unviersity 99999

29 Singleton Design Pattern
Pattern Name Singleton / Object creational Problem class หนึ่ง class ใดมีเพียง instance เดียวเท่านั้น และกำหนด global point ที่ใช้ในการเข้าถึง instance ของ class นั้น Context สร้าง global data ภายใน ที่สามารถเข้าถึงได้จากวัตถุใดๆภายนอก หรือประกาศ Object Identifier เป็น global หรือใช้ class operation ในการเข้าถึง Object identifier ที่ถูกสร้างโดยคลาส รูปแบบอื่นๆ ของ Singleton Pattern อาจขึ้นอยู่กับสถานการณ์ตอนเริ่มต้นสร้าง instance

30 Singleton Design Pattern
Solution สร้าง class ที่มี Class Operation ในการให้ค่า instance ของ class อาจสร้าง instance ของ class ไว้ตั้งแต่เริ่มแรกที่มีการ load class เข้ามาในระบบ หรืออาจสร้าง instance ของ class ในครั้งแรกที่มีการเรียก Class Operation เพื่อสอบถามค่า instance ของ class Consequences มีการควบคุมการเข้าถึง object instance ที่ถูก encapsulate ไว้ใน class ไม่จำเป็นต้องประกาศ name space ไว้เป็น global อาจมีการทำ subclass ของ Singleton class และให้ user สามารถเลือกว่าต้องการสร้าง subclass ใดเมื่อตอน run-time อาจมีการดัดแปลงให้มีการสร้าง instance ที่มากกว่า 1 instance ภายในคลาส ตามต้องการ

31 Summary What is A Pattern? Why Patterns? Software Patterns
GoF Design Patterns Singleton (Object Creational Design Patterns)


ดาวน์โหลด ppt Object Oriented Analysis and Design

งานนำเสนอที่คล้ายกัน


Ads by Google