Apakah jenis gambar rajah UML aktiviti? Ciri umum bahasa UML. Apa itu UML

Saya rasa semua orang pernah mendengar pada zaman kanak-kanak pepatah seperti " Tujuh kali sukatan dipotong sekali". Ia adalah sama dalam pengaturcaraan. Selalunya lebih baik untuk memikirkan pelaksanaan sebelum anda meluangkan masa untuk melaksanakannya. Apabila melaksanakannya, anda sering perlu membuat kelas dan menghasilkan interaksi mereka. Dan selalunya representasi visual ini boleh membantu selesaikan masalah dengan cara yang paling betul. Di sinilah kami membantu UML.

Apakah UML?

Jika anda melihat gambar dalam enjin carian, ia akan menjadi jelas UML– ia adalah sesuatu tentang gambar rajah, anak panah dan segi empat sama. Apa yang penting ialah UML menterjemah sebagai Bahasa Pemodelan Bersatu. 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 gambar rajah UML boleh dilihat dalam Wikipedia yang sama: UML - gambar rajah atau dalam video Timur Batyrshinov Gambaran keseluruhan 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 sebagai IDE Idea IntelliJ. Jika anda menggunakan IntelliJ Idea Ultimate, maka kami akan memasang pemalam "di luar kotak" Sokongan UML". Ia membolehkan anda menjana gambar rajah kelas yang cantik secara automatik. Contohnya, melalui Ctrl+N atau item menu "Navigate" -> "Class" kita pergi ke kelas ArrayList. Sekarang, melalui menu konteks untuk nama kelas, pilih "Diagram" -> "Tunjukkan gambar rajah pop timbul". Akibatnya, kami mendapat gambar rajah yang indah:

Tetapi bagaimana jika anda mahu melukisnya sendiri, dan anda tidak mempunyai versi Idea Terunggul? Jika kami menggunakan IntelliJ Idea Community Edition, maka kami tidak mempunyai pilihan lain. Untuk melakukan ini, anda perlu memahami bagaimana gambarajah UML sedemikian distrukturkan. Pertama, kita perlu memasang Graphviz. Ini ialah satu set utiliti untuk menggambarkan graf. Ia digunakan oleh plugin yang akan kami gunakan. Selepas pemasangan anda perlu menambah direktori tong sampah daripada direktori yang dipasang grafviz kepada pembolehubah persekitaran JALAN. Selepas itu, dalam IntelliJ Idea, pilih Fail -> Tetapan dari menu. Dalam tetingkap "Tetapan", pilih kategori "Pemalam", klik butang "Semak imbas repositori" dan pasang pemalam penyepaduan PlantUML. Kenapa yang ini sangat baik? PlantUML? Ia menggunakan bahasa penerangan graf yang dipanggil " titik"dan ini membolehkan ia menjadi lebih universal, kerana bahasa ini digunakan bukan sahaja oleh PlantUML. Selain itu, semua yang kami lakukan di bawah boleh dilakukan bukan sahaja dalam IDE, tetapi juga dalam perkhidmatan dalam talian planttext.com. Selepas memasang PlantUML pemalam, Kami akan dapat mencipta gambar rajah UML melalui "Fail" -> "Baharu". Mari buat gambar rajah jenis "kelas UML". Semasa ini, templat dengan contoh akan dijana secara automatik. Mari padamkan kandungannya dan cipta sendiri, bersenjatakan artikel daripada Habr: Hubungan kelas - daripada UML kepada kod... Dan untuk memahami cara menggambarkan ini dalam teks, mari ambil manual PlantUML: plantuml class-diagram... Pada mulanya ia mengandungi jadual dengan cara menerangkan sambungan:

Kita juga boleh melihat sambungan itu sendiri di sini: "Hubungan antara kelas dalam UML. Contoh." Berdasarkan bahan-bahan ini, mari mula membuat gambar rajah UML kami. Mari tambahkan kandungan berikut yang menerangkan dua kelas: @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: Senarai Senarai antara muka< | . . ArrayList List < | . . LinkedList List - один из дочерних классов Collection . То есть он наследуется от Collection. Эта связь называется обобщением (generalization). Выглядит как стрелка с обычной непрерывной линией. Изобразим её: interface Collection Collection < | -- List Для следующего типа связи добавим в описание класса ArrayList запись о pakej peribadi tatasusunan elemen: ~ Object elementData Sekarang kita ingin menunjukkan bahawa ArrayList mengandungi beberapa objek. Dalam kes ini, jenis sambungan ialah - pengagregatan(agregasi). Agregat 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 gambarkannya seperti berikut: kelas Objek ( ) ArrayList o- Objek Sekarang kita ingin menunjukkan bahawa, tidak seperti ArrayList, kelas LinkedList mengandungi Node - bekas yang merujuk kepada data yang disimpan. Dalam kes ini, Nod adalah sebahagian daripada LinkedList itu sendiri dan tidak boleh hidup secara berasingan. Node tidak menyimpan kandungan secara langsung, tetapi hanya mengandungi pautan kepadanya. Sebagai contoh, apabila kami menambah baris pada LinkedList, kami menambah Nod baharu yang mengandungi pautan ke baris itu, serta pautan ke Nod sebelumnya dan seterusnya. Jenis sambungan ini dipanggil gubahan(Komposisi). Untuk memaparkan komposit (yang terdiri daripada bahagian), berlian berwarna dilukis, dengan garisan berterusan menuju ke sana. Mari kita tulis ini dalam bentuk paparan teks sambungan: kelas Node ( ) LinkedList * -- Nod Dan sekarang kita perlu belajar bagaimana untuk memaparkan satu lagi jenis sambungan penting - ketagihan(hubungan pergantungan). Ia digunakan apabila satu kelas menggunakan yang lain, dan kelas itu tidak mengandungi kelas yang digunakan dan bukan keturunannya. Sebagai contoh, LinkedList dan ArrayList boleh mencipta ListIterator. Mari kita paparkan ini sebagai anak panah dengan garis putus-putus: kelas ListIterator ListIterator< . . . ArrayList : create ListIterator < . . . LinkedList : create Выглядеть после всего это будет следующим образом:

Anda boleh pergi ke seberapa banyak perincian yang diperlukan. Semua sebutan ditunjukkan di sini: "PlantUML - Diagram Kelas". Di samping itu, tiada apa-apa yang ghaib dalam melukis gambar rajah sedemikian, dan apabila mengerjakan tugas anda, anda boleh melukisnya dengan cepat dengan tangan. Ini akan mengembangkan kemahiran anda dalam berfikir melalui seni bina aplikasi dan membantu anda mengenal pasti kelemahan struktur kelas lebih awal, dan bukannya selepas anda menghabiskan hari melaksanakan model yang salah. Saya rasa itu sebab yang baik untuk mencubanya?)

Automasi

Terdapat pelbagai cara untuk menjana gambar rajah PlantUML secara automatik. Contohnya, dalam Idea Terdapat pemalam SketchIT, tetapi ia tidak menariknya 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 untuk Maven terdapat contoh penggunaan uml-java-docklet. Untuk menunjukkan cara ini dilakukan, kami akan menggunakan Maven Archetype untuk mencipta projek Maven dengan cepat. Mari jalankan arahan: mvn archetype:generate Mengenai persoalan memilih penapis ( Pilih nombor atau gunakan penapis) biarkan lalai dengan hanya menekan Enter. Ia akan sentiasa menjadi" maven-archetype-quickstart". Pilih versi terkini. Seterusnya, jawab soalan dan selesaikan penciptaan projek:

Memandangkan Maven bukan fokus artikel ini, jawapan kepada soalan Maven anda boleh didapati di Pusat Pengguna Maven. Dalam projek yang dijana, buka fail penerangan projek untuk diedit, pom.xml. Mari salin kandungan dari penerangan pemasangan uml-java-docklet ke dalamnya. Artifak yang digunakan dalam huraian tidak dapat ditemui dalam repositori Maven Central. Tetapi ia berfungsi untuk saya dengan ini: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Iaitu, anda hanya perlu menggantikan dalam keterangan itu groupId dengan " info.leadinglight"pada" com.chfourie"dan pasang versi" 1.0.0 ". Selepas ini kita boleh melaksanakan dalam direktori di mana fail itu terletak pom.xml arahan ini: mvn clean install 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)

Kesimpulan

Seperti yang anda lihat, UML membolehkan anda memvisualisasikan struktur aplikasi anda. Selain itu, UML tidak terhad kepada ini sahaja. Menggunakan UML, anda boleh menerangkan pelbagai proses dalam syarikat anda atau menerangkan proses perniagaan di mana fungsi yang anda tulis beroperasi. Sejauh mana UML berguna untuk anda secara peribadi terpulang kepada anda untuk membuat keputusan, tetapi meluangkan masa untuk membacanya dengan lebih terperinci akan berguna dalam apa jua keadaan. #Viacheslav Versi Bahasa Inggeris siaran ini: rajah UML Java pada CodeGym

Pada masa ini, UML ialah tatatanda standard untuk pemodelan visual sistem perisian, yang diterima pakai oleh konsortium Object Managing Group (OMG) pada musim luruh tahun 1997, yang disokong oleh banyak produk CASE berorientasikan objek.

Piawaian UML menawarkan set rajah berikut untuk pemodelan:

· rajah kes guna – untuk memodelkan proses perniagaan sesebuah organisasi atau perusahaan dan menentukan keperluan untuk sistem maklumat yang dicipta;

· rajah kelas – untuk memodelkan struktur statik kelas sistem dan sambungan antara mereka;

· gambar rajah tingkah laku sistem;

· rajah interaksi;

· rajah jujukan – untuk memodelkan proses pemesejan antara objek dalam satu kes penggunaan;

· gambar rajah kerjasama – untuk memodelkan proses pemesejan antara objek dalam satu kes penggunaan;

· rajah carta negeri – untuk memodelkan kelakuan objek sistem semasa peralihan dari satu keadaan ke keadaan lain;

· rajah aktiviti – untuk memodelkan tingkah laku sistem dalam rangka kerja pelbagai kes penggunaan, atau aktiviti pemodelan;

rajah pelaksanaan:

· rajah komponen – untuk memodelkan hierarki komponen (subsistem) sistem maklumat;

· rajah penggunaan – untuk memodelkan seni bina fizikal sistem maklumat yang direka bentuk.

Dalam Rajah. 1.1 mempersembahkan model bersepadu sistem maklumat, termasuk gambar rajah utama yang perlu dibangunkan dalam projek kursus ini.

nasi. 1. Model bersepadu sistem maklumat dalam tatatanda UML

4.2. Gunakan gambarajah kes

Kes guna ialah urutan tindakan yang dilakukan oleh sistem sebagai tindak balas kepada peristiwa yang dimulakan oleh beberapa objek luaran (aktor). Kes penggunaan menerangkan interaksi biasa antara pengguna dan sistem. Dalam kes yang paling mudah, kes penggunaan ditentukan dalam proses membincangkan dengan pengguna fungsi yang ingin dia laksanakan dalam sistem maklumat ini. Dalam UML, kes penggunaan digambarkan seperti berikut:

Rajah.2. Kes guna

Pelakon ialah peranan yang dimainkan oleh pengguna berhubung dengan sistem. Pelakon mewakili peranan, bukan orang tertentu atau tajuk pekerjaan. Walaupun mereka digambarkan sebagai figura manusia yang digayakan dalam rajah kes guna, pelakon juga boleh menjadi sistem maklumat luaran yang memerlukan beberapa maklumat daripada sistem itu. Pelakon hanya perlu ditunjukkan pada rajah jika mereka benar-benar memerlukan beberapa kes penggunaan. Dalam UML, aktor diwakili sebagai bentuk:



Rajah.3. Watak (pelakon)

Pelakon terbahagi kepada tiga jenis utama:

· pengguna;

· sistem;

· sistem lain yang berinteraksi dengan sistem ini;

Masa menjadi pelakon jika pelancaran sebarang acara dalam sistem bergantung padanya.

4.2.1. Hubungan antara kes penggunaan dan pelakon

Dalam UML, rajah kes guna menyokong beberapa jenis perhubungan antara unsur rajah:

· komunikasi

kemasukan (termasuk),

· lanjutan (lanjutkan),

· generalisasi.

pautan komunikasi ialah hubungan antara use case dan aktor. Dalam UML, perhubungan komunikasi ditunjukkan menggunakan perkaitan satu arah (garisan pepejal).

Rajah.4. Contoh pautan komunikasi

Dayakan sambungan digunakan dalam situasi di mana terdapat beberapa kelakuan sistem yang diulang dalam lebih daripada satu kes penggunaan. Sambungan ini biasanya digunakan untuk memodelkan fungsi boleh guna semula.

Komunikasi pengembangan digunakan untuk menerangkan perubahan dalam kelakuan normal sistem. Ia membenarkan satu use case untuk menggunakan fungsi use case yang lain apabila diperlukan.

Rajah.5. Contoh perhubungan kemasukan dan sambungan

Sambungan generalisasi menunjukkan bahawa beberapa aktor atau kelas mempunyai sifat sepunya.

Rajah.6. Contoh pautan generalisasi

4.3.



Gambar rajah interaksi menerangkan tingkah laku kumpulan objek yang berinteraksi. Biasanya, gambar rajah interaksi merangkumi gelagat objek dalam hanya satu kes penggunaan. Gambar rajah sedemikian memaparkan beberapa objek dan mesej yang mereka tukar antara satu sama lain.

Mesej ialah cara objek penghantar meminta objek penerima untuk melaksanakan salah satu operasinya.

Mesej maklumat ialah mesej yang menyediakan objek penerima dengan beberapa maklumat untuk mengemas kini keadaannya.

Minta mesej (interogatif) ialah mesej yang meminta pelepasan beberapa maklumat tentang objek penerima.

Mesej imperatif ialah mesej yang meminta objek penerima melakukan beberapa tindakan.

Terdapat dua jenis rajah interaksi: rajah jujukan dan rajah kerjasama.

4.3.1. Rajah jujukan

Rajah jujukan mencerminkan aliran peristiwa yang berlaku dalam satu kes penggunaan.

Semua aktor (aktor, kelas atau objek) yang terlibat dalam senario tertentu (kes penggunaan) ditunjukkan di bahagian atas rajah. Anak panah sepadan dengan mesej yang dihantar antara pelakon dan objek atau antara objek untuk melaksanakan fungsi yang diperlukan.

Dalam rajah jujukan, objek digambarkan sebagai segi empat tepat dengan garis menegak bertitik ditarik ke bawah daripadanya. Barisan ini dipanggil talian hayat objek . Ia mewakili serpihan kitaran hidup objek dalam proses interaksi.

Setiap mesej diwakili sebagai anak panah di antara garis kehidupan dua objek. Mesej muncul dalam susunan ia muncul pada halaman dari atas ke bawah. Setiap mesej ditandakan dengan sekurang-kurangnya nama mesej. Jika mahu, anda juga boleh menambah hujah dan beberapa maklumat kawalan. Anda boleh menunjukkan perwakilan diri - mesej yang dihantar oleh objek kepada dirinya sendiri, dengan anak panah mesej menghala ke garis hayat yang sama.

nasi. 7. Contoh rajah jujukan

4.3.2. Gambar rajah kerjasama

