OOP in Python -Part 1-

Pada kesempatan kali ini saya akan mencoba menjelaskan sedikit penerapan OOP (Object Oriented Programming) dalam bahasa python. Untuk mengingatkan kita tentang OOP, tidak ada salahnya kita review sedikit konsep & pengertiannya.

Secara harfiah, OOP dapat kita artikan Pemrograman Berorientasi Objek atau tekhnik membuat suatu program berdasarkan objek. Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (entitas) dari suatu permasalahan adalah objek. Objek-objek ini kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, sebuah mobil.

Mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.

Ada beberapa hal yang perlu kita fahami dalam Pemrograman Berorientasi Objek, diantaranya :

Object

Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu Attribut dan Method. Attribut adalah keadaan dari sebuah objek, seperti mobil memiliki attribut warna, model, merk, tahun pembuatan, dll. Sedang method adalah perilaku/perbuatan dari objek tersebut, seperti mobil dapat berjalan, membelok, membunyikan klakson, dll. Objek menyimpan attributnya dalam satu atau lebih variabel, dan mengimplementasikan perilaku/perbuatannya dengan method (metode). Dengan penjelasan di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-variabel dan metode-metode yang saling berhubungan.

Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan.

Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam terminologi OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode (method) dari instans ini disebut variabel instans dan metode instans. Setiap instans menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.

Message

Objek-objek yang bekerja sama membentuk suatu program harus saling berkomunikasi untuk menjalankan program tersebut. Dalam sebuah program, objek-objek berkomunikasi satu sama lain dengan mengirimkan pesan. Sebagai contoh, jika sebuah objek ingin memanggil method dari objek lain, maka objek ini akan mengirimkan sebuah pesan yang meminta objek tujuan untuk menjalankan methode yang dikehendaki. Pesan ini akan berisi informasi-informasi yang dibutuhkan objek tujuan untuk dapat menunaikan permintaan tadi.

Sebuah pesan dibentuk oleh informasi berikut ini:

1) Objek yang dituju;

2) Nama method yang ingin dipanggil;

3) Parameter yang dibutuhkan method tersebut.

Contohnya :

objek_kelas = NamaKelasYangLain()

objek_kelas.nama_method(parameter1, parameter2)

Bila sebuah objek ingin memanggil method miliknya sendiri, maka informasi pertama adalah dirinya sendiri. Untuk menunjuk diri sendiri dalam Python digunakan kata kunci self. Maka contoh sebelumnya akan menjadi:self.nama_method(parameter1, parameter2)

Ada dua keuntungan dalam penggunaan pesan, yaitu: semua kebutuhan interaksi antar objek dapat dilakukan; & objek-objek yang saling berinteraksi tidak harus berada dalam satu kelas (proses) atau bahkan berbeda file & komputer.

Class

Class adalah semacam cetakan atau template untuk membuat objek. Ibaratkan sebuah rancangan mobil (blueprint) yang digunakan untuk memproduksi ratusan mobil. Mobil yang dibangun tersebut adalah objek dari class rancangan mobil. Hal ini dapat dilakukan karena semua objek mobil yang dibangun memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam blueprint­nya. Tetapi objek-objek yang dibuat tetap akan memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program atau pintu sebuah objek mobil.

Misalnya, Jika kita membuat sebuah rancangan / blueprint dari sebuah mobil, maka ketika kita memproduksi mobil-mobil yang lain dengan rancangan tsb, maka kita dapat menentukan bentuk fisik yang lain yang khusus (tertentu), contohnya ada pintu yang terbuka ke samping, bergeser ke belakang, terbuka ke atas, dst (variabel dlm program). Dengan penjelasan ini, class dapat kita definisikan kembali menjadi sebuah blueprint atau prototipe, yang mendefinisikan variabel dan method yang sama untuk semua objek sejenis.

Contoh lain, misalkan kita ingin membuat class Rumah, maka kita harus membuat sebuah class yang mendefinisikan semua variabel yang dimiliki objek dari class tersebut. Selain itu, class tersebut juga harus mendeklarasikan method-method yang dimiliki objek dari class tersebut. Dengan adanya class ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu jenis yang didefinisikan oleh class Rumah. Setiap objek Rumah diciptakan, sistem akan mengalokasikan sejumlah memori untuk objek tersebut dan variabel-variabelnya. Dengan begitu setiap objek akan memiliki salinan masing-masing untuk setiap variabel instans.

# Contoh kita membuat sebuah class

Class Mobil:

def __init__(self):
self.warna = 'Hitam'
self.tipe = 'Sedan'
print 'Objek telah dibuat'

def maju(self):
print 'maju'

def mundur(self):
print 'mundur'

def ngebut(self, speed)
print 'Ngebut dengan kecepatan %s km/jam' % speed

# Sekarang kita buat objeknya

mobil1 = Mobil()
print mobil1.warna
print mobil1.maju()
print mobil1.ngebut(100)

# Sekarang kita buat objek yang lain

mobil2 = Mobil()
print mobil2.tipe
 print mobil2.mundur()
print mobil2.ngebut(150)

Begitulah seterusnya jika kita ingin membuat objek-objek yang lain dari class Mobil. Pada contoh diatas kita membuat sebuah class bernama Mobil yang memiliki property (variabel) warna & tipe, selain itu juga memiliki constructor dan beberapa method seperti maju, mundur, & ngebut. Pertanyaannya adalah apakah perbedaan antara constructor & method diatas ??  Jawabnya adalah “Constructor adalah method yang akan dipanggil -secara otomatis- ketika objek class tsb dibuat. Sedangkan method biasa harus dipanggil secara manual.”

Advertisements

One thought on “OOP in Python -Part 1-

  1. Pingback: Tutorial Dasar Python | Tutorial OpenERP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s