Anda di halaman 1dari 18

PEMROGRAMAN BERORIENTASI OBJEK

PEMROGRAMAN BERORIENTASI OBJEK


Perbedaan Object-Oriented dan Prosedural

• Satu perbedaan utama antara kode berorientasi obyek dengan kode


prosedural dapat dilihat dari bagaimana tanggung jawab (responsibility)
didistribusikan.
• Kode prosedural akan berupa urut-urutan perintah dan method calls.
Kode pemanggil (controlling code) cenderung bertanggung jawab untuk
menghandle pengecekan kondisi (if, then, else dst). Kontrol top-down ini
dalam pengembangan aplikasi dapat menghasilkan duplikasi kode dan
saling ketergantungan lintas (antar) proyek.
• Kode berorientasi obyek mencoba untuk meminimalisasi ketergantungan
ini dengan cara memindahakan responsibility untuk menghandle tugas-
tugas dari client code ke dalam obyek-obyek di dalam system.
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

• Objek adalah kumpulan variable dan method (fungsi) yang saling


berkaitan.
• Dalam objek, kita bisa mengumpulkan variabel-2 dengan tipe yang
boleh berbeda-2 dan fungsi-2 yang disebut method.
• penggabungan antara Variabel dan Method itulah yang disebut
Enkapsulasi.
• Message, antara objek satu dengan objek yang lain berkomunikasi
melalui Message. Ketika objek A ingin objek B melakukan sesuatu,
maka objek A mengirim Message ke objek B.
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

• Class adalah blue print atau rancangan dari Object. Jadi dengan satu Class, kita dapat membuat
berapapun Object.
• Inheritance adalah pewarisan sifat. Sebuah Subclass akan mewarisi sifat dari Superclassnya. Tetapi Subclass
tidak harus hanya memiliki sifat dan kemampuan yang sama persis dengan Superclassnya, tetapi biasanya
ditambahkan sifat dan kemampuan lain yang membedakannya dengan Subclass lain dengan Superclass yang
sama.
• Subclass juga dapat melakukan Override terhadap sifat dan kemampuan warisan Superclassnya.
• Interface membuat satu class dapat berinteraksi dengan class lain yang benar-benar berbeda. Masalahnya
adalah perbedaan class yang sangat mencolok. Interface mengatasinya dengan cara:
 Mencari persamaan antara class-2 yang berbeda tanpa memaksa class tersebut saling berhubungan.
 Membuat method yang ingin diterapkan pada class-class.
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

Istilah-istilah yang digunakan dalam pemrograman berorientasi objek


• Class adalah blueprint atau prototype dari object-objec tertentu yang memiliki kesamaan variable dan
method.
• Object atau insance of class merupakan software yang mengemas variable-variable dan method method
menjadi satu kesatuan.
• Attribute adalah suatu bentuk karakteristik atau status dari suatu object.
• Method atau behavior dari object adalah action yang bisa di kerjakan oleh suatu object
• Constructor merupakan method khusus yang berfungsi untuk inisialisi atau menciptakan suatu object dari
class
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

Pemrograman Berorientasi Objek sebenarnya bukanlah Bahasa pemrograman baru, tetapi jalan baru untuk
berpikir dan merancang aplikasi yang dapat membantu memecahkan suatu persoalan mengenai
pengembangan perangkat lunak. Pemrograman berorientasi objek disusun dan dipahami oleh ilmuwan
yang memkitang dunia sebagai populasi objek yang berinteraksi antara satu yang satu dengan objek yang
lain.
Prosedur yang digunakan dalam objek dipkitang sebagai kepentingan kedua karena tergantung pada objek
itu sendiri. Tentunya hal tersebut berbeda dengan pemrograman terstruktur. Pemrograman terstruktur
mempunyai sifat pemisahan data dengan kode yang mengolahnya. Pemrograman Berorientasi Objek
(PBO) adalah metode pemrograman yang meniru cara kita memperlakukan sesuatu (benda).
Dalam pemrograman berorientasi obyek, class merupakan sebuah design, template, atau blueprint. Dari
suatu class dapat dibuat banyak objek/instance
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

