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 bila di bahasa pemrograman lain penyebutannya adalah 'this' (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 :

# membuat instan kelas Membaca dengan memasukan ke variabel kegiatan
kegiatan=Membaca(argumen)

#mengakses metode di kelas Membaca
kegiatan.metode(argumen)

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


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):
        # Mengakses kelas dasar-INHERITANCE
        Membaca.Info(self)

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

class MediaMajalah(Membaca):
    def infoMajalah(self):
        # Mengakses kelas dasar-INHERITANCE
        Membaca.Info(self)

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

class MediaInternet(Membaca):
    def infoInternet(self):
        # Mengakses kelas dasar-INHERITANCE
        Membaca.Info(self)

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

class MediaPamflet(Membaca):
    def infoPamflet(self):
        # Mengakses kelas dasar-INHERITANCE
        Membaca.Info(self)

#BAGIAN UNTUK MEMULAI PROGRAM

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

t=int(input("Masukan Pilihan : "))
if t==1:
    i=MediaKoran("Koran")
    i.infoKoran()
    #PENERAPAN POLIMORFISME
    i.keterangan()
elif t==2:
    i=MediaMajalah("Majalah")
    i.infoMajalah()
    #PENERAPAN POLIMORFISME
    i.keterangan()
elif t==3:
    i=MediaInternet("Internet")
    i.infoInternet()
    #PENERAPAN POLIMORFISME
    i.keterangan()
elif t==4:
    i=MediaPamflet("Pamflet")
    i.infoPamflet()
    #PENERAPAN POLIMORFISME
    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: