SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
หนวยที่ 7
              การออกแบบคลาส
               (Class Design)


OOAD 1/2551        ดร.สุขสถิต มีสถิตย   1
วัตถุประสงค
เพื่อใหผูเรียนสามารถ
    กําหนด วางโครงสรางใหม และเพิมประสิทธิภาพการ
                                  ่
    ออกแบบอ็อบเจกตได
    กําหนดการใชซ้ําองคประกอบทีมอยูแลวได
                                ่ ี
    กําหนด constraint และ contract ได
    สรางขอกําหนดโอเปอเรชันได



OOAD 1/2551              ดร.สุขสถิต มีสถิตย        2
การออกแบบรายละเอียด
(Detailed Design)
    ออกแบบ
      การรับขอมูล (inputs)
      การแสดงผลขอมูล (outputs)
      กระบวนการทํางาน (processes)
      โครงสรางแฟมขอมูล หรือฐานขอมูล (file or data
      structures)
    กระทําในรูปการออกแบบคลาสและการปฏิสมพันธั
    ระหวางคลาส



OOAD 1/2551             ดร.สุขสถิต มีสถิตย             3
การออกแบบคลาส (Class Design)
    อินพุต
          ขอกําหนดความตองการ (รวมทั้งสภาพแวดลอมในการอิมพ
          ลิเมนต (implementation environment))
          แบบจําลองการวิเคราะห (คลาส ซีเคว็น คอมมิวนิเคชัน
          สเตทแมทชีนไดอะแกรม)
    เอาทพุต
          แบบจําลองการออกแบบ (ไดอะแกรม และขอกําหนดตางๆ)




OOAD 1/2551                  ดร.สุขสถิต มีสถิตย              4
คลาสไดอะแกรมสําหรับการวิเคราะห
และการออกแบบ




              คลาสไดอะแกรมสําหรับ                    คลาสไดอะแกรมสําหรับการ
              การวิเคราะห                           ออกแบบ

       แบบจําลองแนวคิดของระบบ                        ระบบจะถูกสรางอยางไร

                      สัญลักษณเดียวกัน แตตางมุมมองกัน

OOAD 1/2551                    ดร.สุขสถิต มีสถิตย                           5
สภาพแวดลอมในการอิมพลิเมนต
(implementation environment)
ปจจัย
   ระบบปฏิบติการ
             ั
   ภาษาโปรแกรม
   ระบบจัดการฐานขอมูล
   ระบบจัดการสวนติดตอผูใช
   กลไกในการรวมระบบ
   ไลบรารีสําหรับใชงานซ้ํา
   ความตองการที่ไมเปนฟงกชน
                              ั
   กระบวนการพัฒนา

OOAD 1/2551             ดร.สุขสถิต มีสถิตย   6
ความเกียวพันระหวางโมดูล (Coupling)
       ่
   การขึ้นตอกัน หรือความเกียวของระหวางโมดูล (คลาส
                            ่
   อ็อบเจกตและ โอเปอเรชัน)
   Interaction coupling
         ความเกี่ยวพันระหวางโอเปอเรชันและอ็อบเจกตผานการสงผาน
         เมสเสจ
   Inheritance coupling
         ความเกี่ยวพันระหวางคลาสในลําดับชันการสืบทอดคุณสมบัติ
                                           ้




OOAD 1/2551                   ดร.สุขสถิต มีสถิตย              7
Interaction coupling
    ควรจํากัดใหมนอย
                 ี 
    โดย
          จํากัดจํานวนเมสเสจ
          จํากัดจํานวนพารามิเตอร
          รูปแบบของพารามิเตอร




OOAD 1/2551                    ดร.สุขสถิต มีสถิตย   8
Interaction coupling
ระดับ               ชนิด                                   คําอธิบาย

   ดี     ไมมี coupling โดยตรง   โอเปอเรชันไมมการเรียกใชกัน
                                                ี

          Data                    โอเปอเรชันสงผานตัวแปรไปยังโอเปอเรชันที่ถกเรียก
                                                                            ู
                                  ถาเปนตัวแปรผสมจะใชอ็อบเจกตท้งตัวในการทํางาน
                                                                  ั

          Stamp                   โอเปอเรชันสงผานอ็อบเจกตไปยังโอเปอเรชันทีถูกเรียก
                                                                             ่
                                  ซึ่งใชแคบางสวนของอ็อบเจกต

          Control                 โอเปอเรชันสงผานตัวแปรควบคุม ซึ่งคาจะใชในการ
                                  ควบคุมการทํางานของโอเปอเรชันที่ถูกเรียก

          Common หรือ Global      โอเปอเรชันใชขอมูลโกลบอลซึ่งอยูภายนอกอ็อบเจกต
                                                                
  แย     Content หรือ            โอเปอเรชันของอ็อบเจกตอางถึงภายในของอีกอ็อบ
          Pathological            เจกตได

