22
Chapter Chapter 1 1 3 3 หหหหหหหหหห หหหหหหหหหห Diagram Diagram หหหหหหหห หหหหหหหห Object- Object- Oriented Design Oriented Design

Chapter 1 3 หลักการและ Diagram ที่ใช้ใน Object-Oriented Design

  • Upload
    vlora

  • View
    44

  • Download
    5

Embed Size (px)

DESCRIPTION

Chapter 1 3 หลักการและ Diagram ที่ใช้ใน Object-Oriented Design. จุดประสงค์ 1. เพื่อให้นักศึกษาเข้าใจกระบวนการ Refinement 2. เพื่อ ให้นักศึกษาได้เข้าใจบทบาทและความสำคัญของ Refinement ที่มีต่อ Object-Oriented Design. 13.1 Refinement หัวใจสำคัญของ OOD. - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

ChapterChapter 1 133หลกการและ หลกการและ Diagram Diagram

ทใชใน ทใชใน Object-Object-Oriented DesignOriented Design

Page 2: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

จดประสงค 1. เพอใหนกศกษาเขาใจกระบวนการ Refinement

2. เพอใหนกศกษาไดเขาใจบทบาทและความสำาคญของ Refinement ทมตอ

Object-Oriented Design

Page 3: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

13.1 Refinement หวใจสำาคญของ OOD

Refinement คอกระบวนการ เพมเตมหรอทำาให Diagram ททำาไวแลวในขนตอน Analysis มความเหมาะ

สม และงายตอการนำามาพฒนาเปนระบบงานในเครองคอมพวเตอรไดในทสด การทำา Refinement นนทำาไดกบทกๆ Diagrams ทสรางขนจากขนตอน Analysis ไมวา

จะเปน Use Case Diagram, Class Diagram, Sequence Diagram และ State Diagramสงสำาคญทตองจำาไวเปนหลกการในการทำา

Refinement คอ การทำา Refinement ท Use Case Diagram จะมผลตอการทำา Refinement ของ Class Diagram ในขณะทการทำา Refinement ของ Class

Diagram จะมผลตอการทำา Refinement ของ Sequence Diagram และ State Diagram และการ

ทำา Refinement ระหวาง Sequence และ State Diagram กจะมผลกระทบตอกนและกนเสมอ

Page 4: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

ขอเตอนใจทตองคำานงไวเสมอในการทำา Refinement 2 ขอ

1. ตองทำาเรยงลำาดบจาก Use Case, Class, Sequence และ State Diagram ตามลำาดบ ไมควรขามขนตอน แตการยอนกลบมาทำา Refinement ใน

Diagram ทเคยทำาไปแลวกไมถอวาเปนการผดหลกการแตอยางใด และการยอนกลบกควรจะยอนอยางเปนวงจร

(Use Case -> Class -> Sequence -> State -> Use Case -> Class …)

2. เมอทำา Refinement แลวตองทำาให Diagrams ตางๆ ทเคยทำาไว มคอมพวเตอรมาเกยวของ หรอเอออำานวยตอการทำางานดวยคอมพวเตอร เชน การเพม

Class ของ User Interface เขาไปยง Class Diagram (ซงตามปกตไมจำาเปนตองม หากไมไดทำางานดวยคอมพวเตอร ) และการเพม Function สำาหรบการปอนคาและแสดงคา Attributes ตางๆ ของ Class

เขาไปไวในทกๆ Class Diagram (การปอนคาและการแสดงคา ทำาเพออำานวยความสะดวกในการทำา Input และ

Output ของคอมพวเตอร ) เปนตน

Page 5: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

13.2 Use Case Diagram Refinement ซงมหลกการดงน

1. พจารณาวาแตละ Use Case นนสามารถแยกแยะออกมาเปน Use Case ยอยๆ ไดหรอไม ถาสามารถทำาไดใหแยกแยะ Use Case นนๆ ออกมา

2. สรางความสมพนธระหวาง Use Case เดมและ Use Case ทแยกยอยออกมา จากททำาไวในความสมพนธ

ระหวาง Use Case คอ <<Uses>> หรอ <<Extends>> ใหครบถวน และตองคอยตรวจสอบไมใหม Use Case ใด Use Case หนงทไมมความสมพนธกบ Use Case อน หรอไมมความสมพนธกบ Actor ใด

เลย (Use Case ทอยโดดๆ ) ในขณะเดยวกน หากสามารถแยกแยะ Actor หนงตวใหเปนประเภทตางๆ ทละเอยดขน หรอการจดประเภทของ Actor ใหมลกษณะ

เปนจำาพวกเดยวกนโดยอาศยหลกการ Generalization ได กใหทำาในขนตอนน

Page 6: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

