Object Oriented Analysis and Design

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Lab Part Nattee Niparnan
การจัดการความผิดพลาด
การวิเคราะห์ระบบและวิธีปฏิบัติงาน
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
Object-Oriented Programming IUP02 At Exceep camp.
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Functional programming part II
ภาษาคอมพิวเตอร์ กฎเกณฑ์เกี่ยวกับคำศัพท์ ไวยากรณ์ และ หลักภาษาในการเขียนคำสั่งงานให้คอมพิวเตอร์ทำงานอย่างใดอย่างหนึ่งให้กับเราได้ มีหลากหลายชนิดต่างๆ กัน.
Stack.
Physiology of Crop Production
Business Modeling (บางส่วนอ้างอิงจาก ดร.อดิศร ณ อุบล)
Object-Oriented Analysis and Design
05_3_Constructor.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
ระบบสนับสนุนการตัดสินใจ (Decision Support System)
Selected Topics in IT (Java)
Object-Oriented System Analysis and Design
การสืบทอด (Inheritance)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
Chapter 2 Database systems Architecture
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
OOP (Object-Oriented Programming)
C# Programming Exceed Camp: Day 3.
Lecture 9 Class (คลาส) To do: Hand back assignments
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
System Integration.
JAVA PROGRAMMING PART IV.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
บทที่ 3 การวิเคราะห์ Analysis.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
โครงสร้างขององค์กร (Organization Structure)
ที่ใช้ใน Object-Oriented Design
List ADTs By Pantharee S..
Object Oriented Programming Handling Exceptions
Method of Class อ.สุพจน์ สิงหัษฐิต
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)
Object-Oriented Programming
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
Lecture 2 แก้ไขปัญหาด้วย OOP (Solving problems using OOP in Java)
Software Framework & Design Pattern
Java collection framework
Java Programming Java Structure and Datatype,Variable
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
Object Oriented Programming : OOP
Design pattern WATTANAPONG SUTTAPAK Software Engineering,
Modeling and Activity Diagram
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Unified Modeling Language
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
วิชา การวิเคราะห์และออกแบบเชิงวัตถุ รหัส
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
Syntax and Semantics ธนวัฒน์ แซ่เอียบ.
Chapter 6 Abstract Class and Interface
บทที่ 3 การสืบทอด (Inheritance)
2 การพัฒนาระบบสารสนเทศ (Information System Development)
บทที่ 5 ความต้องการ วิศวกรรมความต้องการ แบบจําลองการวิเคราะห์
Object-Oriented Programming Paradigm
การวิเคราะห์ซอฟต์แวร์
Class Diagram.
Object-Oriented Programs Design and Construction
Class Diagram.
ใบสำเนางานนำเสนอ:

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

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

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”

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

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

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

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

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

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

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.”

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 กลับมาใช้ใหม่

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

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

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

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 ซึ่งรวมถึงผลกระทบต่างๆ

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

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

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

Singleton Design Pattern

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

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

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

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;

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

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;

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");

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()); }

not null!!! Company@256a7c Company., Ltd. Burapha Unviersity 99999

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

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 ภายในคลาส ตามต้องการ

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