Perkenalan
Saya pikir semua orang pernah mendengar pepatah "Ukur dua kali, potong sekali". Itu saran yang benar dalam pemrograman. Itu selalu lebih baik untuk memikirkan penerapannya sebelum Anda menghabiskan waktu untuk melaksanakannya. Selama implementasi, Anda sering perlu membuat kelas dan memikirkan bagaimana mereka akan berinteraksi. Representasi visual dari semua itu seringkali dapat membantu Anda menemukan solusi yang paling tepat. Di sinilah Diagram Kelas UML membantu kami.Apa itu UML?
Jika Anda melihat gambar yang relevan di mesin pencari, Anda akan melihat bahwa UML ada hubungannya dengan diagram, panah, dan kotak. Perlu Anda ketahui bahwa UML adalah singkatan dari Unified Modelling Language. Bersatu adalah kata penting di sini. Artinya, gambar kita akan dipahami tidak hanya oleh kita, tetapi juga oleh siapa saja yang mengetahui UML. Ini adalah lingua franca untuk menggambar diagram.Menurut Wikipedia,
"UML adalah tujuan umum, pengembangan, bahasa pemodelan di bidang rekayasa perangkat lunak yang dimaksudkan untuk menyediakan cara standar untuk memvisualisasikan desain sistem."Hal yang paling menarik, yang tidak semua orang duga, adalah UML memiliki spesifikasi. Dan bahkan ada spesifikasi UML 2. Informasi lebih lanjut tentang spesifikasi tersedia di situs web Object Management Group . Bahkan, kelompok ini mengembangkan spesifikasi UML. Menarik juga bahwa UML tidak terbatas pada mendeskripsikan struktur kelas. Ada banyak jenis diagram UML. Wikipedia memiliki deskripsi singkat tentang berbagai jenis diagram UML: Diagram UML . Kembali ke diagram kelas UML, ada baiknya menyebutkan buku "Head First Design Patterns" , menggunakan diagram UML untuk mengilustrasikan pola desain. Intinya adalah UML benar-benar digunakan. Dan ternyata mengetahui dan memahami cara penggunaannya cukup bermanfaat.
Aplikasi
Mari kita cari tahu apakah kita bisa bekerja dengan UML dalam IDE. Kami akan menggunakan IntelliJ IDEA sebagai IDE kami. Jika Anda menggunakan IntelliJ IDEA Ultimate, maka kami akan menginstal plugin "Dukungan UML" "di luar kotak". Ini memungkinkan Anda secara otomatis menghasilkan diagram kelas yang indah. Misalnya, gunakan Ctrl+N atau item menu "Navigate" -> "Class" untuk masuk ke kelas ArrayList. Sekarang di menu konteks nama kelas, pilih "Diagram" -> "Show diagram popup". Hasilnya, kami mendapatkan diagram yang indah.

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Untuk melihat hasilnya di IDEA, pilih "View" -> "Tool Windows" -> "PlantUML". Kami hanya mendapatkan dua kotak yang mewakili kelas. Kita tahu bahwa kedua kelas ini mengimplementasikan antarmuka Daftar . Hubungan kelas ini disebut realisasi. Hubungan ini direpresentasikan menggunakan panah dengan garis putus-putus. Mari menggambarnya:
interface List
List <|.. ArrayList
List <|.. LinkedList
List adalah salah satu anak dari kelas Koleksi . Artinya, itu mewarisi Collection . Hubungan ini disebut generalisasi. Itu terlihat seperti panah dengan garis kontinu biasa. Mari menggambarnya:
interface Collection
Collection <|-- List
Untuk jenis hubungan berikutnya, tambahkan ke deskripsi kelas ArrayList sebuah entri tentang sebuah paket elemen array pribadi:
~Object[] elementData
Sekarang kami ingin menunjukkan bahwa ArrayList berisi beberapa objek. Dalam hal ini, akan ada hubungan agregasi. ArrayListadalah agregat, karena mengandung objek lain. Kami mengatakan agregasi karena objek daftar bisa ada tanpa daftar: mereka bukan bagian integral dari daftar. Masa hidup mereka tidak terikat dengan masa hidup daftar tersebut. Kata "agregat" berasal dari bahasa Latin dan diterjemahkan sebagai "dirakit", yaitu sesuatu yang terdiri dari sesuatu. Misalnya, dalam kehidupan kita memiliki rakitan pompa (agregat), yang terdiri dari pompa dan motor. Rakitannya sendiri dapat dibongkar, dan kita dapat membiarkan beberapa komponennya sendiri. Misalnya untuk dijual atau dimasukkan ke rakitan lain. Itu cara yang sama dalam daftar. Ini diekspresikan dengan belah ketupat kosong pada agregat dan garis kontinu. Kami akan mewakili ini sebagai berikut:
class Object{
}
ArrayList o- Object
Sekarang kami ingin menunjukkan bahwa tidak seperti ArrayList , kelas LinkedList berisi Node s — wadah yang mereferensikan data yang disimpan. Dalam hal ini, Node s adalah bagian dari LinkedList dan tidak memiliki eksistensi independen. Node bukanlah konten itu sendiri . Itu hanya berisi referensi ke konten. Misalnya, ketika kita menambahkan string ke LinkedList , kita menambahkan Node baru yang berisi referensi ke string tersebut, serta tautan ke Node sebelumnya dan berikutnya. Hubungan ini disebut komposisi. Itu digambarkan dengan menggambar garis kontinu dengan belah ketupat yang diisi pada komposit (sesuatu yang terbuat dari bagian-bagian penyusunnya). Sekarang kita akan merepresentasikan hubungan sebagai teks:
class Node{
}
LinkedList *-- Node
Dan sekarang Anda perlu mempelajari cara menggambarkan jenis hubungan penting lainnya: ketergantungan. Ini digunakan ketika satu kelas menggunakan yang lain, tetapi kelas tersebut tidak mengandung atau mewarisi kelas yang digunakan. Misalnya, LinkedList dan ArrayList mengetahui cara membuat ListIterator . Kami mewakili ini sebagai panah dengan garis putus-putus:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Setelah melakukan semua ini, kami mendapatkan: 
Otomatisasi
Ada berbagai cara untuk membuat diagram PlantUML secara otomatis. Misalnya, IDEA memiliki plugin SketchIT , tetapi tidak sepenuhnya menggambar diagram dengan benar. Katakanlah implementasi antarmuka digambar dengan tidak benar (ditampilkan sebagai warisan). Internet memiliki contoh cara mengintegrasikan ini ke dalam proses pembangunan proyek Anda. Misalnya, Anda dapat menemukan cara menggunakan uml-java-docklet dengan Maven. Untuk mendemonstrasikan, kami akan menggunakan Pola Dasar Maven untuk membuat proyek Maven dengan cepat. Berlari
mvn archetype:generate
Menanggapi Pilih nomor atau terapkan filter, biarkan default — cukup tekan Enter. Itu akan selalu menjadi "maven-archetype-quickstart". Pilih versi terbaru. Selanjutnya, kami akan menjawab beberapa pertanyaan dan menyelesaikan pembuatan proyek: 
mvn clean install
Dan
mvn javadoc: javadoc
Jika sekarang kita membuka dokumentasi yang dihasilkan (explorer target\site\apidocs\index.html), kita akan melihat diagram UML. Omong-omong, hubungan implementasi sekarang ditampilkan dengan benar :)
GO TO FULL VERSION