Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
หนวยที่ 7              การออกแบบคลาส               (Class Design)OOAD 1/2551        ดร.สุขสถิต มีสถิตย   1
วัตถุประสงคเพื่อใหผูเรียนสามารถ    กําหนด วางโครงสรางใหม และเพิมประสิทธิภาพการ                                  ่    ...
การออกแบบรายละเอียด(Detailed Design)    ออกแบบ      การรับขอมูล (inputs)      การแสดงผลขอมูล (outputs)      กระบวนการทํา...
การออกแบบคลาส (Class Design)    อินพุต          ขอกําหนดความตองการ (รวมทั้งสภาพแวดลอมในการอิมพ          ลิเมนต (implem...
คลาสไดอะแกรมสําหรับการวิเคราะหและการออกแบบ              คลาสไดอะแกรมสําหรับ                    คลาสไดอะแกรมสําหรับการ    ...
สภาพแวดลอมในการอิมพลิเมนต(implementation environment)ปจจัย   ระบบปฏิบติการ             ั   ภาษาโปรแกรม   ระบบจัดการฐานข...
ความเกียวพันระหวางโมดูล (Coupling)       ่   การขึ้นตอกัน หรือความเกียวของระหวางโมดูล (คลาส                           ...
Interaction coupling    ควรจํากัดใหมนอย                 ี     โดย          จํากัดจํานวนเมสเสจ          จํากัดจํานวนพาราม...
Interaction couplingระดับ               ชนิด                                   คําอธิบาย   ดี     ไมมี coupling โดยตรง   ...
ความเกียวพันภายในโมดูล (Cohesion)       ่     หมายถึงความเปนหนึงเดียวของโมดูลในระบบ                         ่     คลาสหรื...
ความเกียวพันภายในโมดูล (Cohesion)       ่    Class cohesion          ความเกี่ยวพันระหวางแอททริบิวและโอเปอเรชันของคลาส    ...
Cohesion และ Couplingหลักการออกแบบทัวไปคือ                  ่ ควรใหมีความเกี่ยวพันภายในโมดูล (Cohesion) มาก ควรใหมีความเ...
กิจกรรมในการออกแบบคลาส    สรางขอกําหนดของคลาส (class specification)    วางแผนการใชงานซ้ํา    ปรับโครงสรางที่ออกแบบ    ...
สรางขอกําหนดของคลาส 1. ตรวจสอบวาคลาสจําเปนและความสามารถเพียงพอตอ    การทํางาน 2. กําหนดรูปแบบของแอททริบิว 3. กําหนดรู...
ขอกําหนดของคลาส(Class specification)    รูปแบบแอททริบว                 ิ          ชือและชนิดขอมูลที่ใชในการเก็บคาของแอ...
ขอกําหนดของคลาส    ลายเซ็น (Signature) ของโอเปอเรชัน          ชื่อโอเปอเรชัน จํานวนและชนิดของพารามิเตอรทรบ และ          ...
ขอกําหนดของคลาส    กําหนดการมองเห็น (visibility) แอททริบวและโอเปอเรชัน                                         ิ   สัญลัก...
วางแผนการใชงานซ้ํา    รูปแบบการออกแบบ (Design patterns)          แนวทางการจัดกลุมอ็อบเจกตที่ทํางานรวมกัน ที่มี        ...
ปรับโครงสรางการออกแบบใหม(Restructuring the Design)    แฟคเตอรริ่ง (Factoring)          การแยกโอเปอเรชัน หรือคลาส ออกเป...
การออกแบบ association     ขั้นตอน              กําหนดทิศทางความสัมพันธ              กําหนดแอททริบิวใหมใหคลาสเพื่อแสดงกา...
การออกแบบ association     Association แบบ many-to-many              สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่   ...
การเพิ่มประสิทธิภาพในการออกแบบ    ทบทวนเสนทางเขาถึงระหวางอองเจ็ค          ลดความยาวของเสนทาง โดยเพิ่มแอททริบิวเพื่อเชื...
ปรับ Problem Domain Classes เขากับImplementation Languages    ภาษาที่รองรับ Single-Inheritance          เปลี่ยนเปน assoc...
ประเภทของ Constraints    Pre-Conditions          ขอบังคับทีตองเปนจริง เพื่อใหเมธอดทํางานได                     ่    P...
ตัวอยาง InvariantsOOAD 1/2551    ดร.สุขสถิต มีสถิตย   25
องคประกอบของ Contract    Contract ขอตกลงในการใชงานอ็อบเจกตของคลาส    ประกอบดวย          ลายเซ็นโอเปอเรชัน          ชื...
ขอกําหนดโอเปอรเรชัน(Operation Specification)    เหตุการณ (Events) ที่ทําใหโอเปอรเรชันทํางาน    การสงผานเมสเสจ    ข...
Revised CD Selections ClassDiagramOOAD 1/2551    ดร.สุขสถิต มีสถิตย   28
Upcoming SlideShare
Loading in …5
×

Unit07

675 views

Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Unit07

  1. 1. หนวยที่ 7 การออกแบบคลาส (Class Design)OOAD 1/2551 ดร.สุขสถิต มีสถิตย 1
  2. 2. วัตถุประสงคเพื่อใหผูเรียนสามารถ กําหนด วางโครงสรางใหม และเพิมประสิทธิภาพการ ่ ออกแบบอ็อบเจกตได กําหนดการใชซ้ําองคประกอบทีมอยูแลวได ่ ี กําหนด constraint และ contract ได สรางขอกําหนดโอเปอเรชันไดOOAD 1/2551 ดร.สุขสถิต มีสถิตย 2
  3. 3. การออกแบบรายละเอียด(Detailed Design) ออกแบบ การรับขอมูล (inputs) การแสดงผลขอมูล (outputs) กระบวนการทํางาน (processes) โครงสรางแฟมขอมูล หรือฐานขอมูล (file or data structures) กระทําในรูปการออกแบบคลาสและการปฏิสมพันธั ระหวางคลาสOOAD 1/2551 ดร.สุขสถิต มีสถิตย 3
  4. 4. การออกแบบคลาส (Class Design) อินพุต ขอกําหนดความตองการ (รวมทั้งสภาพแวดลอมในการอิมพ ลิเมนต (implementation environment)) แบบจําลองการวิเคราะห (คลาส ซีเคว็น คอมมิวนิเคชัน สเตทแมทชีนไดอะแกรม) เอาทพุต แบบจําลองการออกแบบ (ไดอะแกรม และขอกําหนดตางๆ)OOAD 1/2551 ดร.สุขสถิต มีสถิตย 4
  5. 5. คลาสไดอะแกรมสําหรับการวิเคราะหและการออกแบบ คลาสไดอะแกรมสําหรับ คลาสไดอะแกรมสําหรับการ การวิเคราะห ออกแบบ แบบจําลองแนวคิดของระบบ ระบบจะถูกสรางอยางไร สัญลักษณเดียวกัน แตตางมุมมองกันOOAD 1/2551 ดร.สุขสถิต มีสถิตย 5
  6. 6. สภาพแวดลอมในการอิมพลิเมนต(implementation environment)ปจจัย ระบบปฏิบติการ ั ภาษาโปรแกรม ระบบจัดการฐานขอมูล ระบบจัดการสวนติดตอผูใช กลไกในการรวมระบบ ไลบรารีสําหรับใชงานซ้ํา ความตองการที่ไมเปนฟงกชน ั กระบวนการพัฒนาOOAD 1/2551 ดร.สุขสถิต มีสถิตย 6
  7. 7. ความเกียวพันระหวางโมดูล (Coupling) ่ การขึ้นตอกัน หรือความเกียวของระหวางโมดูล (คลาส ่ อ็อบเจกตและ โอเปอเรชัน) Interaction coupling ความเกี่ยวพันระหวางโอเปอเรชันและอ็อบเจกตผานการสงผาน เมสเสจ Inheritance coupling ความเกี่ยวพันระหวางคลาสในลําดับชันการสืบทอดคุณสมบัติ ้OOAD 1/2551 ดร.สุขสถิต มีสถิตย 7
  8. 8. Interaction coupling ควรจํากัดใหมนอย ี  โดย จํากัดจํานวนเมสเสจ จํากัดจํานวนพารามิเตอร รูปแบบของพารามิเตอรOOAD 1/2551 ดร.สุขสถิต มีสถิตย 8
  9. 9. Interaction couplingระดับ ชนิด คําอธิบาย ดี ไมมี coupling โดยตรง โอเปอเรชันไมมการเรียกใชกัน ี Data โอเปอเรชันสงผานตัวแปรไปยังโอเปอเรชันที่ถกเรียก ู ถาเปนตัวแปรผสมจะใชอ็อบเจกตท้งตัวในการทํางาน ั Stamp โอเปอเรชันสงผานอ็อบเจกตไปยังโอเปอเรชันทีถูกเรียก ่ ซึ่งใชแคบางสวนของอ็อบเจกต Control โอเปอเรชันสงผานตัวแปรควบคุม ซึ่งคาจะใชในการ ควบคุมการทํางานของโอเปอเรชันที่ถูกเรียก Common หรือ Global โอเปอเรชันใชขอมูลโกลบอลซึ่งอยูภายนอกอ็อบเจกต   แย Content หรือ โอเปอเรชันของอ็อบเจกตอางถึงภายในของอีกอ็อบ Pathological เจกตไดOOAD 1/2551 ดร.สุขสถิต มีสถิตย 9
  10. 10. ความเกียวพันภายในโมดูล (Cohesion) ่ หมายถึงความเปนหนึงเดียวของโมดูลในระบบ ่ คลาสหรืออ็อบเจกตควรแสดงสิงๆ เดียว และโอเปอเร ่ ชันทํางานอยางเดียวเทานัน ้ Operation cohesion ความเกี่ยวพันภายในโอเปอเรชัน ควรใหมี functional cohesion โอเปอเรชันหนึ่งทํางานเพียงงาน (function) เดียวOOAD 1/2551 ดร.สุขสถิต มีสถิตย 10
  11. 11. ความเกียวพันภายในโมดูล (Cohesion) ่ Class cohesion ความเกี่ยวพันระหวางแอททริบิวและโอเปอเรชันของคลาส คลาสควรแสดงสิ่งๆ เดียว แอททริบิวและโอเปอเรชันทุกตัวที่ อยูภายในคลาสตองเปนตัวทีคลาสตองการใชในการแสดงสิ่ง ่ สิ่งนัน ้ Generalization/Specialization cohesion ความสมเหตุสมผลในลําดับชันการสืบทอดคุณสมบัติ ้OOAD 1/2551 ดร.สุขสถิต มีสถิตย 11
  12. 12. Cohesion และ Couplingหลักการออกแบบทัวไปคือ ่ ควรใหมีความเกี่ยวพันภายในโมดูล (Cohesion) มาก ควรใหมีความเกี่ยวพันระหวางโมดูล (Coupling) นอยOOAD 1/2551 ดร.สุขสถิต มีสถิตย 12
  13. 13. กิจกรรมในการออกแบบคลาส สรางขอกําหนดของคลาส (class specification) วางแผนการใชงานซ้ํา ปรับโครงสรางที่ออกแบบ เพิ่มประสิทธิภาพในการออกแบบ สรางขอกําหนดของโอเปอรเรชัน (operation specification) ปรับปรุง ซีเคว็น คอมมิวนิเคชัน สเตทแมทชีนไดอะแกรมOOAD 1/2551 ดร.สุขสถิต มีสถิตย 13
  14. 14. สรางขอกําหนดของคลาส 1. ตรวจสอบวาคลาสจําเปนและความสามารถเพียงพอตอ การทํางาน 2. กําหนดรูปแบบของแอททริบิว 3. กําหนดรูปแบบของโอเปอเรชัน 4. กําหนดการมองเห็น (visibility) ของแอททริบิวและโอ เปอเรชัน 5. กําหนด constraints ที่ตองรักษาโดย objectsOOAD 1/2551 ดร.สุขสถิต มีสถิตย 14
  15. 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. 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. 17. ขอกําหนดของคลาส กําหนดการมองเห็น (visibility) แอททริบวและโอเปอเรชัน ิ สัญลักษณ การมองเห็น ความหมาย + Public เขาถึงไดโดยตรงโดยอ็อบเจกตของคลาสใดๆ - Private ใชไดโดยอ็อบเจกตของคลาสที่เปนเจาของ # Protected ใชไดโดยอ็อบเจกตของคลาสที่เปนเจาของ หรือคลาสลูกหลาน ~ Package เขาถึงไดโดยตรงโดยอ็อบเจกตของคลาสใดที่ อยูในแพคเก็จเดียวกันOOAD 1/2551 ดร.สุขสถิต มีสถิตย 17
  18. 18. วางแผนการใชงานซ้ํา รูปแบบการออกแบบ (Design patterns) แนวทางการจัดกลุมอ็อบเจกตที่ทํางานรวมกัน ที่มี ประโยชนในการแกปญหาที่มกเกิดขึ้น ั เฟรมเวิรค (Frameworks) ชุดของคลาสที่อิมพลิเมนตแลว ซึ่งสามารถนํามาใชใน การอิมพลิเมนตแอพพลิเคชัน ไลบรารี (Libraries) ชุดของคลาสที่อิมพลิเมนตแลว ที่ออกแบบมาเพื่อการใช ซ้ํา (reuse) คอมโพเนนต (components) สวนของซอฟตแวรที่สามารถตอเขากับระบบเพื่อใชงาน ฟงกชันเฉพาะทีระบบตองการ ่OOAD 1/2551 ดร.สุขสถิต มีสถิตย 18
  19. 19. ปรับโครงสรางการออกแบบใหม(Restructuring the Design) แฟคเตอรริ่ง (Factoring) การแยกโอเปอเรชัน หรือคลาส ออกเปนโอเปอเรชัน หรือ คลาสใหม การออกแบบการอิมพลีเมนตความสัมพันธ ออกแบบการอิมพลีเมนตความสัมพันธแบบ association และ aggregation ตรวจสอบ inheritance relationships เพื่อใหแนใจวา ใชอยางเหมาะสมOOAD 1/2551 ดร.สุขสถิต มีสถิตย 19
  20. 20. การออกแบบ association ขั้นตอน กําหนดทิศทางความสัมพันธ กําหนดแอททริบิวใหมใหคลาสเพื่อแสดงการเชื่อมโยง Association แบบ One-to-one แอททริบิวใหมใชเก็บ identifier ของอ็อบเจกตของคลาสที่ เกี่ยวของ Association แบบ One-to-many กําหนดแอททริบิวที่เปนอารเรยเพื่อเก็บ identifier ของอ็อบเจกต ทั้งหมดที่เกี่ยวของ สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่เกี่ยวของ และ กําหนดใหมีแอททริบิวที่เปนอ็อบเจกตของ collection classOOAD 1/2551 ดร.สุขสถิต มีสถิตย 20
  21. 21. การออกแบบ association Association แบบ many-to-many สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่ เกี่ยวของ และกําหนดใหมีแอททริบิวที่เปนอ็อบเจกตของ collection classOOAD 1/2551 ดร.สุขสถิต มีสถิตย 21
  22. 22. การเพิ่มประสิทธิภาพในการออกแบบ ทบทวนเสนทางเขาถึงระหวางอองเจ็ค ลดความยาวของเสนทาง โดยเพิ่มแอททริบิวเพื่อเชื่อมตอ ตรง ทบทวนแอททริบิวของแตละคลาส ถามีเมธอดที่อานและปรับปรุงแอททริบิว และอ็อบเจกตของ คลาสเดียวเทานันที่ใชเมธอดนี้ ้ ควรยายแอททริบวนันไปไวในคลาสที่แรกใชแทน ิ ้ ตรวจสอบลําดับการเอ็กซคิวทสเตทเมนต (execution of statements) สรางดีไรวแอททริบวเพื่อลดเวลาการคํานวณ ิOOAD 1/2551 ดร.สุขสถิต มีสถิตย 22
  23. 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. 24. ประเภทของ Constraints Pre-Conditions ขอบังคับทีตองเปนจริง เพื่อใหเมธอดทํางานได ่ Post-condition ขอบังคับทีตองเปนจริง หลังจากที่เมธอดทํางานแลว ่ Invariants ขอบังคับทีตองเปนจริงเสมอสําหรับทุกอ็อบเจกตของคลาส ่OOAD 1/2551 ดร.สุขสถิต มีสถิตย 24
  25. 25. ตัวอยาง InvariantsOOAD 1/2551 ดร.สุขสถิต มีสถิตย 25
  26. 26. องคประกอบของ Contract Contract ขอตกลงในการใชงานอ็อบเจกตของคลาส ประกอบดวย ลายเซ็นโอเปอเรชัน ชื่อคลาส คําอธิบายความรับผิดชอบ Pre-Conditions Post-conditionOOAD 1/2551 ดร.สุขสถิต มีสถิตย 26
  27. 27. ขอกําหนดโอเปอรเรชัน(Operation Specification) เหตุการณ (Events) ที่ทําใหโอเปอรเรชันทํางาน การสงผานเมสเสจ ขอกําหนดอัลกอริทึม (Algorithm specification) เขียนแบบโครงสราง ซูโดโคด (Pseudocode) ยูเอ็มแอลแอคทิวตี้ไดอะแกรม ิOOAD 1/2551 ดร.สุขสถิต มีสถิตย 27
  28. 28. Revised CD Selections ClassDiagramOOAD 1/2551 ดร.สุขสถิต มีสถิตย 28

×