แผนภาพ UML เป็นกิจกรรมประเภทใด ลักษณะทั่วไปของภาษา UML UML คืออะไร

ฉันคิดว่าทุกคนคงเคยได้ยินคำพูดดังกล่าวในวัยเด็กว่า " ตัดการวัดเจ็ดครั้งหนึ่งครั้ง" ในการเขียนโปรแกรมก็เหมือนกัน ควรคิดถึงการนำไปปฏิบัติก่อนจะใช้เวลาดำเนินการจะดีกว่าเสมอ เมื่อใช้งาน คุณมักจะต้องสร้างคลาสและคิดปฏิสัมพันธ์กับพวกมัน และบ่อยครั้งที่การแสดงสิ่งนี้ด้วยภาพสามารถช่วยได้ แก้ไขปัญหาได้อย่างถูกวิธีที่สุด UML.

UML คืออะไร?

หากดูภาพในเสิร์ชเอ็นจิ้นจะชัดเจนว่า UML– เป็นเรื่องเกี่ยวกับไดอะแกรม ลูกศร และสี่เหลี่ยม สิ่งสำคัญคือ UML แปลเป็น ภาษาการสร้างแบบจำลองแบบรวม- คำว่า Unified มีความสำคัญที่นี่ นั่นคือรูปภาพของเราไม่เพียงแต่เราจะเข้าใจเท่านั้น แต่ยังรวมถึงผู้อื่นที่รู้จัก UML ด้วย ปรากฎว่านี่เป็นภาษาสากลสำหรับการวาดไดอะแกรม

ดังที่วิกิพีเดียกล่าวไว้

UML เป็นภาษาคำอธิบายกราฟิกสำหรับการสร้างแบบจำลองออบเจ็กต์ในการพัฒนาซอฟต์แวร์ การสร้างแบบจำลองกระบวนการทางธุรกิจ การออกแบบระบบ และการแสดงโครงสร้างองค์กร
สิ่งที่น่าสนใจที่สุดที่ทุกคนไม่ได้คิดหรือตระหนักก็คือ UML มีข้อกำหนดเฉพาะ นอกจากนี้ยังมีข้อกำหนด UML2 ด้วย รายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดสามารถพบได้บนเว็บไซต์กลุ่มการจัดการวัตถุ จริงๆแล้วกลุ่มนี้กำลังพัฒนาข้อกำหนด UML สิ่งที่น่าสนใจคือ UML ไม่ได้จำกัดอยู่เพียงการอธิบายโครงสร้างของคลาสเท่านั้น ไดอะแกรม UML มีหลายประเภท คำอธิบายสั้น ๆ เกี่ยวกับประเภทของไดอะแกรม UML สามารถดูได้ใน Wikipedia เดียวกัน: UML - ไดอะแกรมหรือในวิดีโอของ Timur Batyrshinov ภาพรวมของไดอะแกรม UML- นอกจากนี้ UML ยังใช้กันอย่างแพร่หลายเพื่ออธิบายกระบวนการต่างๆ เช่นที่นี่: Single sign-on โดยใช้ JWT เมื่อกลับมาใช้ไดอะแกรมคลาส UML อีกครั้ง เป็นเรื่องที่น่าสังเกตในหนังสือ Head First: Design Patterns ซึ่งรูปแบบต่างๆ จะแสดงด้วยไดอะแกรม UML เดียวกันเหล่านั้น ปรากฎว่ามีการใช้งาน UML อยู่จริง และปรากฎว่าความรู้และความเข้าใจในการใช้งานนั้นเป็นทักษะที่มีประโยชน์ทีเดียว

แอปพลิเคชัน

มาดูกันว่าคุณสามารถทำงานกับ UML เดียวกันนี้จาก IDE ได้อย่างไร เอามาเป็น IDE กัน แนวคิด IntelliJ- ถ้าคุณใช้ IntelliJ ไอเดียสุดยอดจากนั้นเราจะติดตั้งปลั๊กอิน “นอกกรอบ” รองรับ UML" ช่วยให้คุณสร้างไดอะแกรมคลาสที่สวยงามได้โดยอัตโนมัติ ตัวอย่างเช่น ผ่าน Ctrl+N หรือรายการเมนู "นำทาง" -> "คลาส" เราจะไปที่ชั้นเรียน ArrayList- ตอนนี้ผ่านเมนูบริบทสำหรับชื่อคลาส ให้เลือก "ไดอะแกรม" -> "แสดงป๊อปอัปไดอะแกรม" เป็นผลให้เราได้แผนภาพที่สวยงาม:

แต่ถ้าคุณต้องการวาดด้วยตัวเองแต่ไม่มี Idea เวอร์ชัน Ultimate ล่ะ? หากเราใช้ IntelliJ Idea Community Edition เราก็ไม่มีทางเลือกอื่น ในการทำเช่นนี้ คุณต้องเข้าใจว่าไดอะแกรม UML มีโครงสร้างอย่างไร ก่อนอื่นเราจะต้องติดตั้ง Graphviz ก่อน นี่คือชุดยูทิลิตี้สำหรับการแสดงกราฟ มันถูกใช้โดยปลั๊กอินที่เราจะใช้ หลังการติดตั้งคุณจะต้องเพิ่มไดเร็กทอรี ถังขยะจากไดเร็กทอรีที่ติดตั้งไว้ กราฟวิซสู่ตัวแปรสภาพแวดล้อม เส้นทาง- หลังจากนั้นใน IntelliJ Idea ให้เลือก File -> Settings จากเมนู ในหน้าต่าง "การตั้งค่า" เลือกหมวดหมู่ "ปลั๊กอิน" คลิกปุ่ม "เรียกดูที่เก็บ" และติดตั้งปลั๊กอินการรวม PlantUML ทำไมอันนี้ถึงดีขนาดนี้? พืชUML- โดยจะใช้ภาษาคำอธิบายกราฟที่เรียกว่า " จุด"และสิ่งนี้ช่วยให้เป็นสากลมากขึ้นเนื่องจากภาษานี้ใช้ไม่เพียงโดย PlantUML เท่านั้น ยิ่งไปกว่านั้นทุกสิ่งที่เราทำด้านล่างสามารถทำได้ไม่เพียง แต่ใน IDE เท่านั้น แต่ยังรวมถึงบริการออนไลน์ planttext.com ด้วย หลังจากติดตั้ง PlantUML ปลั๊กอิน เราจะสามารถสร้างไดอะแกรม UML ผ่าน "ไฟล์" -> "ใหม่" มาสร้างไดอะแกรมประเภท "UML" กัน ในระหว่างนี้ เทมเพลตพร้อมตัวอย่างจะถูกสร้างขึ้นโดยอัตโนมัติ สร้างของเราเองโดยใช้บทความจาก Habr: ความสัมพันธ์ในชั้นเรียน - จาก UML ไปจนถึงโค้ด และเพื่อทำความเข้าใจวิธีการพรรณนาสิ่งนี้ในข้อความ ลองใช้คู่มือ PlantUML: plantuml class-diagram ที่จุดเริ่มต้นจะมีตารางด้วย วิธีอธิบายการเชื่อมต่อ:

เรายังสามารถดูการเชื่อมต่อได้ที่นี่: “ความสัมพันธ์ระหว่างคลาสในตัวอย่าง UML” จากวัสดุเหล่านี้ มาเริ่มสร้างแผนภาพ UML ของเรากันดีกว่า มาเพิ่มเนื้อหาต่อไปนี้ที่อธิบายทั้งสองคลาส: @startuml class ArrayList ( ) class LinkedList ( ) @enduml หากต้องการดูผลลัพธ์ใน Idea ให้เลือก "View" -> "Tool Windows" -> "PlantUML" เราจะได้สี่เหลี่ยมสองอันที่แสดงถึงคลาส ดังที่เราทราบ ทั้งสองคลาสนี้ใช้อินเทอร์เฟซรายการ ความสัมพันธ์ในชั้นเรียนนี้เรียกว่าการนำไปปฏิบัติ หากต้องการแสดงการเชื่อมต่อดังกล่าว ให้ใช้ลูกศรที่มีเส้นประ มาอธิบายกันเถอะ: รายการอินเทอร์เฟซ< | . . ArrayList List < | . . LinkedList List - один из дочерних классов Collection . То есть он наследуется от Collection. Эта связь называется обобщением (generalization). Выглядит как стрелка с обычной непрерывной линией. Изобразим её: interface Collection Collection < | -- List Для следующего типа связи добавим в описание класса ArrayList запись о แพ็คเกจส่วนตัวอาร์เรย์ขององค์ประกอบ: ~ Object elementData ตอนนี้เราต้องการแสดงว่า ArrayList มีวัตถุบางอย่าง ในกรณีนี้ประเภทการเชื่อมต่อจะเป็น - การรวมตัว(การรวมตัว). ผลรวมในกรณีนี้คือ ArrayList เนื่องจาก มันมีวัตถุอื่นอยู่ เราเลือกการรวมกลุ่มเนื่องจากวัตถุในรายการสามารถอยู่ได้โดยไม่มีรายการ: สิ่งเหล่านี้ไม่ได้เป็นส่วนหนึ่งของรายการ อายุการใช้งานไม่ได้เชื่อมโยงกับอายุการใช้งานของรายการ Aggregate แปลจากภาษาละตินว่า "ประกอบ" นั่นคือบางสิ่งที่ประกอบด้วยบางสิ่ง ตัวอย่างเช่นในชีวิตมีหน่วยสูบน้ำซึ่งประกอบด้วยปั๊มและมอเตอร์ สามารถถอดประกอบตัวเครื่องได้ โดยเหลือส่วนประกอบบางส่วนไว้ เช่น ขายหรือเอาไปลงยูนิตอื่น. รายการก็เช่นกัน และแสดงเป็นเพชรว่างใกล้หน่วยและเป็นเส้นต่อเนื่องกัน ลองอธิบายดังต่อไปนี้: class Object ( ) ArrayList o- Object ตอนนี้เราต้องการแสดงให้เห็นว่าคลาส LinkedList ต่างจาก ArrayList ตรงที่มี Node - คอนเทนเนอร์ที่อ้างถึงข้อมูลที่เก็บไว้ ในกรณีนี้ โหนดเป็นส่วนหนึ่งของ LinkedList และไม่สามารถอยู่แยกกันได้ โหนดไม่ได้จัดเก็บเนื้อหาโดยตรง แต่มีเพียงลิงก์เท่านั้น ตัวอย่างเช่น เมื่อเราเพิ่มแถวลงใน LinkedList เราจะเพิ่มโหนดใหม่ที่มีลิงก์ไปยังแถวนั้น รวมถึงลิงก์ไปยังโหนดก่อนหน้าและถัดไป การเชื่อมต่อประเภทนี้เรียกว่า องค์ประกอบ(องค์ประกอบ). ในการแสดงคอมโพสิต (ส่วนที่ประกอบด้วยชิ้นส่วนต่างๆ) จะต้องวาดเพชรสีโดยมีเส้นต่อเนื่องนำไป ตอนนี้เรามาเขียนสิ่งนี้ในรูปแบบของการแสดงข้อความของการเชื่อมต่อ: class Node ( ) LinkedList * -- Node และตอนนี้เราต้องเรียนรู้วิธีแสดงการเชื่อมต่อประเภทอื่นที่สำคัญ - ติดยาเสพติด(ความสัมพันธ์แบบพึ่งพา) มันถูกใช้เมื่อคลาสหนึ่งใช้อีกคลาสหนึ่ง และคลาสนั้นไม่มีคลาสที่ถูกใช้และไม่ใช่คลาสที่สืบทอด ตัวอย่างเช่น LinkedList และ ArrayList สามารถสร้าง ListIterator ได้ ลองแสดงสิ่งนี้เป็นลูกศรที่มีเส้นประ: คลาส ListIterator ListIterator< . . . ArrayList : create ListIterator < . . . LinkedList : create Выглядеть после всего это будет следующим образом:

