Perkenalan
Saya rasa semua orang di masa kanak-kanak pernah mendengar pepatah seperti “ Ukur dua kali, potong sekali .” Hal yang sama terjadi dalam pemrograman. Itu selalu lebih baik untuk memikirkan penerapannya sebelum Anda menghabiskan waktu untuk melaksanakannya. Seringkali selama implementasi Anda harus membuat kelas dan menciptakan interaksinya. Dan seringkali representasi visual dari hal ini dapat membantu memecahkan masalah dengan cara yang paling tepat. Di sinilah UML membantu kita .Apa itu UML?
Jika Anda melihat gambar di mesin pencari, akan terlihat jelas bahwa UML adalah sesuatu tentang diagram, panah, dan kotak. Yang penting adalah UML diterjemahkan ke dalam Unified Modeling Language . Kata Unified penting di sini. Artinya, gambar kita tidak hanya akan dipahami oleh kita sendiri, tetapi juga oleh orang lain yang mengetahui UML. Ternyata ini adalah bahasa internasional untuk menggambar diagram.
Seperti yang dikatakan Wikipedia
UML adalah bahasa deskripsi grafis untuk pemodelan objek dalam pengembangan perangkat lunak, pemodelan proses bisnis, desain sistem, dan menampilkan struktur organisasi.Hal paling menarik yang tidak semua orang pikirkan atau sadari adalah UML memiliki spesifikasi. Apalagi ada spesifikasi UML2. Rincian lebih lanjut tentang spesifikasi dapat ditemukan di situs web Object Management Group . Sebenarnya kelompok ini sedang mengembangkan spesifikasi UML. Menarik juga bahwa UML tidak terbatas pada mendeskripsikan struktur kelas. Ada banyak jenis diagram UML. Penjelasan singkat tentang jenis-jenis diagram UML dapat dilihat di Wikipedia yang sama: Diagram UML atau di video oleh Timur Batyrshinov Review diagram UML . UML juga banyak digunakan untuk menggambarkan berbagai proses, misalnya di sini: Sistem masuk tunggal menggunakan JWT . Kembali ke penggunaan diagram kelas UML, perlu diperhatikan buku Head First: Design Patterns , di mana polanya diilustrasikan oleh diagram UML yang sama. Ternyata UML memang digunakan. Dan ternyata pengetahuan dan pemahaman penerapannya merupakan keterampilan yang cukup bermanfaat.
Aplikasi
Mari kita lihat bagaimana Anda dapat bekerja dengan UML yang sama dari IDE. Mari kita ambil IntelliJ Idea sebagai IDE . Jika kita menggunakan IntelliJ Idea Ultimate , maka kita akan menginstal plugin “ Dukungan UML ”. Ini memungkinkan Anda untuk secara otomatis menghasilkan diagram kelas yang indah. Misalnya, menggunakan Ctrl+N atau item menu "Navigate" -> "Class" kita pergi ke kelas ArrayList . Sekarang, melalui menu konteks untuk nama kelas, pilih “Diagram” -> “Tampilkan diagram popup”. Hasilnya, kami mendapatkan diagram yang indah:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Untuk melihat hasilnya di Idea, pilih "View" -> "Tool Windows" -> "PlantUML". Kita hanya akan mendapatkan dua kotak yang mewakili kelas. Seperti yang kita ketahui, kedua kelas ini mengimplementasikan antarmuka Daftar. Hubungan kelas ini disebut implementasi. Untuk menggambarkan hubungan seperti itu, gunakan panah dengan garis putus-putus. Mari kita gambarkan:
interface List
List <|.. ArrayList
List <|.. LinkedList
List
- salah satu kelas anak Collection
. Artinya, ia mewarisi dari Collection. Hubungan ini disebut generalisasi. Bentuknya seperti panah dengan garis kontinu beraturan. Mari kita gambarkan:
interface Collection
Collection <|-- List
Untuk jenis koneksi berikut, tambahkan ke deskripsi kelas ArrayList
entri tentang paket array elemen pribadi:
~Object[] elementData
Sekarang kami ingin menunjukkan apa yang ArrayList
berisi beberapa objek. Dalam hal ini, jenis koneksinya adalah agregasi . Satuan dalam hal ini adalah ArrayList
, karena itu berisi objek lain. Kami memilih agregasi karena objek dalam daftar dapat hidup tanpa daftar: objek tersebut bukan bagian integral darinya. Masa hidup mereka tidak terikat dengan masa hidup daftar tersebut. Agregat diterjemahkan dari bahasa Latin sebagai “berkumpul”, yaitu sesuatu yang terdiri dari sesuatu. Misalnya dalam kehidupan ada unit pompa yang terdiri dari pompa dan motor. Unitnya sendiri bisa dibongkar, menyisakan beberapa komponennya. Misalnya untuk dijual atau dimasukkan ke unit lain. Begitu juga daftarnya. Dan ini dinyatakan dalam bentuk berlian kosong di dekat satuan dan garis kontinu. Mari kita gambarkan seperti ini:
class Object{
}
ArrayList o- Object
Sekarang kami ingin menunjukkan bahwa, tidak seperti ArrayList
, kelas LinkedList
berisi Node
wadah yang merujuk ke data yang disimpan. Dalam hal ini, Node
mereka adalah bagian dari dirinya sendiri LinkedList
dan tidak dapat hidup terpisah. Node
bukan konten yang disimpan secara langsung, tetapi hanya berisi link ke sana. Misalnya, saat kita menambahkan LinkedList
sebuah baris, kita menambahkan yang baru Node
, yang berisi link ke baris tersebut, serta link ke baris sebelumnya dan berikutnya Node
. Jenis komunikasi ini disebut komposisi . Untuk menampilkan komposit (yang terdiri dari bagian-bagian), digambar berlian berwarna, dengan garis kontinu mengarah ke sana. Sekarang mari kita tulis ini sebagai tampilan teks dari koneksi:
class Node{
}
LinkedList *-- Node
Dan sekarang kita perlu belajar bagaimana menampilkan jenis hubungan penting lainnya - hubungan ketergantungan . Ini digunakan ketika satu kelas menggunakan kelas lain, dan kelas tersebut tidak berisi kelas yang digunakan dan bukan merupakan turunannya. Misalnya, LinkedList
mereka ArrayList
tahu cara membuat ListIterator
. Mari kita tampilkan ini sebagai panah dengan garis putus-putus:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Setelah semuanya, tampilannya akan seperti ini:
Otomatisasi
Ada berbagai cara untuk menghasilkan diagram PlantUML secara otomatis. Misalnya, Idea memiliki plugin SketchIT , tetapi plugin tersebut tidak menggambarnya dengan benar. Misalnya, implementasi antarmuka digambar secara tidak benar (ditampilkan sebagai warisan). Ada juga contoh di Internet tentang cara memasukkannya ke dalam siklus hidup proyek Anda. Katakanlah ada contoh untuk Maven menggunakan uml-java-docklet . Untuk menunjukkan bagaimana hal ini dilakukan, kita akan menggunakan Maven Archetype untuk membuat proyek Maven dengan cepat. Mari kita jalankan perintah:mvn archetype:generate
Ketika diminta untuk memilih filter ( Pilih nomor atau terapkan filter ), biarkan default hanya dengan menekan Enter. Ini akan selalu menjadi " maven-archetype-quickstart ". Pilih versi terbaru. Selanjutnya, kami menjawab pertanyaan dan menyelesaikan pembuatan proyek:
mvn clean install
berada: dan mvn javadoc:javadoc
. Sekarang, jika kita membuka dokumentasi yang dihasilkan (explorer target\site\apidocs\index.html), kita akan melihat diagram UML. Omong-omong, implementasinya sudah ditampilkan dengan benar di sini)
GO TO FULL VERSION