OOAD 1/2551                          ดร.สุขสถิต มีสถิตย                            9
ความเกียวพันภายในโมดูล (Cohesion)
       ่
     หมายถึงความเปนหนึงเดียวของโมดูลในระบบ
                         ่
     คลาสหรืออ็อบเจกตควรแสดงสิงๆ เดียว และโอเปอเร
                                ่
     ชันทํางานอยางเดียวเทานัน
                              ้
     Operation cohesion
              ความเกี่ยวพันภายในโอเปอเรชัน
              ควรใหมี functional cohesion


          โอเปอเรชันหนึ่งทํางานเพียงงาน (function) เดียว


OOAD 1/2551                      ดร.สุขสถิต มีสถิตย       10
ความเกียวพันภายในโมดูล (Cohesion)
       ่
    Class cohesion
          ความเกี่ยวพันระหวางแอททริบิวและโอเปอเรชันของคลาส
          คลาสควรแสดงสิ่งๆ เดียว แอททริบิวและโอเปอเรชันทุกตัวที่
          อยูภายในคลาสตองเปนตัวทีคลาสตองการใชในการแสดงสิ่ง
                                    ่
          สิ่งนัน
                ้
    Generalization/Specialization cohesion
          ความสมเหตุสมผลในลําดับชันการสืบทอดคุณสมบัติ
                                  ้




OOAD 1/2551                   ดร.สุขสถิต มีสถิตย             11
Cohesion และ Coupling
หลักการออกแบบทัวไปคือ
                  ่
 ควรใหมีความเกี่ยวพันภายในโมดูล (Cohesion) มาก
 ควรใหมีความเกี่ยวพันระหวางโมดูล (Coupling) นอย




OOAD 1/2551           ดร.สุขสถิต มีสถิตย            12
กิจกรรมในการออกแบบคลาส
    สรางขอกําหนดของคลาส (class specification)
    วางแผนการใชงานซ้ํา
    ปรับโครงสรางที่ออกแบบ
    เพิ่มประสิทธิภาพในการออกแบบ
    สรางขอกําหนดของโอเปอรเรชัน (operation
    specification)
    ปรับปรุง ซีเคว็น คอมมิวนิเคชัน
    สเตทแมทชีนไดอะแกรม



OOAD 1/2551             ดร.สุขสถิต มีสถิตย       13
สรางขอกําหนดของคลาส
 1. ตรวจสอบวาคลาสจําเปนและความสามารถเพียงพอตอ
    การทํางาน
 2. กําหนดรูปแบบของแอททริบิว
 3. กําหนดรูปแบบของโอเปอเรชัน
 4. กําหนดการมองเห็น (visibility) ของแอททริบิวและโอ
    เปอเรชัน
 5. กําหนด constraints ที่ตองรักษาโดย objects