Ada tiga ciri-ciri atau karakteristik bahasa Pemrograman Berorientasi Objek, antara
lain:
• Abstraksi Untuk memproses sesuatu dari dunia nyata dengan menggunakan
komputer kita harus menentukan ciriciri / sifat-sifat yang penting yang perlu
direpresentasikan ke dalam sistem komputer. Ciri-ciri yang dipilih bergantung dari
apa yang akan kita lakukan di dalam sistem tersebut dan tergantung dari sudut
pandang yang melihatnya. Misalnya pada sebuah kasus untuk menentukan
attribute suatu class mobil:
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

Ada tiga ciri-ciri atau karakteristik bahasa Pemrograman Berorientasi Objek, antara lain:
• Enkapsulasi
Penggabungan data dan method ke dalam suatu class atau dengan kata lain mengkombinasikan sebuah struktur
dengan fungsi yang memanipulasinya untuk membentuk tipe data baru yaitu kelas (class).

Enkapsulasi merupakan suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan
interferensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan penggunaan sistem itu sendiri.
Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface
Contoh sebuah kasus yang ada dilapangan misalnya pada sebuah sepeda motor, dimana pada sistem
pemindahan gigi transmisi, maka pengendara tidak perlu tahu detail dari bagaimana proses pemindahan gigi itu
dilakukan oleh mesin, cukup tahu bagaimana cara menekan gigi transmisi itu. Pedal gigi transmisi yang diinjak
pengendara itu merupakan interface (antar muka) pengendara dengan sistem transmisi sepeda motor.
PEMROGRAMAN BERORIENTASI OBJEK
Pemrograman Berorientasi Objek

Ada tiga ciri-ciri atau karakteristik bahasa Pemrograman Berorientasi Objek, antara
lain:
• Pewarisan (inheritance)
warisan sifat dari class induk kepada class anaknya atau mendefinisikan suatu kelas dan kemudian
menggunakannya untuk membangun hirarki kelas turunan, yang mana masing-masing turunan mewarisi
semua akses kode maupun data kelas dasarnya.
Sebagai manusia kita sebenarnya terbiasa untuk melihat objek yang berada disekitar kita tersusun secara
hierarki berdasarkan classnya masing-masing. Dari sini kemudian timbul suatu konsep tentang pewarisan
yang merupakan suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkkan ciri
atau sifat dari class tersebut. Perhatikan contoh hirarki berikut ini:

Dengan memanfaatkan konsep pewarisan ini dalam


pemrograman, maka hanya perlu mendefinisikan
karakteristik yang lebih umum akan didapatkan dari
class darimana ia diturunkan.
PEMROGRAMAN BERORIENTASI OBJEK
Immutable obyek

Dalam pemrograman berorientasi objek, immutable obyek adalah obyek dengan kondisi yang tidak dapat
dimodifikasi setelah dibuat. Hal ini berbeda dengan mutable objek, dimana obyek tersebut dapat dimodifikasi
setelah dibuat. Obyek dapat immutable secara keseluruhan atau hanya beberapa atribut objek yang ditentukan
saja, misalnya menggunakan atribut anggota const data pada bahasa pemrograman C++.
Dalam beberapa kasus, obyek dianggap immutable walaupun ada beberapa hal perubahan internal
yang digunakan oleh atribut tetapi kondisi objek nampaknya tidak bisa diubah secara ekternal dari beberapa
sudut pandang. Sebagai contoh, sebuah obyek yang menggunakan memoization pada cache hasil komputasi
yang baik ini tetap dapat tetap dianggap sebagai objek. Awal dari sebuah kondisi tetap objek biasanya diatur
pada posisi berdiri, tetapi dapat juga ditetapkan sebelum
menggunakan obyek tersebut.
Dalam kebanyakan Bahasa berorientasi objek, objek dapat disebut dengan referensi. Beberapa
contoh seperti bahasa Java, C++, C#, VB.NET dan banyak Bahasa scrip seperti Ruby dan Python. Jika obyek
yang diketahui adalah immutable, maka dapat disalin cukup dengan membuat salinan referensi, bukan untuk
menyalin seluruh objek. Karena referensi (biasanya hanya ukuran sebuah pointer) biasanya jauh lebih kecil
daripada obyek itu sendiri, sehingga lebih mudah dalam penyimpanan di memori dan meningkatkan kecepatan
dalam eksekusi
PEMROGRAMAN BERORIENTASI OBJEK
Immutable obyek