3. สราง Use Case List เพอแสดงรายการ Use Case ทมทงหมด ทงกอนและหลงจากการทำา

Refinement 4. ใน Use Case List กอนการทำา Refinement

ให List วาม Class ใดบางอยภายใน Use Case แตละตวโดย Class หนงๆ อาจจะอยใน Use Case มากกวา

1 Use Case กได แตหลกการสำาคญกคอทกๆ Class ตองอยภายใน Use Case ใด Use Case หนงเปนอยางนอย จะตองไมม Class ใดทไมอยใน Use Case ใดเลย แตอยางไรกตามอาจจะยกเวน Class ของ Actor เทานน

ทไมตองอยทใน Use Case ใดเลยกไดในกรณท Problem Domain ไมไดเนนให Actor มตวตนใน

คอมพวเตอร

Page 7: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

13.3 Class Diagram Refinement มหลกการดงน1. ในแตละ Class ใหพจารณาวาม Attributes

ตวใดบางทตองมการรบคาจากภายนอก และ/หรอ มการสงคาของ Attribute นนออกสภายนอก ถามใหเพม Function พรอมทง Parameters ทจำาเปนทงหมดเพอการรบเขา และ/หรอ สงออกคาของ Attribute

เหลานน เขาไปท Class ดวย โดยกำาหนดให Function ตางๆ ทเพมเขามาม Visibility เปน Public (มองเหนไดจากภายนอก ) ทงหมด เพราะ Function เหลานตอง

ถกเรยกใชโดย Object อนเสมอ

2. จากหลกการขอ 1 ขอพงระวงในการเพม Function เพอการนำาเขา/สงออก คาของ Attributes

นนคอ เรองของ Subclass และ SuperClass การเพมเตมใดๆ ลงไปยง SuperClass จะหมายถงการเพมเตมลงใน Subclass แตการเพมเตมใน Subclass จะไมม

ผลกระทบให Superclass เปลยนแปลง

Page 8: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

3. ทกๆ Attributes และ Functions ในแตละ Class ตองม Visibility (Private, Protected หรอ

Public) ทแนนอน จะตองไมม Attributes และ Functions ใดทไมม Privacy ในกรณทยงไมแนใจวา Privacy ของ Attributes หรอ Functions นนเปนอะไร ใหยดหลกการตอไปน หากเปน Attributes ใหตง Privacy เปน Private ไวกอน แตหากเปน Function ใหตง Visibility เปน Public ไวกอน ถาม Attributes ใดทม Visibility เปน Private ซงจำาเปนตองมการสงคา

ของ Attributes เขา/ออก ใหทำาตามขอ 1

4. ทกๆ Aggregation และ Association จะตองม Cardinality กำากบเสมอ และตองกำากบทศทาง

ของ Association ใหชดเจน อาจจะระบ Role ของ Class ทม Association ตอกนดวยกได ตวอยางเชน ใน Association คร-นกเรยน Role ของครคอผสอน

ในขณะทนกเรยนม Role เปนผเรยน เปนตน

Page 9: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

5. พจารณา Problem domain โดยละเอยดวา หากใชคอมพวเตอรเขามารวมทำางาน จำาเปนตองม Class

ใดเพมเขามาบาง ตวอยางทดของ Class เหลานคอ Class ของ User Interface (GUI)

6. หลงจากเสรจสนการทำา Refinement แลว ใหพจารณาวา Class ทเพมขนนนอยใน Use Case ใดใหระบ Class ตางๆ ทงทมอยเดมและทเพมเขามาวาอยใน

Use Case ใดบางลงใน Use Case List หลงจากการทำา Refinement เพอเปนการตรวจสอบวา กอนและหลงทำา

Refinement แลว Class ตางๆ อยใน Use Case ทถกตองหรอไม และทกๆ Class จะตองมอยใน Use Case ใด

Use Case หนงเสมอ

Page 10: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

13.4 Sequence Diagram Refinement มหลกการดงน

1. จาก Class Diagram ทไดทำา Refinement แลว ใหพจารณาวาม Function ใดใน Class ใดบางทยงไมปรากฏใน Sequence Diagram ใหพจารณาหา

ตำาแหนงของ Function นนๆ ใน Sequence Diagram หากหาไมได ใหทำาเครองหมายใดๆ ไวเพอ

ทำาการลบทงภายหลง2. นำา Class ทเปนสวนของ User Interface (ทเพมเขามาใน Class Diagram) มาเพมเตมลงใน

ทกๆ Sequence Diagram ทม Actor มาเกยวของ แลวสรางลกศรแสดงกจกรรมเพอสราง Sequence Diagram ทสมบรณโดยพยายามนำา Function ทมรอยแลวใน User Interface หรอ Class อนๆ มาสราง

