การแนะนำ
ฉันคิดว่าทุกคนคงเคยได้ยินคำพูดที่ว่า "ตวง 2 ครั้ง ตัดครั้งเดียว" กันมาบ้างแล้ว เป็นคำแนะนำที่แท้จริงในการเขียนโปรแกรม ดีกว่าเสมอที่จะคิดเกี่ยวกับการนำไปใช้ก่อนที่คุณจะใช้เวลาใด ๆ ในการดำเนินการ ในระหว่างการนำไปใช้งาน คุณมักจะต้องสร้างชั้นเรียนและคิดว่าจะโต้ตอบกันอย่างไร การแสดงภาพทั้งหมดมักจะช่วยให้คุณคิดวิธีแก้ปัญหาที่ถูกต้องที่สุดได้ นี่คือที่ UML Class Diagram มาช่วยเราUML คืออะไร?
หากคุณดูรูปภาพที่เกี่ยวข้องในเครื่องมือค้นหา คุณจะเห็นว่า UML มีส่วนเกี่ยวข้องกับไดอะแกรม ลูกศร และสี่เหลี่ยม คุณต้องรู้ว่า UML ย่อมาจาก Unified Modeling Language Unified เป็นคำสำคัญที่นี่ ซึ่งหมายความว่าภาพของเราจะไม่เพียงเข้าใจเราเท่านั้น แต่ยังรวมถึงใครก็ตามที่รู้จัก UML ด้วย เป็นภาษากลางสำหรับวาดไดอะแกรมตามวิกิพีเดีย
"UML เป็นภาษาสำหรับวัตถุประสงค์ทั่วไป การพัฒนา การสร้างแบบจำลองในสาขาวิศวกรรมซอฟต์แวร์ ซึ่งมีวัตถุประสงค์เพื่อให้เป็นแนวทางมาตรฐานในการแสดงภาพการออกแบบระบบ"สิ่งที่น่าสนใจที่สุดซึ่งไม่ใช่ทุกคนที่คาดเดาได้คือ UML มีข้อกำหนด และยังมีข้อกำหนด UML 2 ข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลจำเพาะมีอยู่ในเว็บไซต์Object Management Group อันที่จริงแล้ว กลุ่มนี้พัฒนาข้อกำหนด UML นอกจากนี้ยังเป็นที่น่าสนใจว่า UML ไม่จำกัดเพียงการอธิบายโครงสร้างของคลาสเท่านั้น ไดอะแกรม UML มีหลายประเภท วิกิพีเดียมีคำอธิบายโดยย่อ เกี่ยวกับไดอะแกรม UML ประเภทต่างๆ: ไดอะแกรม UML กลับไปที่ไดอะแกรมคลาส UML คุณควรพูดถึงหนังสือ"รูปแบบการออกแบบก่อนใคร"ใช้ไดอะแกรม UML เพื่อแสดงรูปแบบการออกแบบ บรรทัดล่างคือ UML ถูกใช้งานจริงๆ และปรากฎว่าการรู้และเข้าใจวิธีใช้มีประโยชน์มากทีเดียว
แอปพลิเคชัน
มาดูกันว่าเราสามารถทำงานกับ UML ใน IDE ได้ เราจะใช้ IntelliJ IDEA เป็น IDE ของเรา หากคุณใช้ IntelliJ IDEA Ultimate เราจะติดตั้งปลั๊กอิน "UML Support" "นอกกรอบ" ช่วยให้คุณสร้างไดอะแกรมคลาสที่สวยงามได้โดยอัตโนมัติ ตัวอย่างเช่น ใช้ Ctrl+N หรือรายการเมนู "นำทาง" -> "คลาส" เพื่อไปที่คลาส ArrayList ตอนนี้ในเมนูบริบทของชื่อคลาส เลือก "ไดอะแกรม" -> "แสดงป๊อปอัพไดอะแกรม" เป็นผลให้เราได้แผนภาพที่สวยงาม แต่ถ้าคุณต้องการวาดไดอะแกรมด้วยตัวเองล่ะ แล้วถ้าไม่มีรุ่น Ultimate ล่ะ? เมื่อใช้ IntelliJ IDEA Community Edition เราไม่มีทางเลือกอื่น ดังนั้นเราต้องเข้าใจว่าไดอะแกรม UML ถูกจัดระเบียบอย่างไร อันดับแรก,. เป็นชุดเครื่องมือสร้างภาพกราฟ ปลั๊กอินที่เราจะใช้ขึ้นอยู่กับปลั๊กอินนั้น หลังการติดตั้ง คุณต้องเพิ่มไดเร็กทอรี bin จากไดเร็กทอรีการติดตั้ง Graphviz ไปยังตัวแปรสภาพแวดล้อม PATH หลังจากนั้น ใน IntelliJ IDEA ให้เลือก File -> Settings ในเมนู ในหน้าต่าง "การตั้งค่า" เลือกหมวดหมู่ "ปลั๊กอิน" คลิกปุ่ม "เรียกดูที่เก็บ" และติดตั้งปลั๊กอินการรวม PlantUML PlantUML ดีอย่างไร? อธิบาย UML โดยใช้ภาษาคำอธิบายกราฟที่เรียกว่า "จุด" ซึ่งทำให้เป็นสากลมากขึ้น เนื่องจากภาษาจุดถูกใช้โดยมากกว่าแค่ PlantUML ยิ่งไปกว่านั้น ทุกสิ่งที่เราทำด้านล่างสามารถทำได้ไม่เฉพาะใน IDE เท่านั้น แต่ยังทำออนไลน์ได้ที่planttext.com. หลังจากติดตั้งปลั๊กอิน PlantUML แล้ว เราจะสามารถสร้างไดอะแกรม UML โดยใช้ "ไฟล์" -> "ใหม่" มาสร้างไดอะแกรม "คลาส UML" กัน สิ่งนี้จะสร้างเทมเพลตพร้อมตัวอย่างโดยอัตโนมัติ เราจะลบเนื้อหาและเพิ่มของเราเอง เพื่อทำความเข้าใจวิธีการแสดงสิ่งนี้เป็นข้อความ โปรดดูคู่มือ PlantUML: plantuml class-diagram อาศัยวัสดุเหล่านี้ มาเริ่มสร้างไดอะแกรม UML ของเรากัน เพิ่มเนื้อหาต่อไปนี้ ซึ่งอธิบายสองคลาส:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
หากต้องการดูผลลัพธ์ใน IDEA ให้เลือก "View" -> "Tool Windows" -> "PlantUML" เราเพิ่งได้สองช่องสี่เหลี่ยมที่แสดงถึงคลาส เรารู้ว่าทั้งสองคลาสนี้ใช้อินเทอร์เฟซรายการ ความสัมพันธ์ทางชนชั้นนี้เรียกว่าสำนึก ความสัมพันธ์นี้แสดงโดยใช้ลูกศรที่มีเส้นประ มาวาดกันเถอะ:
interface List
List <|.. ArrayList
List <|.. LinkedList
รายชื่อเป็นหนึ่งในลูกของคอลเลกชัน ชั้น นั่นคือมันสืบทอดCollection ความสัมพันธ์นี้เรียกว่าการวางนัยทั่วไป ดูเหมือนลูกศรที่มีเส้นต่อเนื่องธรรมดา มาวาดกันเถอะ:
interface Collection
Collection <|-- List
สำหรับความสัมพันธ์ประเภทถัดไป ให้เพิ่ม คำอธิบายคลาส ArrayListรายการเกี่ยวกับอาร์เรย์ ส่วนตัวของแพ็คเกจ :
~Object[] elementData
ตอนนี้เราต้องการแสดงว่าArrayListมีวัตถุบางอย่าง ในกรณีนี้จะมีความสัมพันธ์แบบรวม รายการอาร์เรย์เป็นผลรวมเนื่องจากมีวัตถุอื่นๆ เราเรียกว่าการรวมเพราะวัตถุของรายการสามารถอยู่ได้โดยไม่มีรายการ: พวกมันไม่ใช่ส่วนประกอบสำคัญของรายการ อายุการใช้งานของพวกเขาไม่ได้ผูกติดอยู่กับอายุการใช้งานของรายการ คำว่า "รวม" มาจากภาษาละตินและแปลว่า "ประกอบ" นั่นคือสิ่งที่ประกอบขึ้นจากบางสิ่ง ตัวอย่างเช่น ในชีวิตเรามีชุดประกอบเครื่องสูบน้ำ (รวม) ซึ่งประกอบด้วยเครื่องสูบน้ำและมอเตอร์ สามารถถอดประกอบชิ้นส่วนได้และเราสามารถทิ้งส่วนประกอบบางส่วนไว้ตามลำพังได้ เช่นนำไปขายหรือนำไปประกอบอย่างอื่น. เป็นแบบเดียวกับในรายการ ซึ่งแสดงด้วยรูปสี่เหลี่ยมขนมเปียกปูนเปล่าที่เส้นรวมและเส้นต่อเนื่อง เราจะเป็นตัวแทนดังต่อไปนี้:
class Object{
}
ArrayList o- Object
ตอนนี้เราต้องการแสดงให้เห็นว่าไม่เหมือนกับArrayList คลาส LinkedList มีNode s — คอนเทนเนอร์ที่อ้างอิงข้อมูลที่เก็บไว้ ในกรณีนี้โหนดเป็นส่วนหนึ่งของLinkedListและไม่มีการดำรงอยู่อย่างอิสระ โหนดไม่ใช่เนื้อหา มันมีการอ้างอิงถึงเนื้อหาเท่านั้น ตัวอย่างเช่น เมื่อเราเพิ่มสตริงลงในLinkedListเรากำลังเพิ่มโหนด ใหม่ ที่มีการอ้างอิงถึงสตริง รวมทั้งลิงก์ไปยังโหนดก่อนหน้าและโหนด ถัดไป. ความสัมพันธ์นี้เรียกว่าองค์ประกอบ เป็นภาพโดยการวาดเส้นต่อเนื่องที่มีรูปสี่เหลี่ยมขนมเปียกปูนเต็มไปหมดบนส่วนประกอบ ตอนนี้เราจะแสดงความสัมพันธ์เป็นข้อความ:
class Node{
}
LinkedList *-- Node
และตอนนี้คุณต้องเรียนรู้วิธีอธิบายความสัมพันธ์ที่สำคัญประเภทอื่น: การพึ่งพาอาศัยกัน ใช้เมื่อคลาสหนึ่งใช้อีกคลาสหนึ่ง แต่คลาสนั้นไม่มีหรือสืบทอดคลาสที่ใช้แล้ว ตัวอย่างเช่นLinkedListและArrayListรู้วิธีสร้างListIterator เราแสดงสิ่งนี้เป็นลูกศรด้วยเส้นประ:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
หลังจากทำทั้งหมดนี้แล้ว เราจะได้รับ: คุณสามารถเพิ่มรายละเอียดได้มากเท่าที่จำเป็น แน่นอนว่าไม่มีอะไรเหนือธรรมชาติในการวาดภาพแผนภาพดังกล่าว เมื่อทำงานของคุณเอง คุณสามารถวาดมันออกมาด้วยมือได้อย่างรวดเร็ว สิ่งนี้จะช่วยให้คุณพัฒนาความสามารถในการคิดผ่านสถาปัตยกรรมของแอปพลิเคชันและระบุข้อบกพร่องในโครงสร้างคลาสตั้งแต่เนิ่นๆ ไม่ใช่หลังจากที่คุณใช้เวลาทั้งวันไปกับการใช้โมเดลที่ไม่ถูกต้อง ดูเหมือนจะเป็นเหตุผลที่ดีที่จะลองใช่ไหม :)
ระบบอัตโนมัติ
มีหลายวิธีในการสร้างไดอะแกรม PlantUML โดยอัตโนมัติ ตัวอย่างเช่น IDEA มี ปลั๊กอิน SketchITแต่วาดไดอะแกรมไม่ถูกต้องทั้งหมด สมมติว่าการใช้งานอินเทอร์เฟซถูกวาดอย่างไม่ถูกต้อง (แสดงเป็นการสืบทอด) อินเทอร์เน็ตมีตัวอย่างวิธีรวมเข้ากับกระบวนการสร้างโครงการของคุณ ตัวอย่างเช่น คุณสามารถค้นหาวิธีใช้uml-java-dockletกับ Maven เพื่อสาธิต เราจะใช้Maven Archetypeเพื่อสร้างโปรเจ็กต์ Maven อย่างรวดเร็ว วิ่ง
mvn archetype:generate
ในการตอบสนองต่อ เลือกหมายเลขหรือใช้ตัวกรอง ปล่อยให้เป็นค่าเริ่มต้น — เพียงกด Enter มันจะเป็น "maven-archetype-quickstart" เสมอ เลือกเวอร์ชันล่าสุด ต่อไป เราจะตอบคำถามบางข้อและสร้างโครงการให้เสร็จสิ้น: Maven ไม่ใช่หัวข้อของบทความนี้ ดังนั้นคุณสามารถค้นหาคำตอบสำหรับคำถามของคุณเกี่ยวกับ Maven ได้ในMaven Users Center ในโปรเจ็กต์ที่สร้างขึ้น ให้เปิดไฟล์คำอธิบายโปรเจ็กต์ pom.xml เพื่อแก้ไข เราจะคัดลอกเนื้อหาจาก คำอธิบาย การติดตั้ง uml-java-dockletไปยังไฟล์นี้ ไม่พบสิ่งประดิษฐ์ที่ใช้ในคำอธิบายในที่เก็บ Maven Central แต่สิ่งต่อไปนี้ใช้ได้สำหรับฉัน: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. กล่าวอีกนัยหนึ่ง ในคำอธิบาย คุณต้องเปลี่ยน groupId จาก "info.leadinglight" เป็น "com.chfourie" และตั้งค่าเวอร์ชันเป็น "1.0.0" หลังจากนั้น เราสามารถเรียกใช้คำสั่งต่อไปนี้ในไดเร็กทอรีด้วยไฟล์ pom.xml:
mvn clean install
และ
mvn javadoc: javadoc
หากตอนนี้เราเปิดเอกสารที่สร้างขึ้น (explorer target\site\apidocs\index.html) เราจะเห็นไดอะแกรม UML อย่างไรก็ตาม ตอนนี้ความสัมพันธ์ของการใช้งานแสดงอย่างถูกต้องแล้ว :)
GO TO FULL VERSION