คุณสามารถลงรายละเอียดได้มากเท่าที่จำเป็น การกำหนดทั้งหมดระบุไว้ที่นี่: "PlantUML - Class Diagram" นอกจากนี้การวาดไดอะแกรมดังกล่าวไม่มีอะไรเหนือธรรมชาติและเมื่อทำงานของคุณคุณสามารถวาดด้วยมือได้อย่างรวดเร็ว สิ่งนี้จะพัฒนาทักษะของคุณในการคิดผ่านสถาปัตยกรรมแอปพลิเคชัน และช่วยให้คุณระบุข้อบกพร่องของโครงสร้างคลาสได้ตั้งแต่เนิ่นๆ แทนที่จะใช้เวลาทั้งวันไปกับการนำโมเดลที่ไม่ถูกต้องไปใช้ ฉันคิดว่านั่นเป็นเหตุผลที่ดีที่จะลองดู?)

ระบบอัตโนมัติ

มีหลายวิธีในการสร้างไดอะแกรม PlantUML โดยอัตโนมัติ ตัวอย่างเช่นใน ความคิดมีปลั๊กอิน SketchIT แต่ไม่ได้วาดอย่างถูกต้องนัก ตัวอย่างเช่น การใช้งานอินเทอร์เฟซถูกวาดอย่างไม่ถูกต้อง (แสดงเป็นการสืบทอด) นอกจากนี้ยังมีตัวอย่างบนอินเทอร์เน็ตเกี่ยวกับวิธีสร้างสิ่งนี้ลงในวงจรการสร้างของโปรเจ็กต์ของคุณ เอาเป็นว่าเพื่อ มาเวนมีตัวอย่างการใช้ uml-java-docklet เพื่อแสดงให้เห็นว่าเราดำเนินการอย่างไร เราจะใช้ Maven Archetype เพื่อสร้างโปรเจ็กต์ Maven อย่างรวดเร็ว มารันคำสั่ง: mvn archetype:generate ในคำถามของการเลือกตัวกรอง ( เลือกหมายเลขหรือใช้ตัวกรอง) ออกจากค่าเริ่มต้นโดยเพียงแค่กด Enter มันจะเป็นเสมอ" Maven-archetype-เริ่มต้นอย่างรวดเร็ว" เลือกเวอร์ชันล่าสุด จากนั้นตอบคำถามและสร้างโครงการให้เสร็จสมบูรณ์:

เนื่องจาก Maven ไม่ใช่จุดเน้นของบทความนี้ คุณจึงสามารถพบคำตอบสำหรับคำถาม Maven ของคุณได้ใน Maven Users Center ในโปรเจ็กต์ที่สร้างขึ้น ให้เปิดไฟล์คำอธิบายโปรเจ็กต์เพื่อแก้ไข pom.xml- มาคัดลอกเนื้อหาจากคำอธิบายของการติดตั้ง uml-java-docklet ลงไป ไม่พบสิ่งประดิษฐ์ที่ใช้ในคำอธิบายในพื้นที่เก็บข้อมูล Maven Central แต่มันได้ผลสำหรับฉันด้วยสิ่งนี้: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 นั่นคือคุณเพียงแค่ต้องแทนที่คำอธิบายนั้น รหัสกลุ่มกับ " info.leadinglight" บน " com.chfourie"และติดตั้งเวอร์ชั่น" 1.0.0 " หลังจากนี้เราสามารถดำเนินการในไดเร็กทอรีที่มีไฟล์อยู่ pom.xmlคำสั่งเหล่านี้: mvn clean install และ mvn javadoc:javadoc ตอนนี้ ถ้าเราเปิดเอกสารที่สร้างขึ้น (explorer target\site\apidocs\index.html) เราจะเห็นไดอะแกรม UML อย่างไรก็ตาม การใช้งานจะแสดงอย่างถูกต้องแล้วที่นี่)

บทสรุป

อย่างที่คุณเห็น UML ช่วยให้คุณเห็นภาพโครงสร้างของแอปพลิเคชันของคุณ นอกจากนี้ UML ไม่ได้จำกัดอยู่เพียงเท่านี้ การใช้ UML คุณสามารถอธิบายกระบวนการต่างๆ ภายในบริษัทของคุณ หรืออธิบายกระบวนการทางธุรกิจที่ฟังก์ชันที่คุณกำลังเขียนดำเนินการอยู่ UML มีประโยชน์สำหรับคุณเป็นการส่วนตัวเพียงใดนั้นขึ้นอยู่กับคุณในการตัดสินใจ แต่การใช้เวลาอ่านรายละเอียดเพิ่มเติมจะมีประโยชน์ในทุกกรณี #Viacheslav เวอร์ชันภาษาอังกฤษของโพสต์นี้: UML diagram Java บน CodeGym

ปัจจุบัน UML เป็นสัญลักษณ์มาตรฐานสำหรับการสร้างแบบจำลองด้วยภาพของระบบซอฟต์แวร์ ซึ่งนำมาใช้โดยกลุ่มการจัดการวัตถุ (OMG) ในฤดูใบไม้ร่วงปี 1997 ซึ่งได้รับการสนับสนุนโดยผลิตภัณฑ์ CASE เชิงวัตถุจำนวนมาก

มาตรฐาน UML เสนอชุดไดอะแกรมต่อไปนี้สำหรับการสร้างแบบจำลอง:

· แผนภาพกรณีการใช้งาน – สำหรับการสร้างแบบจำลองกระบวนการทางธุรกิจขององค์กรหรือองค์กรและการกำหนดข้อกำหนดสำหรับระบบข้อมูลที่ถูกสร้างขึ้น

· แผนภาพคลาส – สำหรับการสร้างแบบจำลองโครงสร้างคงที่ของคลาสระบบและการเชื่อมต่อระหว่างคลาสเหล่านั้น

· แผนภาพพฤติกรรมของระบบ

· แผนภาพปฏิสัมพันธ์

· แผนภาพลำดับ – สำหรับการสร้างแบบจำลองกระบวนการส่งข้อความระหว่างออบเจ็กต์ภายในกรณีการใช้งานเดียว

· แผนภาพการทำงานร่วมกัน – สำหรับการสร้างแบบจำลองกระบวนการส่งข้อความระหว่างออบเจ็กต์ภายในกรณีการใช้งานเดียว

· แผนภาพสถานะแผนภูมิ – สำหรับการสร้างแบบจำลองพฤติกรรมของออบเจ็กต์ระบบระหว่างการเปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง

· แผนภาพกิจกรรม – สำหรับการสร้างแบบจำลองพฤติกรรมของระบบภายในกรอบงานของกรณีการใช้งานต่างๆ หรือกิจกรรมการสร้างแบบจำลอง

แผนภาพการใช้งาน:

· แผนภาพส่วนประกอบ – สำหรับการสร้างแบบจำลองลำดับชั้นของส่วนประกอบ (ระบบย่อย) ของระบบสารสนเทศ

· แผนภาพการใช้งาน – สำหรับการสร้างแบบจำลองสถาปัตยกรรมทางกายภาพของระบบข้อมูลที่ออกแบบ

ในรูป 1.1 นำเสนอรูปแบบบูรณาการของระบบสารสนเทศ รวมถึงแผนภาพหลักที่ควรพัฒนาในโครงการรายวิชานี้

ข้าว. 1. แบบจำลองบูรณาการของระบบสารสนเทศในรูปแบบ UML

4.2. ใช้แผนภาพกรณี

กรณีการใช้งานคือลำดับของการดำเนินการที่ระบบดำเนินการเพื่อตอบสนองต่อเหตุการณ์ที่เริ่มต้นโดยวัตถุภายนอก (ตัวแสดง) กรณีการใช้งานอธิบายการโต้ตอบทั่วไประหว่างผู้ใช้และระบบ ในกรณีที่ง่ายที่สุด กรณีการใช้งานจะถูกกำหนดในกระบวนการพูดคุยกับผู้ใช้เกี่ยวกับฟังก์ชันที่เขาต้องการใช้ในระบบข้อมูลนี้ ใน UML กรณีการใช้งานจะอธิบายดังนี้:

รูปที่ 2. ใช้กรณี

นักแสดงคือบทบาทที่ผู้ใช้แสดงโดยสัมพันธ์กับระบบ นักแสดงเป็นตัวแทนของบทบาท ไม่ใช่บุคคลหรือตำแหน่งงานที่เฉพาะเจาะจง แม้ว่าภาพเหล่านี้จะแสดงให้เห็นเป็นรูปมนุษย์ในแผนภาพกรณีการใช้งาน แต่นักแสดงก็สามารถเป็นระบบข้อมูลภายนอกที่ต้องการข้อมูลบางอย่างจากระบบนั้นได้ นักแสดงควรแสดงบนแผนภาพก็ต่อเมื่อพวกเขาต้องการกรณีการใช้งานจริงบางกรณีเท่านั้น ใน UML นักแสดงจะแสดงเป็นรูปร่าง:



รูปที่ 3 ตัวละคร (นักแสดง)

นักแสดงแบ่งออกเป็น 3 ประเภทหลัก:

· ผู้ใช้;

· ระบบ;

· ระบบอื่นๆ ที่กำลังโต้ตอบกับระบบนี้

เวลาจะกลายเป็นตัวแสดงหากการเปิดตัวกิจกรรมใด ๆ ในระบบขึ้นอยู่กับมัน

4.2.1. ความสัมพันธ์ระหว่างกรณีการใช้งานและผู้แสดง

ใน UML ไดอะแกรมกรณีการใช้งานรองรับความสัมพันธ์หลายประเภทระหว่างองค์ประกอบไดอะแกรม:

· การสื่อสาร

รวม (รวม)

· ส่วนขยาย (ขยาย)

·ลักษณะทั่วไป

ลิงค์การสื่อสารคือความสัมพันธ์ระหว่างกรณีการใช้งานกับนักแสดง ใน UML ความสัมพันธ์ในการสื่อสารจะแสดงโดยใช้การเชื่อมโยงแบบทิศทางเดียว (เส้นทึบ)

รูปที่ 4. ตัวอย่างลิงค์การสื่อสาร

เปิดใช้งานการเชื่อมต่อใช้ในสถานการณ์ที่มีพฤติกรรมของระบบบางส่วนเกิดขึ้นซ้ำในกรณีการใช้งานมากกว่าหนึ่งกรณี โดยทั่วไปการเชื่อมต่อเหล่านี้จะใช้เพื่อสร้างแบบจำลองฟังก์ชันที่นำมาใช้ซ้ำได้

การสื่อสารการขยายตัวใช้เพื่ออธิบายการเปลี่ยนแปลงพฤติกรรมปกติของระบบ ช่วยให้กรณีการใช้งานหนึ่งสามารถใช้ฟังก์ชันการทำงานของกรณีการใช้งานอื่นได้เมื่อจำเป็น

รูปที่ 5 ตัวอย่างความสัมพันธ์แบบรวมและขยาย

การเชื่อมต่อทั่วไปแสดงให้เห็นว่านักแสดงหรือคลาสหลายตัวมีคุณสมบัติที่เหมือนกัน

รูปที่ 6. ตัวอย่างลิงค์ข้อมูลทั่วไป

4.3.



แผนภาพปฏิสัมพันธ์อธิบายพฤติกรรมของการโต้ตอบกลุ่มของวัตถุ โดยทั่วไปแล้ว แผนภาพการโต้ตอบจะครอบคลุมพฤติกรรมของออบเจ็กต์ภายในกรณีการใช้งานเดียวเท่านั้น แผนภาพดังกล่าวแสดงวัตถุจำนวนหนึ่งและข้อความที่วัตถุเหล่านั้นแลกเปลี่ยนกัน

ข้อความเป็นวิธีการที่ออบเจ็กต์ผู้ส่งร้องขอให้ออบเจ็กต์ผู้รับดำเนินการอย่างใดอย่างหนึ่ง

