OOP VS MODULAR
OOP
adalah sebuah konsep pemrograman
yang memandang program bukan lagi cara tetapi merupakan objek yang saling
berinteraksi satu sama lain.
Pemrograman
berorientasi objek atau object-oriented programming (OOP) merupakan paradigma pemrograman
yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini
dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika
pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan
mengirim pesan ke objek lainnya, Sedangkan untuk Structural Programming adalah
kebalikan dari object oriented programming yaitu sebuah cara pemrosesan data
yang terstruktur dalam analisa, cara dan penulisan pemrograman. Dikarenakan
harus terstruktur sehingga dalam pembuatannya antara satu line pemrograman
dengan yang lainnya berhubungan. Konsep utama dari Pemrograman Berbasis Objek
terletak pada kondisi kode/line pemrogramanannya dimana merupakan sebuah
kesatuan modular.
Untuk
program yang simpel/sederhana biasanya menggunakan pemrograman terstruktur
karena masih mudah dan tidak banyak dilakukan perubahan yang berarti, sedangkan
untuk line lebih dari 100 atau bisa dikatakan rumit, maka digunakan pemrograman
berorientasi objek.
Pemrograman
Terstruktur terdiri dari pemecahan masalah yang besar menjadi masalah yang
lebih kecil dan seterusnya, sedangkan untuk pemrograman berorientasi objek
terdiri dari pengkelompokan kode dengan data yang mana setiap objek berfungsi
secara independen sehingga untuk setiap perubahan kode tidak tergantung pada
kode yang lainnya, atau lebih dikenal dengan modular.
Untuk
programming terstruktur bersifat task-centric dan berorientasi objek bersifat
data-centric. Terdapat juga perbedaan secara spesifik antara objek oriented
dengan non-oop, yaitu pada kelas dan objek. Pada Pemrograman Terstruktur
tidak terdapat kelas dan objek.
Sifat-sifat
dari pemrograman terstruktur dapat diuraikan sebagai berikut :
a. Memuat teknik pemecahan masalah
yang logis dan sistematis
b. Memuat algoritma yang efisien, efektif dan sederhana
c. Program disusun dengan logika yang mudah dipahami
d. Tidak menggunakan perintah GOTO
e. Biaya pengujian program relatif rendah
f. Memiliki dokumentasi yang baik
g. Biaya perawatan dan dokumentasi yang dbuthkan relatif rendah
Berbeda
dengan OOP. Suatu program disebut dengan pemrograman berbasis obyek (OOP)
karena terdapat :
–
Encapsulation (pembungkusan) Encapsulation adalah mekanisme pemrograman yang
membungkus kode dan data yang dimanipulasi dan menjaganya supaya terhindar dari
interferensi dan penggunaan yang tidak perlu. Salah satu caranya dengan
membentuk objek.
–
Inheritance (pewarisan) Inheritance memungkinkan programer meletakkan member
yang sama dalam satu class dan class-class lain dapat mewarisi member tersebut.
Class yang mengandung member yang sama dari beberapa class lain dinamakan
superclass atau parent class. Class yang mewarisi dinamakan subclass atau child
class. Inheritance menghasilkan class hierarchy.
–
Polymorphism (polimorfisme –perbedaan bentuk) Polymorphisme artinya mempunyai
banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic, bila
objek-objek itu mempunyai antar muka yang identik namun mempunyai
perilaku-perilaku yang berbeda
Bisa
dikatakan pada pemrograman berorientasi objek, dapat dilakukan sebuah
programming terhadap code yang lebih baik daripada pemrograman terstruktur, itu
juga untuk kaliber atau skala rumit atau besar, sedangkan untuk coding yang
skala kecil lebih mudah menggunakan pemrograman terstruktur dikarenakan lebih
singkat dan mudah tanpa banyak perubahan yang penting.
Perbedaan
antara Object-oriented Programming dan Structural Programming
|
Object
– oriented programming (OOP)
|
Structural
Programming
|
|
Biasa
digunakan untuk program untuk line lebih dari 100 / rumit
|
Biasa
digunakan untuk program yang simpel/sederhana.
|
|
Bersifat
modular (pengkelompokan kode dengan data yang mana setiap objek berfungsi
secara independen sehingga untuk setiap perubahan kode tidak tergantung pada
kode yang lainnya, atau lebih).
|
Pemecahan
masalah dari besar menjadi maslah yang lebih kecil.
|
|
Data-centric
|
Task-centric
|
|
Terdapat
kelas dan objek
|
tidak
terdapat kelas dan objek
|
Kesimpulan
Perbedaan antara prosedural dan OOP
• Prosedural : Fokus pada bagaimana cara komputer menangani masalah
• OOP : Fokus pada masalah yang ditangani dengan menggunakan komputer.
Dengan OOP, kita dapat mengimplementasikan objekt data yang tidak hanya
memiliki ciri khas (attribut), melainkan juga memiliki metode untuk
memanipulasi attribut tersebut. Singkatnya, OOP memiliki keunggulan dari konsep
pemrograman terstruktur, selain itu juga memiliki kemampuan untuk
mengimplementasikan objek dalam kehidupan nyata.
KARAKTERISTIK
PEMROGRAMAN BERORIENTASI OBJEK (OOP)
Pemrograman
berorientasi Objek mempunyai karakterisitik sebagai berikut:
a.
Abstraksi (abstraction)
b.
Pembungkusan (encapsulation)
c.
Pewarisan (inheritence)
d.
Polimorfisme – banyakrupa (polymorphism)
A.
Abstraksi (abstraction).
Kemampuan
sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu
kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai
model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan
perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem,
tanpa mengungkapkan bagaimana kelebihan ini diterapkan
Abstraksi
adalah pengabstrakan atau penyembunyian kerumitan suatu proses.
Abstraksi
menjelaskan definisi dari objek pada class dalam suatu fungsi (method) atau
fungsi
khusus (constructor). Sebuah kelas dapat dideklarasikan sebagai kelas
abstrak.
Tujuan
membuat kelas abstrak adalah agar satu kelas lain dapat memperluasnya (extend)
dengan
jalan menjadi subclass darinya.
B.
Pembungkusan (encapsulation).
Memastikan
pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek
dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi
ijin untuk mengakses keadaannya
Selain
dengan menggunakan metoda abstraksi dalam menyembunyikan method
pada
super class, maka juga dapat dilakukan dengan proses pembungkusan suatu fungsi.
Dengan
kata lain, sebenarnya proses pembungkusan itu sendiri merupakan salah
satu
metoda
atau mekanisme untuk melakukan abstraksi.
Dalam
pemrograman tradisional, proses semacam ini sering juga disebut dengan
penyembunyian
informasi (information hiding).
Dalam
melakukan pembungkusan kode dan data dalam java terdapat tiga tingkatan
akses
data yang perlu diketahui yaitu:
Engkapsulasi
berhubungan class control yang diberlakukan terhadap class member yang
ada
di dalamnya
1.
Tingkat akses Private.
2.
Tingkat akses Protected.
3.
Tingkat akses Public.
1.
Tingkat Akses Privtae ( Encapsulation- Private)
Akses Private berarti bahwa method yang digunakan hanya dapat
diakses oleh
kelas
yang memilikinya.
Dengan mendeklarasikan data dan method menggunakan akses private, ini
berarti
data
dan method tersebut tidak boleh diakses atau dignakan oleh kelas-kelas lain
yang
terdapat di dalam program.
Sebuah variabel atau method yang dideklarasikan private hanya dapat diakses
oleh
method yang merupakan member dari kelas tersebut. Ia tidak dapat diakses
oleh
kelas lain yang berada di dalam package yang sama ataupun di lain package.
Untuk mendeklarasikan suatu data atau method dengan tingkat akses private,
digunakan
kata kunci private.
2.
Tingkat Akses Privtae ( Encapsulation- Protected)
Suatu data maupun method yang dideklarasikan dengan tingkat akses
protected
dapat
diakses oleh kelas yang memilikinya dan juga oleh kelas-kelas yang masih
memiliki
hubungan turunan.
Access control protected berarti member dapat diakses oleh kelas yang
berada
dalam
package yang sama dan subclass yang berada di dalam package yang
berbeda.
Untuk mendeklarasikan tipe data atau method protected digunakan kata
kunci
protected.
.
3.
Tingkat Akses Public (Encapsulation-Public)
Tingkat akses publik merupakan kebalikan dari tingkat akses private.
Data dan method yang bersifat public dapat diakses oleh semua bagian dalam
program.
Dengan kata lain, data-data maupun method-method yang dideklarasikan dengan
tingkat
akses publik akan dikenali dan diakses oleh semua kelas yang ada di
dalam
program, baik yang merupakan kelas turunan maupun kelas yang tidak
memiliki
hubungan sama sekali.
C.
Pewarisan (inheritance).
Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan
dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini
dapat membagi (dan memperluas) perilaku mereka tanpa harus mengimplementasi ulang perilaku
tersebut. Model Pemrograman berorientasi objek
juga menerapkan konsep pewarisan.
Dalam sebuah program, suatu kelas dapat diturunkan menjadi
kelas-kelas baru
lainnya
yang akan mewarisi beberapa sifat atau perilaku dari kelas induknya.
Semua class dalam Java, termasuk class yang membangun Java API, merupakan
subclass
dari superclass Object.
Pewarisan
( inheritance) terdiri dari :
1.
Superclass
Adalah
class yang letaknya di atas class tertentu di dalam hierarki.
2.
Subclass
Adalah
class yang letaknya di bawah class tertentu di dalam hierarki.
Untuk
mengambil sebuah class, gunakan keyword extends.
Keuntungan
penggunaan Inheritance dalam OOP adalah : Reusability.
Reusability
maksudnya yaitu:
1.
Ketika behavior(method) dideklarasikan dalam superclass, behavior
tersebut
otomatis
diwariskan ke seluruh subclass.
2.
Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat
digunakan
oleh seluruh subclass
3.
Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya
sendiri
dan parent-nya.
D.
Polimorfisme – banyakrupa (polymorphism).
Melalui
pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa
orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan
sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut
dikirimPolymorphism membuat objek-objek yang berasal dari subclass yang
berbeda,
diperlakukan
sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih
method
yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada
subclass
yang memiliki method bersangkutan.
Pada
contoh ini, kita diberikan parent class yaitu Person dan subclassnya adalah
Student,
sekarang
kita tambahkan subclass lainnya dari Person yaitu Employee.
Ciri
Dasar OOP
•
Semua Bahasa
Pemrograman yang mendukung OOP haruslah mempunyai kemampuan untuk dilakukan
abstraksi, pembungkusan, pewarisan sifat, dan polimorfisme.
•
Karena alasan
itu, item-item di atas kemudian dijadikan sebagai ciri dari bahasa yang
mendukung OOP.
•
Abstraksi (Abstraction)
•
Adalah Proses
pengabstrakan atau penyembunyian detail program yang sangat rumit sehingga kita
tidak perlu untuk mempermasalahkan pembuatannya.
•
Kita hanya
perlu objek tersebut dapat kita gunakan sesuai fungsinya.
•
Contoh, objek
mobil. Pembuat mobil tidak perlu mendefinisikan cara pembuatannya, disini
berarti dia telah mengabstraksikan proses yang didalamnya.
•
Yang penting
bagi kita adalah mobil tersebut dapat kita gunakan sebagaimana mestinya.
•
Hal ini
tidaklah berbeda dengan pengabstrakan suatu fungsi yang terdapat pada sebuah
kelas di dalam program.
•
Abstraksi (Abstraction)
•
Abstraksi data adalah mengabstrakkan
atau menyamarkan data-data yang ada.
•
Contoh : jam tangan
•
Orang tidak perlu tahu bagaimana
cara jam mengatur dan merubah detik kemenit, atau menit ke jam.
•
Orang tidak perlu tahu siapa yang
bertanggung jawab menggerakkan jarum jam.
•
Pembungkusan (Encapsulation)
•
Merupakan
sebuah proses penggabungan antara data-data dan fungsi-fungsi yang berkaitan ke
dalam sebuah objek.
•
Dengan
demikian, kita dapat membuat program yang terintegrasi, tanpa harus
mendeklarasikan variabel-variabel yang bersifat eksternal.
•
Istilah yang
digunakan, untuk menyebut data-data yang terdapat dalam suatu objek adalah data
members, sedangkan fungsi-fungsi yang terdapat di dalamnya dikenal
dengan istilah member functions.
•
Pembungkusan (Encapsulation)
•
Variabel dan
method yang dipunyai suatu obyek, bisa ditentukan hak aksesnya.
•
Definisi
enkapsulasi: Pembungkusan variabel dan method dalam sebuah obyek yang
terlindungi.
•
Definisi
enkapsulasi: menyembunyikan cara kerja dan sistem.
•
Contoh:
jam tangan
•
Penting sekali
untuk mengetahui waktu.
•
Cara jam
mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak
tidaklah penting kita ketahui.
•
Pewarisan (Inheritance)
•
Dalam OOP, kita
dapat menciptakan objek baru yang diturunkan dari objek lain.
•
Objek baru ini,
sering disebut dengan objek turunan (derived object) sedangkan objek
induknya disebut dengan ancestor (base class).
•
Sifat yang
terkandung pada objek turunan adalah sifat hasil pewarisan dari sifat-sifat
yang terdapat pada objek induk. Proses seperti ini dikenal dengan istilah
pewarisan (inheritance).
•
Dengan fitur
seperti ini, kita dapat membuat objek baru yang memiliki kemampuan lebih
dibanding objek induknya, yaitu dengan cara menambahkan sifat-sifat baru ke
dalam objek tersebut.
•
Polimorfisme (Polymorphism)
•
Adalah proses
kebanyakrupaan, artinya kita dapat mengimplementasikan sesuatu hal yang berbeda
melalui satu cara yang sama.
•
Untuk mengerti
hal yang ini, coba kita perhatikan suatu objek, misalnya penyanyi. Sebagai contoh,
terdapat 5 orang penyanyi (dalam program dianggap sebagai 5 buah objek),
kemudian kelimanya kita perintahkan untuk bernyanyi, maka hasil atau
implementasinya tentu akan berbeda sesuai dengan karakteristik suara dari
masing-masing penyanyi tersebut.
•
PEWARISAN (Inheritance)
•
Pengantar
•
Salah satu ciri
dari OOP yakni kemampuan suatu objek atau kelas untuk mewariskan sifat-sifat
yang terdapat di dalamnya ke kelas turunannya.
•
Hal yang paling
utama ditekankan dalam proses penurunan sebuah kelas adalah pemberian hak akses
terhadap kelas-kelas turunan.
•
Kelas Dasar & Kelas Turunan
•
Kelas dasar
yang dimaksud disini adalah sebuah kelas yang akan dijadikan sebagai induk dari
kelas lain.
•
Kelas dasar ini
masih lebih dikenal dengan istilah dalam bahasa asing, yaitu base class.
•
Kelas baru yang
merupakan hasil dari proses penurunan tersebut disebut dengan kelas turunan,
atau sering disebut dengan derived class.
•
Kelas Dasar & Kelas Turunan
•
Dalam
mempelajari materi ini, sebenarnya samap seperti mempelajari ilmu biologi yang
membahas tentang klasifikasi sebuah tumbuhan.
•
Dalam ilmu
biologi, suatu tumbuhan berasal dari suatu kelas (tipe) tertentu sehingga
tumbuhan tersebut akan mewarisi sifat-sifat yang terdapat pada kelas
pendahulunya.
•
Kelas Dasar & Kelas Turunan
•
Begitupun dalam
program, suatu kelas dapat dijadikan sebagai kelas dasar (induk) untuk kemudian
diturunkan menjadi kelas-kelas selanjutnya.
•
Misalnya,
terdapat kelas A yang diturunkan menjadi kelas B, selanjutnya kelas B
diturunkan lagi menjadi kelas C, begitu seterusnya.
•
Di sini, kelas B
dan C tentu akan memiliki sifat-sifat yang terdapat pada kelas A.
•
Begitu juga
kelas C, pasti akan mewarisi sifat-sifat yang terdapat pada kelas B.
•
Hak Akses Pada Proses Pewarisan