pengenalan
Saya rasa semua orang pernah mendengar pepatah "Ukur dua kali, potong sekali". Sungguh nasihat dalam pengaturcaraan. Adalah lebih baik untuk memikirkan pelaksanaannya sebelum anda meluangkan masa untuk melaksanakannya. Semasa pelaksanaan, anda sering perlu membuat kelas dan memikirkan cara mereka akan berinteraksi. Perwakilan visual semua itu selalunya boleh membantu anda menghasilkan penyelesaian yang paling betul. Di sinilah Rajah Kelas UML membantu kami.Apakah UML?
Jika anda melihat imej yang berkaitan dalam enjin carian, anda akan melihat bahawa UML mempunyai kaitan dengan gambar rajah, anak panah dan petak. Anda perlu tahu bahawa UML adalah singkatan dari Unified Modelling Language. Bersatu adalah perkataan penting di sini. Ini bermakna imej kami akan difahami bukan sahaja oleh kami, tetapi juga oleh sesiapa sahaja yang mengetahui UML. Ia adalah lingua franca untuk melukis gambar rajah.Menurut Wikipedia,
"UML ialah bahasa pemodelan tujuan umum, pembangunan, dalam bidang kejuruteraan perisian yang bertujuan untuk menyediakan cara standard untuk menggambarkan reka bentuk sistem."Perkara yang paling menarik, yang tidak semua orang akan meneka, ialah UML mempunyai spesifikasi. Malah terdapat spesifikasi UML 2. Maklumat lanjut mengenai spesifikasi boleh didapati di laman web Kumpulan Pengurusan Objek . Malah, kumpulan ini membangunkan spesifikasi UML. Menarik juga bahawa UML tidak terhad kepada menerangkan struktur kelas. Terdapat banyak jenis gambar rajah UML. Wikipedia mempunyai penerangan ringkas tentang pelbagai jenis rajah UML: rajah UML . Kembali ke gambar rajah kelas UML, buku "Ketua Corak Reka Bentuk Pertama" patut disebut , menggunakan gambar rajah UML untuk menggambarkan corak reka bentuk. Intinya ialah UML benar-benar digunakan. Dan ternyata mengetahuinya dan memahami cara menggunakannya agak berguna.
Permohonan
Mari fikirkan kita boleh bekerja dengan UML dalam IDE. Kami akan menggunakan IntelliJ IDEA sebagai IDE kami. Jika anda menggunakan IntelliJ IDEA Ultimate, maka kami akan memasang pemalam "Sokongan UML" "di luar kotak". Ia membolehkan anda menjana gambar rajah kelas yang cantik secara automatik. Sebagai contoh, gunakan Ctrl+N atau item menu "Navigate" -> "Class" untuk pergi ke kelas ArrayList. Sekarang dalam menu konteks nama kelas, pilih "Diagram" -> "Tunjukkan gambar rajah pop timbul". Hasilnya, kita mendapat gambar rajah yang cantik.

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Untuk melihat hasil dalam IDEA, pilih "View" -> "Tool Windows" -> "PlantUML". Kami hanya mendapat dua petak yang mewakili kelas. Kami tahu bahawa kedua-dua kelas ini melaksanakan antara muka Senarai . Hubungan kelas ini dipanggil realisasi. Hubungan ini diwakili menggunakan anak panah dengan garis putus-putus. Mari kita lukisnya:
interface List
List <|.. ArrayList
List <|.. LinkedList
List adalah salah seorang anak kelas Collection . Iaitu, ia mewarisi Koleksi . Hubungan ini dipanggil generalisasi. Ia kelihatan seperti anak panah dengan garis berterusan biasa. Mari kita lukisnya:
interface Collection
Collection <|-- List
Untuk jenis perhubungan seterusnya, tambahkan pada perihalan kelas ArrayList entri tentang tatasusunan peribadi pakej elemen:
~Object[] elementData
Sekarang kami ingin menunjukkan bahawa ArrayList mengandungi beberapa objek. Dalam kes ini, akan ada hubungan pengagregatan. ArrayListialah agregat, kerana ia mengandungi objek lain. Kami menyebut pengagregatan kerana objek senarai boleh wujud tanpa senarai: ia bukan bahagian penting dalam senarai. Seumur hidup mereka tidak terikat dengan hayat senarai. Perkataan "agregat" datang kepada kita dari bahasa Latin dan diterjemahkan sebagai "berhimpun", iaitu sesuatu yang terdiri daripada sesuatu. Sebagai contoh, dalam kehidupan, kita mempunyai pemasangan pam (agregat), yang terdiri daripada pam dan motor. Pemasangan itu sendiri boleh dibongkar, dan kita boleh meninggalkan beberapa komponennya sahaja. Contohnya, untuk menjual atau dimasukkan ke dalam perhimpunan lain. Ia adalah cara yang sama dalam senarai. Ini dinyatakan dengan rombus kosong pada agregat dan garis berterusan. Kami akan mewakili ini seperti berikut:
class Object{
}
ArrayList o- Object
Sekarang kami ingin menunjukkan bahawa tidak seperti ArrayList , kelas LinkedList mengandungi Node s — bekas yang merujuk kepada data yang disimpan. Dalam kes ini, Node s adalah sebahagian daripada LinkedList dan tidak mempunyai kewujudan bebas. Nod bukanlah kandungan itu sendiri . Ia hanya mengandungi rujukan kepada kandungan. Sebagai contoh, apabila kami menambah rentetan pada LinkedList , kami menambah Nod baharu yang mengandungi rujukan kepada rentetan, serta pautan ke Nod sebelumnya dan seterusnya. Hubungan ini dipanggil komposisi. Ia digambarkan dengan melukis garisan berterusan dengan rombus yang diisi pada komposit (sesuatu yang diperbuat daripada bahagian konstituen). Sekarang kita akan mewakili perhubungan sebagai teks:
class Node{
}
LinkedList *-- Node
Dan kini anda perlu belajar bagaimana untuk menggambarkan satu lagi jenis hubungan penting: pergantungan. Ia digunakan apabila satu kelas menggunakan yang lain, tetapi kelas itu tidak mengandungi atau mewarisi kelas yang digunakan. Contohnya, LinkedList dan ArrayList tahu cara membuat ListIterator . Kami mewakili ini sebagai anak panah dengan garis putus-putus:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Selepas melakukan semua ini, kami mendapat: 
Automasi
Terdapat pelbagai cara untuk menjana gambar rajah PlantUML secara automatik. Sebagai contoh, IDEA mempunyai pemalam SketchIT , tetapi ia tidak melukis gambar rajah dengan betul sepenuhnya. Katakan pelaksanaan antara muka dilukis dengan salah (ia dipaparkan sebagai warisan). Internet mempunyai contoh cara untuk menyepadukan ini ke dalam proses binaan projek anda. Sebagai contoh, anda boleh mencari cara menggunakan uml-java-docklet dengan Maven. Untuk menunjukkan, kami akan menggunakan Maven Archetype untuk mencipta projek Maven dengan cepat. Lari
mvn archetype:generate
Sebagai tindak balas kepada Pilih nombor atau gunakan penapis, biarkan tetapan lalai — hanya tekan Enter. Ia akan sentiasa "maven-archetype-quickstart". Pilih versi terkini. Seterusnya, kami akan menjawab beberapa soalan dan selesai membuat projek: 
mvn clean install
dan
mvn javadoc: javadoc
Jika sekarang kita membuka dokumentasi yang dijana (explorer target\site\apidocs\index.html), kita akan melihat gambar rajah UML. Dengan cara ini, hubungan pelaksanaan kini dipaparkan dengan betul :)
GO TO FULL VERSION