Object-Oriented System Analysis and Design using UML
Collaboration Diagram เป็นแผนภาพแสดงการปฏิสัมพันธ์ (Interaction) ระหว่างคลาสหรืออ็อบเจ็ตลำดับขั้นตอนการทำงาน แต่จะไม่แสดงถึงแกนเวลา คือจะเน้นการอธิบายถึงโครงสร้างของอ็อบเจ็ตว่ามีการรับส่งข้อความ (message) กันอย่างไร หรืออีกนัยคือการแสดงถึงความร่วมมือกันของคลาสหรืออ็อบเจ็ตให้ชัดเจน สามารถแปลง Sequence Diagram ให้เป็น Collaboration Diagram ได้ และในขณะเดียวกันก็สามารถแปลง Collaboration Diagram ให้เป็น Sequence Diagram ได้ด้วยเช่นกัน
ตัวอย่างเครื่องโทรศัพท์
ตัวอย่างเครื่องโทรศัพท์ Use case: Make Phone Call 1. User presses the digit buttons to enter the phone number. 2. For each digit, the display is updated to add the digit to the phone number. 3. For each digit, the dialer generates the corresponding tone and emits it from the speaker. 4. User presses “Send” 5. The “in use” indicator is illuminated on the display 6. The cellular radio establishes a connection to the network. 7. The accumulated digits are sent to the network. 8. The connection is made to the called party.
Collaboration Diagram
Collaboration Diagram สัญลักษณ์ที่ใช้ 1 ข้อความ (Message) พร้อมค่าที่ส่ง 2 ตัวเลขกำกับลำดับข้อความ ซึ่งบอกระดับย่อยของข้อความด้วย จุดและเลขต่อท้าย ของระดับย่อย เช่น 1 1.1 1.2 2 2.1 เป็นต้น 3 การทำซ้ำ * [ ] เช่น 1*:Digit(Code) 1.2*[i=1…n] 4 คำสั่งขนาน || เหตุการณ์ที่เกิดขึ้นพร้อมๆกัน 5 เงื่อนไข [ ] เช่น 1.2 [Project is Active] *[For each worker] 6 หัวลูกศรแสดงทิศทางการไหลของข้อความ
Collaboration Diagram การเขียน Collaboration จะมีรูปแบบเหมือนกันกับ Class Diagramแต่เส้นเชื่อมไม่ใช่ Association แต่เป็นการแสดงข้อความที่เป็นMessage (Procedure Call) ที่บอกลำดับการทำงานระหว่าง Class การเขียน Message จะอยู่ในรูปแบบ Sequence No : Message () เช่นลำดับงานที่ 1 1 : AddCustomer()
Collaboration Diagram : Guard Condition กรณีเป็นการส่ง Message แบบมีเงื่อนไข
Collaboration Diagram : Iteration กรณีมีการทำงานซ้ำๆ
Collaboration Diagram : Reflexive
Collaboration Diagram : Create & Destroy กรณีมีการสร้างและทำลาย Object ในระหว่างการทำงาน
Collaboration Diagram & Sequence Diagram ไม่แสดงถึงแกนเวลาของ Object และ Class เน้นการอธิบายโครงสร้างของ Object หรือ Class ว่ามีการรับส่งข้อความระหว่างกันอย่างไร มองเห็นภาพรวมว่ามีเหตุการณ์ใดบ้างเกิดขึ้นในแต่ละ Object หรือClass
ขั้นตอนการเขียน 1 รวบรวมผลการวิเคราะห์ใน case ที่ต้องการเขียน 3 พิจารณาเหตุการณ์เหล่านั้นสัมพันธ์กับคลาสหรืออ็อบเจ็ตอะไรบ้าง พารามิเตอร์ต่างๆ มีผลอย่างไรต่อคลาสหรืออ็อบเจ็ต มีการทำซ้ำ หรือมีเงื่อนไขอย่างไร 4 เขียนคลาสหรืออ็อบเจ็ต แอคเตอร์ จัดวางลงในตำแหน่งที่เหมาะสม เขียนชื่อกำกับคลาสหรืออ็อบเจ็ต พร้อมขีดเส้นใต้ 5 ลากเส้นของเหตุการณ์ ตามลำดับ ใช้สัญลักษณ์ตามรายละเอียดที่เก็บมาขั้นต้น
ตัวอย่าง Order-Inventory 1. Object 2. Procedure Call (Synchronous) 3. Return 4. Self-reference 5. Sequence No 6. Anonymous Object 7. Comment
ตัวอย่าง Order-Inventory 1. Timeout Event 2. Procedure Call (Asynchronous)
ตัวอย่าง จงเขียน First Draft Class Diagram เพื่ออธิบายความสัมพันธ์ของ ProblemDomain นี้ – ระบบการซื้อตั๋วภาพยนตร์แห่งหนึ่ง โดยโรงภาพยนตร์นั้น มีโรงฉายอยู่ 14โรง และมีการจัดภาพยนตร์เพื่อเข้าฉายในแต่ละโรง เมื่อลูกค้าต้องการซื้อตั๋วภาพยนตร์จะต้องเลือกภาพยนตร์ที่ต้องการ และเวลาฉาย ระบบจะทำการดึงหมายเลขโรงภาพยนตร์เพื่อให้ลูกค้าทำการจองที่นั่ง และออกตั่วภาพยนตร์ให้ จงแปลง Sequence Diagram ของระบบซื้อตั๋วหนัง ให้เป็น CollaborationDiagram
ตัวอย่าง
แบบฝึกหัด
ตัวอย่าง
Collaboration Diagram
บันทึกความสัมพันธ์ของ Dynamic diagram ใน Static Diagram
ตัวอย่าง เครื่องโทรศัพท์
ตัวอย่าง เครื่องโทรศัพท์ (เพิ่มรายละเอียด)
ตัวอย่าง เครื่องโทรศัพท์ (เพิ่มรายละเอียด)
เปลี่ยน Collaboration Diagram เป็น Sequence Diagram
State Chart Diagram เนื่องจาก Object หนึ่งๆ อาจจะมีได้หลายสถานะในช่วงเวลาหนึ่ง ซึ่งการเปลี่ยนสถานะหนึ่งไปยังอีกสถานะหนึ่ง จะต้องมีเหตุการณ์ (Event) ที่ทำให้เกิดการเปลี่ยนสถานะ State Chart Diagram เป็น Model เพื่ออธิบายวงจรชีวิตของ Objectหนึ่ง ๆ สถานะของ Object เมื่อแปลงเป็นโปรแกรมจะเป็นคุณลักษณะของObject (Attribute)
State Chart Diagram : States และ Events กิจกรรมที่เกิดขึ้นใน Object นั้น เกิดจาก 2 สิ่งประกอบกัน คือ สถานะ(State) และ การเปลี่ยนสถานะ (Transition) การเปลี่ยนสถานะจะเกิดขึ้นเมื่อมีเหตุการณ์ (Event) มากระตุ้น
State Chart Diagram : Initial และ Final Initial State เป็นสถานะเริ่มต้นของ Object ในทางโปรแกรม จะหมายถึงการสร้าง Object นั้น Final State เป็นสถานะสิ้นสุดของ Object ในทางโปรแกรม จะหมายถึงการลบ Object นั้น
State Chart Diagram : Events และ Behavior Behavior จะแสดงด้วย Action- expressions – Behavior อาจจะเกิดระหว่างการเปลี่ยนสถานะหรือ – เกิดระหว่างการทำงานภายใน Action นั้น
State Chart Diagram : Automatic Transition เป็นการเปลี่ยนสถานะ โดยไม่มีเหตุการณ์เกิดขึ้น การเปลี่ยนสถานะแบบอัตโนมัติ จะเกิดขึ้นเมื่อมีการทำงานในสถานะนั้นเรียบร้อยแล้ว
State Chart Diagram : State Transition Table การเขียนตารางการเปลี่ยนสถานะจะเหมาะสมสำหรับระบบที่มีขนาดใหญ่ หรือมีความซับซ้อน
State Chart Diagram : Composite States เป็น Action ที่สามารถแบ่งออกเป็น Action ภายในได้
State Chart Diagram : สถานะที่ทำางานพร้อมกัน การทำงานในช่วงเวลาหนึ่งอาจจะมีสถานะมากกว่าหนึ่งสถานะ ที่สามารถเกิดสถานะพร้อมๆ กันได้ และทำงานพร้อมกันได้
State Chart Diagram : ลำาดับการทำงาน ลำดับการทำงานของ Action มีดังนี้ – Action ในขณะเปลี่ยนสถานะมายังสถานะนั้น – Action เริ่มต้นของสถานะ – Action ระหว่างอยู่ในสถานะนั้น – Action ก่อนเปลี่ยนสถานะออกไปจากสถานะนั้น – Action หลังจากเปลี่ยนสถานะ
ขั้นตอนในการเขียน State Chart Diagram 1. เลือกคลาสที่ต้องการอธิบายโดยใช้แผนภาพ 2. เขียนจุดเริ่มต้น 3. หาสถานะเริ่มต้น เขียนสัญลักษณ์สถานะ 4. ลากลูกศรจากจุดเริ่มต้นไปที่อ็อบเจกต์ที่มีสถานะเริ่มต้น เขียนกำกับด้วย เหตุการณ์ ฟังก์ชัน ตัวแปรหรือเงื่อนไข 5. พิจารณาสถานะถัดไป เขียนสัญลักษณ์สถานะ ทำจนครบทุก ๆ สถานะ 6. โยงเส้นลูกศรจากสถานะที่เปลี่ยนก่อนหน้าไปยังสถานะถัดไปให้ครบ 7. เขียนจุดสิ้นสุด
Example ให้วาด State Chart diagram เพื่อจำลองการทำงานของ lift ดังนี้ – เมื่อมีการเปิด Switch การทำงานของ Lift จะเข้าสู่สภาวะ Idle ซึ่ง Lift จะต้อง อยู่ที่ชั้น 1 เท่านั้น – เมื่อมีคนต้องการขึ้น Lift จะมีการเคลื่อนที่ของลิฟต์ขึ้นที่ละชั้น จนถึงชั้นที่ต้องการ – เมื่อมีคนต้องการลง Lift จะมีการเคลื่อนที่ของลิฟต์ลงที่ละชั้น จนถึงชั้นที่ต้องการ – เมื่อ Lift มาถึงชั้นที่ต้องการ และมีคนลงหมดแล้ว Lift จะเคลื่อนที่ลงยังชั้น 1เพื่อเข้าสู่สภาวะ Idle – เมื่อ Lift อยู่ในสภาวะ Idle เมื่อใดก็ตามที่มีการปิด switch กิจกรรมทั้งหมดจะหยุดทันที ซึ่ง Lift จะถูกปิดก็ต่อเมื่อ Lift อยู่ในสถานะ Idle เท่านั้น
Example
Example จงเขียนภาพ Class ซึ่งมี Function ต่างๆ และ state diagram ของแต่ละ function จากเหตุการณ์ต่อไปนี้ – รถเด็กเล่นชนิดหนึ่ง เมื่อเปิด Switch จะวิ่งตรงไปข้างหน้า แต่เมื่อมาเจอขอบของวัตถุเช่นขอบโต๊ะ ซึ่งอาจจะทำให้มันหล่นพื้นได้ มันจะหยุด และจะเลี้ยวซ้าย แต่ถ้าเลี้ยวซ้ายแล้วเจอสิ่งกีดขวางจะเลี้ยวขวาแทน แต่ถ้าไปไม่ได้มันจะถอยหลัง และในที่สุดถ้าถอยหลังไม่ได้มันจะปิด Switch เองอัตโนมัต
Q&A