Gambar rajah kerjasama memaparkan aliran peristiwa dalam senario tertentu (kes penggunaan). Mesej disusun mengikut masa, walaupun gambar rajah kerjasama lebih memfokuskan pada hubungan antara objek. Gambar rajah kerjasama membentangkan semua maklumat yang terdapat dalam gambar rajah jujukan, tetapi gambar rajah kerjasama menerangkan aliran peristiwa secara berbeza. Ia menjadikannya lebih mudah untuk memahami hubungan yang wujud antara objek.

Dalam rajah kerjasama, sama seperti dalam rajah jujukan, anak panah mewakili mesej yang ditukar dalam kes penggunaan tertentu. Urutan masa mereka ditunjukkan dengan menomborkan mesej.

nasi. 8. Contoh gambarajah kerjasama

4.4. Gambar rajah kelas

4.4.1. Maklumat am

Gambar rajah kelas mentakrifkan jenis kelas sistem dan pelbagai jenis sambungan statik yang wujud di antara mereka. Gambar rajah kelas juga menggambarkan atribut kelas, operasi kelas, dan sekatan yang dikenakan ke atas hubungan antara kelas.

Gambar rajah kelas dalam bahasa UML ialah graf, nodnya adalah unsur-unsur struktur statik projek (kelas, antara muka), dan arka ialah hubungan antara nod (persatuan, warisan, kebergantungan).

Rajah kelas menggambarkan elemen berikut:

· Pakej - satu set elemen model yang berkaitan secara logik antara satu sama lain;

· Kelas (kelas) - perihalan sifat sepunya sekumpulan objek yang serupa;

· Antara muka - kelas abstrak yang menentukan set operasi yang objek kelas arbitrari yang dikaitkan dengan antara muka yang diberikan menyediakan kepada objek lain.

4.4.2. Kelas

Kelas ialah sekumpulan entiti (objek) yang mempunyai sifat yang serupa iaitu data dan tingkah laku. Wakil individu kelas dipanggil objek kelas atau hanya objek.

Tingkah laku objek dalam UML merujuk kepada sebarang peraturan untuk interaksi objek dengan dunia luar dan dengan data objek itu sendiri.

Dalam rajah, kelas digambarkan sebagai segi empat tepat dengan sempadan pepejal, dibahagikan dengan garis mendatar kepada 3 bahagian:

Bahagian atas (bahagian nama) mengandungi nama kelas dan sifat umum lain (khususnya, stereotaip).

Bahagian tengah mengandungi senarai atribut

Di bahagian bawah ialah senarai operasi kelas yang mencerminkan kelakuannya (tindakan yang dilakukan oleh kelas).

Mana-mana bahagian atribut dan operasi mungkin tidak dipaparkan (atau kedua-duanya sekali). Untuk bahagian yang hilang, anda tidak perlu melukis garis pemisah atau dalam apa jua cara menunjukkan kehadiran atau ketiadaan unsur di dalamnya.

Bahagian tambahan, seperti pengecualian, boleh diperkenalkan mengikut budi bicara pelaksanaan khusus.

nasi. 9. Contoh rajah kelas

4.4.2.1.Stereotaip kelas

Stereotaip kelas ialah mekanisme untuk membahagikan kelas kepada kategori.

UML mentakrifkan tiga stereotaip kelas utama:

Sempadan (sempadan);

Entiti (entiti);

Kawalan.

4.4.2.2.Kelas sempadan

Kelas sempadan ialah kelas yang terletak di sempadan sistem dan keseluruhan persekitaran. Ini termasuk paparan, laporan, antara muka dengan perkakasan (seperti pencetak atau pengimbas) dan antara muka dengan sistem lain.

Untuk mencari kelas sempadan, anda perlu memeriksa gambar rajah use case. Setiap interaksi antara aktor dan use case mesti dikaitkan dengan sekurang-kurangnya satu kelas sempadan. Kelas inilah yang membolehkan seseorang aktor berinteraksi dengan sistem.

4.4.2.3.Kelas entiti

Kelas entiti mengandungi maklumat yang disimpan. Mereka mempunyai makna yang paling besar untuk pengguna, dan oleh itu nama mereka sering menggunakan istilah dari kawasan subjek. Biasanya, jadual dicipta dalam pangkalan data untuk setiap kelas entiti.

4.4.2.4.Kelas kawalan

Kelas kawalan bertanggungjawab untuk menyelaraskan tindakan kelas lain. Lazimnya, setiap use case mempunyai satu kelas kawalan yang mengawal urutan peristiwa untuk use case tersebut. Kelas pengurus bertanggungjawab untuk penyelarasan, tetapi tidak menyediakan sebarang fungsi itu sendiri, kerana kelas lain tidak menghantar banyak mesej kepadanya. Sebaliknya, dia sendiri menghantar banyak mesej. Kelas pengurus hanya mewakilkan tanggungjawab kepada kelas lain, itulah sebabnya ia sering dipanggil kelas pengurus.

Mungkin terdapat kelas kawalan lain dalam sistem yang biasa kepada berbilang kes penggunaan. Sebagai contoh, mungkin terdapat kelas SecurityManager (pengurus keselamatan) yang bertanggungjawab untuk memantau acara berkaitan keselamatan. Kelas TransactionManager bertanggungjawab untuk menyelaraskan mesej yang berkaitan dengan transaksi pangkalan data. Mungkin terdapat pengurus lain untuk mengendalikan elemen lain operasi sistem, seperti perkongsian sumber, pemprosesan data teragih atau pengendalian ralat.

Selain stereotaip yang dinyatakan di atas, anda boleh membuat sendiri.

4.4.2.5.Atribut

Atribut ialah elemen maklumat yang dikaitkan dengan kelas. Atribut menyimpan data kelas terkapsul.

Oleh kerana atribut terkandung dalam kelas, ia disembunyikan daripada kelas lain. Oleh sebab itu, anda mungkin perlu menentukan kelas mana yang mempunyai hak untuk membaca dan menukar atribut. Sifat ini dipanggil keterlihatan atribut.

Atribut boleh mempunyai empat nilai yang mungkin untuk parameter ini:

Awam (umum, terbuka). Nilai keterlihatan ini mengandaikan bahawa atribut akan kelihatan kepada semua kelas lain. Mana-mana kelas boleh melihat atau menukar nilai atribut. Menurut notasi UML, atribut biasa didahului oleh tanda "+".

Peribadi (tertutup, rahsia). Atribut yang sepadan tidak kelihatan kepada mana-mana kelas lain. Atribut peribadi dilambangkan dengan tanda “–” mengikut tatatanda UML.

Dilindungi (dilindungi). Atribut ini hanya tersedia untuk kelas itu sendiri dan keturunannya. Notasi UML untuk atribut yang dilindungi ialah tanda "#".

Pakej atau Pelaksanaan (pakej). Mengandaikan bahawa atribut dikongsi, tetapi hanya dalam skop pakejnya. Jenis keterlihatan ini tidak ditunjukkan oleh mana-mana ikon khas.

Dengan bantuan ketertutupan atau keselamatan, adalah mungkin untuk mengelakkan situasi di mana nilai atribut diubah oleh semua kelas sistem. Sebaliknya, logik untuk menukar atribut akan terkandung dalam kelas yang sama dengan atribut itu sendiri. Tetapan keterlihatan yang anda tetapkan akan mempengaruhi kod yang dijana.

4.4.2.6.operasi

Operasi melaksanakan tingkah laku yang dikaitkan dengan kelas. Operasi mempunyai tiga bahagian: nama, parameter dan jenis pulangan.

Parameter ialah hujah yang diterima oleh operasi sebagai input. Jenis pulangan merujuk kepada hasil operasi.

Rajah kelas boleh menunjukkan kedua-dua nama operasi dan nama operasi bersama-sama dengan parameter dan jenis pulangannya. Untuk mengurangkan beban pada rajah, adalah berguna untuk menunjukkan hanya nama operasi pada sebahagian daripadanya, dan tandatangan penuhnya pada yang lain.

Dalam UML, operasi mempunyai notasi berikut:

Nama Operasi (argumen: jenis data argumen, argument2:jenis data argumen2,...): jenis pulangan

Terdapat empat jenis operasi yang berbeza untuk dipertimbangkan:

Operasi pelaksanaan;

Operasi Pengurusan;

Operasi capaian;

Operasi bantu.

Operasi Perlaksanaan

Operasi pelaksana melaksanakan beberapa fungsi perniagaan. Operasi sedemikian boleh didapati dengan memeriksa gambar rajah interaksi. Jenis rajah ini memfokuskan pada fungsi perniagaan dan setiap mesej dalam rajah mungkin boleh dipetakan kepada aktiviti pelaksanaan.

Setiap operasi pelaksanaan mesti mudah dikesan mengikut keperluan yang sepadan. Ini dicapai pada pelbagai peringkat simulasi. Aktiviti ini diperoleh daripada mesej dalam rajah interaksi, mesej datang daripada penerangan terperinci tentang aliran peristiwa yang dicipta berdasarkan kes penggunaan, dan yang terakhir dibuat berdasarkan keperluan. Keupayaan untuk mengesan keseluruhan rantaian ini membolehkan anda memastikan bahawa setiap keperluan dilaksanakan dalam kod, dan setiap bahagian kod melaksanakan beberapa keperluan.

Operasi Kawalan

Operasi pengurus mengawal penciptaan dan pemusnahan objek. Pembina kelas dan pemusnah termasuk dalam kategori ini.

Operasi Akses

Atribut biasanya bersifat peribadi atau dilindungi. Walau bagaimanapun, kelas lain kadangkala perlu melihat atau menukar nilainya. Terdapat operasi akses untuk tujuan ini. Pendekatan ini memungkinkan untuk merangkum atribut dengan selamat dalam kelas, melindunginya daripada kelas lain, tetapi masih membenarkan akses terkawal kepada mereka. Ia adalah standard untuk mencipta operasi Dapatkan dan Tetapkan untuk setiap atribut kelas.

Operasi Bantu

Operasi penolong ialah operasi kelas yang diperlukan untuk melaksanakan tanggungjawabnya, tetapi kelas mana yang tidak sepatutnya tahu apa-apa. Ini adalah operasi kelas persendirian dan dilindungi.

Untuk mengenal pasti transaksi, ikuti langkah berikut:

1. Belajar rajah jujukan dan rajah koperatif. Kebanyakan mesej dalam rajah ini adalah operasi pelaksanaan. Mesej reflektif akan menjadi operasi tambahan.

2. Pertimbangkan operasi kawalan. Anda mungkin perlu menambah pembina dan pemusnah.

3. Pertimbangkan operasi capaian. Untuk setiap atribut kelas yang kelas lain perlu bekerjasama, anda perlu mencipta operasi Dapatkan dan Tetapkan.

4.4.2.7.Sambungan

Hubungan mewakili hubungan semantik antara kelas. Ia memberi kelas keupayaan untuk belajar tentang atribut, operasi dan hubungan kelas lain. Dalam erti kata lain, untuk satu kelas menghantar mesej kepada yang lain dalam rajah jujukan atau rajah koperasi, mesti ada hubungan antara mereka.

Terdapat empat jenis perhubungan yang boleh diwujudkan antara kelas: persatuan, kebergantungan, pengagregatan dan generalisasi.

Persatuan Komunikasi

Persatuan ialah hubungan semantik antara kelas. Mereka dilukis pada rajah kelas sebagai garis biasa.

nasi. 10. Persatuan Komunikasi

Persatuan boleh menjadi dua arah, seperti dalam contoh, atau satu arah. Dalam UML, perkaitan dwiarah dilukis sebagai garis mudah tanpa anak panah atau dengan anak panah pada kedua-dua belah. Persatuan satu arah hanya mempunyai satu anak panah yang menunjukkan arahnya.

Arah perkaitan boleh ditentukan dengan meneliti rajah jujukan dan rajah koperatif. Jika semua mesej padanya dihantar oleh hanya satu kelas dan diterima oleh kelas lain sahaja, tetapi bukan sebaliknya, terdapat komunikasi sehala antara kelas ini. Jika sekurang-kurangnya satu mesej dihantar ke arah yang bertentangan, perkaitan itu mestilah dua arah.

Persatuan boleh menjadi refleksif. Perkaitan refleksif melibatkan satu contoh kelas berinteraksi dengan kejadian lain dalam kelas yang sama.

Ketagihan komunikasi

Hubungan kebergantungan juga mencerminkan hubungan antara kelas, tetapi mereka sentiasa satu arah dan menunjukkan bahawa satu kelas bergantung pada definisi yang dibuat dalam kelas lain. Sebagai contoh, kelas A menggunakan kaedah kelas B. Kemudian apabila kelas B berubah, adalah perlu untuk membuat perubahan yang sepadan dalam kelas A.

Kebergantungan diwakili oleh garis putus-putus yang dilukis di antara dua elemen gambar rajah, dan elemen yang berlabuh di hujung anak panah dikatakan bergantung pada elemen yang berlabuh pada permulaan anak panah itu.

nasi. 11. Ketagihan komunikasi

Apabila menjana kod untuk kelas ini, tiada atribut baharu akan ditambahkan padanya. Walau bagaimanapun, pengendali khusus bahasa akan diwujudkan untuk menyokong komunikasi.

Pengagregatan komunikasi

Agregasi adalah bentuk persatuan yang lebih ketat. Agregasi adalah hubungan antara keseluruhan dan bahagiannya. Contohnya, anda mungkin mempunyai kelas yang dipanggil Kereta, serta kelas seperti Enjin, Tayar dan kelas untuk bahagian lain kereta. Akibatnya, objek kelas Kereta akan terdiri daripada objek kelas Enjin, empat objek Tayar, dsb. Pengagregatan divisualisasikan sebagai garisan dengan berlian berhampiran kelas, iaitu integer:

nasi. 11. Pengagregatan komunikasi

Sebagai tambahan kepada pengagregatan mudah, UML memperkenalkan jenis pengagregatan yang lebih kuat yang dipanggil komposisi. Menurut komposisi, bahagian objek hanya boleh dimiliki oleh satu keseluruhan, dan, sebagai tambahan, sebagai peraturan, kitaran hayat bahagian itu bertepatan dengan kitaran keseluruhan: mereka hidup dan mati bersamanya. Sebarang pemadaman keseluruhan terpakai pada bahagiannya.

Pemadaman bertingkat ini sering dianggap sebagai sebahagian daripada takrifan pengagregatan, tetapi ia sentiasa tersirat apabila kepelbagaian peranan ialah 1..1; sebagai contoh, jika perlu untuk memadamkan Pelanggan, maka pemadaman ini juga mesti digunakan pada Pesanan (dan, seterusnya, pada Talian Pesanan).

UML ialah bahasa pemodelan grafik bersatu untuk menerangkan, menggambarkan, mereka bentuk dan mendokumentasikan sistem OO. UML direka bentuk untuk menyokong proses pemodelan perisian berdasarkan pendekatan OO, mengatur hubungan konsep konsep dan program, dan mencerminkan masalah penskalaan sistem kompleks. Model UML digunakan pada semua peringkat kitaran hayat perisian, daripada analisis perniagaan kepada penyelenggaraan sistem. Organisasi yang berbeza mungkin menggunakan UML mengikut keperluan mereka, bergantung pada kawasan masalah mereka dan teknologi yang mereka gunakan.

Sejarah Ringkas UML

Menjelang pertengahan 90-an, pelbagai pengarang telah mencadangkan beberapa dozen kaedah pemodelan OO, yang setiap satunya menggunakan tatatanda grafiknya sendiri. Pada masa yang sama, mana-mana kaedah ini mempunyai kekuatannya, tetapi tidak membenarkan membina model PS yang cukup lengkap, menunjukkannya "dari semua pihak," iaitu semua unjuran yang diperlukan (Lihat artikel 1). Selain itu, kekurangan standard pemodelan OO menyukarkan pembangun untuk memilih kaedah yang paling sesuai, yang menghalang penggunaan meluas pendekatan OO kepada pembangunan perisian.

Atas permintaan Kumpulan Pengurusan Objek (OMG), organisasi yang bertanggungjawab untuk penggunaan piawaian dalam bidang teknologi objek dan pangkalan data, masalah mendesak penyatuan dan penyeragaman telah diselesaikan oleh pengarang tiga kaedah OO yang paling popular - G Butch, D. Rambo dan A. Jacobson, yang menggabungkan usaha mencipta versi UML 1.1, diluluskan oleh OMG pada tahun 1997 sebagai standard.

UML ialah bahasa

Mana-mana bahasa terdiri daripada perbendaharaan kata dan peraturan untuk menggabungkan perkataan untuk mencipta binaan yang bermakna. Ini, khususnya, bagaimana bahasa pengaturcaraan distrukturkan, seperti UML. Ciri tersendirinya ialah kamus bahasa dibentuk oleh unsur grafik. Setiap simbol grafik mempunyai semantik khusus yang dikaitkan dengannya, jadi model yang dicipta oleh satu pembangun boleh difahami dengan jelas oleh yang lain, serta oleh alat perisian yang mentafsir UML. Dari sini, khususnya, model perisian yang dibentangkan dalam UML boleh diterjemahkan secara automatik ke dalam bahasa pengaturcaraan OO (seperti Java, C++, VisualBasic), iaitu, jika terdapat alat pemodelan visual yang baik yang menyokong UML, mempunyai membina model, kami juga akan menerima contoh kod program yang sepadan dengan model ini.

Perlu ditekankan bahawa UML ialah bahasa, bukan kaedah. Ia menerangkan elemen untuk mencipta model dan cara membacanya, tetapi tidak mengatakan apa-apa tentang model mana yang harus dibangunkan dan dalam kes apa. Untuk mencipta kaedah berdasarkan UML, adalah perlu untuk menambahnya dengan penerangan tentang proses pembangunan perisian. Contoh proses sedemikian ialah Proses Bersepadu Rasional, yang akan dibincangkan dalam artikel seterusnya.

Kamus UML

Model ini diwakili dalam bentuk entiti dan hubungan antara mereka, yang ditunjukkan dalam rajah.

Entiti adalah abstraksi yang merupakan elemen utama model. Terdapat empat jenis entiti - struktur (kelas, antara muka, komponen, kes penggunaan, kerjasama, nod), tingkah laku (interaksi, keadaan), kumpulan (pakej) dan anotasi (komen). Setiap jenis entiti mempunyai perwakilan grafiknya sendiri. Entiti akan dibincangkan secara terperinci semasa mengkaji rajah.

Perhubungan menunjukkan pelbagai perkaitan antara entiti. UML mentakrifkan jenis perhubungan berikut:

  • Ketagihan menunjukkan hubungan sedemikian antara dua entiti apabila perubahan dalam salah satu daripada mereka - bebas - boleh menjejaskan semantik yang lain - bergantung. Kebergantungan diwakili oleh anak panah bertitik yang diarahkan daripada entiti bergantung kepada entiti bebas.
  • Persatuan ialah hubungan struktur yang menunjukkan bahawa objek satu entiti berkaitan dengan objek yang lain. Secara grafik, persatuan ditunjukkan sebagai garis yang menghubungkan entiti yang berkaitan. Persatuan berfungsi untuk menavigasi antara objek. Sebagai contoh, perkaitan antara kelas "Pesanan" dan "Produk" boleh digunakan untuk mencari semua produk yang dinyatakan dalam susunan tertentu, di satu pihak, atau untuk mencari semua pesanan yang mengandungi produk ini, di pihak yang lain. Adalah jelas bahawa program yang sepadan mesti melaksanakan mekanisme yang menyediakan navigasi sedemikian. Jika navigasi dalam satu arah sahaja diperlukan, ia ditunjukkan dengan anak panah di hujung perkaitan. Kes khas perkaitan ialah pengagregatan - perhubungan dalam bentuk "keseluruhan" - "bahagian". Secara grafik, ia diserlahkan dengan berlian di hujung berhampiran intipati-keseluruhan.
  • Generalisasi ialah hubungan antara entiti induk dan entiti anak. Pada asasnya, hubungan ini mencerminkan harta warisan untuk kelas dan objek. Generalisasi ditunjukkan sebagai garis yang berakhir dengan segi tiga yang menghala ke arah entiti induk. Kanak-kanak mewarisi struktur (atribut) dan tingkah laku (kaedah) ibu bapa, tetapi pada masa yang sama ia boleh mempunyai elemen struktur baru dan kaedah baru. UML membenarkan berbilang warisan, di mana entiti berkaitan dengan lebih daripada satu entiti induk.
  • Perlaksanaan– hubungan antara entiti yang mentakrifkan spesifikasi tingkah laku (antara muka) dengan entiti yang mentakrifkan pelaksanaan tingkah laku ini (kelas, komponen). Hubungan ini biasanya digunakan semasa memodelkan komponen dan akan diterangkan dengan lebih terperinci dalam artikel seterusnya.

Gambar rajah. UML menyediakan gambar rajah berikut:

  • Gambar rajah yang menerangkan kelakuan sistem:
    • Gambar rajah negeri
    • Gambar rajah aktiviti,
    • Gambar rajah objek,
    • Rajah jujukan,
    • Gambar rajah kerjasama;
  • Gambar rajah yang menerangkan pelaksanaan fizikal sistem:
    • Gambar rajah komponen;
    • Gambar rajah penempatan.

Pandangan Kawalan Model. Pakej.

Kami telah mengatakan bahawa untuk model difahami dengan baik oleh manusia, adalah perlu untuk mengaturnya secara hierarki, meninggalkan sebilangan kecil entiti pada setiap peringkat hierarki. UML termasuk cara mengatur perwakilan hierarki model - pakej. Mana-mana model terdiri daripada satu set pakej yang mungkin mengandungi kelas, kes penggunaan dan entiti dan rajah lain. Pakej boleh mengandungi pakej lain, membenarkan penciptaan hierarki. UML tidak menyediakan rajah pakej yang berasingan, tetapi ia mungkin muncul dalam rajah lain. Pakej itu digambarkan sebagai segi empat tepat dengan penanda halaman.

Apa yang disediakan oleh UML.

  • penerangan hierarki sistem yang kompleks dengan mengenal pasti pakej;
  • pemformalan keperluan fungsian untuk sistem menggunakan radas kes penggunaan;
  • memperincikan keperluan sistem dengan membina gambar rajah aktiviti dan senario;
  • mengenal pasti kelas data dan membina model data konsep dalam bentuk gambar rajah kelas;
  • mengenal pasti kelas yang menerangkan antara muka pengguna dan mencipta skema navigasi skrin;
  • perihalan proses interaksi antara objek apabila melaksanakan fungsi sistem;
  • perihalan tingkah laku objek dalam bentuk aktiviti dan gambar rajah negeri;
  • perihalan komponen perisian dan interaksinya melalui antara muka;
  • penerangan tentang seni bina fizikal sistem.

Dan perkara terakhir...