ข้อความให้ข้อมูลเป็นข้อความที่ให้ข้อมูลบางอย่างแก่วัตถุผู้รับเพื่ออัปเดตสถานะ

ข้อความขอ (คำถาม)เป็นข้อความขอให้เปิดเผยข้อมูลบางอย่างเกี่ยวกับวัตถุผู้รับ

ข้อความที่จำเป็นเป็นข้อความที่ขอให้วัตถุผู้รับดำเนินการบางอย่าง

ไดอะแกรมการโต้ตอบมีสองประเภท: ไดอะแกรมลำดับและไดอะแกรมการทำงานร่วมกัน

4.3.1. แผนภาพลำดับ

แผนภาพลำดับสะท้อนถึงความลื่นไหลของเหตุการณ์ที่เกิดขึ้นภายในกรณีการใช้งานเดียว

นักแสดงทั้งหมด (นักแสดง ชั้นเรียน หรือวัตถุ) ที่เกี่ยวข้องในสถานการณ์ที่กำหนด (กรณีการใช้งาน) จะแสดงที่ด้านบนของแผนภาพ ลูกศรสอดคล้องกับข้อความที่ส่งระหว่างนักแสดงกับวัตถุหรือระหว่างวัตถุเพื่อทำหน้าที่ที่จำเป็น

ในแผนภาพลำดับ วัตถุจะแสดงเป็นรูปสี่เหลี่ยมผืนผ้าโดยมีเส้นประแนวตั้งลากลงมา เส้นนี้เรียกว่า เส้นชีวิตของวัตถุ - มันแสดงถึงส่วนของวงจรชีวิตของวัตถุในกระบวนการโต้ตอบ

แต่ละข้อความจะแสดงเป็นลูกศรระหว่างเส้นชีวิตของวัตถุสองชิ้น ข้อความจะปรากฏตามลำดับที่ปรากฏบนหน้าจากบนลงล่าง แต่ละข้อความจะถูกแท็กด้วยชื่อข้อความเป็นอย่างน้อย หากต้องการ คุณสามารถเพิ่มอาร์กิวเมนต์และข้อมูลการควบคุมบางอย่างได้ คุณสามารถแสดงการมอบหมายตนเอง - ข้อความที่วัตถุส่งถึงตัวเอง โดยมีลูกศรข้อความชี้ไปที่เส้นชีวิตเดียวกัน

ข้าว. 7. ตัวอย่างแผนภาพลำดับ

4.3.2. แผนภาพการทำงานร่วมกัน

แผนภาพความร่วมมือแสดงโฟลว์ของเหตุการณ์ภายในสถานการณ์เฉพาะ (กรณีการใช้งาน) ข้อความจะเรียงลำดับตามเวลา แม้ว่าไดอะแกรมการทำงานร่วมกันจะเน้นไปที่การเชื่อมต่อระหว่างออบเจ็กต์มากกว่า แผนภาพการทำงานร่วมกันนำเสนอข้อมูลทั้งหมดที่มีอยู่ในแผนภาพลำดับ แต่แผนภาพการทำงานร่วมกันอธิบายการไหลของเหตุการณ์แตกต่างออกไป ช่วยให้เข้าใจการเชื่อมต่อที่มีอยู่ระหว่างวัตถุได้ง่ายขึ้น

ในแผนภาพการทำงานร่วมกัน เช่นเดียวกับในแผนภาพลำดับ ลูกศรแสดงถึงข้อความที่มีการแลกเปลี่ยนกันภายในกรณีการใช้งานที่กำหนด ลำดับเวลาจะแสดงโดยการเรียงลำดับข้อความ

ข้าว. 8. ตัวอย่างแผนผังความร่วมมือ

4.4. แผนภาพชั้นเรียน

4.4.1. ข้อมูลทั่วไป

แผนภาพชั้นเรียนกำหนดประเภทของคลาสของระบบและการเชื่อมต่อแบบสแตติกชนิดต่างๆ ที่มีอยู่ระหว่างคลาสเหล่านั้น ไดอะแกรมคลาสยังแสดงถึงคุณลักษณะของคลาส การดำเนินการของคลาส และข้อจำกัดที่กำหนดให้กับความสัมพันธ์ระหว่างคลาส

คลาสไดอะแกรมในภาษา UML คือกราฟ ซึ่งโหนดเป็นองค์ประกอบของโครงสร้างคงที่ของโปรเจ็กต์ (คลาส อินเทอร์เฟซ) และส่วนโค้งคือความสัมพันธ์ระหว่างโหนด (การเชื่อมโยง การสืบทอด การพึ่งพา)

แผนภาพคลาสแสดงองค์ประกอบต่อไปนี้:

· แพ็คเกจ - ชุดขององค์ประกอบโมเดลที่เกี่ยวข้องกันในเชิงตรรกะ

·คลาส (คลาส) - คำอธิบายคุณสมบัติทั่วไปของกลุ่มของวัตถุที่คล้ายกัน

· อินเทอร์เฟซ - คลาสนามธรรมที่ระบุชุดของการดำเนินการที่อ็อบเจ็กต์ของคลาสที่กำหนดเองซึ่งเชื่อมโยงกับอินเทอร์เฟซที่กำหนดให้กับอ็อบเจ็กต์อื่น

4.4.2. ระดับ

ระดับคือกลุ่มของเอนทิตี (วัตถุ) ที่มีคุณสมบัติคล้ายกัน คือ ข้อมูลและพฤติกรรม ตัวแทนแต่ละคนของคลาสเรียกว่าอ็อบเจ็กต์ของคลาสหรือเพียงแค่อ็อบเจ็กต์

พฤติกรรมของวัตถุใน UML หมายถึงกฎใดๆ สำหรับการโต้ตอบของวัตถุกับโลกภายนอกและกับข้อมูลของวัตถุนั้นเอง

ในไดอะแกรม คลาสจะแสดงเป็นรูปสี่เหลี่ยมผืนผ้าที่มีเส้นขอบทึบ แบ่งตามเส้นแนวนอนออกเป็น 3 ส่วน:

ส่วนบนสุด (ส่วนชื่อ) ประกอบด้วยชื่อคลาสและคุณสมบัติทั่วไปอื่นๆ (โดยเฉพาะแบบเหมารวม)

ส่วนตรงกลางประกอบด้วยรายการแอตทริบิวต์

ที่ด้านล่างสุดคือรายการการดำเนินการของคลาสที่สะท้อนถึงพฤติกรรมของมัน (การกระทำที่ดำเนินการโดยคลาส)

ส่วนแอตทริบิวต์และการดำเนินการใดๆ อาจไม่แสดง (หรือทั้งสองอย่างพร้อมกัน) สำหรับส่วนที่ขาดหายไป คุณไม่จำเป็นต้องวาดเส้นแบ่งหรือระบุว่ามีองค์ประกอบอยู่ในนั้นหรือไม่ก็ตาม

ส่วนเพิ่มเติม เช่น ข้อยกเว้น อาจถูกนำมาใช้ตามดุลยพินิจของการดำเนินการเฉพาะ

ข้าว. 9. ตัวอย่างแผนผังชั้นเรียน

4.4.2.1.แบบแผนของชั้นเรียน

แบบแผนในชั้นเรียนเป็นกลไกในการแบ่งชั้นเรียนออกเป็นหมวดหมู่

UML กำหนดแบบเหมารวมของคลาสหลักสามแบบ:

ขอบเขต (ชายแดน);

เอนทิตี (เอนทิตี);

ควบคุม.

4.4.2.2.คลาสขอบเขต

คลาสขอบเขตคือคลาสที่อยู่บนขอบเขตของระบบและสภาพแวดล้อมทั้งหมด ซึ่งรวมถึงจอแสดงผล รายงาน อินเทอร์เฟซกับฮาร์ดแวร์ (เช่น เครื่องพิมพ์หรือสแกนเนอร์) และอินเทอร์เฟซกับระบบอื่นๆ

หากต้องการค้นหาคลาสขอบเขต คุณต้องตรวจสอบ Use Case Diagram ทุกการโต้ตอบระหว่างนักแสดงและกรณีการใช้งานจะต้องเชื่อมโยงกับคลาสขอบเขตอย่างน้อยหนึ่งคลาส เป็นคลาสนี้ที่ช่วยให้นักแสดงสามารถโต้ตอบกับระบบได้

4.4.2.3.คลาสเอนทิตี

คลาสเอนทิตีมีข้อมูลที่เก็บไว้ พวกเขามีความหมายสูงสุดสำหรับผู้ใช้ ดังนั้นชื่อของพวกเขาจึงมักใช้คำศัพท์จากสาขาวิชา โดยทั่วไปแล้ว ตารางจะถูกสร้างขึ้นในฐานข้อมูลสำหรับแต่ละคลาสเอนทิตี

4.4.2.4.ชั้นเรียนควบคุม

คลาสควบคุมมีหน้าที่ประสานงานการดำเนินการของคลาสอื่น โดยทั่วไป แต่ละกรณีการใช้งานจะมีคลาสควบคุมหนึ่งคลาสที่ควบคุมลำดับเหตุการณ์สำหรับกรณีการใช้งานนั้น คลาสผู้จัดการมีหน้าที่รับผิดชอบในการประสานงาน แต่ไม่มีฟังก์ชันการทำงานใดๆ เนื่องจากคลาสอื่นๆ ไม่ได้ส่งข้อความถึงคลาสนี้มากนัก แต่เขากลับส่งข้อความมากมายด้วยตัวเอง คลาสผู้จัดการเพียงแค่มอบหมายความรับผิดชอบให้กับคลาสอื่น ซึ่งเป็นสาเหตุว่าทำไมจึงมักเรียกว่าคลาสผู้จัดการ

อาจมีคลาสการควบคุมอื่นๆ ในระบบที่เหมือนกันกับกรณีการใช้งานหลายกรณี ตัวอย่างเช่น อาจมีคลาส SecurityManager ที่รับผิดชอบในการมอนิเตอร์เหตุการณ์ที่เกี่ยวข้องกับความปลอดภัย คลาส TransactionManager รับผิดชอบในการประสานงานข้อความที่เกี่ยวข้องกับธุรกรรมฐานข้อมูล อาจมีผู้จัดการคนอื่นๆ คอยจัดการองค์ประกอบอื่นๆ ของการทำงานของระบบ เช่น การใช้ทรัพยากรร่วมกัน การประมวลผลข้อมูลแบบกระจาย หรือการจัดการข้อผิดพลาด

นอกจากแบบเหมารวมที่กล่าวถึงข้างต้นแล้ว คุณยังสามารถสร้างแบบแผนของคุณเองได้

4.4.2.5.คุณลักษณะ

คุณลักษณะเป็นองค์ประกอบของข้อมูลที่เกี่ยวข้องกับชั้นเรียน คุณสมบัติเก็บข้อมูลคลาสที่ห่อหุ้ม

เนื่องจากแอตทริบิวต์มีอยู่ภายในคลาส จึงถูกซ่อนจากคลาสอื่น ด้วยเหตุนี้ คุณอาจต้องระบุคลาสที่มีสิทธิ์ในการอ่านและเปลี่ยนแปลงแอตทริบิวต์ คุณสมบัตินี้เรียกว่าการมองเห็นแอตทริบิวต์

คุณลักษณะสามารถมีค่าที่เป็นไปได้สี่ค่าสำหรับพารามิเตอร์นี้:

สาธารณะ (ทั่วไป, เปิด) ค่าการมองเห็นนี้จะถือว่าแอตทริบิวต์นี้จะปรากฏแก่คลาสอื่นๆ ทั้งหมด คลาสใดก็ได้สามารถดูหรือเปลี่ยนแปลงค่าของแอตทริบิวต์ได้ ตามรูปแบบ UML คุณลักษณะทั่วไปจะมีเครื่องหมาย "+" นำหน้า

