Saturday, May 2, 2009

Pemrograman OOP Dengan Python


Python dengan segala kesederhanaannya memiliki kemampuan untuk diterapkan dalam pemrograman OOP, meskipun bukanlah OOP murni seperti halnya OOP dalam Java atau C++ tapi setidaknya kemampuan ini merupakan salah satu kelebihan Python yang sangat handal.

Sama seperti pemrograman yang lain, Pyhon menggunakan kata kunci 'class' dalam pembuatan kelas. Penamaan kelas dalam Python harus diawali dengan huruf besar. Kelas yang memiliki argumen biasanya disertai dengan metod __init__ yang berfungsi sebagai konstruktor contoh :


class Membaca:
def __init__(self,argumen):
....
statement
....

def metode(self):
....
statement
....


Contoh diatas menggunakan argumen self, yang merupakan salah satu metode Python yang bersifat dapat dibagi (info lengkap mengenai metode self dapat dibaca di dokumentasi Python).

Yang perlu diperhatikan, di pemrograman Python semua tingkat akses data dalam kelas adalah 'public' karena python tidak mengenal tingkat akses 'private', 'protected' dan tidak ada data yang disembunyikan hingga semua data dapat diakses oleh kelas turunannya.

Instantiasi Kelas dan Pengkapsulan

Sama seperti pemrograman lainnya, untuk instan kelas dapat dimasukan dalam sebuah variabel juga dapat dipanggil langsung tanpa dimasukan kedalam sebuah variabel, contoh :

kegiatan=Membaca(argumen)
# membuat instan kelas Membaca dengan memasukan ke variabel kegiatan
kegiatan.metode(argumen)
#mengakses metode di kelas Membaca

Membaca(argumen).metode(argumen)
# Memanggil kelas Membaca tanpa dimasukan kedalam variabel dan menggunakan salah satu metode dalam kelasnya


Pewarisan Kelas

Sebuah kelas turunan akan memiliki semua sifat kelas induknya dan dapat menggunakan semua data yang ada pada kelas induk karena semua data dan variabel yang ada pada kelas bersifat publik. Bentuk umum pewarisan kelas adalah sebagai berikut :

class KelasTurunan(KelasDasar):
def metode(self, argumen):
....
#menggunakan metode dalam kelas dasar
KelasDasar.metode(argumen)
....


Polimorfisme

Pengertian polimorfisme secara singkat adalah perubahan behaviour yang diturunkan oleh parent terhadap anaknya dan dengan banyak bentuk. Disini tidak akan dijelaskan pengertian polimorfisme karena diasumsikan Anda telah menguasai dasar pemrograman salah satu pemrograman berbasis OOP.

Dalam Python, referensi untuk mengetahui format standar untuk penerapan polimorfis dalam pemrograman OOP dengan Python sangat sulit dicari, penerapan polimorfis dengan Python hampir sama dengan penerapan di Java, dibawah ini contoh penerapan polimorfisme Python dengan memanfaatkan list pada python:

list=[MediaKoran("Koran"),MediaMajalah("Majalah"),MediaInternet("Internet")]
for med in list:
med.keterangan()


Atau bisa juga seperti contoh berikut :

med1=MediaKoran("Koran")
med2=MediaMajalah("Majalah")
med3=MediaInternet("Internet")
med1.keterangan()
med2.keterangan()
med3.keterangan()


Contoh lengkap

class Membaca:
def __init__(self,baca):
self.media=baca

def Info(self):
print "Anda memilih media : ", self.media

def keterangan(self):
print "Media %s populeritasnya belum diketahui : " % self.media

#BERIKUT KELAS-KELAS TURUNAN DARI KELAS MEMBACA

class MediaKoran(Membaca):
def infoKoran(self):
Membaca.Info(self)

def keterangan(self):
print "Koran yang populer dimasyarakat antara lain : poskota, kompas, republika"

class MediaMajalah(Membaca):
def infoMajalah(self):
Membaca.Info(self)

def keterangan(self):
print "Majalah yang populer dimasyarakat antara lain : Gatra, infokomputer, Bobo"

class MediaInternet(Membaca):
def infoInternet(self):
Membaca.Info(self)

def keterangan(self):
print "Internet yang populer dimasyarakat antara lain : detikcom, eramuslim, kompas.com"

class MediaPamflet(Membaca):
def infoPamflet(self):
Membaca.Info(self)

#BAGIAN UNTUK MEMULAI PROGRAM

print """Media Bacaan :
1. Koran
2. Majalah
3. Internet
4. Pamflet
5. Tampilkan semua media"""

t=input("Masukan Pilihan : ")
if t==1:
i=MediaKoran("Koran")
i.infoKoran()
i.keterangan()
elif t==2:
i=MediaMajalah("Majalah")
i.infoMajalah()
i.keterangan()
elif t==3:
i=MediaInternet("Internet")
i.infoInternet()
i.keterangan()
elif t==4:
i=MediaPamflet("Pamflet")
i.infoPamflet()
i.keterangan()
elif t==5:
#PENERAPAN POLIMORFISME
li=[MediaKoran("Koran"), MediaMajalah("Majalah"), MediaInternet("Internet"), MediaPamflet("Pamflet")]
for a in li:
a.keterangan()
else:
print "Tidak ada Pilihan"


No comments: