pengenalan
Saya rasa semua orang pernah mendengar pada zaman kanak-kanak pepatah seperti " Ukur dua kali, potong sekali ." Ia sama dalam pengaturcaraan. Adalah lebih baik untuk memikirkan pelaksanaan sebelum anda meluangkan masa untuk melaksanakannya. Selalunya semasa pelaksanaan anda perlu membuat kelas dan mencipta interaksi mereka. Dan selalunya gambaran visual ini boleh membantu menyelesaikan masalah dengan cara yang paling betul. Di sinilah UML membantu kami .Apakah UML?
Jika anda melihat gambar dalam enjin carian, ia akan menjadi jelas bahawa UML adalah sesuatu tentang gambar rajah, anak panah dan segi empat sama. Apa yang penting ialah UML diterjemahkan kepada Bahasa Pemodelan Bersepadu . Perkataan Unified adalah penting di sini. Maksudnya, gambar kita akan difahami bukan sahaja oleh kita, tetapi juga oleh orang lain yang mengenali UML. Ternyata ini adalah bahasa antarabangsa untuk melukis gambar rajah.
Seperti kata Wikipedia
UML ialah bahasa penerangan grafik untuk pemodelan objek dalam pembangunan perisian, pemodelan proses perniagaan, reka bentuk sistem dan memaparkan struktur organisasi.Perkara paling menarik yang tidak semua orang fikirkan atau sedar ialah UML mempunyai spesifikasi. Selain itu, terdapat juga spesifikasi UML2. Butiran lanjut tentang spesifikasi boleh didapati di laman web Kumpulan Pengurusan Objek . Sebenarnya, kumpulan ini sedang membangunkan spesifikasi UML. Menarik juga bahawa UML tidak terhad kepada menerangkan struktur kelas. Terdapat banyak jenis gambar rajah UML. Penerangan ringkas tentang jenis rajah UML boleh dilihat dalam Wikipedia yang sama: rajah UML atau dalam video oleh Timur Batyrshinov Kajian rajah UML . UML juga digunakan secara meluas untuk menerangkan pelbagai proses, contohnya di sini: Log masuk tunggal menggunakan JWT . Kembali kepada penggunaan gambar rajah kelas UML, perlu diperhatikan buku Head First: Design Patterns , yang mana coraknya digambarkan oleh gambar rajah UML yang sama. Ternyata UML memang digunakan. Dan ternyata pengetahuan dan pemahaman tentang aplikasinya adalah kemahiran yang berguna.
Permohonan
Mari lihat bagaimana anda boleh bekerja dengan UML yang sama ini daripada IDE. Mari kita ambil IntelliJ Idea sebagai IDE . Jika kami 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. Contohnya, menggunakan Ctrl+N atau item menu "Navigate" -> "Class" kita pergi ke ArrayList class . Sekarang, melalui menu konteks untuk nama kelas, pilih "Diagram" -> "Tunjukkan gambar rajah pop timbul". Akibatnya, kami mendapat gambar rajah yang indah:
@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Untuk melihat hasil dalam Idea, pilih "View" -> "Tool Windows" -> "PlantUML". Kami hanya akan mendapat dua petak yang mewakili kelas. Seperti yang kita ketahui, kedua-dua kelas ini melaksanakan antara muka Senarai. Hubungan kelas ini dipanggil pelaksanaan. Untuk menggambarkan sambungan sedemikian, gunakan anak panah dengan garis putus-putus. Mari kita gambarkan:
interface List
List <|.. ArrayList
List <|.. LinkedList
List
- salah satu kelas kanak-kanak Collection
. Iaitu, ia mewarisi daripada Koleksi. Sambungan ini dipanggil generalisasi. Ia kelihatan seperti anak panah dengan garis berterusan biasa. Mari kita gambarkan:
interface Collection
Collection <|-- List
Untuk jenis sambungan berikut, tambahkan pada perihalan kelas ArrayList
entri tentang susunan elemen peribadi pakej :
~Object[] elementData
Sekarang kami ingin menunjukkan apa yang ArrayList
mengandungi beberapa objek. Dalam kes ini, jenis sambungan akan menjadi pengagregatan . Unit dalam kes ini ialah ArrayList
, kerana ia mengandungi objek lain. Kami memilih pengagregatan kerana objek dalam senarai boleh hidup tanpa senarai: ia bukan sebahagian daripadanya. Seumur hidup mereka tidak terikat dengan seumur hidup senarai itu. Agregat diterjemahkan daripada bahasa Latin sebagai "berhimpun," iaitu sesuatu yang terdiri daripada sesuatu. Sebagai contoh, dalam kehidupan, terdapat unit pengepaman, yang terdiri daripada pam dan motor. Unit itu sendiri boleh dibongkar, meninggalkan beberapa komponennya. Sebagai contoh, untuk menjual atau dimasukkan ke dalam unit lain. Begitu juga senarainya. Dan ini dinyatakan dalam bentuk berlian kosong berhampiran unit dan garis berterusan. Mari kita gambarkan seperti ini:
class Object{
}
ArrayList o- Object
Sekarang kami ingin menunjukkan bahawa, tidak seperti ArrayList
, kelas LinkedList
mengandungi Node
bekas yang merujuk kepada data yang disimpan. Dalam kes ini, Node
mereka adalah sebahagian daripada diri mereka sendiri LinkedList
dan tidak boleh hidup secara berasingan. Node
bukan kandungan yang disimpan secara langsung, tetapi hanya mengandungi pautan kepadanya. Sebagai contoh, apabila kami menambah pada LinkedList
baris, kami menambah baharu Node
, yang mengandungi pautan ke baris itu, serta pautan ke sebelumnya dan seterusnya Node
. Jenis komunikasi ini dipanggil komposisi . Untuk memaparkan komposit (yang terdiri daripada bahagian), berlian berwarna dilukis, dengan garisan berterusan menuju ke sana. Mari kita tulis ini sebagai paparan teks sambungan:
class Node{
}
LinkedList *-- Node
Dan sekarang kita perlu belajar cara memaparkan satu lagi jenis perhubungan yang penting - perhubungan pergantungan . Ia digunakan apabila satu kelas menggunakan yang lain, tetapi kelas itu tidak mengandungi kelas yang digunakan dan bukan keturunannya. Contohnya, LinkedList
mereka ArrayList
tahu cara mencipta ListIterator
. Mari kita paparkan ini sebagai anak panah dengan garis putus-putus:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Selepas semua ini ia akan kelihatan seperti ini:
Automasi
Terdapat pelbagai cara untuk menjana gambar rajah PlantUML secara automatik. Contohnya, Idea mempunyai pemalam SketchIT , tetapi ia tidak melukisnya dengan betul. Sebagai contoh, pelaksanaan antara muka dilukis dengan salah (dipaparkan sebagai warisan). Terdapat juga contoh di Internet tentang cara membina ini ke dalam kitaran hayat binaan projek anda. Katakan terdapat contoh untuk Maven menggunakan uml-java-docklet . Untuk menunjukkan cara ini dilakukan, kami akan menggunakan Maven Archetype untuk mencipta projek Maven dengan cepat. Mari laksanakan arahan:mvn archetype:generate
Apabila diminta untuk memilih penapis ( Pilih nombor atau gunakan penapis ), biarkan lalai dengan hanya menekan Enter. Ini akan sentiasa menjadi " maven-archetype-quickstart ". Pilih versi terkini. Seterusnya, kami menjawab soalan dan menyelesaikan penciptaan projek:
mvn clean install
terletak: dan mvn javadoc:javadoc
. Sekarang, jika kita membuka dokumentasi yang dijana (explorer target\site\apidocs\index.html), kita akan melihat gambar rajah UML. By the way, pelaksanaan sudah dipaparkan dengan betul di sini)
GO TO FULL VERSION