ส่วนตัว (ปิด, เป็นความลับ) แอ็ตทริบิวต์ที่เกี่ยวข้องจะไม่ปรากฏแก่คลาสอื่น คุณลักษณะส่วนตัวจะแสดงด้วยเครื่องหมาย “–” ตามสัญกรณ์ UML

ได้รับการคุ้มครอง (ป้องกัน) แอ็ตทริบิวต์นี้ใช้ได้เฉพาะกับคลาสเองและผู้สืบทอดเท่านั้น สัญกรณ์ UML สำหรับแอตทริบิวต์ที่มีการป้องกันคือเครื่องหมาย "#"

แพ็คเกจหรือการนำไปใช้งาน สมมติว่ามีการใช้แอตทริบิวต์ร่วมกัน แต่ภายในขอบเขตของแพ็คเกจเท่านั้น การมองเห็นประเภทนี้ไม่ได้ระบุด้วยไอคอนพิเศษใดๆ

ด้วยความช่วยเหลือของการปิดหรือการรักษาความปลอดภัย คุณสามารถหลีกเลี่ยงสถานการณ์ที่ค่าของคุณลักษณะถูกเปลี่ยนแปลงโดยคลาสทั้งหมดของระบบ แต่ตรรกะสำหรับการเปลี่ยนแปลงแอตทริบิวต์จะอยู่ในคลาสเดียวกันกับแอตทริบิวต์นั้นเอง การตั้งค่าการมองเห็นที่คุณตั้งไว้จะส่งผลต่อโค้ดที่สร้างขึ้น

4.4.2.6.การดำเนินงาน

การดำเนินการใช้พฤติกรรมที่เกี่ยวข้องกับชั้นเรียน การดำเนินการมีสามส่วน: ชื่อ พารามิเตอร์ และประเภทการส่งคืน

พารามิเตอร์คืออาร์กิวเมนต์ที่ได้รับจากการดำเนินการเป็นอินพุต ประเภทการส่งคืนหมายถึงผลลัพธ์ของการดำเนินการ

คลาสไดอะแกรมสามารถแสดงทั้งชื่อการดำเนินการและชื่อการดำเนินการพร้อมกับพารามิเตอร์และประเภทการส่งคืน เพื่อลดภาระบนไดอะแกรม จะมีประโยชน์ที่จะแสดงเฉพาะชื่อของการดำเนินการในบางรายการและลายเซ็นแบบเต็มในรายการอื่นๆ

ใน UML การดำเนินการจะมีสัญลักษณ์ต่อไปนี้:

ชื่อการดำเนินการ (อาร์กิวเมนต์: ประเภทข้อมูลอาร์กิวเมนต์, อาร์กิวเมนต์2:ประเภทข้อมูลอาร์กิวเมนต์2,...): ประเภทการส่งคืน

มีการดำเนินการสี่ประเภทที่แตกต่างกันที่ต้องพิจารณา:

การดำเนินงานการดำเนินงาน;

การดำเนินงานด้านการจัดการ

การดำเนินการเข้าถึง

การดำเนินงานเสริม

การดำเนินงานการดำเนินงาน

การดำเนินการของผู้ปฏิบัติงานใช้ฟังก์ชันทางธุรกิจบางอย่าง การดำเนินการดังกล่าวสามารถพบได้โดยการตรวจสอบไดอะแกรมปฏิสัมพันธ์ ไดอะแกรมประเภทนี้มุ่งเน้นไปที่ฟังก์ชันทางธุรกิจ และแต่ละข้อความในไดอะแกรมสามารถแมปกับกิจกรรมการใช้งานได้

การดำเนินการนำไปใช้งานแต่ละครั้งจะต้องตรวจสอบย้อนกลับไปยังข้อกำหนดที่เกี่ยวข้องได้อย่างง่ายดาย ซึ่งสามารถทำได้ในขั้นตอนต่างๆ ของการจำลอง กิจกรรมได้มาจากข้อความในแผนภาพการโต้ตอบ ข้อความมาจากคำอธิบายโดยละเอียดของโฟลว์ของเหตุการณ์ที่สร้างขึ้นตามกรณีการใช้งาน และอย่างหลังถูกสร้างขึ้นตามความต้องการ ความสามารถในการติดตามห่วงโซ่ทั้งหมดนี้ช่วยให้คุณมั่นใจได้ว่าทุกข้อกำหนดได้รับการนำไปใช้ในโค้ด และโค้ดทุกชิ้นใช้ข้อกำหนดบางอย่าง

การควบคุมการปฏิบัติงาน

การดำเนินการของผู้จัดการจะควบคุมการสร้างและการทำลายออบเจ็กต์ ตัวสร้างคลาสและตัวทำลายล้างจัดอยู่ในหมวดหมู่นี้

การดำเนินการเข้าถึง

คุณสมบัติมักจะเป็นแบบส่วนตัวหรือมีการป้องกัน อย่างไรก็ตาม บางครั้งคลาสอื่นๆ จำเป็นต้องดูหรือเปลี่ยนแปลงค่าของตนเอง มีการดำเนินการเข้าถึงเพื่อจุดประสงค์นี้ แนวทางนี้ทำให้สามารถห่อหุ้มคุณลักษณะภายในคลาสได้อย่างปลอดภัย โดยปกป้องจากคลาสอื่น แต่ยังคงอนุญาตให้มีการควบคุมการเข้าถึงได้ เป็นมาตรฐานในการสร้างการดำเนินการรับและตั้งค่าสำหรับแต่ละแอตทริบิวต์คลาส

ปฏิบัติการเสริม

การดำเนินการของตัวช่วยคือการดำเนินการของคลาสที่จำเป็นสำหรับการปฏิบัติหน้าที่ แต่เป็นการดำเนินการของคลาสอื่นที่ไม่ควรรู้อะไรเลย สิ่งเหล่านี้เป็นการดำเนินการคลาสส่วนตัวและได้รับการป้องกัน

เพื่อระบุธุรกรรม ให้ทำตามขั้นตอนเหล่านี้:

1. เรียนรู้แผนภาพลำดับและแผนภาพความร่วมมือ ข้อความส่วนใหญ่ในไดอะแกรมเหล่านี้เป็นการดำเนินการนำไปใช้งาน ข้อความสะท้อนแสงจะเป็นการดำเนินการเสริม

2. พิจารณาควบคุมการปฏิบัติงาน คุณอาจต้องเพิ่มตัวสร้างและตัวทำลาย

3. พิจารณาการดำเนินการเข้าถึง สำหรับแต่ละแอตทริบิวต์ของคลาสที่คลาสอื่นจะต้องทำงานด้วย คุณจะต้องสร้างการดำเนินการรับและตั้งค่า

4.4.2.7.การเชื่อมต่อ

ความสัมพันธ์แสดงถึงความสัมพันธ์เชิงความหมายระหว่างคลาส ช่วยให้ชั้นเรียนสามารถเรียนรู้เกี่ยวกับคุณลักษณะ การดำเนินการ และความสัมพันธ์ของชั้นเรียนอื่นได้ กล่าวอีกนัยหนึ่ง สำหรับคลาสหนึ่งที่จะส่งข้อความไปยังคลาสอื่นในไดอะแกรมลำดับหรือไดอะแกรมความร่วมมือ จะต้องมีความสัมพันธ์ระหว่างคลาสเหล่านั้น

มีความสัมพันธ์สี่ประเภทที่สามารถสร้างระหว่างคลาสได้: การเชื่อมโยง การขึ้นต่อกัน การรวมกลุ่ม และลักษณะทั่วไป

สมาคมสื่อสาร

การเชื่อมโยงคือการเชื่อมต่อเชิงความหมายระหว่างคลาส พวกมันถูกวาดบนไดอะแกรมคลาสเป็นเส้นธรรมดา

ข้าว. 10. สมาคมสื่อสาร

การเชื่อมโยงอาจเป็นแบบสองทิศทาง ดังตัวอย่าง หรือแบบทิศทางเดียว ใน UML การเชื่อมโยงแบบสองทิศทางจะถูกวาดเป็นเส้นธรรมดาโดยไม่มีลูกศรหรือมีลูกศรทั้งสองด้าน การเชื่อมโยงทิศทางเดียวจะมีลูกศรเพียงอันเดียวที่แสดงทิศทาง

ทิศทางของการเชื่อมโยงสามารถกำหนดได้โดยการตรวจสอบแผนภาพลำดับและแผนภาพความร่วมมือ หากข้อความทั้งหมดในข้อความเหล่านั้นถูกส่งโดยคลาสเดียวเท่านั้น และได้รับโดยอีกคลาสหนึ่งเท่านั้น แต่ไม่ได้รับในทางกลับกัน จะมีการสื่อสารทางเดียวระหว่างคลาสเหล่านี้ ถ้าอย่างน้อยหนึ่งข้อความถูกส่งไปในทิศทางตรงกันข้าม การเชื่อมโยงจะต้องเป็นแบบสองทิศทาง

สมาคมสามารถสะท้อนกลับได้ การเชื่อมโยงแบบสะท้อนเกี่ยวข้องกับอินสแตนซ์หนึ่งของคลาสที่มีปฏิสัมพันธ์กับอินสแตนซ์อื่นของคลาสเดียวกัน

การเสพติดการสื่อสาร

ความสัมพันธ์แบบพึ่งพายังสะท้อนความสัมพันธ์ระหว่างคลาสต่างๆ ด้วย แต่พวกมันจะมีทิศทางเดียวเสมอ และแสดงว่าคลาสหนึ่งขึ้นอยู่กับคำจำกัดความที่สร้างในอีกคลาสหนึ่ง ตัวอย่างเช่น คลาส A ใช้วิธีการของคลาส B จากนั้นเมื่อคลาส B เปลี่ยนแปลง จำเป็นต้องทำการเปลี่ยนแปลงที่สอดคล้องกันในคลาส A

การขึ้นต่อกันจะแสดงด้วยเส้นประที่ลากระหว่างองค์ประกอบไดอะแกรมสององค์ประกอบ และองค์ประกอบที่ยึดที่ส่วนท้ายของลูกศรนั้นกล่าวกันว่าขึ้นอยู่กับองค์ประกอบที่ยึดที่จุดเริ่มต้นของลูกศรนั้น

ข้าว. 11. การติดการสื่อสาร

เมื่อสร้างโค้ดสำหรับคลาสเหล่านี้ จะไม่มีการเพิ่มแอตทริบิวต์ใหม่ลงไป อย่างไรก็ตาม จะมีการสร้างตัวดำเนินการเฉพาะภาษาเพื่อรองรับการสื่อสาร

การรวมกลุ่มการสื่อสาร

การรวมตัวเป็นรูปแบบการเชื่อมโยงที่เข้มงวดยิ่งขึ้น การรวมกลุ่มคือการเชื่อมโยงระหว่างส่วนทั้งหมดและส่วนรวม ตัวอย่างเช่น คุณอาจมีคลาสชื่อรถยนต์ เช่นเดียวกับคลาสอย่างเครื่องยนต์ ยางรถยนต์ และคลาสสำหรับส่วนอื่นๆ ของรถ ผลก็คือ อ็อบเจ็กต์ของคลาส Car จะประกอบด้วยอ็อบเจ็กต์ของคลาส Engine, วัตถุ Tyre สี่ชิ้น ฯลฯ การรวมจะถูกมองเห็นเป็นเส้นที่มีรูปเพชรใกล้กับคลาส ซึ่งเป็นจำนวนเต็ม:

ข้าว. 11. การรวมกลุ่มการสื่อสาร