Immutable objects dapat berguna dalam aplikasi multithreaded. Multiple threads dapat bertindak berdasarkan
data yang diwakili oleh immutable objek tanpa memperhatikan data yang diubah
oleh thread lainnya. immutable obyek mempunyai pertimbangan atau dianggap lebih aman daripada mutable
object atau obyek yang berubah.
Dalam Praktiknya selalu menggunakan referensi pada saat melakukan copy atau sering dikenal sebagai objek
interning. Jika interning digunakan, dua benda dianggap sama jika dan hanya jika mereka referensi, biasanya
digambarkan sebagai integers yang keuanya sama. Beberapa bahasa secara otomatis: misalnya, secara otomatis
Python interns string dan lain-lain.
Jika algoritma yang menerapkan interning dijamin, maka untuk melakukan setiap kasus yang mungkin
membandingkan dengan obyek untuk mengurangi pointer, dan yang penting dalam mendapatkan
kecepatan maksimal dalam aplikasi. (Bahkan jika algoritma tidak dijamin secara lengkap, masih ada
kemungkinan jalan yang cepat untuk meningkatan kasus ketika obyek yang sama dan menggunakan
referensi yang sama.) Interning umumnya hanya berguna untuk immutable benda.
PEMROGRAMAN BERORIENTASI OBJEK
Modularitas dan Abstraksi Data
Modularitas dan abstraksi data dapat didefinisikan
• Modul atau sebuah unit dari organisasi sistem perangkat lunak yang membundel sekumpulan entitas (data
dan metoda operasi) dan dengan secara teliti mengontrol apa "user eksternal“ bisa lihat atau gunakan.
• Penyembunyian informasi yang dilakukan modul untuk melindungi informasi dari "user external“ dalam
penggunaannya (misalnya software error, security) dan merupakan basis dari abstract data type (ragam data
abstraks).
• Abstract data type (ADT) atau Kumpulan obyek dan metoda operasi yang mempresentasikan sifat-sifat
abstraks bagi "user“ dengan menyembunyikan bagaimana semua itu direpresentasikan dalam representasi
data level yang lebih rendah.
• Interface dari modul atau Spesifikasi bagaimana modul tersebut dilihat atau digunakan oleh "user"
sementara bagian yang private tetap tersembunyi
PEMROGRAMAN BERORIENTASI OBJEK
Modularitas dan Penyebunyian Informasi