Walaupun semua daya tarikan UML, ia akan menjadi sukar untuk digunakan dalam pemodelan perisian sebenar tanpa alat pemodelan visual. Alat sedemikian membolehkan anda mempersembahkan gambar rajah dengan cepat pada skrin paparan, mendokumentasikannya, menjana templat kod program dalam pelbagai bahasa pengaturcaraan OO dan mencipta skema pangkalan data. Kebanyakannya termasuk kemungkinan untuk merekayasa semula kod program - memulihkan unjuran tertentu model perisian dengan menganalisis kod sumber program secara automatik, yang sangat penting untuk memastikan pematuhan antara model dan kod dan apabila mereka bentuk sistem yang mewarisi fungsi sistem terdahulu.

Tunjukkan tingkah laku satu objek semasa hayatnya, daripada penciptaan objek sehingga kemusnahannya. Setiap rajah keadaan mewakili beberapa automaton.

Pelan tindakan

Dalam bahagian Penerangan, pelajari set asas simbol carta negeri yang diperlukan untuk dapat membaca rajah.

Selepas membaca bahagian lain (Contoh, Aplikasi), anda boleh mencuba sendiri membuat gambar rajah keadaan.

Nota (huraian)

Berikut ialah set watak asas gambar rajah negeri, perlu untuk dapat membaca rajah. Selepas membaca bahagian lain (“Contoh”, “Aplikasi”) anda akan dapat mengarang gambar rajah negeri atas diri sendiri!

Penggal Gambar Penerangan
Pseudostat awal Keadaan awal sistem
Peralihan Peralihan bermaksud berpindah dari satu keadaan ke keadaan yang lain.
negeri Menandakan tindakan yang dilakukan oleh sistem (mungkin termasuk pilihan yang mungkin) yang membawa kepada hasil yang diperhatikan oleh pelakon.
negeri
keadaan aktiviti
Langkah yang sukar dalam preseden boleh diwakili oleh preseden lain.
Dalam istilah UML, kami mengatakan bahawa kes penggunaan pertama termasuk yang kedua.
Keadaan akhir Membolehkan anda menentukan sempadan sistem atau subsistem.
Aktiviti dalaman Kes di mana keadaan boleh bertindak balas terhadap peristiwa tanpa membuat peralihan, di mana peristiwa, perlindungan dan aktiviti diletakkan di dalam segi empat tepat keadaan.
Aktiviti input Aktiviti input dilaksanakan apabila anda memasuki keadaan
Aktiviti output Aktiviti keluar – Melaksanakan setiap kali anda meninggalkan negeri.
Superstate
Ia sering berlaku bahawa beberapa negeri mempunyai peralihan biasa dan aktiviti dalaman. Dalam kes sedemikian, mereka boleh bertukar menjadi substate, dan keseluruhan tingkah laku boleh dipindahkan ke superstate.
Keadaan selari
Keadaan boleh dibahagikan kepada beberapa keadaan selari yang berjalan serentak.

Cara menggunakan teknik kreativiti

Carta negeri UML bagus untuk menerangkan gelagat objek tunggal merentas berbilang kes penggunaan. Tetapi mereka tidak begitu sesuai untuk menggambarkan tingkah laku yang dicirikan oleh interaksi banyak objek. Oleh itu, masuk akal untuk menggunakan teknologi lain bersama-sama dengan gambar rajah keadaan. Sebagai contoh, gambar rajah interaksi (Bab 4) melakukan tugas yang sangat baik untuk menerangkan tingkah laku berbilang objek dalam satu kes penggunaan dan gambar rajah aktiviti UML adalah baik untuk menunjukkan urutan asas tindakan beberapa objek dalam beberapa kes penggunaan.

Tidak semua orang menganggap gambar rajah negeri sebagai semula jadi. Tonton cara pakar bekerja dengan mereka. Ada kemungkinan ahli pasukan anda tidak fikir carta negeri sesuai untuk gaya kerja mereka. Ini bukan kesukaran terbesar; anda mesti ingat untuk menggunakan teknik kerja yang berbeza bersama-sama.

Jika anda menggunakan gambar rajah keadaan, jangan cuba melukisnya untuk setiap kelas sistem. Pendekatan ini sering digunakan untuk tujuan kesempurnaan ketat secara rasmi, tetapi ia hampir selalu membazirkan usaha. Gunakan carta negeri hanya untuk kelas yang mempamerkan tingkah laku yang menarik di mana melukis carta negeri membantu anda memahami cara perkara berlaku.

Ramai pakar percaya itu Editor UI dan objek kawalan mempunyai fungsi yang berguna apabila dipaparkan menggunakan gambar rajah keadaan.

Cara belajar

Di sini kami telah cuba menyediakan cara yang semudah mungkin untuk belajar gambar rajah keadaan UML.

Seperti kebanyakan bahasa lain, ia menggunakan set simbol untuk penerangan. Maksud tanda-tanda ini boleh didapati dalam jadual di bahagian "Nota (huraian)". Setiap tanda mempunyai nama (istilah) dan ejaan tersendiri. Selain itu, setiap istilah disediakan dengan penjelasan ringkas untuk memahami dengan cepat intipati asasnya.

Seterusnya, kami akan mengesyorkan pergi ke bahagian "Contoh". gambar rajah negeri untuk mencuba tangan anda membaca rajah yang berbeza. Maka ia patut mengkaji bahagian "Aplikasi", kerana, walaupun bilangan jenis rajah dalam UML adalah kecil, anda boleh mendapat faedah maksimum daripada penggunaannya hanya jika anda menggunakan rajah yang sepadan untuk tujuan yang dimaksudkan.

Contoh penggunaan

Nyatakan gambar rajah mesin adalah teknologi yang terkenal untuk menerangkan tingkah laku sistem. Rajah keadaan telah wujud dalam satu bentuk atau yang lain sejak tahun 1960, dan pada hari-hari awal pengaturcaraan berorientasikan objek ia digunakan untuk mewakili tingkah laku sistem. Dalam pendekatan berorientasikan objek, anda melukis gambar rajah keadaan kelas tunggal untuk menunjukkan tingkah laku objek tunggal sepanjang hayatnya.

Apabila mesin keadaan terhingga ditulis, contohnya pasti termasuk sistem kawalan pelayaran atau mesin layan diri.
Kami memutuskan untuk menggunakan pengawal panel kawalan rahsia di istana Gothic. Di istana ini kami ingin menyembunyikan khazanah kami supaya sukar dicari. Untuk mengakses kunci peti besi, kita mesti mengeluarkan lilin strategik dari lilin, tetapi kunci hanya akan muncul jika pintu ditutup. Selepas kunci muncul, kami boleh memasukkan kunci ke dalamnya dan membuka peti besi. Untuk keselamatan tambahan, kami telah membuatnya supaya peti besi hanya boleh dibuka selepas lilin dikeluarkan. Jika pencuri tidak mempedulikan langkah berjaga-jaga ini, maka kita akan melepaskan raksasa yang menjijikkan yang akan menelan pencuri itu.

Dalam Rajah. 10.1 ditunjukkan rajah negeri kelas pengawal yang menguruskan sistem keselamatan mewah saya. Rajah keadaan bermula dengan keadaan objek pengawal yang dicipta: keadaan Tunggu. Ini ditunjukkan dalam rajah oleh pseudostat awal, yang bukan keadaan tetapi mempunyai anak panah yang menunjuk kepada keadaan awal.
Rajah menunjukkan bahawa pengawal boleh berada dalam satu daripada tiga keadaan: Tunggu, Kunci dan Buka. Rajah juga menunjukkan peraturan yang mana pengawal beralih dari satu keadaan ke keadaan yang lain. Peraturan ini dibentangkan dalam bentuk peralihan - garis yang menghubungkan keadaan.

