Object
Oriented Programming
Object oriented
programming memiliki 3 konsep dasar :
1. Abstract
data type (ADT)
2. Inheritance
3. Dynamic
binding
Object oriented
programming language juga mendukung paradigm menggunakan class, methods, object
dan message passing.
Inheritance
Inheritance
adalah pewarisan sifat dari superclass ke subclass, yang mewarisi attribute dan
method yang masih sejenis beserta attribute dan method tambahan yang merupakan
sifat khusus subclass.
Sebagai contoh class
sapi adalah hewan bertulang belakang / vertebrata yang merupakan mamalia
pemakan tumbuhan / herbivora.
Object
oriented concepts
Object oriented
concepts memiliki cirri-ciri:
-
ADT biasa nya di sebut class
-
Isi dari class biasa nya disebut objek
-
Class yang menurunkan ke subclass
-
Subprogram yang melakukan definisi
operasi pada objek disebut dengan method
-
Pemanggilan terhadap method di sebut
messages
-
Kumpulan dari method pada sebuah objek
disebut dengan message protocol atau message interface
-
Messages memiliki 2 bagian :
o
Method name
o
Destination object
-
Dalam kasus simple, class mewarisi semua
entities dari parent nya
-
Inheritance dapat di komplikasikan
dengan akses control terhadap enkapsulasi entities
o
Class dapat menyembunyikan entities dari
subclass nya
o
Class dapat menyembunyikan entities dari
client nya
o
Class dapat menyembunyikan entities dari
client nya tetapi memperbolehkan subclass mengakses nya
-
Sebuah class dapat memodifikasi method
dari class turunan nya
o
Method yang baru melakukan override
terhadap method yang lama
o
Method pada parent di overridden
-
3 cara membedakan dari class parent nya:
1.
Class parent dapat mendefinisikan
beberapa variable atau method nya untuk memiliki private akses, yang berarti
mereka tidak akan terlihat oleh kelas turunan nya.
2.
Subclass dapat menambahkan variable atau
method untuk yang di wariskan dari parent.
3.
Subclass dapat memodifikasi sikap dari
satu atau banyak method yang diwariskan.
-
Terdapat 2 jenis variable pada sebuah
class :
1.
Class variable – satu / class
2.
Instance variable – satu / objek
-
Terdapat 2 jenis method pada sebuah
class :
1.
Class method – menerima pesan kepada
class.
2.
Instance method – menerima pesan kepada
objek.
-
Single vs multiple inheritance
-
Kekurangan dari inheritance pada
penggunaan ulang :
o
Membuat ketergantungan antar class yang
membuat sulit di maintenance
Dynamic
Binding
-
Polymorphic variable dapat di
definisikan pada kelas yang dapat melakukan referensi objek kelas dan objek
dari turunan nya
-
Ketika hierarki kelas mengandung kelas
yang override method biasa disebut dengan polymorphic variable, binding ke
method akan dynamic
-
Mengizinkan system software lebih mudah
di perpanjang ketika dikembangkan dan maintenance
-
Abstrak method adalah salah satu yang
tidak dimiliki pada definisi (hanya mendefinisikan protocol)
-
Abstrak kelas memiliki setidak nya satu
virtual method
-
Abstrak kelas tidak dapat di instansikan
Exclusivity
dari objek
-
Semua adalah objek
o
Keuntungan : elegant dan purity
o
Kekurangan : lambat pada operasi objek
yang simple
-
Menambah objek untuk menyempurnakan
typing system
o
Kelebihan : cepat operasi simple objek
o
Kekurangan : hasil membingungkan type
system (2 tipe entities)
-
Memasukkan gaya imperative typing sistem
untuk primitive tetapi membuat semua nya menjadi objek
o
Kelebihan : cepat operasi pada simple
objek, secara relative system typing kecil
o
Kekurangan : masih membingungkan
memiliki 2 type system
Jika kelas
turunan adalah kelas parent. Maka objek pada kelas turunan harus bersifat sama
dengan objek pada kelas parent
Subclass dapat
menambah variable dan method dan override method turunan dengan cara compatible
Single
dan multiple inheritance
-
Multiple inheritance mengizinkan kelas
baru untuk di warisi dari 2 atau lebih kelas
-
Kekurangan multiple inheritance :
o
Bahasa dan implementasi yang kompleks
o
Potensial tidak efisien – dynamic
binding memiliki biaya lebih disbanding dengan multiple inheritance
-
Kelebihan :
o
Terkadang berharga dan berguna
Alokasi
dan dealokasi objek
-
Jika bersifat ADT, maka dapat di
alokasikan dari semua tempat
o
Alokasi dari run-time stack
o
Secara explicit membuat pada heap
-
Jika heap-dynamic referensi dapat
melalui pointer atau referensi variable
o
Memudahkan assignment – melakukan
referensi ulang secara implicit
-
Jika objek stack dynamic, akan memiliki
masalah pada subtype – object slicing
Nested
class
-
Jika kelas baru dibutuhkan oleh satu
kelas, maka tidak ada alasan untuk mendefinisikan agar dapat terlihat oleh
kelas lain nya
OOP
pada C++
-
Berevolusi dari C dan SIMULA 67
-
OOP yang paling sering digunakan
-
Memiliki mixed typing system
-
Constructor dan destructor
-
Elaborate akses control kepada kelas
entities
Inheritance
-
Kelas tidak perlu menjadi subclass dari
kelas lain
-
Akses control terhadap
o
Private (hanya terlihat oleh kelas
sendiri dan friend kelas itu, tidak mengizinkan subclass menjadi subtype)
o
Public (terlihat oleh subclass dan semua
nya)
o
Protected (terlihat pada kelas dan
subclass, tetapi tidak pada client nya)
Dynamic
binding
-
Method dapat didefinisikan dengan
virtual, yang berarti dapat dipanggil melalui polymorphic variable dan secara
dynamic terikat pada message
terimakasih atas infonya
ReplyDeletelem lcd