นอกเหนือจากการรวมกลุ่มอย่างง่ายแล้ว UML ยังแนะนำการรวมกลุ่มประเภทที่แข็งแกร่งกว่าที่เรียกว่าองค์ประกอบ ตามการจัดองค์ประกอบ ส่วนของวัตถุสามารถเป็นของทั้งหมดเดียวเท่านั้น และตามกฎแล้ว วงจรชีวิตของชิ้นส่วนนั้นเกิดขึ้นพร้อมกับวงจรของทั้งหมด: พวกมันอยู่และตายไปพร้อมกับมัน การลบทั้งหมดจะมีผลกับส่วนต่างๆ ของมันด้วย

การลบแบบเรียงซ้อนนี้มักถูกพิจารณาว่าเป็นส่วนหนึ่งของคำจำกัดความของการรวม แต่จะมีความหมายเป็นนัยเสมอเมื่อบทบาทหลายหลากคือ 1..1; ตัวอย่างเช่น หากจำเป็นต้องลบลูกค้า การลบนี้จะต้องนำไปใช้กับคำสั่งซื้อด้วย (และในทางกลับกัน กับรายการคำสั่งซื้อ)

UML เป็นภาษาการสร้างแบบจำลองกราฟิกแบบครบวงจรสำหรับการอธิบาย การแสดงภาพ การออกแบบ และการบันทึกระบบ OO UML ได้รับการออกแบบมาเพื่อสนับสนุนกระบวนการสร้างแบบจำลองซอฟต์แวร์ตามแนวทาง OO จัดระเบียบความสัมพันธ์ของแนวคิดแนวคิดและแนวคิดของโปรแกรม และสะท้อนถึงปัญหาของการปรับขนาดระบบที่ซับซ้อน โมเดล UML ถูกนำมาใช้ในทุกขั้นตอนของวงจรการใช้งานซอฟต์แวร์ ตั้งแต่การวิเคราะห์ธุรกิจไปจนถึงการบำรุงรักษาระบบ องค์กรต่างๆ อาจใช้ UML ตามที่เห็นสมควร ขึ้นอยู่กับปัญหาและเทคโนโลยีที่พวกเขาใช้

ประวัติโดยย่อของ UML

ในช่วงกลางทศวรรษที่ 90 ผู้เขียนหลายคนได้เสนอวิธีการสร้างแบบจำลอง OO หลายวิธี ซึ่งแต่ละวิธีใช้สัญกรณ์กราฟิกของตัวเอง ในเวลาเดียวกันวิธีการใด ๆ เหล่านี้มีจุดแข็ง แต่ไม่อนุญาตให้สร้างแบบจำลอง PS ที่สมบูรณ์เพียงพอโดยแสดงให้เห็นว่า "จากทุกด้าน" นั่นคือการคาดการณ์ที่จำเป็นทั้งหมด (ดูบทความ 1) นอกจากนี้ การขาดมาตรฐานการสร้างแบบจำลอง OO ทำให้ยากสำหรับนักพัฒนาในการเลือกวิธีการที่เหมาะสมที่สุด ซึ่งทำให้ไม่สามารถนำแนวทาง OO ไปใช้ในการพัฒนาซอฟต์แวร์อย่างกว้างขวาง

ตามคำร้องขอของกลุ่มการจัดการวัตถุ (OMG) องค์กรที่รับผิดชอบในการนำมาตรฐานมาใช้ในด้านเทคโนโลยีวัตถุและฐานข้อมูลปัญหาเร่งด่วนของการรวมและการกำหนดมาตรฐานได้รับการแก้ไขโดยผู้เขียนวิธี OO ยอดนิยมสามวิธี - G บุทช์, ดี. แรมโบ้ และเอ. จาค็อบสัน ผู้ร่วมความพยายามสร้างเวอร์ชัน UML 1.1 ซึ่งได้รับการอนุมัติโดย OMG ในปี 1997 เป็นมาตรฐาน

UML เป็นภาษา

ภาษาใดก็ตามประกอบด้วยคำศัพท์และกฎเกณฑ์ในการรวมคำเพื่อสร้างโครงสร้างที่มีความหมาย โดยเฉพาะอย่างยิ่งนี่คือวิธีโครงสร้างภาษาการเขียนโปรแกรมเช่น UML คุณลักษณะที่โดดเด่นของมันคือพจนานุกรมภาษาประกอบด้วยองค์ประกอบกราฟิก สัญลักษณ์กราฟิกแต่ละตัวมีความหมายเฉพาะที่เกี่ยวข้องกัน ดังนั้นแบบจำลองที่สร้างโดยนักพัฒนาคนหนึ่งจึงสามารถเข้าใจได้อย่างชัดเจนสำหรับอีกคนหนึ่ง เช่นเดียวกับเครื่องมือซอฟต์แวร์ที่ตีความ UML โดยเฉพาะอย่างยิ่งจากที่นี่เป็นไปตามที่โมเดลซอฟต์แวร์ที่นำเสนอใน UML สามารถแปลเป็นภาษาโปรแกรม OO ได้โดยอัตโนมัติ (เช่น Java, C++, VisualBasic) นั่นคือหากมีเครื่องมือสร้างแบบจำลองภาพที่ดีที่รองรับ UML ก็มี เมื่อสร้างโมเดลแล้ว เราก็จะได้รับโค้ดโปรแกรมตัวอย่างที่ตรงกับโมเดลนี้ด้วย

ควรเน้นว่า UML เป็นภาษา ไม่ใช่วิธีการ โดยจะอธิบายว่าองค์ประกอบใดในการสร้างโมเดลและวิธีอ่าน แต่ไม่ได้ระบุว่าควรพัฒนาโมเดลใดและในกรณีใด ในการสร้างวิธีการตาม UML จำเป็นต้องเสริมด้วยคำอธิบายกระบวนการพัฒนาซอฟต์แวร์ ตัวอย่างของกระบวนการดังกล่าวคือ Rational Unified Process ซึ่งจะกล่าวถึงในบทความต่อๆ ไป

พจนานุกรม UML

แบบจำลองนี้แสดงในรูปแบบของเอนทิตีและความสัมพันธ์ระหว่างสิ่งเหล่านั้น ซึ่งแสดงไว้ในไดอะแกรม

เอนทิตีเป็นนามธรรมที่เป็นองค์ประกอบหลักของแบบจำลอง เอนทิตีมีสี่ประเภท - โครงสร้าง (คลาส, อินเทอร์เฟซ, ส่วนประกอบ, กรณีการใช้งาน, การทำงานร่วมกัน, โหนด), พฤติกรรม (การโต้ตอบ, สถานะ), การจัดกลุ่ม (แพ็คเกจ) และคำอธิบายประกอบ (ความคิดเห็น) เอนทิตีแต่ละประเภทมีการแสดงกราฟิกของตัวเอง เอนทิตีจะถูกกล่าวถึงโดยละเอียดเมื่อศึกษาไดอะแกรม

ความสัมพันธ์แสดงความเชื่อมโยงต่างๆ ระหว่างเอนทิตี ประเภทของความสัมพันธ์ต่อไปนี้ถูกกำหนดไว้ใน UML:

  • ติดยาเสพติดแสดงให้เห็นถึงการเชื่อมโยงระหว่างสองเอนทิตีเมื่อการเปลี่ยนแปลงในหนึ่งในนั้น - เป็นอิสระ - สามารถส่งผลกระทบต่อความหมายของอีกอันหนึ่ง - ขึ้นอยู่กับ การพึ่งพาจะแสดงด้วยลูกศรประที่ส่งตรงจากเอนทิตีที่ขึ้นต่อกันไปยังเอนทิตีอิสระ
  • สมาคมคือความสัมพันธ์เชิงโครงสร้างที่แสดงให้เห็นว่าวัตถุของเอนทิตีหนึ่งเกี่ยวข้องกับวัตถุของอีกวัตถุหนึ่ง ในรูปแบบกราฟิก การเชื่อมโยงจะแสดงเป็นเส้นที่เชื่อมต่อเอนทิตีที่เกี่ยวข้อง การเชื่อมโยงทำหน้าที่นำทางระหว่างวัตถุ ตัวอย่างเช่น การเชื่อมโยงระหว่างคลาส "คำสั่งซื้อ" และ "ผลิตภัณฑ์" สามารถใช้เพื่อค้นหาผลิตภัณฑ์ทั้งหมดที่ระบุในคำสั่งซื้อเฉพาะในด้านหนึ่ง หรือเพื่อค้นหาคำสั่งซื้อทั้งหมดที่มีผลิตภัณฑ์นี้ในอีกด้านหนึ่ง เป็นที่ชัดเจนว่าโปรแกรมที่เกี่ยวข้องจะต้องใช้กลไกที่ให้การนำทางดังกล่าว หากจำเป็นต้องนำทางในทิศทางเดียว จะมีลูกศรระบุที่ส่วนท้ายของการเชื่อมโยง กรณีพิเศษของการสมาคมคือการรวมกลุ่ม - ความสัมพันธ์ในรูปแบบ "ทั้งหมด" - "บางส่วน" ในเชิงกราฟิก มันถูกเน้นด้วยเพชรที่ส่วนท้ายใกล้กับเนื้อเอสเซนส์ทั้งหมด
  • ลักษณะทั่วไปคือความสัมพันธ์ระหว่างเอนทิตีหลักและเอนทิตีลูก โดยพื้นฐานแล้ว ความสัมพันธ์นี้สะท้อนถึงคุณสมบัติของการสืบทอดสำหรับคลาสและอ็อบเจ็กต์ ลักษณะทั่วไปจะแสดงเป็นบรรทัดที่ลงท้ายด้วยรูปสามเหลี่ยมที่มุ่งไปยังเอนทิตีหลัก ลูกสืบทอดโครงสร้าง (คุณลักษณะ) และพฤติกรรม (วิธีการ) ของผู้ปกครอง แต่ในขณะเดียวกันก็สามารถมีองค์ประกอบโครงสร้างใหม่และวิธีการใหม่ได้ UML อนุญาตให้มีการสืบทอดหลายรายการ โดยที่เอนทิตีเกี่ยวข้องกับเอนทิตีหลักมากกว่าหนึ่งรายการ
  • การนำไปปฏิบัติ– ความสัมพันธ์ระหว่างเอนทิตีที่กำหนดข้อกำหนดของพฤติกรรม (อินเทอร์เฟซ) กับเอนทิตีที่กำหนดการดำเนินการของพฤติกรรมนี้ (คลาส ส่วนประกอบ) ความสัมพันธ์นี้มักใช้เมื่อสร้างโมเดลส่วนประกอบ และจะอธิบายรายละเอียดเพิ่มเติมในบทความต่อๆ ไป

ไดอะแกรม UML มีไดอะแกรมต่อไปนี้:

  • แผนภาพอธิบายพฤติกรรมของระบบ:
    • ไดอะแกรมของรัฐ
    • แผนภาพกิจกรรม
    • ไดอะแกรมวัตถุ
    • แผนภาพลำดับ
    • แผนภาพการทำงานร่วมกัน
  • ไดอะแกรมที่อธิบายการใช้งานจริงของระบบ:
    • ไดอะแกรมส่วนประกอบ
    • ไดอะแกรมการปรับใช้

มุมมองการควบคุมโมเดล แพ็คเกจ

เราได้กล่าวไปแล้วว่าเพื่อให้มนุษย์เข้าใจแบบจำลองได้ดี จำเป็นต้องจัดระเบียบแบบจำลองตามลำดับชั้น โดยปล่อยให้มีเอนทิตีจำนวนเล็กน้อยในแต่ละระดับของลำดับชั้น UML รวมถึงวิธีการจัดระเบียบการแสดงแบบจำลองแบบลำดับชั้น - แพ็คเกจ โมเดลใดๆ จะประกอบด้วยชุดแพ็กเกจที่อาจมีคลาส กรณีการใช้งาน และเอนทิตีและไดอะแกรมอื่นๆ แพ็คเกจสามารถมีแพ็คเกจอื่นได้ ซึ่งช่วยให้สามารถสร้างลำดับชั้นได้ UML ไม่มีไดอะแกรมแพ็คเกจแยกต่างหาก แต่อาจปรากฏในไดอะแกรมอื่น แพ็คเกจนี้แสดงเป็นรูปสี่เหลี่ยมผืนผ้าพร้อมบุ๊กมาร์ก