Peralihan bermaksud berpindah dari satu keadaan ke keadaan yang lain. Setiap peralihan mempunyai label sendiri, yang terdiri daripada tiga bahagian:
tandatangan pencetus /aktiviti. Kesemuanya adalah pilihan. Biasanya, id pencetus adalah satu-satunya peristiwa yang boleh menyebabkan perubahan keadaan.

Pengawal, jika dinyatakan, adalah keadaan logik yang mesti dipenuhi untuk peralihan berlaku. Aktiviti ialah beberapa tingkah laku sistem semasa peralihan. Ini boleh menjadi sebarang ekspresi tingkah laku. Bentuk penuh pencetus ID boleh termasuk berbilang peristiwa dan parameter. Peralihan daripada keadaan Tunggu (Rajah 10.1) kepada keadaan lain boleh dibaca sebagai "Dalam keadaan Tunggu, jika lilin dialih keluar, anda melihat kunci dan pergi ke keadaan Kunci."

Ketiga-tiga bahagian perihalan peralihan adalah pilihan. Aktiviti ponteng bermakna tiada apa-apa yang berlaku semasa peralihan. Langkau perisai bermakna peralihan sentiasa dibuat jika peristiwa pencetus berlaku. ID pencetus jarang hilang, tetapi ia berlaku. Ini bermakna peralihan berlaku serta-merta, yang boleh diperhatikan terutamanya dalam keadaan aktif.

Apabila sesuatu peristiwa berlaku dalam keadaan tertentu, hanya satu peralihan boleh dibuat daripada keadaan ini, contohnya, dalam keadaan Kunci (Rajah 10.1), perlindungan mestilah saling eksklusif. Jika peristiwa berlaku dan tiada peralihan yang dibenarkan - contohnya, menutup peti besi dalam keadaan Tunggu atau mengeluarkan lilin semasa pintu terbuka - acara itu diabaikan.

keadaan akhir ( keadaan akhir) bermakna mesin keadaan telah selesai berjalan, menyebabkan objek pengawal dipadamkan. Jadi bagi mereka yang cuai untuk jatuh ke dalam perangkap, memandangkan objek pengawal tidak lagi wujud, kami terpaksa meletakkan semula arnab ke dalam sangkar, mengemop lantai dan but semula sistem.

Ingat bahawa mesin keadaan hanya boleh menunjukkan objek yang diperhatikan secara langsung atau diambil tindakan. Oleh itu, walaupun anda mungkin mengharapkan kami memasukkan sesuatu ke dalam atau mengeluarkan sesuatu dari peti besi apabila pintu dibuka, kami tidak menandai ini pada rajah kerana pengawal tidak boleh memberitahu kami apa-apa mengenainya.

Apabila pembangun bercakap tentang objek, mereka sering merujuk kepada keadaan objek, yang bermaksud gabungan semua data yang terkandung dalam medan objek. Walau bagaimanapun, keadaan dalam rajah mesin keadaan adalah konsep keadaan yang lebih abstrak; Intinya ialah keadaan yang berbeza memerlukan cara yang berbeza untuk bertindak balas terhadap peristiwa.

Aktiviti Dalaman dalam Carta Negeri

Negara boleh bertindak balas terhadap peristiwa tanpa membuat peralihan menggunakan aktiviti dalaman (aktiviti dalaman), dalam hal ini acara, perlindungan dan aktiviti diletakkan di dalam segi empat tepat negeri.

Dalam Rajah. 10.2 menunjukkan keadaan dengan aktiviti simbol dalaman dan acara sistem bantuan, yang anda boleh perhatikan dalam medan teks editor UI. Aktiviti dalaman adalah seperti peralihan diri - peralihan yang kembali ke keadaan yang sama. Sintaks aktiviti dalaman dibina mengikut skema logik peristiwa, perlindungan dan prosedur yang sama.

Dalam Rajah. 10.2 juga menunjukkan aktiviti khas: aktiviti input dan output. Aktiviti input dilaksanakan setiap kali anda memasuki keadaan; aktiviti keluaran- setiap kali anda meninggalkan negeri ini. Walau bagaimanapun, aktiviti dalaman tidak dimulakan aktiviti input dan output; ini adalah perbezaan antara aktiviti dalaman danperalihan diri .

Aktiviti menyatakan dalam rajah keadaan

Di negeri yang telah kami terangkan setakat ini, objek itu senyap dan menunggu acara seterusnya sebelum melakukan apa-apa. Walau bagaimanapun, keadaan adalah mungkin di mana objek mempamerkan beberapa aktiviti.

negeri Mencari dalam Rajah. 10.3 adalah keadaan sedemikian keadaan aktiviti: aktiviti berterusan ditunjukkan dengan simbol buat/; oleh itu istilah melakukan aktiviti (jadi aktif). Selepas carian selesai, peralihan dilakukan tanpa aktiviti, seperti menunjukkan peralatan baharu (Paparkan Perkakasan Baharu). Jika peristiwa pembatalan berlaku semasa aktiviti ( batalkan), Itu melakukan aktiviti hanya mencelah dan kami kembali ke negeri ini Kemas kini Tetingkap Perkakasan.

Kedua-dua aktiviti-aktiviti dan aktiviti biasa mewakili manifestasi beberapa tingkah laku. Perbezaan penting antara kedua-duanya ialah aktiviti biasa berlaku "seketika" dan tidak boleh diganggu oleh peristiwa biasa, manakala aktiviti boleh berjalan untuk beberapa masa terhad dan boleh terganggu, seperti yang ditunjukkan dalam Rajah 1. 10.3. Kekekalan ditafsirkan secara berbeza untuk sistem yang berbeza; untuk sistem masa nyata ini mungkin mengambil beberapa arahan mesin, dan untuk perisian desktop ia mungkin mengambil masa beberapa saat.

DALAM UML 1 aktiviti biasa telah ditetapkan mengikut istilah tindakan(tindakan), dan istilah aktiviti(aktiviti) digunakan hanya untuk melakukan aktiviti.

Superstates

Ia sering berlaku bahawa beberapa negeri mempunyai peralihan biasa dan aktiviti dalaman. Dalam kes sedemikian, mereka boleh bertukar menjadi substate, dan tingkah laku keseluruhan boleh dipindahkan ke superstate, seperti yang ditunjukkan dalam Rajah. 10.4. Tanpa superstate, kita perlu membuat peralihan batalkan(batal) untuk ketiga-tiga negeri dalam sesebuah negeri Masukkan Butiran Sambungan.

Keadaan selari

Keadaan boleh dibahagikan kepada beberapa keadaan selari yang berjalan serentak. Dalam Rajah. Rajah 10.5 menunjukkan jam penggera ringkas yang boleh menghidupkan sama ada CD atau radio dan menunjukkan sama ada masa semasa atau masa penggera.

Pilihan CD/Radio dan Masa Semasa/Masa Penggera adalah selari. Jika anda ingin mewakili ini menggunakan gambar rajah keadaan bukan selari, anda akan mendapat gambar rajah yang tidak kemas apabila anda perlu menambah keadaan. Mengasingkan dua bidang tingkah laku kepada dua rajah keadaan menjadikannya lebih jelas.

nasi. 10.5 juga termasuk keadaan prasejarah(sejarah pseudostate). Ini bermakna apabila jam dihidupkan, pilihan radio/CD masuk ke dalam keadaan jam berada semasa ia dimatikan. Anak panah yang keluar dari prasejarah menunjukkan keadaan yang wujud pada mulanya apabila tiada prasejarah.

Melaksanakan Carta Negeri

Rajah keadaan boleh dilaksanakan dalam tiga cara utama: menggunakan pernyataan suis bersarang, corak Negeri dan jadual keadaan. Pendekatan paling langsung untuk bekerja dengan carta negeri ialah pernyataan suis bersarang, seperti dalam Rajah. 10.6.

