Pages

Sunday 2 January 2011

KONSEP OOP PADA PYTHON

Konsep OOP Pada Python
Python adalah bahasa pemograman komputer berorientasi objek, yang berarti
bahasa Python ini menyediakan fitur - fitur yang mendukung pemograman
berorientasi objek. Dan Anda mungkin pernah mendengar tentang konsep bahasa
pemograman yang mempunyai banyak kelebihan dibandingkan dengan pemograman
prosedural, yaitu reusability dan inheritance yang akan dibahas pada bab ini.
Tidak mudah menjelaskan pemograman berorientasi objek, tetapi kita telah meli
hat beberapa karakteristiknya :

1. Program - program dibuat dari pendefinisian objek - objek dan fungsi - fungsi,
dan kebanyakan perhitungan komputasi diekspresikan kedalam operasi pada objek.
2. Masing - masing pendefinisian objek merujuk ke beberapa objek atau konsep
yang sebenarnya pada dunia nyata, dan fungsi - fungsi pada objek dianalogikan
sebagai interaksi pada objek.
Pada suatu objek terdapat metode - metode yang dapat digunakan, kita telah
melihat beberapa metode, seperti keys dan values,
Class
Pada saat Anda membuat sebuah class, Anda dapat meminta Python untuk
menentukan objek apa yang dapat dilakukan pada suatu class. Hal yang membuat
objek dalam class melakukan sesuatu adalah metode. Metode seperti fungsi yang
berada di dalam sebuah objek.
>>> class Cetak:
... def cetak_sesuatu (self, string):
... print "Anda mencetak", string
Pada contoh diatas Anda telah membuat class Cetak dengan metode cetak_sesuatu
yang mempunyai fungsi untuk mencetak string yang ditentukan. Kemudian buat
suatu objek dengan class Cetak:
>>> cetak = Cetak()
>>> cetak.cetak_sesuatu("Hello World!")
Anda mencetak Hello World!
Sekarang variabel cetak merupakan suatu objek dari class Cetak dan objek cetak
dapat melakukan metode yang terdapat pada class Cetak.
Kita dapat memberikan variabel - variabel di dalam metode. Misalnya :
>>> class Mencetak :
... def tentukan_string(self, string):
... self.kata = string
... def cetak(self):
... print "Kata yang anda ingin cetak", self.kata
Sama seperti halnya menentukan suatu objek dari class Cetak, maka kita juga
dapat melakukannya dengan class Mencetak. Misalnya nama objek itu adalah
ngeprint. Berarti objek ngeprint tersebut memiliki dua metode yang terdapat pada
class Mencetak, yaitu tentukan_string dan cetak. Pada objek ngeprint juga terdapat
anggota variabel yang dideklarasikan dengan kata kunci self, yang berarti anggota
dari suatu class.
>>> ngeprint = Mencetak()
>>> ngeprint.kata = "Hello"
>>> ngeprint.cetak()
Kata yang anda ingin cetak Hello
Kita dapat menentukan anggota variabel lokal dari class tersebut secara langsung
atau dengan menggunakan metode tentukan_string. Misalnya :
>>> ngeprint.tentukan_string("Hello Class!")
>>> ngeprint.cetak()
Kata yang anda ingin cetak Hello Class!
Inheritance (Turunan)
Seperti yang telah disebutkan diatas, salah satu kemampuan pemograman
berorientasi objek adalah inheritance, yang berarti turunan dari suatu class.
Pendefinisian sintaksnya adalah sebagai berikut :
class NamaClassTurunan (NamaClassDasar):

...
...
...

Nama ClassDasar harus didefinisikan dalam ruang lingkup class turunan. Selain
sebuah nama ClassDasar, sebuah ekspresi juga diperbolehkan. Contohnya pada saat
menurunkan suatu class yang terdapat dalam suatu modul:
class NamaClassTurunan (namamodule.NamaClassDasar):
Menjalankan pendefinisian class turunan sama halnya dengan mendefinisikan class
dasar. Pada saat suatu objek class dibangun, classDasar disertakan didalamnya. Hal
ini digunakan sebagai referensi atribut; jika permintaan terhadap suatu atribut
tidak ditemukan di dalam class, kemudian mencari atribut tersebut ke dalam
classDasar. Aturan ini berkelanjutan jika classDasar yang ditentukan merupakan
classTurunan lain.
Mari kita buat classTurunan dari class Mencetak :
>>> class printer (Mencetak):
... def tambah_kata(self, kata):
... self.kata = self.kata + kata
Pada contoh diatas kita membuat suatu classTurunan dengan nama printer yang
diturunkan dari class Mencetak, dan ditambahkan satu metode yang berfungsi
menambahkan suatu kata. Contoh penggunaannya :
>>> buku = printer()
>>> buku.kata = "Buku Python"
>>> buku.tambah_kata("Bisa dibeli di Amazon.com")
>>> buku.cetak()
Kata yang anda ingin cetak Buku Python Bisa dibeli di Amazon.com
Anda telah membuat suatu class turunan yang diturunkan dari class Mencetak!.
Seperti yang kita lihat beberapa metode diatas tidak didefinisikan dalam class
printer, tetapi mengapa printer dapat menjalankan metode yang berada pada class
Mencetak ? hal ini dikarenakan classTurunan akan mencari atribut yang dipanggil
pada classDasar jika atribut tersebut tidak ditemukan dalam class itu sendiri. Anda
juga dapat mendefinisikan classTurunan dari beberapa classDasar, seperti halnya
satu classDasar, jika atribut yang diminta tidak ada pada class itu sendiri maka
akan mencari ke classDasarsatu, kemudian jika tidak ada juga maka akan mencari ke
classDasardua begitu selanjutnya.
Constructor
Dalam Python juga terdapat constructor seperti pada C++, tetapi pada python tidak
terdapat Destructor . Constructor ini berfungsi untuk menginisialisasikan sesuatu
metode atau variabel pada saat class tersebut dipanggil atau didefinisikan.
Sintaksnya adalah sebagai berikut :
class NamaClass:
def __init__ (self, :


Contohnya mari kita buat suatu classTurunan dari class printer :
>>> class Kalimat(printer):
... def __init__(self, kata):
... self.kata = kata
... self. cetak()
... self.awal = self.kata + 'Ini variabel awal'
dari sini kita langsung dapat menentukan kata yang ingin dicetak pada
pendefinisian class.
>>> ObjekCTK = Kalimat("Dunia ini")
Kata yang anda ingin cetak Dunia ini
seperti yang Anda lihat ketika pendefinisian suatu class, maka akan menset
variabel kata dan menjalankan metode fungsi cetak. Bagaimana jika kita tidak
memberikan argumen parameter pada saat pendefinisian class? Akan menimbulkan
pesan kesalahan :
>>> ObjekCTKB = Kalimat()
Traceback (most recent call last):
File "", line 1, in ?
TypeError: __init__() takes exactly 2 arguments (1 given)
Tetapi hal ini dapat diatasi dengan memberikan nilai awal pada argumen
parameter dengan nilai string kosong ''.Misalnya :
>>> class KalimatA(printer):
... def __init__(self, kata=''):
... self.kata = kata
... self. cetak()
... self.awal = self.kata + 'Ini variabel awal'
Dengan ini kita dapat mendefinisikan suatu class secara optional , dengan
parameter maupun tanpa parameter.
>>> ObjekCTKB = KalimatA()
Kata yang anda ingin cetak

No comments:

Post a Comment