Aspek utama pada OOP yaitu :
- Abstraction
adalah suatu cara untuk melihat suatu object dalam bentuk yang lebih sederhana. Sebagai contoh kita tidak melihat sebuah mobil sebagai ribuan komponen elektronik, sistem mekanik dengan empat buah ban, jok, stir kemudi dan sebagainya. Dengan Abstraction, suatu sistem yang kompleks dapat dipandang sebagai kumpulan subsistem-subsistem yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri atas berbagai subsistem, seperti subsistem kemudi, subsistem pengereman dan sebagainya.
Fungsi dari abstraction :
untuk memfilter atribut dan operation sehingga hanya tinggal atribut dan operation yang diperlukan saja
2. Inheritance
merupakan konsep mewariskan attribute dan method yang dimiliki oleh sebuah class kepada class turunannya. Dengan konsep ini class yang dibuat cukup mendefinisikan attribute dan method yang spesifik didalamnya, sedangkan attribute dan method yang lebih umum akan didapatkan dari class yang menjadi induknya.
contoh :
3. Encapsulation
merupakan proses pemaketan data bersama metode-metodenya dimana hal ini bermanfaat untuk menyembeunyikan rincian-rincian implementasi dari pemakai. Dalam sebuah objek yang mengandung variabel-variabel dan method-method, dapat ditentukan hak akses pada sebuah variabel atau method dari objek.
Ada 2 manfaat utama dari encapsulation yaitu :
- Penyembunyian Informasi (information hiding)
Hal ini mengacu kepada perlindungan terhadap implementasi obejk internal. Objek tersebut dari interface public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utamanya adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.
- Modularitas
Modularitas berarti objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antarmuka, maka Kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistriibusikan objek-objek dari sistem.
4.Polymorphism
Adalah Satu nama operation yang memiliki bentuk proses yang berbeda
Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :
- Method yang dipanggil harus melalui variabel dari basis class atau superclass.
- Method yang dipanggil harus juga menjadi method dari basis class.
- Signature method harus sama baik pada superclass maupun subclass.
- Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.
5. Message sending
merupakan Pengiriman pesan dari suatu objek kepada objek lain untuk melakukan suatu operation yang berhubungan dengan polymorphism.
6. Association
Adalah hubungan antara object. Relasi assosiasi biasa disebut is “a” relationship. Assosiasi berarti bahwa sebuah object “menggunakan” object yang lain. Assosiasi adalah sebuah relasi dimana semua object memiliki lifecycle nya sendiri dan tidak ada yang bertindak sebagai owner.
Contoh Teacher dan Student. Banyak Student dapat berasosiasi dengan satu Teacher dan satu Student dapat berasosiasi dengan banyak Teacher. Object keduanya bisa dibuat dan dihancurkan secara mandiri tanpa berpengaruh pada eksistensi object lain.
7. Aggregation
adalah bentuk hubungan yang lebih khusus dari Assosiasi dimana sebuah object memiliki lifecycle nya sendiri tapi dengan kepemilikan dan class child tidak dapat memiliki class parentnya. Relasinya biasa di sebut relasi “has-a”.
sebagai contoh, Department dan Teacher. Satu Teacher tidak dapat memiliki banyak Department, tapi jika kita menghapus object Department, object Teacher tidak akan ikut terhapus. Karena object teacher di buat di luar object department, sehingga jika object department dihancurkan maka object teacher tetap exist. Object department bisa memiliki banyak object teacher yang berasosiasi dengannya, tapi tidak sebaliknya. Sehingga dalam relasi ini object department adalah owner dari object teacher.
referensi :
https://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek
Perbedaan Asosiasi, Agregasi dan Komposisi pada Object Oriented Programming
http://willwellwie.blogspot.com/2014/10/encapsulation-inheritance-dan.html
https://ndoware.com/pemrograman-berorientasi-objekobject-oriented-programming-oop.html