OOAD - Prinsip Berorientasi Objek
Prinsip Sistem Berorientasi Objek
Kerangka konseptual dari sistem berorientasi objek didasarkan pada model objek. Ada dua kategori elemen dalam sistem berorientasi objek -
Major Elements- Dengan mayor, ini berarti bahwa jika sebuah model tidak memiliki salah satu dari elemen-elemen ini, model tidak lagi berorientasi objek. Empat elemen utama adalah -
- Abstraction
- Encapsulation
- Modularity
- Hierarchy
Minor Elements- Dengan minor, itu berarti bahwa elemen-elemen ini berguna, tetapi bukan bagian tak terpisahkan dari model objek. Tiga elemen kecil adalah -
- Typing
- Concurrency
- Persistence
Abstraksi
Abstraksi berarti fokus pada fitur-fitur penting dari suatu elemen atau objek dalam OOP, mengabaikan properti yang tidak relevan atau tidak disengaja. Fitur-fitur penting relatif terhadap konteks di mana objek tersebut digunakan.
Grady Booch telah mendefinisikan abstraksi sebagai berikut -
"Abstraksi menunjukkan karakteristik penting dari suatu objek yang membedakannya dari semua jenis objek lainnya dan dengan demikian memberikan batasan konseptual yang didefinisikan secara jelas, relatif terhadap perspektif pengamat."
Example - Ketika siswa kelas dirancang, atribut enrolment_number, nama, kursus, dan alamat disertakan sementara karakteristik seperti pulse_rate dan size_of_shoe dihilangkan, karena tidak relevan dalam perspektif institusi pendidikan.
Enkapsulasi
Enkapsulasi adalah proses mengikat atribut dan metode bersama-sama di dalam kelas. Melalui enkapsulasi, detail internal kelas dapat disembunyikan dari luar. Kelas memiliki metode yang menyediakan antarmuka pengguna di mana layanan yang disediakan oleh kelas dapat digunakan.
Modularitas
Modularitas adalah proses penguraian masalah (program) menjadi sekumpulan modul sehingga dapat mengurangi kompleksitas masalah secara keseluruhan. Booch telah mendefinisikan modularitas sebagai -
"Modularitas adalah properti dari sistem yang telah diuraikan menjadi satu set modul yang kohesif dan digabungkan secara longgar."
Modularitas secara intrinsik terkait dengan enkapsulasi. Modularitas dapat divisualisasikan sebagai cara untuk memetakan abstraksi yang dienkapsulasi menjadi modul fisik nyata yang memiliki kohesi tinggi dalam modul dan interaksi antar modul atau penggandengannya rendah.
Hirarki
Dalam kata-kata Grady Booch, "Hierarki adalah peringkat atau urutan abstraksi". Melalui hierarki, suatu sistem dapat terdiri dari subsistem yang saling terkait, yang dapat memiliki subsistemnya sendiri dan seterusnya hingga komponen tingkat terkecil tercapai. Ini menggunakan prinsip "bagi dan taklukkan". Hierarki memungkinkan penggunaan kembali kode.
Dua jenis hierarki di OOA adalah -
“IS–A” hierarchy- Ini mendefinisikan hubungan hierarki dalam pewarisan, di mana dari super-class, sejumlah subclass dapat diturunkan yang mungkin memiliki subclass dan seterusnya. Misalnya, jika kita mendapatkan kelas Mawar dari kelas Bunga, kita dapat mengatakan bahwa mawar “adalah – sebuah” bunga.
“PART–OF” hierarchy- Ini mendefinisikan hubungan hierarki dalam agregasi di mana kelas dapat terdiri dari kelas lain. Misalnya, bunga tersusun dari sepal, kelopak, benang sari, dan karpel. Dapat dikatakan bahwa kelopak adalah “bagian – dari” bunga.
Mengetik
Menurut teori tipe data abstrak, tipe adalah karakterisasi dari sekumpulan elemen. Dalam OOP, kelas divisualisasikan sebagai tipe yang memiliki properti berbeda dari tipe lainnya. Pengetikan adalah penegakan gagasan bahwa suatu objek adalah turunan dari satu kelas atau tipe. Ini juga memaksakan bahwa objek dari tipe yang berbeda mungkin tidak bisa saling dipertukarkan; dan dapat dipertukarkan hanya dengan cara yang sangat terbatas jika benar-benar diperlukan untuk melakukannya.
Dua jenis pengetikan adalah -
Strong Typing - Di sini, operasi pada suatu objek diperiksa pada saat kompilasi, seperti dalam bahasa pemrograman Eiffel.
Weak Typing- Di sini, pesan dapat dikirim ke kelas mana pun. Operasi tersebut hanya diperiksa pada saat eksekusi, seperti dalam bahasa pemrograman Smalltalk.
Konkurensi
Concurrency dalam sistem operasi memungkinkan melakukan banyak tugas atau proses secara bersamaan. Ketika satu proses ada dalam suatu sistem, dikatakan bahwa ada satu utas kontrol. Namun, sebagian besar sistem memiliki banyak utas, beberapa aktif, beberapa menunggu CPU, beberapa ditangguhkan, dan beberapa dihentikan. Sistem dengan banyak CPU secara inheren mengizinkan rangkaian kontrol yang bersamaan; tetapi sistem yang berjalan pada satu CPU menggunakan algoritme yang sesuai untuk memberikan waktu CPU yang adil ke utas sehingga memungkinkan konkurensi.
Dalam lingkungan berorientasi objek, ada objek aktif dan tidak aktif. Objek aktif memiliki thread kontrol independen yang dapat dieksekusi secara bersamaan dengan thread objek lain. Objek aktif melakukan sinkronisasi satu sama lain serta dengan objek yang murni berurutan.
Kegigihan
Sebuah objek menempati ruang memori dan ada untuk jangka waktu tertentu. Dalam pemrograman tradisional, umur suatu objek biasanya umur dari pelaksanaan program yang membuatnya. Dalam file atau database, umur objek lebih lama daripada durasi proses pembuatan objek. Properti di mana suatu objek terus ada bahkan setelah penciptanya tidak ada lagi dikenal sebagai ketekunan.