Saat program menjadi semakin besar terjadi situasi berbahaya: rumit, sulit melakukan debug, dan hampir tidak mungkin di
modifikasi kecuali dikembangkan dengan taat dan secara terstruktur. Penulisan program komputer dilakukan melalui medium
yang memungkinkan bervariasinya cara penulisan ekspresi-ekspresi yang potensial dapat menyebabkan masalah yang besar.
Dekomposisi ke dalam komponen-komponennya pun dapat bervariasi, bisa saling kaitmengkait secara kompleks atau teratur
dalam layer-layer.
Abstraksi prosedural: menyatakan fungsi "apa" (what) yang dilakukan suatu prosedur. Kita perlu mendefinisikan "apa" dari
suatu prosedur terpisah dari "bagaimana“ (how) cara yang dilakukan prosedur untuk mencapai fungsi tersebut. Setelah
terdefinisi dengan baik abstraksi prosedur ini kemudian kita boleh menuliskan rincian "bagaimana" tersebut, bahkan suatu saat
misalnya untuk peningkatan efisiensi maka metodologi/algoritmanya dapat disubstitusikan tanpa mengubah abstraksi
proseduralnya. Jadi pemisahan tersebut memberi manfaat:
• Memudahkan penggunaan hanya perlu tahu apa yang dilakukan oleh prosedur
• Memudahkan modifikasi rincian penulisan Prosedur dapat diubah tanpa mengganggu program secara keseluruhan (di
mana saja pada pemanggilan-pemanggian Prosedur).
Secara umum pendefinisian abstraksi dengan baik pada perancangan program dapat mengendalikan kompleksitas program
serta meningkatkan modifiabilitas. Penyembunyian informasi (enkapsulasi) baik variabel
ataupun metoda dalam modul-modul bermanfaat dalam:
• Menghindari interferensi entitas lokal dalam modul terhadap entitas bernama sama di luar modul
• Menghindari interferensi entitas diluar modul terhadap entitas lokal dalam modul terhadap entitas bernama sama
PEMROGRAMAN BERORIENTASI OBJEK
Interface

Interface adalah jenis khusus dari blok yang hanya berisi method signature (atau constant ). Interface
mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah
cara pandang dan umum dalam menetapkan sifat-sifat dari class. Mereka menyediakan class, tanpa
memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan
catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil
method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang
melewati pemanggil method interface.
Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method
yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan
tanpa membuatnya seolah-olah class menjadi saling berhubungan.
Alasan lain dalam menggunakan interface pemrograman object adalah untuk menyatakan sebuah interface
pemrograman object tanpa menyatakan classnya. Perbedaan utama antara sebuah
interface dan sebuah class abstract: method interface tidak punya tubuh, sebuah interface hanya dapat
mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya,
mereka didefinisikan secara independent.
PEMROGRAMAN BERORIENTASI OBJEK
Interface dan Class

Satu ciri umum dari sebuah interface dan class adalah pada tipe mereka berdua. Ini artinya bahwa
sebuah interface dapat digunakan dalam tempat-tempat dimana sebuah class dapat digunakan.

Ciri umum lain baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah
interface tidak punya sebuah kode implementasi sedangkan pada class memiliki salah satunya.
PEMROGRAMAN BERORIENTASI OBJEK
Hubungan dari Interface ke Class

Sebuah class dapat mengimplementasikan sebuah interface selama kode implementasi untuk semua method
yang didefinisikan dalam interface tersedia. Hal lain yang perlu dicatat tentang hubungan antara interface ke
classclass yaitu, class hanya dapat mengextend satu superclass, tetapi dapat mengimplementasikan banyak
interface.

contoh dari sebuah class yang mengimplementasikan interface adalah sebagai berikut:

Contoh lain dari class yang mengextend satu superclass dan mengimplementasikan sebuah interface adalah,

Catatan bahwa sebuah interface bukan bagian dari hirarki


pewarisan class. Class yang tidak berhubungan dapat
mengimplementasikan interface yang sama.
PEMROGRAMAN BERORIENTASI OBJEK
Pewarisan Antar Interface

Interface bukan bagian dari hirarki class. sedangkan interface dapat mempunyai hubungan pewarisan antara
mereka sendiri. misalnya, ketika kita punya dua interface StudentInterface dan interface PersonInterface. Jika
StudentInterface meng- extend PersonInterface, maka ia akan mewariskan semua deklarasi method dalam
PersonInterface.
PEMROGRAMAN BERORIENTASI OBJEK
Latihan

1. Buatlah rangkuman (jurnal review) tentang pemrograman berbasis objek


2. Berikan satu contoh pemrograman yang berorientasi objek.

Anda mungkin juga menyukai