UML ให้อะไร

  • คำอธิบายลำดับชั้นของระบบที่ซับซ้อนโดยการระบุแพ็คเกจ
  • การทำให้ข้อกำหนดการทำงานสำหรับระบบเป็นทางการโดยใช้เครื่องมือของกรณีการใช้งาน
  • รายละเอียดความต้องการของระบบโดยการสร้างแผนภาพกิจกรรมและสถานการณ์จำลอง
  • การระบุคลาสข้อมูลและการสร้างแบบจำลองข้อมูลเชิงแนวคิดในรูปแบบของคลาสไดอะแกรม
  • การระบุคลาสที่อธิบายส่วนต่อประสานกับผู้ใช้และสร้างโครงร่างการนำทางบนหน้าจอ
  • คำอธิบายกระบวนการโต้ตอบของวัตถุเมื่อทำหน้าที่ของระบบ
  • คำอธิบายพฤติกรรมของวัตถุในรูปแบบของกิจกรรมและแผนภาพสถานะ
  • คำอธิบายส่วนประกอบซอฟต์แวร์และการโต้ตอบผ่านอินเทอร์เฟซ
  • คำอธิบายสถาปัตยกรรมทางกายภาพของระบบ

และสิ่งสุดท้าย...

แม้จะมีความน่าดึงดูดใจของ UML แต่ก็เป็นเรื่องยากที่จะใช้ในการสร้างแบบจำลองซอฟต์แวร์จริงโดยไม่มีเครื่องมือสร้างแบบจำลองด้วยภาพ เครื่องมือดังกล่าวช่วยให้คุณสามารถนำเสนอไดอะแกรมบนหน้าจอแสดงผลได้อย่างรวดเร็ว จัดทำเอกสาร สร้างเทมเพลตโค้ดโปรแกรมในภาษาการเขียนโปรแกรม OO ต่างๆ และสร้างสกีมาฐานข้อมูล ส่วนใหญ่รวมถึงความเป็นไปได้ในการรื้อปรับรหัสโปรแกรม - กู้คืนการคาดการณ์บางอย่างของรุ่นซอฟต์แวร์โดยการวิเคราะห์ซอร์สโค้ดของโปรแกรมโดยอัตโนมัติซึ่งเป็นสิ่งสำคัญมากในการรับรองความสอดคล้องระหว่างรุ่นและรหัสและเมื่อออกแบบระบบที่สืบทอดการทำงานของระบบรุ่นก่อน

แสดงพฤติกรรมของวัตถุชิ้นหนึ่งในช่วงชีวิตของมัน ตั้งแต่การสร้างวัตถุไปจนถึงการทำลายล้าง แผนภาพแต่ละสถานะแสดงถึงหุ่นยนต์บางตัว

แผนปฏิบัติการ

ในส่วนคำอธิบาย เรียนรู้ชุดพื้นฐานของสัญลักษณ์แผนภูมิสถานะที่จำเป็นเพื่อให้สามารถอ่านไดอะแกรมได้

หลังจากอ่านส่วนอื่นๆ แล้ว (ตัวอย่าง แอปพลิเคชัน) คุณสามารถลองสร้างไดอะแกรมสถานะด้วยตนเองได้

หมายเหตุ (คำอธิบาย)

นี่คือชุดอักขระพื้นฐาน ไดอะแกรมของรัฐจำเป็นต้องสามารถอ่านไดอะแกรมได้ หลังจากอ่านส่วนอื่นๆ (“ตัวอย่าง”, “แอปพลิเคชัน”) แล้ว คุณจะสามารถเขียนได้ ไดอะแกรมของรัฐด้วยตัวเอง!

ภาคเรียน ภาพ คำอธิบาย
สถานะเทียมเริ่มต้น สถานะเริ่มต้นของระบบ
การเปลี่ยนแปลง การเปลี่ยนแปลงหมายถึงการย้ายจากรัฐหนึ่งไปอีกรัฐหนึ่ง
สถานะ หมายถึงการกระทำที่ดำเนินการโดยระบบ (อาจรวมถึงตัวเลือกที่เป็นไปได้) ซึ่งนำไปสู่ผลลัพธ์ที่ผู้แสดงสังเกตได้
สถานะ
สถานะกิจกรรม
ขั้นตอนที่ยากในแบบอย่างสามารถแสดงได้ด้วยแบบอย่างอื่น
ในแง่ UML เรากล่าวว่ากรณีการใช้งานแรกรวมถึงกรณีที่สองด้วย
สถานะสุดท้าย ช่วยให้คุณสามารถกำหนดขอบเขตของระบบหรือระบบย่อยได้
กิจกรรมภายใน กรณีที่รัฐสามารถตอบสนองต่อเหตุการณ์โดยไม่ต้องทำการเปลี่ยนแปลง ซึ่งในกรณีนี้ เหตุการณ์ การป้องกัน และกิจกรรมต่างๆ จะถูกวางไว้ภายในสี่เหลี่ยมสถานะ
กิจกรรมอินพุต กิจกรรมอินพุตจะดำเนินการทุกครั้งที่คุณเข้าสู่สถานะ
กิจกรรมเอาท์พุต ออกจากกิจกรรม - ดำเนินการทุกครั้งที่คุณออกจากรัฐ
ซูเปอร์สเตท
มักเกิดขึ้นที่หลายรัฐมีช่วงเปลี่ยนผ่านและกิจกรรมภายในร่วมกัน ในกรณีเช่นนี้ สิ่งเหล่านี้สามารถเปลี่ยนเป็นรัฐย่อยได้ และพฤติกรรมโดยรวมสามารถถ่ายโอนไปยังรัฐเหนือได้
รัฐคู่ขนาน
สถานะสามารถแบ่งออกเป็นสถานะคู่ขนานหลายสถานะที่ทำงานพร้อมกันได้

วิธีการใช้เทคนิคความคิดสร้างสรรค์

แผนภูมิสถานะ UML เหมาะสำหรับการอธิบายลักษณะการทำงานของออบเจ็กต์เดียวในหลายกรณีการใช้งาน แต่ไม่เหมาะมากสำหรับการอธิบายพฤติกรรมที่มีลักษณะเฉพาะจากการมีปฏิสัมพันธ์ของวัตถุต่างๆ ดังนั้นจึงเหมาะสมที่จะใช้เทคโนโลยีอื่นร่วมกับไดอะแกรมสถานะ ตัวอย่างเช่น ไดอะแกรมการโต้ตอบ (บทที่ 4) ทำหน้าที่อธิบายพฤติกรรมของออบเจ็กต์หลายรายการได้ดีเยี่ยมในกรณีการใช้งานครั้งเดียว และไดอะแกรมกิจกรรม UML ดีสำหรับการแสดงลำดับพื้นฐานของการกระทำของวัตถุต่างๆ ในหลายกรณีการใช้งาน

ไม่ใช่ทุกคนที่คิดว่าไดอะแกรมสถานะเป็นไปตามธรรมชาติ ดูว่าผู้เชี่ยวชาญทำงานร่วมกับพวกเขาอย่างไร อาจเป็นไปได้ว่าสมาชิกในทีมของคุณไม่คิดว่าแผนภูมิสถานะเหมาะสมกับรูปแบบการทำงานของพวกเขา นี่ไม่ใช่ปัญหาที่ใหญ่ที่สุด คุณต้องจำไว้ว่าต้องใช้เทคนิคการทำงานที่แตกต่างกันร่วมกัน

หากคุณใช้ไดอะแกรมสถานะ อย่าพยายามวาดมันสำหรับทุกคลาสของระบบ แนวทางนี้มักใช้เพื่อจุดประสงค์ในการทำให้สมบูรณ์อย่างเข้มงวดอย่างเป็นทางการ แต่เกือบจะเป็นการสิ้นเปลืองความพยายามเสมอไป ใช้ไดอะแกรมสถานะสำหรับคลาสที่แสดงพฤติกรรมที่น่าสนใจเท่านั้น โดยการวาดไดอะแกรมสถานะช่วยให้คุณเข้าใจว่าสิ่งต่าง ๆ เกิดขึ้นได้อย่างไร

ผู้เชี่ยวชาญหลายคนเชื่อเช่นนั้น ตัวแก้ไข UI และออบเจ็กต์ควบคุมมีฟังก์ชันการทำงานที่มีประโยชน์เมื่อแสดงโดยใช้ไดอะแกรมสถานะ

วิธีการเรียนรู้

ที่นี่เราได้พยายามจัดเตรียมวิธีการเรียนรู้ที่เรียบง่ายที่สุดเท่าที่จะเป็นไปได้ ไดอะแกรมสถานะ UML.

เช่นเดียวกับภาษาอื่นๆ หลายภาษา ใช้ชุดสัญลักษณ์ในการอธิบาย ความหมายของสัญลักษณ์เหล่านี้สามารถพบได้ในตารางในส่วน "หมายเหตุ (คำอธิบาย)" แต่ละป้ายมีชื่อ (คำ) และการสะกดของตัวเอง นอกจากนี้ แต่ละคำศัพท์ยังมีคำอธิบายสั้นๆ เพื่อให้เข้าใจสาระสำคัญพื้นฐานของคำศัพท์ได้อย่างรวดเร็ว

ต่อไป เราขอแนะนำให้ไปที่ส่วน "ตัวอย่าง" ไดอะแกรมของรัฐเพื่อลองอ่านไดอะแกรมต่างๆ ดังนั้นจึงควรศึกษาส่วน "แอปพลิเคชัน" เนื่องจากแม้ว่าจำนวนประเภทไดอะแกรมใน UML จะมีน้อย แต่คุณสามารถได้รับประโยชน์สูงสุดจากการใช้งานเฉพาะเมื่อคุณใช้ไดอะแกรมที่เกี่ยวข้องตามวัตถุประสงค์ที่ต้องการ

ตัวอย่างการใช้งาน

ไดอะแกรมเครื่องสถานะเป็นเทคโนโลยีที่รู้จักกันดีในการอธิบายพฤติกรรมของระบบ ไดอะแกรมสถานะมีอยู่ในรูปแบบใดรูปแบบหนึ่งมาตั้งแต่ปี 1960 และในยุคแรก ๆ ของการเขียนโปรแกรมเชิงวัตถุ ไดอะแกรมเหล่านี้ถูกใช้เพื่อแสดงพฤติกรรมของระบบ ในแนวทางเชิงวัตถุ คุณจะวาดไดอะแกรมสถานะของคลาสเดียวเพื่อแสดงลักษณะการทำงานของออบเจ็กต์เดียวตลอดอายุการใช้งาน

เมื่อใดก็ตามที่มีการเขียนเกี่ยวกับเครื่องจักรของรัฐที่มีจำกัด ตัวอย่างย่อมรวมถึงระบบควบคุมความเร็วคงที่หรือตู้จำหน่ายสินค้าอัตโนมัติอย่างหลีกเลี่ยงไม่ได้
เราตัดสินใจใช้ตัวควบคุมแผงควบคุมลับในปราสาทโกธิก ในปราสาทแห่งนี้ เราต้องการซ่อนสมบัติของเราเพื่อให้หาได้ยาก เพื่อจะเข้าถึงตัวล็อคของตู้นิรภัย เราต้องดึงเทียนเชิงกลยุทธ์ออกจากเชิงเทียน แต่ตัวล็อคจะปรากฏขึ้นก็ต่อเมื่อประตูปิดอยู่เท่านั้น หลังจากที่ล็อคปรากฏขึ้น เราก็สามารถสอดกุญแจเข้าไปแล้วเปิดตู้นิรภัยได้ เพื่อความปลอดภัยยิ่งขึ้น เราได้จัดทำขึ้นมาเพื่อให้สามารถเปิดตู้นิรภัยได้หลังจากไขเทียนออกแล้วเท่านั้น หากโจรไม่ใส่ใจกับข้อควรระวังนี้ เราจะปล่อยสัตว์ประหลาดที่น่าขยะแขยงที่จะกลืนขโมย