Walaupun kaedah ini mudah, ia sangat panjang walaupun untuk kes mudah ini. Di samping itu, dengan pendekatan ini sangat mudah untuk kehilangan kawalan, jadi kami tidak mengesyorkan menggunakannya walaupun dalam situasi asas.
Corak Negeri mewakili hierarki kelas negeri untuk mengendalikan tingkah laku keadaan. Setiap keadaan dalam rajah keadaan mempunyai subkelas keadaan sendiri. Pengawal mempunyai kaedah untuk setiap peristiwa yang hanya memajukan ke kelas negeri. Rajah keadaan yang ditunjukkan dalam Rajah. 10.1 boleh dilaksanakan menggunakan kelas yang dibentangkan dalam Rajah. 10.7.

Bahagian atas hierarki ialah kelas abstrak yang mengandungi penerangan semua kaedah yang memproses peristiwa, tetapi tanpa pelaksanaan.
Untuk setiap keadaan tertentu, cukup untuk menulis semula kaedah pengendali untuk acara tertentu yang memulakan peralihan daripada keadaan.
Jadual keadaan mewakili gambar rajah keadaan sebagai data.

Jadi, rajah dalam Rajah. 10.1 boleh dibentangkan dalam bentuk jadual. 10.1.
Kami kemudian membina penterjemah yang menggunakan jadual keadaan masa jalan atau penjana kod yang menjana kelas daripada jadual itu.

Jelas sekali, kebanyakan kerja di meja negeri dilakukan sekali, tetapi ia kemudiannya boleh digunakan apabila masalah negeri perlu diselesaikan. Jadual keadaan masa jalan boleh diubah suai tanpa penyusunan semula, yang agak mudah. Templat keadaan lebih mudah untuk dipasang, dan walaupun setiap negeri memerlukan kelas yang berasingan, jumlah kod yang perlu ditulis agak kecil.

Pelaksanaan yang ditunjukkan hampir minimum, tetapi ia memberi idea tentang cara menggunakannya gambar rajah negeri. Dalam setiap kes, pelaksanaan model negeri menghasilkan program yang agak stereotaip, jadi biasanya lebih baik menggunakan beberapa bentuk penjanaan kod untuk mencapainya.

Langgan berita tapak; anda boleh mendapatkan borang langganan di lajur kanan tapak.

Jika anda ingin belajar cara bekerja sebagai pekerja bebas secara profesional, kami menjemput anda ke kursus "".

UML atau Unified Modelling Language ialah bahasa penerangan grafik untuk pemodelan objek dalam bidang pembangunan perisian. Tetapi penggunaan UML tidak terhad kepada IT; satu lagi bidang besar aplikasi praktikal UML ialah memodelkan proses perniagaan, reka bentuk sistem dan pemetaan struktur organisasi. UML membenarkan pembangun perisian bersetuju dengan tatatanda grafik untuk mewakili konsep biasa dan memberi tumpuan kepada reka bentuk dan pembangunan.

Faedah UML

  • UML menggunakan tatatanda grafik untuk elemen sistem yang dimodelkan, dan gambar rajah UML agak mudah difahami;
  • UML memungkinkan untuk menerangkan sistem dari hampir semua sudut pandangan yang mungkin, dengan mengambil kira pelbagai aspek;
  • UML berorientasikan objek: kaedah analisis dan pembinaannya secara semantik hampir dengan kaedah pengaturcaraan yang digunakan dalam bahasa OOP moden;
  • UML ialah standard terbuka. Standard ini berkembang dan berkembang dari versi ke versi, memenuhi keperluan paling moden untuk menerangkan sistem;
  • mengandungi mekanisme sambungan yang membolehkan anda memasukkan teks dan jenis grafik tambahan, yang membolehkan anda menggunakan UML bukan sahaja dalam medan IT.

Jenis Rajah UML

Terdapat 14 jenis rajah dalam UML. Mereka boleh dibahagikan kepada 2 kategori:

  • struktur, mewakili struktur maklumat;
  • tingkah laku, mewakili tingkah laku sistem dan pelbagai aspek interaksi. Subjenis rajah tingkah laku yang berasingan dipertimbangkan gambar rajah interaksi.

Hierarki jenis gambar rajah UML, diwakili oleh gambar rajah kelas

Gambar rajah struktur

  1. Gambar rajah kelas adalah elemen utama dalam pemodelan berorientasikan objek. Menggunakan gambar rajah ini (sebenarnya, melalui kelas, mereka sifat-sifat, kaedah dan kebergantungan antara kelas) menerangkan model domain dan struktur sistem yang dimodelkan.
  2. Rajah Komponen memaparkan pecahan kod program kepada blok besar (komponen struktur) dan menunjukkan kebergantungan antara mereka. Komponen boleh menjadi pakej, modul, perpustakaan, fail, dll.
  3. Gambar rajah objek menunjukkan hirisan penuh atau separa sistem simulasi pada titik masa tertentu. Ia mewakili contoh kelas (objek), keadaan mereka (nilai atribut semasa), dan hubungan antara mereka.
  4. Gambar rajah struktur komposit menunjukkan struktur dalaman kelas dan, jika boleh, interaksi antara unsur-unsur struktur ini.
  5. Gambar rajah pakej menunjukkan pakej dan hubungan antara mereka. Jenis rajah ini berfungsi untuk memudahkan struktur model (dan, dengan itu, bekerja dengannya) dengan menggabungkan elemen model ke dalam kumpulan mengikut kriteria tertentu.
  6. Gambar rajah penempatan memodelkan penggunaan komponen perisian ( artifak) pada sumber pengkomputeran/komponen perkakasan ( nod).
  7. Gambar rajah profil menerangkan mekanisme lanjutan yang membolehkan UML disesuaikan dengan pelbagai bidang subjek dan industri.

Contoh Rajah Kelas UML

Gambar rajah tingkah laku

  1. Gambar rajah aktiviti menunjukkan tindakan ( tindakan) yang mana beberapa aktiviti terdiri ( aktiviti). Rajah aktiviti digunakan untuk memodelkan proses perniagaan, proses teknologi, pengkomputeran berjujukan dan selari.
  2. Gunakan gambarajah kes(atau gambarajah kes guna) menerangkan hubungan antara aktor (aktor) dan kes penggunaan sistem yang dimodelkan (keupayaannya). Tujuan utama rajah adalah untuk menjadi alat universal untuk pelanggan, pembangun dan pengguna akhir untuk bersama-sama membincangkan sistem - keupayaan dan tingkah lakunya.
  3. Rajah negeri menggambarkan tingkah laku dinamik entiti, menunjukkan cara entiti ini, bergantung pada keadaan semasanya, bertindak balas terhadap pelbagai peristiwa. Ini pada asasnya adalah rajah keadaan daripada teori atom.
  4. Gambar rajah komunikasi(dalam versi terdahulu rajah kerjasama) menunjukkan interaksi antara bahagian struktur komposit dan peranan kerjasama. Gambar rajah secara eksplisit menunjukkan hubungan antara elemen (objek).
  5. Rajah jujukan digunakan untuk menggambarkan urutan interaksi objek. Menunjukkan kitaran hayat objek tertentu dan interaksi aktor (aktor) dalam kes penggunaan tertentu, urutan mesej yang mereka tukarkan.
  6. Gambar rajah gambaran keseluruhan interaksi termasuk sebahagian daripada rajah jujukan dan reka bentuk aliran kawalan. Membantu untuk mempertimbangkan interaksi objek dari sudut pandangan yang berbeza.
  7. Rajah masa- subjenis berasingan rajah interaksi yang mengkhusus dalam pemasaan. Gambar rajah jenis ini digunakan untuk mengkaji tingkah laku objek dalam tempoh masa tertentu.