OOAD - Model Objek
Model objek memvisualisasikan elemen dalam aplikasi perangkat lunak dalam bentuk objek. Dalam bab ini, kita akan melihat konsep dasar dan terminologi dari sistem berorientasi objek.
Objek dan Kelas
Konsep objek dan kelas secara intrinsik terkait satu sama lain dan membentuk fondasi paradigma berorientasi objek.
Obyek
Objek adalah elemen dunia nyata dalam lingkungan berorientasi objek yang mungkin memiliki keberadaan fisik atau konseptual. Setiap objek memiliki -
Identitas yang membedakannya dari objek lain di sistem.
Keadaan yang menentukan sifat karakteristik suatu objek serta nilai properti yang dimiliki objek tersebut.
Perilaku yang merepresentasikan aktivitas yang terlihat secara eksternal yang dilakukan oleh suatu objek dalam hal perubahan statusnya.
Objek dapat dimodelkan sesuai dengan kebutuhan aplikasi. Suatu objek mungkin memiliki keberadaan fisik, seperti pelanggan, mobil, dll .; atau keberadaan konseptual yang tidak berwujud, seperti proyek, proses, dll.
Kelas
Kelas mewakili sekumpulan objek yang memiliki sifat karakteristik yang sama yang menunjukkan perilaku umum. Ini memberikan cetak biru atau deskripsi dari objek yang dapat dibuat darinya. Penciptaan objek sebagai anggota kelas disebut instantiation. Jadi, objek adalah turunan dari suatu kelas.
Konstituen kelas adalah -
Sekumpulan atribut untuk objek yang akan dibuat instance-nya dari kelas. Secara umum, objek yang berbeda dari suatu kelas memiliki beberapa perbedaan dalam nilai atributnya. Atribut sering disebut sebagai data kelas.
Satu set operasi yang menggambarkan perilaku objek kelas. Operasi juga disebut sebagai fungsi atau metode.
Example
Mari kita pertimbangkan sebuah kelas sederhana, Circle, yang merepresentasikan lingkaran figur geometris dalam ruang dua dimensi. Atribut kelas ini dapat diidentifikasi sebagai berikut -
- x – coord, untuk menunjukkan koordinat x dari pusat
- y – coord, untuk menunjukkan koordinat y dari pusat
- a, untuk menunjukkan jari-jari lingkaran
Beberapa operasinya dapat didefinisikan sebagai berikut -
- findArea (), metode untuk menghitung luas
- findCircumference (), metode untuk menghitung keliling
- scale (), metode untuk menambah atau mengurangi radius
Selama pembuatan instance, nilai ditetapkan untuk setidaknya beberapa atribut. Jika kita membuat objek my_circle, kita dapat menetapkan nilai seperti x-coord: 2, y-coord: 3, dan a: 4 untuk menggambarkan statusnya. Sekarang, jika skala operasi () dilakukan pada my_circle dengan faktor skala 2, nilai variabel a akan menjadi 8. Operasi ini membawa perubahan dalam status my_circle, yaitu objek telah menunjukkan perilaku tertentu.
Enkapsulasi dan Penyembunyian Data
Enkapsulasi
Enkapsulasi adalah proses mengikat atribut dan metode bersama-sama di dalam kelas. Melalui enkapsulasi, detail internal kelas dapat disembunyikan dari luar. Ini memungkinkan elemen kelas untuk diakses dari luar hanya melalui antarmuka yang disediakan oleh kelas.
Menyembunyikan Data
Biasanya, kelas dirancang sedemikian rupa sehingga datanya (atribut) hanya dapat diakses dengan metode kelasnya dan diisolasi dari akses luar langsung. Proses mengisolasi data suatu objek ini disebut penyembunyian data atau penyembunyian informasi.
Example
Dalam Class Circle, penyembunyian data dapat digabungkan dengan membuat atribut tidak terlihat dari luar kelas dan menambahkan dua metode lagi ke kelas untuk mengakses data kelas, yaitu -
- setValues (), metode untuk menetapkan nilai ke x-coord, y-coord, dan a
- getValues (), metode untuk mengambil nilai x-coord, y-coord, dan a
Di sini data pribadi dari objek my_circle tidak dapat diakses secara langsung dengan metode apa pun yang tidak dienkapsulasi di dalam class Circle. Ia seharusnya diakses melalui metode setValues () dan getValues ().
Message Passing
Aplikasi apa pun membutuhkan sejumlah objek yang berinteraksi secara harmonis. Objek dalam sistem dapat berkomunikasi satu sama lain menggunakan penyampaian pesan. Misalkan sebuah sistem memiliki dua objek: obj1 dan obj2. Objek obj1 mengirim pesan ke objek obj2, jika obj1 ingin obj2 mengeksekusi salah satu metodenya.
Fitur penyampaian pesan adalah -
- Pesan yang lewat di antara dua objek umumnya searah.
- Pengoperan pesan memungkinkan semua interaksi antar objek.
- Pengoperan pesan pada dasarnya melibatkan pemanggilan metode kelas.
- Objek dalam proses yang berbeda dapat dilibatkan dalam penyampaian pesan.
Warisan
Warisan adalah mekanisme yang memungkinkan kelas baru dibuat dari kelas yang ada dengan memperluas dan menyempurnakan kemampuannya. Kelas-kelas yang ada disebut kelas dasar / kelas induk / kelas super, dan kelas-kelas baru disebut kelas turunan / kelas anak / subkelas. Subclass dapat mewarisi atau memperoleh atribut dan metode dari super-class asalkan super-class mengizinkannya. Selain itu, subclass dapat menambahkan atribut dan metodenya sendiri dan dapat memodifikasi salah satu metode super-class. Pewarisan mendefinisikan hubungan "adalah - a".
Example
Dari satu kelas Mamalia, sejumlah kelas dapat diturunkan seperti Manusia, Kucing, Anjing, Sapi, dll. Manusia, kucing, anjing, dan sapi semuanya memiliki ciri khas mamalia. Selain itu, masing-masing memiliki ciri khas tersendiri. Dapat dikatakan bahwa sapi “adalah - seekor” mamalia.
Jenis Warisan
Single Inheritance - Sebuah subclass berasal dari satu kelas super.
Multiple Inheritance - Sebuah subclass berasal dari lebih dari satu super-class.
Multilevel Inheritance - Subclass diturunkan dari super-class yang selanjutnya diturunkan dari kelas lain dan seterusnya.
Hierarchical Inheritance - Kelas A memiliki sejumlah subkelas yang masing-masing mungkin memiliki subkelas berikutnya, berlanjut untuk sejumlah level, sehingga membentuk struktur pohon.
Hybrid Inheritance - Kombinasi pewarisan banyak dan bertingkat sehingga membentuk struktur kisi.
Gambar berikut menggambarkan contoh berbagai jenis warisan.
Polimorfisme
Polimorfisme aslinya adalah kata Yunani yang berarti kemampuan untuk mengambil berbagai bentuk. Dalam paradigma berorientasi objek, polimorfisme menyiratkan penggunaan operasi dengan cara yang berbeda, bergantung pada contoh tempat mereka beroperasi. Polimorfisme memungkinkan objek dengan struktur internal berbeda untuk memiliki antarmuka eksternal yang sama. Polimorfisme sangat efektif saat menerapkan pewarisan.
Example
Mari kita pertimbangkan dua kelas, Circle dan Square, masing-masing dengan metode findArea (). Meskipun nama dan tujuan metode dalam kelas sama, namun implementasi internal, yaitu prosedur penghitungan luas berbeda untuk setiap kelas. Ketika sebuah objek kelas Circle memanggil metode findArea (), operasi menemukan area lingkaran tanpa konflik apa pun dengan metode findArea () dari kelas Square.
Generalisasi dan Spesialisasi
Generalisasi dan spesialisasi mewakili hierarki hubungan antar kelas, di mana subkelas diturunkan dari kelas super.
Generalisasi
Dalam proses generalisasi, ciri-ciri umum kelas digabungkan untuk membentuk kelas pada tingkat hierarki yang lebih tinggi, yaitu subkelas digabungkan untuk membentuk kelas super umum. Ini mewakili hubungan "adalah - a - jenis - dari". Misalnya, “mobil adalah jenis kendaraan darat”, atau “kapal adalah jenis kendaraan air”.
Spesialisasi
Spesialisasi adalah proses kebalikan dari generalisasi. Di sini, fitur pembeda dari kelompok objek digunakan untuk membentuk kelas khusus dari kelas yang ada. Dapat dikatakan bahwa subclass adalah versi khusus dari super-class.
Gambar berikut menunjukkan contoh generalisasi dan spesialisasi.
Tautan dan Asosiasi
Tautan
Tautan mewakili koneksi yang melaluinya suatu objek berkolaborasi dengan objek lain. Rumbaugh telah mendefinisikannya sebagai "hubungan fisik atau konseptual antar objek". Melalui tautan, satu objek dapat memanggil metode atau menavigasi melalui objek lain. Tautan menggambarkan hubungan antara dua objek atau lebih.
Asosiasi
Asosiasi adalah sekelompok tautan yang memiliki struktur dan perilaku yang sama. Asosiasi menggambarkan hubungan antara objek dari satu atau lebih kelas. Tautan dapat didefinisikan sebagai turunan dari suatu asosiasi.
Gelar Asosiasi
Derajat asosiasi menunjukkan jumlah kelas yang terlibat dalam koneksi. Derajat mungkin unary, binary, atau ternary.
SEBUAH unary relationship menghubungkan objek dari kelas yang sama.
SEBUAH binary relationship menghubungkan objek dari dua kelas.
SEBUAH ternary relationship menghubungkan objek dari tiga kelas atau lebih.
Rasio Kardinalitas Asosiasi
Kardinalitas asosiasi biner menunjukkan jumlah instance yang berpartisipasi dalam suatu asosiasi. Ada tiga jenis rasio kardinalitas, yaitu -
One–to–One - Satu objek kelas A dikaitkan dengan satu objek kelas B.
One–to–Many - Satu objek kelas A dikaitkan dengan banyak objek kelas B.
Many–to–Many - Sebuah objek kelas A dapat dikaitkan dengan banyak objek kelas B dan sebaliknya objek kelas B dapat dikaitkan dengan banyak objek kelas A.
Agregasi atau Komposisi
Agregasi atau komposisi adalah hubungan antar kelas dimana kelas dapat dibuat dari kombinasi objek kelas lain. Ini memungkinkan objek untuk ditempatkan langsung di dalam tubuh kelas lain. Agregasi disebut sebagai hubungan "bagian-dari" atau "memiliki-a", dengan kemampuan untuk menavigasi dari keseluruhan ke bagian-bagiannya. Objek agregat adalah objek yang terdiri dari satu atau lebih objek lainnya.
Example
Dalam hubungan, “mobil memiliki – motor”, mobil adalah keseluruhan objek atau agregat, dan motor adalah “bagian – dari” mobil. Agregasi mungkin menunjukkan -
Physical containment - Contoh, komputer terdiri dari monitor, CPU, mouse, keyboard, dan sebagainya.
Conceptual containment - Contoh, pemegang saham memiliki – satu saham.
Manfaat Model Objek
Sekarang kita telah membahas konsep inti yang berkaitan dengan orientasi objek, akan bermanfaat untuk mencatat keuntungan yang ditawarkan model ini.
Manfaat menggunakan model objek adalah -
Ini membantu dalam pengembangan perangkat lunak yang lebih cepat.
Mudah dirawat. Misalkan sebuah modul mengembangkan kesalahan, maka programmer dapat memperbaiki modul tersebut, sementara bagian lain dari perangkat lunak masih aktif dan berjalan.
Ini mendukung peningkatan yang relatif tidak merepotkan.
Ini memungkinkan penggunaan kembali objek, desain, dan fungsi.
Ini mengurangi risiko pengembangan, terutama dalam integrasi sistem yang kompleks.