Video: PBO - Hubungan Antar Kelas 2024
Adalah semulajadi untuk mengklasifikasikan objek dalam kategori dan untuk menyusun kategori ke dalam subkategori. Jika anda mencari tempat untuk hidup, anda mendapati diri anda mengkategorikan unit kediaman sebagai rumah, pangsapuri, rumah bandar, kondominium, rumah, dan sebagainya. Rumah dapat pula dianjurkan oleh gaya seperti ladang, tingkat perpecahan, kolonial, dan garam garam. UML menyediakan anda notasi untuk menangkap klasifikasi jenis ini - juga dikenali sebagai generalisasi dan pengkhususan - dan menggunakannya sebagai pemodel dan pemrogram.
Sesetengah pemaju berorientasikan objek akan berusaha keras untuk menyelamatkan sedikit kerja. Apabila mereka boleh memodelkan sesuatu sekali dan menggunakannya semula, mereka berminat. Sekiranya mereka boleh menulis satu kaedah (kod program untuk operasi) untuk kelas hanya satu kali dan menggunakannya berkali-kali, kemudian tandatangan mereka untuk produktiviti yang lebih tinggi. Jika anda ingin menjimatkan masa anda dengan menentukan atribut dan operasi sekali dan kemudian menggunakannya berkali-kali, baca terus.
Seperti yang anda nyatakan kelas, anda mungkin dapati bahawa sesetengah kelas mempunyai atribut yang sama atau operasi yang sama. Apabila ini berlaku, anda meletakkan ciri-ciri umum ini (atribut, operasi, dan sebagainya) dalam kelas yang lebih generik yang dipanggil superclass. Kelas-kelas yang berkongsi ciri-ciri umum dikenali sebagai subclass subclass daripada superkelas. Contohnya, panjang bahan yang dirakam pada rakaman video, audiotape, cakera padat, atau filem filem adalah atribut dari semua empat jenis media yang dirakam. Kelas-kelas ini boleh berkongsi sifat-sifat lain juga, seperti dimensi fizikal mereka dan tarikh masing-masing digunakan untuk membuat rakaman. Dalam kes ini superclass akan menjadi RecordedMedia, subclass akan menjadi Video, Audiotape, CompactDisc, dan MovieFilm, dan beberapa sifat yang dikongsi boleh termasuk yang dicatatkanLength dan totalLength.
Proses mencari atribut atau operasi serupa di seluruh kelas dikenali sebagai penyepaduan . Sebagai contoh, anda umumkan rekod atributLength ke kelas yang lebih generik yang dikenali sebagai RecordedMedia. Proses untuk menunjukkan generalisasi dalam UML adalah mudah:
1. Kenal pasti subkategori.
Cari kelas yang mempunyai atribut dan / atau operasi yang sama. Kelas-kelas ini adalah subclass anda.
2. Buat superclass.
Berikan superclass untuk memegang sifat umum dan / atau operasi subclass. Berikan superclass nama yang mengkategorikan semua subclass. Menempatkan kelas super di atas subkelas dalam rajah menjadikannya lebih mudah dibaca tetapi tidak diperlukan.)
3. Tambah ciri umum kepada superclass.
Keluarkan sifat dan operasi umum dari subclass dan letakkannya (sekali) dalam kelas superkelas.
4. Lukis hubungan generalisasi.
Anda melukis garisan generalisasi dari setiap subclass ke superclass. Di UML garis generalisasi diwakili sebagai garis pepejal dengan kepala panah berongga di akhir superclass. Di UML, barisan dengan anak panah berongga yang menyambungkan subclass ke superclass dikenali sebagai hubungan generalisasi.
Selepas anda membuat superclass dengan ciri umum seperti atribut dan operasi, subkelas mewarisi ciri-ciri dari superclass tersebut. Dengan cara ini anda hanya perlu menulis ciri-ciri umum sekali dalam kelas super bukannya banyak kali dalam setiap subclass.
Anda boleh memberitahu sama ada anda mempunyai generalisasi dengan melihat bahasa yang anda gunakan (atau orang lain) untuk menerangkan hubungan antara kelas. Perhatikan bahawa dalam menerangkan media yang dirakam dan pelbagai jenisnya seperti rekaman video sebelum ini dalam bahagian ini, ungkapan "empat jenis media yang dirakam" muncul. Jika anda mendapati diri anda menggunakan frasa seperti "jenis" atau "jenis," maka kemungkinan anda mempunyai generalisasi di tangan anda.
Katakanlah bahawa salah satu daripada pelanggan anda prihatin dengan menjejaki bahan dalam arkib. Pelanggan ini telah mengumpulkan pelbagai jenis media yang dirakam seperti pita rakaman dan pita suara. Sebagai pemodel, anda perlu menangkap perbezaan antara media ini dan persamaan mereka. Rajah dalam Rajah 1 menunjukkan permulaan beberapa generalisasi, diatur dalam hierarki warisan .
Rajah 1: Hierarki warisan mudah.
Pembangun menggunakan istilah generalisasi atau warisan untuk merujuk kepada konsep yang sama menggunakan semula sifat dan operasi yang dikongsi yang anda tunjukkan dalam kelas besar dan penggunaan semula dalam subclass. Pengumuman merujuk kepada konsep generalisasi daripada spesifik (subkelas) kepada generik (superkelas). Warisan merujuk kepada kesan generalisasi pada subkelas.
Apabila anda melihat hubungan generalisasi antara kelas, maknanya sangat berbeza daripada hubungan persatuan antara kelas. Persatuan akhirnya merupakan hubungan di antara objek - beberapa contoh satu kelas mempunyai hubungan (pautan) dengan contoh kelas yang lain. Dalam hubungan generalisasi di antara kelas , hubungan itu benar-benar mengenai kelas. Yang terbaik yang boleh anda katakan ialah objek yang dibuat dari subclass mengandungi semua ciri subclass dan superclass.
Anda hanya mempunyai satu objek dari kelas dalam hubungan generalisasi. Walaupun anda menunjukkan dua kelas, subclass dan superclass, anda hanya mempunyai satu objek yang dicipta. Anda boleh memikirkan objek kelas Videotape juga menjadi objek kelas RecordedMedia kerana warisan. Rajah 2 menunjukkan objek yang dibuat dari kelas Videotape dengan semua sifatnya.(Contoh kelas diwakili sebagai simbol objek.) Anda tidak mempunyai dua objek yang berbeza (satu untuk RecordedMedia dan satu untuk Videotape), hanya satu objek. Apabila objek vtu83-1023 dibuat, semua nilai atributnya ditetapkan. Rakaman pada pita adalah 57 minit. Panjang keseluruhan pita fizikal adalah 60 minit. Pita ini adalah videocassette Umatik dengan ketinggian 10 inci, lebar 7 inci, dan kedalaman 1. 5 inci. Rakaman adalah analog, dan log kandungan rekod dilampirkan pada pita untuk arkivis untuk rujukan.
Rajah 2: Satu contoh yang menunjukkan semua sifat yang diwarisi.
Anda hanya mempunyai satu contoh yang ditakrifkan oleh subclass dan superclassnya. Subclass dan superclass mungkin mempunyai operasi pembina (untuk membuat contoh) dan operasi destruktor (untuk memusnahkan contoh). Apabila perisian anda berjalan, dan anda membuat contoh subclass, pembina superclass dijalankan terlebih dahulu, diikuti oleh pembina subkelas. Apabila tiba masanya untuk menghapuskan contoh yang anda buat, pemecah subclass dipanggil terlebih dahulu, diikuti oleh pemusnah superclass. Sekiranya perkara lebih rumit kerana anda mempunyai subkelas subclass, ingatlah: Pembina dipanggil dari bahagian atas hierarki pusaka ke bahagian bawah; pemusnah dipanggil mengikut urutan dari subkelas terendah hingga tertinggi superclass.