OOAD 1/2551           ดร.สุขสถิต มีสถิตย        14
ขอกําหนดของคลาส
(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
ขอกําหนดของคลาส
    ลายเซ็น (Signature) ของโอเปอเรชัน
          ชื่อโอเปอเรชัน จํานวนและชนิดของพารามิเตอรทรบ และ
                                                     ี่ ั
          ชนิดของคาที่สงคืนถามี
                        
          Syntax
              Operation name ‘(’ parameter-list ‘)’ ‘:’ return-type-
              expression
          เชน
                    credit(amount:Money):Boolean


    Primary operations
          constructor, destructor, get และ set โอเปอเรชัน

OOAD 1/2551                        ดร.สุขสถิต มีสถิตย                 16
ขอกําหนดของคลาส
    กําหนดการมองเห็น (visibility) แอททริบวและโอเปอเรชัน
                                         ิ
   สัญลักษณ      การมองเห็น   ความหมาย

          +       Public       เขาถึงไดโดยตรงโดยอ็อบเจกตของคลาสใดๆ

              -   Private      ใชไดโดยอ็อบเจกตของคลาสที่เปนเจาของ



          #       Protected    ใชไดโดยอ็อบเจกตของคลาสที่เปนเจาของ
                               หรือคลาสลูกหลาน

          ~       Package      เขาถึงไดโดยตรงโดยอ็อบเจกตของคลาสใดที่
                               อยูในแพคเก็จเดียวกัน

OOAD 1/2551                      ดร.สุขสถิต มีสถิตย                      17
วางแผนการใชงานซ้ํา
    รูปแบบการออกแบบ (Design patterns)
          แนวทางการจัดกลุมอ็อบเจกตที่ทํางานรวมกัน ที่มี
          ประโยชนในการแกปญหาที่มกเกิดขึ้น
                                   ั
    เฟรมเวิรค (Frameworks)
          ชุดของคลาสที่อิมพลิเมนตแลว ซึ่งสามารถนํามาใชใน
          การอิมพลิเมนตแอพพลิเคชัน
    ไลบรารี (Libraries)
          ชุดของคลาสที่อิมพลิเมนตแลว ที่ออกแบบมาเพื่อการใช
          ซ้ํา (reuse)
    คอมโพเนนต (components)
          สวนของซอฟตแวรที่สามารถตอเขากับระบบเพื่อใชงาน
          ฟงกชันเฉพาะทีระบบตองการ
                         ่
OOAD 1/2551                     ดร.สุขสถิต มีสถิตย             18
ปรับโครงสรางการออกแบบใหม
(Restructuring the Design)
    แฟคเตอรริ่ง (Factoring)
          การแยกโอเปอเรชัน หรือคลาส ออกเปนโอเปอเรชัน หรือ
          คลาสใหม
    การออกแบบการอิมพลีเมนตความสัมพันธ
          ออกแบบการอิมพลีเมนตความสัมพันธแบบ association
          และ aggregation
    ตรวจสอบ inheritance relationships เพื่อใหแนใจวา
    ใชอยางเหมาะสม




OOAD 1/2551                  ดร.สุขสถิต มีสถิตย             19
การออกแบบ association
     ขั้นตอน
              กําหนดทิศทางความสัมพันธ
              กําหนดแอททริบิวใหมใหคลาสเพื่อแสดงการเชื่อมโยง
     Association แบบ One-to-one
              แอททริบิวใหมใชเก็บ identifier ของอ็อบเจกตของคลาสที่
              เกี่ยวของ
     Association แบบ One-to-many
              กําหนดแอททริบิวที่เปนอารเรยเพื่อเก็บ identifier ของอ็อบเจกต
              ทั้งหมดที่เกี่ยวของ
              สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่เกี่ยวของ และ
              กําหนดใหมีแอททริบิวที่เปนอ็อบเจกตของ collection class


OOAD 1/2551                             ดร.สุขสถิต มีสถิตย                       20
การออกแบบ association
     Association แบบ many-to-many
              สราง collection class เพื่อจัดการกลุมอ็อบเจกตที่
              เกี่ยวของ และกําหนดใหมีแอททริบิวที่เปนอ็อบเจกตของ
              collection class




OOAD 1/2551                       ดร.สุขสถิต มีสถิตย                 21
การเพิ่มประสิทธิภาพในการ
ออกแบบ
    ทบทวนเสนทางเขาถึงระหวางอองเจ็ค
          ลดความยาวของเสนทาง โดยเพิ่มแอททริบิวเพื่อเชื่อมตอ
          ตรง
    ทบทวนแอททริบิวของแตละคลาส
          ถามีเมธอดที่อานและปรับปรุงแอททริบิว และอ็อบเจกตของ
          คลาสเดียวเทานันที่ใชเมธอดนี้
                           ้
          ควรยายแอททริบวนันไปไวในคลาสที่แรกใชแทน
                             ิ ้
    ตรวจสอบลําดับการเอ็กซคิวทสเตทเมนต (execution
    of statements)
    สรางดีไรวแอททริบวเพื่อลดเวลาการคํานวณ
                      ิ
OOAD 1/2551                   ดร.สุขสถิต มีสถิตย                 22
ปรับ 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
ประเภทของ Constraints
    Pre-Conditions
          ขอบังคับทีตองเปนจริง เพื่อใหเมธอดทํางานได
                     ่
    Post-condition
          ขอบังคับทีตองเปนจริง หลังจากที่เมธอดทํางานแลว
                     ่
    Invariants
          ขอบังคับทีตองเปนจริงเสมอสําหรับทุกอ็อบเจกตของคลาส
                     ่




OOAD 1/2551                     ดร.สุขสถิต มีสถิตย               24
ตัวอยาง Invariants




OOAD 1/2551    ดร.สุขสถิต มีสถิตย   25
องคประกอบของ Contract
    Contract ขอตกลงในการใชงานอ็อบเจกตของคลาส
    ประกอบดวย
          ลายเซ็นโอเปอเรชัน
          ชื่อคลาส
          คําอธิบายความรับผิดชอบ
          Pre-Conditions
          Post-condition




OOAD 1/2551                  ดร.สุขสถิต มีสถิตย   26
ขอกําหนดโอเปอรเรชัน
(Operation Specification)
    เหตุการณ (Events) ที่ทําใหโอเปอรเรชันทํางาน
    การสงผานเมสเสจ
    ขอกําหนดอัลกอริทึม (Algorithm specification)
          เขียนแบบโครงสราง
          ซูโดโคด (Pseudocode)
          ยูเอ็มแอลแอคทิวตี้ไดอะแกรม
                         ิ




OOAD 1/2551                   ดร.สุขสถิต มีสถิตย    27
Revised CD Selections Class
Diagram




OOAD 1/2551    ดร.สุขสถิต มีสถิตย   28

Weitere ähnliche Inhalte

Andere mochten auch (6)

56456456
5645645656456456
56456456
 
D1 overview
D1 overviewD1 overview
D1 overview
 
546345
546345546345
546345
 
4563456
45634564563456
4563456
 
Chapter004
Chapter004Chapter004
Chapter004
 
Chapter005
Chapter005Chapter005
Chapter005
 

Ähnlich wie Unit07

Dc282 interaction
Dc282 interactionDc282 interaction
Dc282 interactionajpeerawich
 
Chapter 12.2
Chapter 12.2Chapter 12.2
Chapter 12.2patcha535
 
Presentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัด
Presentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัดPresentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัด
Presentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัดNopporn Thepsithar
 
Chapter8การออกแบบข้อมูล
Chapter8การออกแบบข้อมูลChapter8การออกแบบข้อมูล
Chapter8การออกแบบข้อมูลsaisuneesaibit
 
ใบงานที่6
ใบงานที่6ใบงานที่6
ใบงานที่6Mintra Han-kla
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูลOrapan Chamnan
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลIsareeya Keatwuttikan
 
บทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูล
บทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูลบทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูล
บทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูลniwat50
 
เทคโนโลยีสารสนเทศ-work3-23
เทคโนโลยีสารสนเทศ-work3-23เทคโนโลยีสารสนเทศ-work3-23
เทคโนโลยีสารสนเทศ-work3-23Ilhyna
 

Ähnlich wie Unit07 (20)

Unit04
Unit04Unit04
Unit04
 
Unit03
Unit03Unit03
Unit03
 
Dc282 interaction
Dc282 interactionDc282 interaction
Dc282 interaction
 
Unit01
Unit01Unit01
Unit01
 
Chapter 12.2
Chapter 12.2Chapter 12.2
Chapter 12.2
 
Mis_hrcc
Mis_hrccMis_hrcc
Mis_hrcc
 
Database1
Database1Database1
Database1
 
Presentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัด
Presentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัดPresentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัด
Presentation 2012-11-13 การพัฒนาประสิทธิภาพด้านโลจิสติกส์ด้วยตัวชี้วัด
 
Chapter8การออกแบบข้อมูล
Chapter8การออกแบบข้อมูลChapter8การออกแบบข้อมูล
Chapter8การออกแบบข้อมูล
 
Unit02
Unit02Unit02
Unit02
 
ใบงานที่6
ใบงานที่6ใบงานที่6
ใบงานที่6
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 
11
1111
11
 
Chapter008
Chapter008Chapter008
Chapter008
 
บท1
บท1บท1
บท1
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
 
บท1
บท1บท1
บท1
 
บทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูล
บทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูลบทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูล
บทที่1ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล และหลักการออกแบบฐานข้อมูล
 
บทที่1
บทที่1บทที่1
บทที่1
 
เทคโนโลยีสารสนเทศ-work3-23
เทคโนโลยีสารสนเทศ-work3-23เทคโนโลยีสารสนเทศ-work3-23
เทคโนโลยีสารสนเทศ-work3-23
 

Mehr von TaiMe Sakdisri (13)

Thai hci
Thai hciThai hci
Thai hci
 
Original 02 hci_principles
Original 02 hci_principlesOriginal 02 hci_principles
Original 02 hci_principles
 
Original 01 hci_principles
Original 01 hci_principlesOriginal 01 hci_principles
Original 01 hci_principles
 
Email system
Email systemEmail system
Email system
 
Chapter009
Chapter009Chapter009
Chapter009
 
Chapter006 (1)
Chapter006 (1)Chapter006 (1)
Chapter006 (1)
 
Chapter006
Chapter006Chapter006
Chapter006
 
Chapter003
Chapter003Chapter003
Chapter003
 
654569
654569654569
654569
 
Chap1 updated
Chap1 updatedChap1 updated
Chap1 updated
 
546656
546656546656
546656
 
6543456
65434566543456
6543456
 
345635
345635345635
345635
 

Unit07

  • 1. หนวยที่ 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
  • 6. สภาพแวดลอมในการอิมพลิเมนต (implementation environment) ปจจัย ระบบปฏิบติการ ั ภาษาโปรแกรม ระบบจัดการฐานขอมูล ระบบจัดการสวนติดตอผูใช กลไกในการรวมระบบ ไลบรารีสําหรับใชงานซ้ํา ความตองการที่ไมเปนฟงกชน ั กระบวนการพัฒนา OOAD 1/2551 ดร.สุขสถิต มีสถิตย 6
  • 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
  • 12. Cohesion และ Coupling หลักการออกแบบทัวไปคือ ่ ควรใหมีความเกี่ยวพันภายในโมดูล (Cohesion) มาก ควรใหมีความเกี่ยวพันระหวางโมดูล (Coupling) นอย OOAD 1/2551 ดร.สุขสถิต มีสถิตย 12
  • 13. กิจกรรมในการออกแบบคลาส สรางขอกําหนดของคลาส (class specification) วางแผนการใชงานซ้ํา ปรับโครงสรางที่ออกแบบ เพิ่มประสิทธิภาพในการออกแบบ สรางขอกําหนดของโอเปอรเรชัน (operation specification) ปรับปรุง ซีเคว็น คอมมิวนิเคชัน สเตทแมทชีนไดอะแกรม OOAD 1/2551 ดร.สุขสถิต มีสถิตย 13
  • 14. สรางขอกําหนดของคลาส 1. ตรวจสอบวาคลาสจําเปนและความสามารถเพียงพอตอ การทํางาน 2. กําหนดรูปแบบของแอททริบิว 3. กําหนดรูปแบบของโอเปอเรชัน 4. กําหนดการมองเห็น (visibility) ของแอททริบิวและโอ เปอเรชัน 5. กําหนด constraints ที่ตองรักษาโดย objects OOAD 1/2551 ดร.สุขสถิต มีสถิตย 14
  • 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
  • 25. ตัวอยาง Invariants OOAD 1/2551 ดร.สุขสถิต มีสถิตย 25
  • 26. องคประกอบของ Contract Contract ขอตกลงในการใชงานอ็อบเจกตของคลาส ประกอบดวย ลายเซ็นโอเปอเรชัน ชื่อคลาส คําอธิบายความรับผิดชอบ Pre-Conditions Post-condition OOAD 1/2551 ดร.สุขสถิต มีสถิตย 26
  • 27. ขอกําหนดโอเปอรเรชัน (Operation Specification) เหตุการณ (Events) ที่ทําใหโอเปอรเรชันทํางาน การสงผานเมสเสจ ขอกําหนดอัลกอริทึม (Algorithm specification) เขียนแบบโครงสราง ซูโดโคด (Pseudocode) ยูเอ็มแอลแอคทิวตี้ไดอะแกรม ิ OOAD 1/2551 ดร.สุขสถิต มีสถิตย 27
  • 28. Revised CD Selections Class Diagram OOAD 1/2551 ดร.สุขสถิต มีสถิตย 28