Más contenido relacionado Más de TaiMe Sakdisri (13) Unit071. หนวยที่ 7
การออกแบบคลาส
(Class Design)
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 1
2. วัตถุประสงค
เพื่อใหผูเรียนสามารถ
กําหนด วางโครงสรางใหม และเพิมประสิทธิภาพการ
่
ออกแบบอ็อบเจกตได
กําหนดการใชซ้ําองคประกอบทีมอยูแลวได
่ ี
กําหนด constraint และ contract ได
สรางขอกําหนดโอเปอเรชันได
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 2
3. การออกแบบรายละเอียด
(Detailed Design)
ออกแบบ
การรับขอมูล (inputs)
การแสดงผลขอมูล (outputs)
กระบวนการทํางาน (processes)
โครงสรางแฟมขอมูล หรือฐานขอมูล (file or data
structures)
กระทําในรูปการออกแบบคลาสและการปฏิสมพันธั
ระหวางคลาส
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 3
4. การออกแบบคลาส (Class Design)
อินพุต
ขอกําหนดความตองการ (รวมทั้งสภาพแวดลอมในการอิมพ
ลิเมนต (implementation environment))
แบบจําลองการวิเคราะห (คลาส ซีเคว็น คอมมิวนิเคชัน
สเตทแมทชีนไดอะแกรม)
เอาทพุต
แบบจําลองการออกแบบ (ไดอะแกรม และขอกําหนดตางๆ)
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 4
5. คลาสไดอะแกรมสําหรับการวิเคราะห
และการออกแบบ
คลาสไดอะแกรมสําหรับ คลาสไดอะแกรมสําหรับการ
การวิเคราะห ออกแบบ
แบบจําลองแนวคิดของระบบ ระบบจะถูกสรางอยางไร
สัญลักษณเดียวกัน แตตางมุมมองกัน
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 5
7. ความเกียวพันระหวางโมดูล (Coupling)
่
การขึ้นตอกัน หรือความเกียวของระหวางโมดูล (คลาส
่
อ็อบเจกตและ โอเปอเรชัน)
Interaction coupling
ความเกี่ยวพันระหวางโอเปอเรชันและอ็อบเจกตผานการสงผาน
เมสเสจ
Inheritance coupling
ความเกี่ยวพันระหวางคลาสในลําดับชันการสืบทอดคุณสมบัติ
้
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 7
8. Interaction coupling
ควรจํากัดใหมนอย
ี
โดย
จํากัดจํานวนเมสเสจ
จํากัดจํานวนพารามิเตอร
รูปแบบของพารามิเตอร
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 8
9. Interaction coupling
ระดับ ชนิด คําอธิบาย
ดี ไมมี coupling โดยตรง โอเปอเรชันไมมการเรียกใชกัน
ี
Data โอเปอเรชันสงผานตัวแปรไปยังโอเปอเรชันที่ถกเรียก
ู
ถาเปนตัวแปรผสมจะใชอ็อบเจกตท้งตัวในการทํางาน
ั
Stamp โอเปอเรชันสงผานอ็อบเจกตไปยังโอเปอเรชันทีถูกเรียก
่
ซึ่งใชแคบางสวนของอ็อบเจกต
Control โอเปอเรชันสงผานตัวแปรควบคุม ซึ่งคาจะใชในการ
ควบคุมการทํางานของโอเปอเรชันที่ถูกเรียก
Common หรือ Global โอเปอเรชันใชขอมูลโกลบอลซึ่งอยูภายนอกอ็อบเจกต
แย Content หรือ โอเปอเรชันของอ็อบเจกตอางถึงภายในของอีกอ็อบ
Pathological เจกตได
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 9
10. ความเกียวพันภายในโมดูล (Cohesion)
่
หมายถึงความเปนหนึงเดียวของโมดูลในระบบ
่
คลาสหรืออ็อบเจกตควรแสดงสิงๆ เดียว และโอเปอเร
่
ชันทํางานอยางเดียวเทานัน
้
Operation cohesion
ความเกี่ยวพันภายในโอเปอเรชัน
ควรใหมี functional cohesion
โอเปอเรชันหนึ่งทํางานเพียงงาน (function) เดียว
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 10
11. ความเกียวพันภายในโมดูล (Cohesion)
่
Class cohesion
ความเกี่ยวพันระหวางแอททริบิวและโอเปอเรชันของคลาส
คลาสควรแสดงสิ่งๆ เดียว แอททริบิวและโอเปอเรชันทุกตัวที่
อยูภายในคลาสตองเปนตัวทีคลาสตองการใชในการแสดงสิ่ง
่
สิ่งนัน
้
Generalization/Specialization cohesion
ความสมเหตุสมผลในลําดับชันการสืบทอดคุณสมบัติ
้
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 11
13. กิจกรรมในการออกแบบคลาส
สรางขอกําหนดของคลาส (class specification)
วางแผนการใชงานซ้ํา
ปรับโครงสรางที่ออกแบบ
เพิ่มประสิทธิภาพในการออกแบบ
สรางขอกําหนดของโอเปอรเรชัน (operation
specification)
ปรับปรุง ซีเคว็น คอมมิวนิเคชัน
สเตทแมทชีนไดอะแกรม
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 13
15. ขอกําหนดของคลาส
(Class specification)
รูปแบบแอททริบว
ิ
ชือและชนิดขอมูลที่ใชในการเก็บคาของแอททริบิว
่
Syntax ในการประกาศ
name ‘:’ type-expression ‘=’ initial-value ‘{’
property-string ‘}’
เชน
balance:Money = 0
accountName:String {not null}
จํานวนของแอททริบวแตละตัว (multiplicity)
ิ
เชน qualification:String[0..10]
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 15
16. ขอกําหนดของคลาส
ลายเซ็น (Signature) ของโอเปอเรชัน
ชื่อโอเปอเรชัน จํานวนและชนิดของพารามิเตอรทรบ และ
ี่ ั
ชนิดของคาที่สงคืนถามี
Syntax
Operation name ‘(’ parameter-list ‘)’ ‘:’ return-type-
expression
เชน
credit(amount:Money):Boolean
Primary operations
constructor, destructor, get และ set โอเปอเรชัน
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 16
17. ขอกําหนดของคลาส
กําหนดการมองเห็น (visibility) แอททริบวและโอเปอเรชัน
ิ
สัญลักษณ การมองเห็น ความหมาย
+ Public เขาถึงไดโดยตรงโดยอ็อบเจกตของคลาสใดๆ
- Private ใชไดโดยอ็อบเจกตของคลาสที่เปนเจาของ
# Protected ใชไดโดยอ็อบเจกตของคลาสที่เปนเจาของ
หรือคลาสลูกหลาน
~ Package เขาถึงไดโดยตรงโดยอ็อบเจกตของคลาสใดที่
อยูในแพคเก็จเดียวกัน
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 17
18. วางแผนการใชงานซ้ํา
รูปแบบการออกแบบ (Design patterns)
แนวทางการจัดกลุมอ็อบเจกตที่ทํางานรวมกัน ที่มี
ประโยชนในการแกปญหาที่มกเกิดขึ้น
ั
เฟรมเวิรค (Frameworks)
ชุดของคลาสที่อิมพลิเมนตแลว ซึ่งสามารถนํามาใชใน
การอิมพลิเมนตแอพพลิเคชัน
ไลบรารี (Libraries)
ชุดของคลาสที่อิมพลิเมนตแลว ที่ออกแบบมาเพื่อการใช
ซ้ํา (reuse)
คอมโพเนนต (components)
สวนของซอฟตแวรที่สามารถตอเขากับระบบเพื่อใชงาน
ฟงกชันเฉพาะทีระบบตองการ
่
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 18
19. ปรับโครงสรางการออกแบบใหม
(Restructuring the Design)
แฟคเตอรริ่ง (Factoring)
การแยกโอเปอเรชัน หรือคลาส ออกเปนโอเปอเรชัน หรือ
คลาสใหม
การออกแบบการอิมพลีเมนตความสัมพันธ
ออกแบบการอิมพลีเมนตความสัมพันธแบบ association
และ aggregation
ตรวจสอบ inheritance relationships เพื่อใหแนใจวา
ใชอยางเหมาะสม
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 19
20. การออกแบบ association
ขั้นตอน
กําหนดทิศทางความสัมพันธ
กําหนดแอททริบิวใหมใหคลาสเพื่อแสดงการเชื่อมโยง
Association แบบ One-to-one
แอททริบิวใหมใชเก็บ identifier ของอ็อบเจกตของคลาสที่
เกี่ยวของ
Association แบบ One-to-many
กําหนดแอททริบิวที่เปนอารเรยเพื่อเก็บ identifier ของอ็อบเจกต
ทั้งหมดที่เกี่ยวของ
สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่เกี่ยวของ และ
กําหนดใหมีแอททริบิวที่เปนอ็อบเจกตของ collection class
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 20
21. การออกแบบ association
Association แบบ many-to-many
สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่
เกี่ยวของ และกําหนดใหมีแอททริบิวที่เปนอ็อบเจกตของ
collection class
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 21
22. การเพิ่มประสิทธิภาพในการ
ออกแบบ
ทบทวนเสนทางเขาถึงระหวางอองเจ็ค
ลดความยาวของเสนทาง โดยเพิ่มแอททริบิวเพื่อเชื่อมตอ
ตรง
ทบทวนแอททริบิวของแตละคลาส
ถามีเมธอดที่อานและปรับปรุงแอททริบิว และอ็อบเจกตของ
คลาสเดียวเทานันที่ใชเมธอดนี้
้
ควรยายแอททริบวนันไปไวในคลาสที่แรกใชแทน
ิ ้
ตรวจสอบลําดับการเอ็กซคิวทสเตทเมนต (execution
of statements)
สรางดีไรวแอททริบวเพื่อลดเวลาการคํานวณ
ิ
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 22
23. ปรับ Problem Domain Classes เขากับ
Implementation Languages
ภาษาที่รองรับ Single-Inheritance
เปลี่ยนเปน association relationships จํานวนความสัมพันธ
เปน 1..1 หรือ 0..1
ยุบ inheritance hierarchy โดยการคัดลอก attributes และ
methods ของ additional superclass(es)
ภาษาแบบ Object-based
เอาความสัมพันธแบบ Inheritance ออก
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 23
24. ประเภทของ Constraints
Pre-Conditions
ขอบังคับทีตองเปนจริง เพื่อใหเมธอดทํางานได
่
Post-condition
ขอบังคับทีตองเปนจริง หลังจากที่เมธอดทํางานแลว
่
Invariants
ขอบังคับทีตองเปนจริงเสมอสําหรับทุกอ็อบเจกตของคลาส
่
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 24
26. องคประกอบของ Contract
Contract ขอตกลงในการใชงานอ็อบเจกตของคลาส
ประกอบดวย
ลายเซ็นโอเปอเรชัน
ชื่อคลาส
คําอธิบายความรับผิดชอบ
Pre-Conditions
Post-condition
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 26
27. ขอกําหนดโอเปอรเรชัน
(Operation Specification)
เหตุการณ (Events) ที่ทําใหโอเปอรเรชันทํางาน
การสงผานเมสเสจ
ขอกําหนดอัลกอริทึม (Algorithm specification)
เขียนแบบโครงสราง
ซูโดโคด (Pseudocode)
ยูเอ็มแอลแอคทิวตี้ไดอะแกรม
ิ
OOAD 1/2551 ดร.สุขสถิต มีสถิตย 27