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
ChapterChapter 1 133หลกการและ หลกการและ Diagram Diagram
ทใชใน ทใชใน Object-Object-Oriented DesignOriented Design
จดประสงค 1. เพอใหนกศกษาเขาใจกระบวนการ Refinement
2. เพอใหนกศกษาไดเขาใจบทบาทและความสำาคญของ Refinement ทมตอ
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 กจะมผลกระทบตอกนและกนเสมอ
ขอเตอนใจทตองคำานงไวเสมอในการทำา 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 ของคอมพวเตอร ) เปนตน
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 ได กใหทำาในขนตอนน
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 มตวตนใน
คอมพวเตอร
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 เปลยนแปลง
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 เปนผเรยน เปนตน
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 หนงเสมอ
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 ดวย
3. ในกจกรรมทเกดขนจาก Class ใด Class หนงนน พยายามระบวา Class นนๆ จะมอายอยในชวง
เวลาใดบาง ซงสญลกษณการแสดงชวงชวตนนทำาไดโดยการเพมเตมภาพสเหลยมผนผาทมความกวางพอ
ประมาณแตความยาวเทากบระยะหางระหวางเสนกจกรรมเสนแรกทเขาหรอออกจาก Class ถงเสนสดทายทมเสนกจกรรมเขาหรอออกจาก Class ซงสญลกษณนจะวาง
อยบนเสนแสดงการเดนไปของเวลา (เสนประ ) ใน Sequence Diagram สญลกษณสเหลยมทใชแสดงชวงชวตนจะมสวนชวยใหผทจะพฒนาระบบ (ซงอาจไมใช
ผออกแบบ ) ทราบไดวาควรทจะสราง Object จาก Class หรอทำาลาย Objects ณ ชวงเวลาใดบางเพอให Objects ทสรางมาดำาเนนกจกรรมตางๆ ของระบบตอ
ไปได
4. หากมการคำานวณหรอสงคา Parameter หรอคาของ Attributes ใหเพมภาพการสงขอมลหรอการคำานวณขอมลลงใน Sequence Diagram ดวย
13.5 State Diagram Refinement มหลกการดงน
1. ตรวจสอบ State Diagram เดมวามความละเอยดพอหรอไม ถาไมใหเพมเตมรายละเอยดลงใน State Diagram เดมใหสมบรณทสดเทาทจะทำาได
เพราะ State Diagram ยงมความละเอยดเทาใด การสราง Program กจะยงสะดวกยงขนเทานน2. เพมเตม State Diagram ของ Function ท
เกดใหมและของ function ของ Class ทเกดขนใหม
13.6 ตวอยางการทำา Refinementตวอยางการทำา Refinement ของ Use
Case Diagram ของระบบพฒนาขอมลขององคกรภาครฐDiagram
จาก OOA
นกศกษา
บคคลภายนอก
นกวเคราะหระบบ
1 นำาขอมลเขา
3 นำาเสนอขอมล
2 วเคราะหขอมล
4 บรโภคขอมล
รป Use Case Diagram ของระบบพฒนาขอมลขององคกรภาครฐ
จาก 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.
นอกจากนยงพบวา ทง Actor ผปอนขอมลและ Actor ผวเคราะหขอมลตางกเปนผทอยในองคกรภาค
รฐเหมอนกน เราสามารถสรปไดวา Actor ทงสองประเภทนเปนเจาพนกงาน ดงนนจงสามารถใช
Generalization เพออธบายความสมพนธน การปรบเปลยนในลกษณะนยดตามกฎขอ 2 ในหวขอ 13.
2
Diagram ทไดจากการทำา Refinement (ระบบพฒนาขอมลขององคกรภาครฐ)
เจาพนกงาน
ผปอนขอมล
บคคลภายนอก
นกวเคราะหขอมล
นำาขอมลเขา
นำาเสนอขอมล
บรโภคขอมล
ตรวจสอบสทธในการบรโภคขอมล
วเคราะหขอมล
พจารณา Parameter
ตางๆ
<<extends>>
<<uses>>
รป Use Case Diagram ทผานการทำา Refinement แลว
ตวอยาง การทำา Refinement ของ Class Diagram ของระบบบคลากรในหางสรรพสนคา
Diagram จาก OOA
หางสรรพสนคา-ชอ
-ประเภท-สถานะ+เปดราน()+ปดราน()
แผนก-ชอ-ประเภท-สถานะ+เปดแผนก()+ปดแผนก()
เจาหนาท-ชอ-ตำาแหนง-เงนเดอน+ปฎบตงาน()+ลางาน()
หวหนาแผนก
+จดทำางบกำาไรขาดทน()
รป Class Diagram ของระบบบคลากรในหางสรรพสนคา
Diagram ทไดจากการทำา Refinement กบ Class Diagram (ระบคลากรในหางสรรพสนคา)
หางสรรพสนคา-ชอ
-ประเภท-สถานะ+เปดราน()
+ปดราน()+ตงชอ(ชอ)+บอกชอ()+เปลยนประเภท(ประเภท)+บอกประเภท()+บอกสถานะ()
แผนก-ชอ-ประเภท-สถานะ(เปดหรอปด)+เปด
แผนก()+ปดแผนก()+ตงชอ(ชอ)+บอกชอ()+เปลยนประเภท(ประเภท)+บอกประเภท()+บอกสถานะ()
เจาหนาท-ชอ-ประเภท-สถานะ+เปดราน()
+ปดราน()+ตงชอ(ชอ)+บอกชอ()+เปลยนประเภท(ประเภท)+บอกประเภท()+บอกสถานะ()
1..n
1..n
1..1
ทำางานใน
หวหนาแผนก
+จดทำางบกำาไรขาดทน()
งบกำาไรขาดทน-ปของงบ
-ยอดคงคาง+จดทำางบ(ป,ยอดคงคาง)+แกไขงบ(ป,ยอดคงคาง)+ดราลละเอยดของงบ(ป)
1..1
1..n
จดทำา
รป Class Diagram ทผานการทำา Refinement แลว
หมายเหต คำาทเขยนดวยอกษรตวเอยง
และเขม คอสวนทเพมเขาไป
ตวอยาง การทำา Refinement ของ Sequence Diagram ของระบบขายนำาอดลมอตโนมต
Diagram จาก OOA
:ตขายนำาอดลมอตโนมต
:เครองรบเงน
:เครองเกบนำาผลไม
:ชองปลอยนำาผลไม
Customer
หยอดเหรยญและเลอกประเภทนำาอดลม()
รบเงน() ปลอยนำา
อดลม()ลดจำานวนนำาในต()[ใหเงนมา
เกน] ทอนเงน()
รป Sequence Diagram ของระบบขายนำาอดลมอตโนมต
Diagram ทไดจากการทำา Refinement กบ Sequence Diagram (ระบบขายนำาอดลมอตโนมต)
:ตขายนำาอดลมอตโนมต
:แผงหนาปด
:เครองรบเงน
:เครองเกบนำาผลไม
:ชองปลอยนำาผลไม
Customer
หยอดเหรยญ() T=เลอกประเภทนำา
อดลม()ขายนำา(T)
P=คดเงน(T)
เกบเงน(PP)
ปลอยนำาอดลม(1) ลดจำานวนนำา
อดลม(1)
[มจำานวนเงนทใหมาเกน] ทอนเงน(PP-P)
รป Sequence Diagram ทผานการทำา Refinement แลว
หมายเหต รปสเหลยมใสทวางไวบนเสนแสดงเวลา (เสนประ )หมายถงชวงเวลาท Object ของ Class นนๆ ยง Active อย
ตวอยาง การทำา 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
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 แลว