ในรูป 10.1 แสดง แผนภาพสถานะคลาสคอนโทรลเลอร์ที่จัดการระบบรักษาความปลอดภัยสุดเก๋ของฉัน แผนภาพสถานะเริ่มต้นด้วยสถานะของวัตถุตัวควบคุมที่กำลังสร้าง: สถานะ รอ- สิ่งนี้ระบุไว้ในแผนภาพโดย สถานะเทียมเริ่มต้นซึ่งไม่ใช่สถานะแต่มีลูกศรชี้ไปที่สถานะเริ่มต้น
แผนภาพแสดงให้เห็นว่าตัวควบคุมสามารถอยู่ในสถานะใดสถานะหนึ่งจากสามสถานะ: รอ ล็อคและเปิด- แผนภาพยังแสดงกฎที่ตัวควบคุมเปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง กฎเหล่านี้นำเสนอในรูปแบบของการเปลี่ยน - เส้นที่เชื่อมต่อสถานะ

การเปลี่ยนแปลงหมายถึงการย้ายจากรัฐหนึ่งไปอีกรัฐหนึ่ง การเปลี่ยนแต่ละครั้งจะมีป้ายกำกับของตัวเอง ซึ่งประกอบด้วยสามส่วน:
ทริกเกอร์ลายเซ็น / กิจกรรม- ทั้งหมดเป็นทางเลือก โดยปกติ, รหัสทริกเกอร์เป็นเหตุการณ์เดียวที่สามารถทำให้เกิดการเปลี่ยนแปลงสถานะได้

หากระบุไว้ ผู้พิทักษ์จะเป็นเงื่อนไขตรรกะที่จะต้องปฏิบัติตามเพื่อให้การเปลี่ยนแปลงเกิดขึ้น กิจกรรมคือพฤติกรรมบางอย่างของระบบระหว่างการเปลี่ยนแปลง นี่อาจเป็นการแสดงออกทางพฤติกรรมใดก็ได้ ทริกเกอร์รหัสรูปแบบเต็มสามารถมีเหตุการณ์และพารามิเตอร์ได้หลายรายการ การเปลี่ยนจากสถานะรอ (รูปที่ 10.1) ไปเป็นสถานะอื่นสามารถอ่านได้ว่า “ในสถานะรอ หากแท่งเทียนถูกถอดออก คุณจะเห็นล็อคและไปที่สถานะล็อค”

คำอธิบายการเปลี่ยนแปลงทั้งสามส่วนเป็นทางเลือก การข้ามกิจกรรมหมายความว่าไม่มีอะไรเกิดขึ้นระหว่างการเปลี่ยนแปลง ข้ามโล่หมายความว่าการเปลี่ยนแปลงจะเกิดขึ้นเสมอหากมีเหตุการณ์ทริกเกอร์เกิดขึ้น รหัสทริกเกอร์ไม่ค่อยหายไป แต่ก็เกิดขึ้นได้ ซึ่งหมายความว่าการเปลี่ยนแปลงจะเกิดขึ้นทันที ซึ่งสามารถสังเกตได้เป็นหลักในสถานะที่ใช้งานอยู่

เมื่อเหตุการณ์เกิดขึ้นในสถานะใดสถานะหนึ่ง สามารถทำการเปลี่ยนจากสถานะนี้ได้เพียงครั้งเดียวเท่านั้น เช่น ในสถานะล็อค (รูปที่ 10.1) การป้องกันจะต้องแยกจากกัน หากมีเหตุการณ์เกิดขึ้นและไม่อนุญาตให้มีการเปลี่ยนผ่าน เช่น การปิดตู้นิรภัยในสถานะรอ หรือการเอาเทียนออกในขณะที่ประตูเปิดอยู่ เหตุการณ์นั้นจะถูกละเว้น

สถานะสุดท้าย ( สถานะสุดท้าย) หมายถึงเครื่องสถานะทำงานเสร็จแล้ว ทำให้วัตถุตัวควบคุมถูกลบ ดังนั้นสำหรับผู้ที่ไม่ระมัดระวังพอที่จะตกหลุมพราง เนื่องจากวัตถุควบคุมหมดสิ้นไปแล้ว เราจึงถูกบังคับให้นำกระต่ายกลับเข้าไปในกรง ถูพื้น และรีบูตระบบ

โปรดจำไว้ว่าเครื่องสถานะสามารถแสดงเฉพาะวัตถุที่ถูกสังเกตหรือดำเนินการโดยตรงเท่านั้น ดังนั้นแม้ว่าคุณอาจคาดหวังให้เราใส่ของบางอย่างเข้าไปหรือนำของบางอย่างออกจากตู้นิรภัยเมื่อประตูเปิดอยู่ เราไม่ได้ทำเครื่องหมายสิ่งนี้บนแผนภาพเพราะผู้ควบคุมไม่สามารถบอกอะไรเราเกี่ยวกับสิ่งนั้นได้

เมื่อนักพัฒนาพูดคุยเกี่ยวกับออบเจ็กต์ พวกเขามักจะอ้างถึงสถานะของออบเจ็กต์ ซึ่งหมายถึงการรวมกันของข้อมูลทั้งหมดที่มีอยู่ในช่องของออบเจ็กต์ อย่างไรก็ตาม สถานะในแผนภาพเครื่องสถานะเป็นแนวคิดเกี่ยวกับสถานะที่เป็นนามธรรมมากกว่า ประเด็นก็คือรัฐต่างๆ ต้องการวิธีตอบสนองต่อเหตุการณ์ที่แตกต่างกัน

กิจกรรมภายในในแผนผังรัฐ

รัฐสามารถตอบสนองต่อเหตุการณ์โดยไม่ต้องทำการเปลี่ยนแปลงโดยใช้ กิจกรรมภายใน (กิจกรรมภายใน) ซึ่งในกรณีนี้เหตุการณ์ การป้องกัน และกิจกรรมต่างๆ จะถูกวางไว้ภายในสี่เหลี่ยมสถานะ

ในรูป 10.2 แสดงสถานะด้วยกิจกรรมสัญลักษณ์ภายในและเหตุการณ์ระบบช่วยเหลือ ซึ่งคุณสามารถสังเกตได้ในช่องข้อความของเครื่องมือแก้ไข UI- กิจกรรมภายในเป็นเหมือนการเปลี่ยนแปลงตนเอง - การเปลี่ยนแปลงที่กลับสู่สภาวะเดิม ไวยากรณ์ของกิจกรรมภายในถูกสร้างขึ้นตามรูปแบบตรรกะเดียวกันของเหตุการณ์ การป้องกัน และขั้นตอนต่างๆ

ในรูป 10.2 ยังแสดงกิจกรรมพิเศษ: กิจกรรมอินพุตและเอาท์พุต. กิจกรรมอินพุตดำเนินการเมื่อใดก็ตามที่คุณเข้าสู่สถานะ กิจกรรมเอาท์พุต- เมื่อใดก็ตามที่คุณออกจากรัฐ อย่างไรก็ตาม ยังไม่มีการริเริ่มกิจกรรมภายใน กิจกรรมอินพุตและเอาท์พุต- นี่คือความแตกต่างระหว่าง กิจกรรมภายในและการเปลี่ยนแปลงตนเอง .

สถานะกิจกรรมในไดอะแกรมสถานะ

ในสถานะที่เราอธิบายไปแล้ว วัตถุจะเงียบและรอเหตุการณ์ถัดไปก่อนจะทำอะไรก็ตาม อย่างไรก็ตาม มีความเป็นไปได้ที่วัตถุจะแสดงกิจกรรมบางอย่าง

สถานะ กำลังค้นหาในรูป 10.3 เป็นสถานะดังกล่าว สถานะกิจกรรม: กิจกรรมที่กำลังดำเนินอยู่จะแสดงด้วยสัญลักษณ์ ทำ/- ดังนั้นคำนี้ ทำกิจกรรม (มีความกระตือรือร้น)- หลังจากการค้นหาเสร็จสิ้น การเปลี่ยนจะดำเนินการโดยไม่มีกิจกรรม เช่น การแสดงอุปกรณ์ใหม่ (แสดงฮาร์ดแวร์ใหม่)- หากมีเหตุการณ์การยกเลิกเกิดขึ้นระหว่างกิจกรรม ( ยกเลิก), ที่ ทำกิจกรรมเพียงขัดจังหวะแล้วเราก็กลับสู่สถานะ อัปเดตหน้าต่างฮาร์ดแวร์

ทั้งกิจกรรมที่ทำและกิจกรรมปกติแสดงถึงการแสดงพฤติกรรมบางอย่าง ความแตกต่างที่สำคัญระหว่างทั้งสองคือ กิจกรรมปกติจะเกิดขึ้น "ทันที" และไม่สามารถถูกขัดจังหวะด้วยเหตุการณ์ปกติได้ ในขณะที่กิจกรรมที่ทำสามารถดำเนินการได้ในระยะเวลาที่จำกัดและสามารถถูกขัดจังหวะได้ ดังแสดงในรูปที่ 1 10.3. สภาวะชั่วขณะนั้นถูกตีความแตกต่างกันไปสำหรับระบบที่ต่างกัน สำหรับระบบเรียลไทม์ อาจต้องใช้คำสั่งเครื่องหลายคำสั่ง และสำหรับซอฟต์แวร์เดสก์ท็อปอาจใช้เวลาหลายวินาที

ใน ยูเอ็มแอล 1กิจกรรมปกติถูกกำหนดตามระยะเวลา การกระทำ(การกระทำ) และคำว่า กิจกรรม(กิจกรรม) ใช้สำหรับเท่านั้น ทำกิจกรรม.

รัฐเหนือ

มักเกิดขึ้นที่หลายรัฐมีช่วงเปลี่ยนผ่านและกิจกรรมภายในร่วมกัน ในกรณีเช่นนี้ พวกมันสามารถเปลี่ยนเป็นสถานะย่อยได้ และพฤติกรรมโดยรวมสามารถถ่ายโอนไปยังสถานะเหนือได้ ดังแสดงในรูปที่. 10.4. หากไม่มีรัฐเหนือ เราคงต้องสร้างการเปลี่ยนแปลง ยกเลิก(ยกเลิก) สำหรับทั้งสามรัฐภายในรัฐหนึ่ง ป้อนรายละเอียดการเชื่อมต่อ.

รัฐคู่ขนาน

สถานะสามารถแบ่งออกเป็นสถานะคู่ขนานหลายสถานะที่ทำงานพร้อมกันได้ ในรูป รูปที่ 10.5 แสดงนาฬิกาปลุกธรรมดาที่สามารถเปิดได้ทั้งซีดีหรือวิทยุและแสดงเวลาปัจจุบันหรือเวลาปลุก

ตัวเลือกซีดี/วิทยุและเวลาปัจจุบัน/เวลาปลุกเป็นแบบขนาน หากคุณต้องการแสดงสิ่งนี้โดยใช้ไดอะแกรมสถานะที่ไม่ขนาน คุณจะจบลงด้วยไดอะแกรมที่ไม่เป็นระเบียบซึ่งจำเป็นต้องเพิ่มสถานะ การแยกพฤติกรรมทั้งสองออกเป็นสองไดอะแกรมสถานะทำให้ชัดเจนยิ่งขึ้น