เปนลกศร แตหากหาไมได ใหเพม Function ใหมๆ เขาไป ในขณะเดยวกนตองเขาไปเพมใน Class

Diagram ดวย

Page 11: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

3. ในกจกรรมทเกดขนจาก Class ใด Class หนงนน พยายามระบวา Class นนๆ จะมอายอยในชวง

เวลาใดบาง ซงสญลกษณการแสดงชวงชวตนนทำาไดโดยการเพมเตมภาพสเหลยมผนผาทมความกวางพอ

ประมาณแตความยาวเทากบระยะหางระหวางเสนกจกรรมเสนแรกทเขาหรอออกจาก Class ถงเสนสดทายทมเสนกจกรรมเขาหรอออกจาก Class ซงสญลกษณนจะวาง

อยบนเสนแสดงการเดนไปของเวลา (เสนประ ) ใน Sequence Diagram สญลกษณสเหลยมทใชแสดงชวงชวตนจะมสวนชวยใหผทจะพฒนาระบบ (ซงอาจไมใช

ผออกแบบ ) ทราบไดวาควรทจะสราง Object จาก Class หรอทำาลาย Objects ณ ชวงเวลาใดบางเพอให Objects ทสรางมาดำาเนนกจกรรมตางๆ ของระบบตอ

ไปได

Page 12: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

4. หากมการคำานวณหรอสงคา Parameter หรอคาของ Attributes ใหเพมภาพการสงขอมลหรอการคำานวณขอมลลงใน Sequence Diagram ดวย

13.5 State Diagram Refinement มหลกการดงน

1. ตรวจสอบ State Diagram เดมวามความละเอยดพอหรอไม ถาไมใหเพมเตมรายละเอยดลงใน State Diagram เดมใหสมบรณทสดเทาทจะทำาได

เพราะ State Diagram ยงมความละเอยดเทาใด การสราง Program กจะยงสะดวกยงขนเทานน2. เพมเตม State Diagram ของ Function ท

เกดใหมและของ function ของ Class ทเกดขนใหม

Page 13: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

13.6 ตวอยางการทำา Refinementตวอยางการทำา Refinement ของ Use

Case Diagram ของระบบพฒนาขอมลขององคกรภาครฐDiagram

จาก OOA

นกศกษา

บคคลภายนอก

นกวเคราะหระบบ

1 นำาขอมลเขา

3 นำาเสนอขอมล

2 วเคราะหขอมล

4 บรโภคขอมล

รป Use Case Diagram ของระบบพฒนาขอมลขององคกรภาครฐ

Page 14: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

จาก Use Case Diagram ของระบบพฒนาขอมลขององคกรภาครฐ ประกอบไปดวย Use Case

ทงหมด 4 Use Case คอ (1)การนำาขอมลเขา (2)การวเคราะหขอมล (3)การนำาเสนอขอมล และ (4)การ

บรโภคขอมล โดยม 3 Actor คอ ผปอนขอมล บคคลภายนอก และนกวเคราะหขอมลดวยหลกการการทำา Refinement กบ Use

Case Diagram สามารถปรบ Use Case Diagram ไดโดยการใหรายละเอยดกบบาง Use

Case เพมมากขน เชน(1) เพม Use Case “ตรวจสอบสทธในการบรโภคขอมล เพอใชในการ ” extends กบ Use Case

บรโภคขอมล(2) เพม Use Case “การพจารณา Parameter ตางๆ เพอให ” Use Case “วเคราะห

ขอมล ไดเรยกใช ” (uses) ซงการปรบเปลยนในลกษณะนระบไวใน กฎขอ 2 ในหวขอ 132.

Page 15: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

นอกจากนยงพบวา ทง Actor ผปอนขอมลและ Actor ผวเคราะหขอมลตางกเปนผทอยในองคกรภาค

รฐเหมอนกน เราสามารถสรปไดวา Actor ทงสองประเภทนเปนเจาพนกงาน ดงนนจงสามารถใช

Generalization เพออธบายความสมพนธน การปรบเปลยนในลกษณะนยดตามกฎขอ 2 ในหวขอ 13.

2

Page 16: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

Diagram ทไดจากการทำา Refinement (ระบบพฒนาขอมลขององคกรภาครฐ)

เจาพนกงาน

ผปอนขอมล

บคคลภายนอก

นกวเคราะหขอมล

นำาขอมลเขา

นำาเสนอขอมล

บรโภคขอมล

ตรวจสอบสทธในการบรโภคขอมล

วเคราะหขอมล

พจารณา Parameter

ตางๆ

<<extends>>

<<uses>>

รป Use Case Diagram ทผานการทำา Refinement แลว

