OOP in Python -Part 2-

Pemrograman berorientasi objek atau yang lebih umum disebut OOP merupakan paradigma pemrograman yang menggunakan pendekatan “object” untuk membangun sebuah aplikasi. Dalam OOP, data dan fungsi dibungkus dalam class atau object.

Dalam konsep Pemrograman Berorientasi Objek dikenal beberapa istilah umum, yaitu:

Attribute atau yang biasa juga disebut state/properties/field merupakan bagian yang dimiliki oleh sebuah class yang tidak melakukan operasi tetapi kepadanya dilakukan operasi sehingga dapat merubah nilai dari attribute tersebut.

Method atau yang biasa juga disebut behaviour merupakan bagian yang dimiliki oleh sebuah class yang dapat melakukan operasi, bertindak atau mengerjakan sesuatu.

Class merupakan model yang berisi kumpulan attribute dan method dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh class manusia memiliki attribute berat, tinggi, usia kemudian memiliki method makan, minum, tidur. Method dalam sebuah class dapat merubah attribute yang dimiliki oleh class tersebut. Sebuah class merupakan dasar dari modularitas dan struktur dalam pemrograman berorientasi object.

Object merupakan perwujudan dari class, setiap object akan mempunyai attribute dan method yang dimiliki oleh class-nya, contohnya: amir, ahmad, yani merupakan object dari class manusia. Setiap object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.

Model data berorientasi objek disebut dapat memberi fleksibilitas yang lebih, kemudahan mengubah program dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya selain itu pendekatan OOP lebih mudah dikembangkan dan dirawat.

Dari intisari diatas, sebelumnya kita telah membahas Attribute, Object, Method, & Class. Insya Alloh pada kesempatan kali ini, kita akan membahas Inheritance, Polymorphism, Encapsulation, & Abstraction.

Inheritance

Merupakan konsep mewariskan attribute dan method yang dimiliki oleh sebuah class kepada class turunannya. Dengan konsep ini class yang dibuat cukup mendefinisikan attribute dan method yang spesifik didalamnya, sedangkan attribute dan method yang lebih umum akan didapatkan dari class yang menjadi induknya


class OrangTua(object):
    def __init__(self):
        print "Object orang tua telah dibuat"

    def berkata(self, nama_anak):
        print "Orang tua berkata : Wahai anakku %s ..." % nama_anak

class Anak(OrangTua):
    def __init__(self):
        super(Anak, self).__init__()
        print "Object anak telah dibuat"

    def berkata(self, sifat_ayah):
        OrangTua.berkata(self, 'Ali Rama')
        print "Iya ayahanda %s ..." % sifat_ayah

anak = Anak()
anak.berkata('tercinta')

outputnya :

Object orang tua telah dibuat
Object anak telah dibuat
Orang tua berkata : Wahai anakku Ali Rama ...
Iya ayahanda tercinta ...

Jika dalam python untuk proses inheritance menggunakan perintah : class NamaClass(ClassParent), dalam OpenERP kita kenal dengan keyword :  _inherit dengan keduanya memiliki fungsi & sifat2 yang sama pada class yang diinherit.

Polymorphism

Merupakan konsep yang memungkinkan digunakannya suatu interface yang sama untuk memerintah suatu object agar melakukan suatu tindakan yang mungkin secara prinsip sama tetapi secara proses berbeda.

class Srigala:
    def gonggong(self):
        print "hooooowll"

class Anjing:
    def gonggong(self):
        print "woork"

    def suara(hewan):
        hewan.gonggong()

dog = Anjing()
wolf = Srigala()
suara(dog)
suara(wolf)

output :

woork
hooooowll

Berikut ini gabungan antara Inheritance dan Polymorphism :


class Hewan(object):
    def __init__(self, nama):
        self.nama = nama

    def gonggong(self):
        print 'Suara gonggongan hewan'

class Anjing(Hewan):
    def gonggong(self):
        super(Anjing, self).gonggong()
        return "woork"

class Srigala(Hewan):
    def gonggong(self):
        Hewan.gonggong(self)
        return "hooooowll"

class Singa(Hewan):
    def gonggong(self):
       return "Roaaarsss"

dog = Anjing('Anjing')
wolf = Srigala('Serigala')
lion = Singa('Singa')

print 'Suara ' + dog.nama + ' yaitu ' + dog.gonggong()
print 'Suara ' + wolf.nama + ' yaitu ' + wolf.gonggong()
print 'Suara ' + lion.nama + ' yaitu ' + lion.gonggong()

Outputnya :

Suara gonggongan hewan
Suara Anjing yaitu woork
Suara gonggongan hewan
Suara Serigala yaitu hooooowll
Suara Singa yaitu Roaaarsss

Abstraction

Suatu cara untuk melihat suatu object dalam bentuk yang lebih sederhana. Sebagai contoh kita tidak melihat sebuah mobil sebagai ribuan komponen elektronik, sistem mekanik dengan empat buah ban, jok, stir kemudi dan sebagainya. Dengan Abstraction, suatu sistem yang kompleks dapat dipandang sebagai kumpulan subsistem-subsistem yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri atas berbagai subsistem, seperti subsistem kemudi, subsistem pengereman dan sebagainya.

Encapsulation

Merupakan suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan penggunaan sistem tersebut. Contoh dalam kehidupan sehari- hari adalah Radio tape, jika kita ingin memutar kaset maka langkah yang kita perlukan hanyalah menekan tombol play. Kenyataannya ketika tombol play itu ditekan maka akan mentrigger proses2 yang kompleks, rumit & saling terintegrasi yang akhirnya kaset itu dapet diputar dan terdengarlah sebuah lagu (yang kita tahu hanyalah menekan tombol play, that’s all). Atau ketika kita ingin menjalankan sebuah mobil, yang kita tahu hanyalah menekan pedal gas, padahal setelah pedal gas ditekan terjadilah proses yang kompleks & rumit sehingga roda itu dapat berputar yang akhirnya mobil dapat berjalan.

Advertisements

2 thoughts on “OOP in Python -Part 2-

  1. Pingback: [Odoo 10] Technical Documentation -Part 5- | Tutorial OpenERP

  2. Pingback: [Odoo 10] Technical Documentation -Part 5- | 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