ข้าว. 10.5 ยังรวมถึง สถานะของยุคก่อนประวัติศาสตร์(ประวัติศาสตร์หลอก). ซึ่งหมายความว่าเมื่อเปิดนาฬิกา ตัวเลือกวิทยุ/ซีดีจะเข้าสู่สถานะเดียวกับนาฬิกาเมื่อปิดเครื่อง ลูกศรที่ออกมาจากยุคก่อนประวัติศาสตร์แสดงให้เห็นว่ามีสภาพใดดำรงอยู่ในตอนแรกเมื่อไม่มีประวัติศาสตร์

การนำแผนภูมิรัฐไปใช้

แผนภาพสถานะสามารถใช้งานได้สามวิธีหลัก: การใช้คำสั่งสวิตช์แบบซ้อน รูปแบบสถานะ และตารางสถานะ แนวทางที่ตรงที่สุดในการทำงานกับแผนภูมิสถานะคือคำสั่งสวิตช์แบบซ้อน เช่น ในรูป 10.6.

แม้ว่าวิธีนี้จะตรงไปตรงมา แต่ก็ใช้เวลานานมากสำหรับกรณีง่ายๆ นี้ นอกจากนี้ ด้วยวิธีนี้ ทำให้สูญเสียการควบคุมได้ง่ายมาก ดังนั้นเราจึงไม่แนะนำให้ใช้แม้ในสถานการณ์เบื้องต้น
รูปแบบของรัฐแสดงถึงลำดับชั้นของคลาสของรัฐสำหรับการจัดการพฤติกรรมของรัฐ แต่ละรัฐในแผนภาพสถานะมีคลาสย่อยของสถานะของตัวเอง คอนโทรลเลอร์มีวิธีการสำหรับแต่ละเหตุการณ์ที่ส่งต่อไปยังคลาสสถานะ แผนภาพสถานะที่แสดงในรูปที่ 10.1 สามารถนำไปใช้ได้โดยใช้คลาสที่แสดงในรูปที่ 1 10.7.

ด้านบนของลำดับชั้นเป็นคลาสนามธรรมที่มีคำอธิบายของวิธีการทั้งหมดที่ประมวลผลเหตุการณ์ แต่ไม่มีการดำเนินการ
สำหรับแต่ละสถานะ เฉพาะการเขียนเมธอดตัวจัดการใหม่สำหรับเหตุการณ์เฉพาะที่เริ่มต้นการเปลี่ยนจากสถานะก็เพียงพอแล้ว
ตารางสถานะแสดงแผนภาพสถานะเป็นข้อมูล

ดังนั้น แผนภาพในรูป 10.1 สามารถนำเสนอเป็นตารางได้ 10.1.
จากนั้นเราสร้างล่ามที่ใช้ตารางสถานะรันไทม์หรือตัวสร้างโค้ดที่สร้างคลาสจากตารางนั้น

แน่นอนว่างานส่วนใหญ่ในตารางสถานะเสร็จสิ้นเพียงครั้งเดียว แต่ก็สามารถใช้งานได้ทุกครั้งที่ต้องแก้ไขปัญหาสถานะ ตารางสถานะรันไทม์สามารถแก้ไขได้โดยไม่ต้องคอมไพล์ใหม่ ซึ่งค่อนข้างสะดวก เทมเพลตสถานะนั้นง่ายต่อการประกอบ และแม้ว่าแต่ละรัฐจะต้องมีคลาสแยกกัน แต่จำนวนโค้ดที่ต้องเขียนก็ค่อนข้างน้อย

การใช้งานที่แสดงนั้นแทบจะน้อยมาก แต่ก็ให้แนวคิดในการใช้งาน ไดอะแกรมของรัฐ- ในแต่ละกรณี การใช้งาน state model ส่งผลให้เกิดโปรแกรมที่ค่อนข้างเป็นแบบแผน ดังนั้นจึงมักจะดีกว่าหากหันไปใช้การสร้างโค้ดบางรูปแบบเพื่อให้บรรลุเป้าหมายนี้

สมัครรับข่าวสารของเว็บไซต์ คุณจะพบแบบฟอร์มสมัครสมาชิกในคอลัมน์ด้านขวาของเว็บไซต์

หากคุณต้องการเรียนรู้วิธีการทำงานเป็นฟรีแลนซ์อย่างมืออาชีพ เราขอเชิญคุณเข้าร่วมหลักสูตร “”

UML หรือ Unified Modeling Language เป็นภาษาคำอธิบายแบบกราฟิกสำหรับการสร้างแบบจำลองวัตถุในด้านการพัฒนาซอฟต์แวร์ แต่การใช้ UML ไม่ได้จำกัดอยู่เพียงด้านไอทีเท่านั้น การใช้งานจริงของ UML อีกด้านคือการสร้างแบบจำลองกระบวนการทางธุรกิจ การออกแบบระบบ และการทำแผนที่โครงสร้างองค์กร UML ช่วยให้นักพัฒนาซอฟต์แวร์สามารถตกลงเรื่องสัญลักษณ์กราฟิกเพื่อแสดงแนวคิดทั่วไปและมุ่งเน้นไปที่การออกแบบและการพัฒนา

ประโยชน์ของ UML

  • UML ใช้สัญลักษณ์กราฟิกสำหรับองค์ประกอบของระบบที่กำลังสร้างแบบจำลอง และไดอะแกรม UML นั้นค่อนข้างเข้าใจง่าย
  • UML ทำให้สามารถอธิบายระบบได้จากมุมมองที่เป็นไปได้เกือบทั้งหมด โดยคำนึงถึงแง่มุมต่างๆ
  • UML เป็นแบบเชิงวัตถุ: วิธีการวิเคราะห์และการสร้างมีความหมายใกล้เคียงกับวิธีการเขียนโปรแกรมที่ใช้ในภาษา OOP สมัยใหม่
  • UML เป็นมาตรฐานเปิด มาตรฐานพัฒนาและพัฒนาจากรุ่นสู่รุ่น ตรงตามข้อกำหนดที่ทันสมัยที่สุดสำหรับการอธิบายระบบ
  • มีกลไกส่วนขยายที่ให้คุณป้อนข้อความและประเภทกราฟิกเพิ่มเติมซึ่งทำให้สามารถใช้ UML ได้ไม่เพียง แต่ในสาขาไอทีเท่านั้น

ประเภทไดอะแกรม UML

UML มีไดอะแกรมอยู่ 14 ประเภท พวกเขาสามารถแบ่งออกเป็น 2 ประเภท:

  • โครงสร้างเป็นตัวแทนโครงสร้างข้อมูล
  • เกี่ยวกับพฤติกรรมแสดงถึงพฤติกรรมของระบบและการโต้ตอบด้านต่างๆ มีการพิจารณาประเภทย่อยของแผนภาพพฤติกรรมที่แยกจากกัน แผนภาพปฏิสัมพันธ์.

ลำดับชั้นของประเภทไดอะแกรม UML แสดงด้วยแผนภาพคลาส

แผนภาพโครงสร้าง

  1. แผนภาพชั้นเรียนเป็นองค์ประกอบสำคัญในการสร้างแบบจำลองเชิงวัตถุ โดยใช้แผนภาพนี้ (จริงๆ แล้วผ่าน ชั้นเรียน, ของพวกเขา คุณลักษณะ, วิธีการและการขึ้นต่อกันระหว่างคลาส) อธิบายโมเดลโดเมนและโครงสร้างของระบบโมเดล
  2. แผนภาพส่วนประกอบแสดงการแยกย่อยโค้ดโปรแกรมเป็นบล็อกขนาดใหญ่ (ส่วนประกอบโครงสร้าง) และแสดง การพึ่งพาอาศัยกันระหว่างพวกเขา. ส่วนประกอบสามารถเป็นแพ็คเกจ โมดูล ไลบรารี ไฟล์ ฯลฯ
  3. แผนภาพวัตถุแสดงระบบจำลองบางส่วนหรือทั้งหมด ณ เวลาที่กำหนด มันแสดงถึงอินสแตนซ์ของคลาส (วัตถุ) สถานะ (ค่าแอตทริบิวต์ปัจจุบัน) และความสัมพันธ์ระหว่างสิ่งเหล่านั้น
  4. แผนภาพโครงสร้างคอมโพสิตแสดงให้เห็นถึงโครงสร้างภายในของคลาสและปฏิสัมพันธ์ระหว่างองค์ประกอบของโครงสร้างนี้หากเป็นไปได้
  5. แผนภาพแพ็คเกจแสดงแพ็คเกจและความสัมพันธ์ระหว่างกัน ไดอะแกรมประเภทนี้ทำหน้าที่ลดความซับซ้อนของโครงสร้างของโมเดล (และใช้งานตามนั้น) โดยการรวมองค์ประกอบของโมเดลออกเป็นกลุ่มตามเกณฑ์ที่กำหนด
  6. แผนภาพการปรับใช้จำลองการใช้งานส่วนประกอบซอฟต์แวร์ ( สิ่งประดิษฐ์) เกี่ยวกับทรัพยากรการประมวลผล/ส่วนประกอบฮาร์ดแวร์ ( โหนด).
  7. แผนภาพโปรไฟล์อธิบายกลไกการขยายที่ช่วยให้ UML สามารถปรับให้เข้ากับสาขาวิชาและอุตสาหกรรมที่หลากหลาย

ตัวอย่างไดอะแกรมคลาส UML

แผนภาพพฤติกรรม

  1. แผนภาพกิจกรรมแสดงการกระทำ ( การกระทำ) ซึ่งกิจกรรมบางอย่างประกอบด้วย ( กิจกรรม- แผนภาพกิจกรรมใช้เพื่อสร้างแบบจำลองกระบวนการทางธุรกิจ กระบวนการทางเทคโนโลยี การคำนวณตามลำดับและแบบขนาน
  2. ใช้แผนภาพกรณี(หรือ แผนภาพกรณีการใช้งาน) อธิบายความสัมพันธ์ระหว่างนักแสดง (นักแสดง) และกรณีการใช้งานของระบบแบบจำลอง (ความสามารถของระบบ) วัตถุประสงค์หลักของแผนภาพคือการเป็นเครื่องมือสากลสำหรับลูกค้า นักพัฒนา และผู้ใช้ปลายทางเพื่อร่วมกันหารือเกี่ยวกับระบบ - ความสามารถและพฤติกรรมของระบบ
  3. แผนภาพสถานะแสดงให้เห็นพฤติกรรมแบบไดนามิกของเอนทิตี โดยแสดงให้เห็นว่าเอนทิตีนี้ตอบสนองต่อเหตุการณ์ต่างๆ อย่างไร ขึ้นอยู่กับสถานะปัจจุบัน นี่คือแผนภาพสถานะจากทฤษฎีอะตอม
  4. แผนภาพการสื่อสาร(ในเวอร์ชันก่อนหน้านี้ แผนภาพความร่วมมือ) แสดงปฏิสัมพันธ์ระหว่างส่วนต่างๆ ของโครงสร้างประกอบและบทบาทของความร่วมมือ แผนภาพระบุความสัมพันธ์ระหว่างองค์ประกอบ (วัตถุ) อย่างชัดเจน
  5. แผนภาพลำดับใช้เพื่อแสดงภาพลำดับของการโต้ตอบของวัตถุ แสดงวงจรชีวิตของวัตถุที่กำหนดและการโต้ตอบของนักแสดง (นักแสดง) ภายในกรณีการใช้งานบางอย่าง ลำดับของข้อความที่พวกเขาแลกเปลี่ยนกัน
  6. แผนภาพภาพรวมการโต้ตอบรวมถึงส่วนหนึ่งของแผนภาพลำดับและการออกแบบโฟลว์การควบคุม ช่วยพิจารณาปฏิสัมพันธ์ของวัตถุจากมุมมองที่ต่างกัน
  7. แผนภาพเวลา- ประเภทย่อยแยกต่างหากของไดอะแกรมโต้ตอบที่เชี่ยวชาญด้านเวลา ไดอะแกรมประเภทนี้ใช้เพื่อศึกษาพฤติกรรมของวัตถุในช่วงระยะเวลาหนึ่ง