Page 17: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

ตวอยาง การทำา Refinement ของ Class Diagram ของระบบบคลากรในหางสรรพสนคา

Diagram จาก OOA

หางสรรพสนคา-ชอ

-ประเภท-สถานะ+เปดราน()+ปดราน()

แผนก-ชอ-ประเภท-สถานะ+เปดแผนก()+ปดแผนก()

เจาหนาท-ชอ-ตำาแหนง-เงนเดอน+ปฎบตงาน()+ลางาน()

หวหนาแผนก

+จดทำางบกำาไรขาดทน()

รป Class Diagram ของระบบบคลากรในหางสรรพสนคา

Page 18: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

Diagram ทไดจากการทำา Refinement กบ Class Diagram (ระบคลากรในหางสรรพสนคา)

หางสรรพสนคา-ชอ

-ประเภท-สถานะ+เปดราน()

+ปดราน()+ตงชอ(ชอ)+บอกชอ()+เปลยนประเภท(ประเภท)+บอกประเภท()+บอกสถานะ()

แผนก-ชอ-ประเภท-สถานะ(เปดหรอปด)+เปด

แผนก()+ปดแผนก()+ตงชอ(ชอ)+บอกชอ()+เปลยนประเภท(ประเภท)+บอกประเภท()+บอกสถานะ()

เจาหนาท-ชอ-ประเภท-สถานะ+เปดราน()

+ปดราน()+ตงชอ(ชอ)+บอกชอ()+เปลยนประเภท(ประเภท)+บอกประเภท()+บอกสถานะ()

1..n

1..n

1..1

ทำางานใน

หวหนาแผนก

+จดทำางบกำาไรขาดทน()

งบกำาไรขาดทน-ปของงบ

-ยอดคงคาง+จดทำางบ(ป,ยอดคงคาง)+แกไขงบ(ป,ยอดคงคาง)+ดราลละเอยดของงบ(ป)

1..1

1..n

จดทำา

รป Class Diagram ทผานการทำา Refinement แลว

หมายเหต คำาทเขยนดวยอกษรตวเอยง

และเขม คอสวนทเพมเขาไป

Page 19: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

ตวอยาง การทำา Refinement ของ Sequence Diagram ของระบบขายนำาอดลมอตโนมต

Diagram จาก OOA

:ตขายนำาอดลมอตโนมต

:เครองรบเงน

:เครองเกบนำาผลไม

:ชองปลอยนำาผลไม

Customer

หยอดเหรยญและเลอกประเภทนำาอดลม()

รบเงน() ปลอยนำา

อดลม()ลดจำานวนนำาในต()[ใหเงนมา

เกน] ทอนเงน()

รป Sequence Diagram ของระบบขายนำาอดลมอตโนมต

Page 20: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

Diagram ทไดจากการทำา Refinement กบ Sequence Diagram (ระบบขายนำาอดลมอตโนมต)

:ตขายนำาอดลมอตโนมต

:แผงหนาปด

:เครองรบเงน

:เครองเกบนำาผลไม

:ชองปลอยนำาผลไม

Customer

หยอดเหรยญ() T=เลอกประเภทนำา

อดลม()ขายนำา(T)

P=คดเงน(T)

เกบเงน(PP)

ปลอยนำาอดลม(1) ลดจำานวนนำา

อดลม(1)

[มจำานวนเงนทใหมาเกน] ทอนเงน(PP-P)

รป Sequence Diagram ทผานการทำา Refinement แลว

หมายเหต รปสเหลยมใสทวางไวบนเสนแสดงเวลา (เสนประ )หมายถงชวงเวลาท Object ของ Class นนๆ ยง Active อย

Page 21: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

ตวอยาง การทำา Refinement ของ State Diagram ของการทำางานของลฟต

Diagram จาก OOA

Idle Move Up

Move Down

Reach

/Turn On

/Turn Off

Want Up/ Go Up

Desired Floor reached

Want Down/ Go Down

Floor <> 1 &Desired Floor

Reached

Floor > 1 / Go DownFloor = 1

รป State Diagram

Page 22: Chapter  1 3 หลักการและ  Diagram  ที่ใช้ใน  Object-Oriented Design

Diagram ทไดจากการทำา Refinement กบ State Diagram

Idle Move Up

Move Down

Reach

/Turn On

/Turn Off

Want Up/ Go Up

Desired Floor reached

Want Down/ Go Down

Floor <> 1 &Desired Floor

Reached

Floor > 1 / Go DownFloor = 1

entry/floor=1

do/floor = floor + 1(floor=Max)/Stop

entry/Stop(floor=1)/

Stop

do/floor = floor - 1

รป State Diagram ทผานการทำา Refinement แลว