CodeGym /Blog Java /rawak /Rajah Kelas UML
John Squirrels
Tahap
San Francisco

Rajah Kelas UML

Diterbitkan dalam kumpulan

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. UML: dari teori kepada amalan - 2 Tetapi bagaimana jika anda mahu melukis gambar rajah itu sendiri? Dan bagaimana jika anda tidak mempunyai versi Ultimate? Menggunakan IntelliJ IDEA Edisi Komuniti, kami tidak mempunyai pilihan lain. Jadi kita perlu memahami bagaimana gambarajah UML disusun. pertama,. Ia adalah satu set alat visualisasi graf. Pemalam yang akan kami gunakan bergantung padanya. Selepas pemasangan, anda perlu menambah direktori bin daripada direktori pemasangan Graphviz kepada pembolehubah persekitaran PATH. Selepas itu, dalam IntelliJ IDEA, pilih Fail -> Tetapan dalam menu. Dalam tetingkap "Tetapan", pilih kategori "Pemalam", klik butang "Semak imbas repositori", dan pasang pemalam penyepaduan PlantUML . Apa yang bagus tentang PlantUML? Ia menerangkan UML menggunakan bahasa penerangan graf yang dipanggil "titik", yang menjadikannya lebih universal, kerana bahasa titik digunakan oleh lebih daripada PlantUML sahaja. Lebih-lebih lagi, semua yang kami lakukan di bawah boleh dilakukan bukan sahaja dalam IDE, tetapi juga dalam talian di planttext.com. Selepas memasang pemalam PlantUML, kami akan dapat mencipta gambar rajah UML menggunakan "Fail" -> "Baharu". Mari buat gambar rajah "kelas UML". Ini secara automatik akan menjana templat dengan contoh. Kami akan memadamkan kandungannya dan menambah kandungan kami sendiri. Untuk memahami cara untuk mewakili ini dalam teks, lihat manual PlantUML: gambar rajah kelas plantuml. UML: dari teori kepada amalan - 3Bergantung pada bahan-bahan ini, mari mulakan membuat gambar rajah UML kami. Tambah kandungan berikut, yang menerangkan dua kelas:

@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: UML: dari teori kepada amalan - 4Anda boleh menambah seberapa banyak butiran yang diperlukan. Sudah tentu, tiada perkara ghaib tentang melukis rajah sebegitu. Apabila mengerjakan tugas anda sendiri, anda boleh melukisnya dengan cepat dengan tangan. Ini akan membantu anda mengembangkan keupayaan untuk berfikir melalui seni bina aplikasi dan mengenal pasti kekurangan dalam struktur kelas lebih awal, bukan selepas anda telah menghabiskan hari melaksanakan model yang salah. Itu nampaknya alasan yang baik untuk mencubanya, bukan? :)

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: UML: dari teori kepada amalan - 5Maven bukan subjek artikel ini, jadi anda boleh mendapatkan jawapan kepada soalan anda tentang Maven dalam Pusat Pengguna Maven . Dalam projek yang dijana, buka fail penerangan projek, pom.xml, untuk mengedit. Kami akan menyalin kandungan daripada perihalan pemasangan uml-java-docklet ke fail ini. Artifak yang digunakan dalam huraian tidak boleh ditemui dalam repositori Maven Central. Tetapi yang berikut berfungsi untuk saya: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Dalam erti kata lain, dalam huraian anda hanya perlu menggantikan groupId daripada "info.leadinglight" kepada "com.chfourie" dan tetapkan versi kepada "1.0.0". Selepas itu, kita boleh melaksanakan arahan berikut dalam direktori dengan fail pom.xml:

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 :)

Kesimpulan

Seperti yang anda boleh lihat, UML membolehkan anda menggambarkan struktur aplikasi anda. Tetapi UML boleh melakukan lebih banyak lagi. Anda boleh menggunakan UML untuk menerangkan pelbagai proses dalam syarikat anda atau untuk menerangkan proses perniagaan yang merangkumi fungsi yang anda tulis berfungsi. Anda perlu memutuskan sendiri betapa bergunanya UML untuk anda secara peribadi, tetapi tidak kira apa yang anda putuskan, anda perlu mencari masa untuk mengetahui lebih lanjut mengenainya.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION