0% menganggap dokumen ini bermanfaat (0 suara)
4 tayangan14 halaman

Pengenalan Kelas dan Objek dalam OOP

Dokumen ini menjelaskan konsep pemrograman berorientasi objek (OOP) dengan fokus pada pembuatan kelas dan objek, serta penggunaan atribut dan metode dalam Python. Contoh yang diberikan adalah kelas PersegiPanjang yang memiliki atribut panjang dan lebar, serta metode untuk menghitung luas, keliling, dan menggambar persegi panjang. Selain itu, dokumen juga membahas tentang modul dan paket dalam Python, serta cara mengorganisir kode untuk meningkatkan keterbacaan dan penggunaan kembali.

Diunggah oleh

zonepiece667
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
4 tayangan14 halaman

Pengenalan Kelas dan Objek dalam OOP

Dokumen ini menjelaskan konsep pemrograman berorientasi objek (OOP) dengan fokus pada pembuatan kelas dan objek, serta penggunaan atribut dan metode dalam Python. Contoh yang diberikan adalah kelas PersegiPanjang yang memiliki atribut panjang dan lebar, serta metode untuk menghitung luas, keliling, dan menggambar persegi panjang. Selain itu, dokumen juga membahas tentang modul dan paket dalam Python, serta cara mengorganisir kode untuk meningkatkan keterbacaan dan penggunaan kembali.

Diunggah oleh

zonepiece667
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

83

10. Pengenalan Class

Membuat Class dan Object

Pemrograman berorientasi objek atau dalam bahasa inggris dikenal dengan Object Oriented
Programming (OOP), merupakan sebuah paradigma pemrograman dimana kita memodelkan
perangkat lunak kita dari berbagai kumpulan objek yang saling berinteraksi. Objek tersebut
memiliki karakteristik dan aksi. Di dalam OOP, karakteristik tersebut berupa variabel yang
dinamakan atribut. Kemudian aksi yang dimiliki objek tersebut berupa method yang menghasilkan
output atau cuma melakukan aksi saja tanpa output. Ada istilah lain juga yang menyebut aksi
sebuah objek sebagai perilaku atau behaviour. Objek itu sendiri mempunyai template yang
diistilahkan dengan kelas atau class. Sebuah kelas merupakan template bagi objek – objek yang
akan dibuat. Proses pembuatan objek baru dinamakan dengan instansiasi.

Ada beberapa hal yang harus diingat dalam membuat sebuah kelas. Pertama keyword class,
keyword ini digunakan untuk mendefinisikan sebuah kelas. Disusul dengan nama kelas yang
diinginkan dan tanda titik dua. Blok kode kelas tersebut ditulis setelah tanda titik dua tersebut, dan
seperti biasa diperlukan indentasi agar blok kode yang kita tulis masuk kedalam blok kode kelas.
Kedua adalah konstruktor, di Python konstruktor ditulis dengan sebuah function bernama
__init__() . Method dan function sebenarnya sama, hanya saja beda istilah pada paradigma OOP.
Method __init__() ini merupakan method yang akan selalu dieksekusi saat instansiasi objek.
Biasanya __init__() digunakan untuk mengisi variabel dengan nilai awal pada atribut – atribut yang
dimiliki objek. Ketiga adalah keyword self, keyword tersebut digunakan pada method yang akan
dinyatakan sebagai method dari kelas yang kita rancang. Keyword ini disertakan di parameter
pertama. Jika method tersebut tidak disertakan self pada method yang dimiliki kelas tersebut, akan
muncul error : “TypeError: nama_function() takes exactly n arguments (1 given)
” yang artinya method tersebut tidak bisa dipanggil oleh objek yang telah terinstansiasi.

Sebagai contoh disini kita akan membuat sebuah kelas bernama PersegiPanjang yang memiliki dua
atribut yaitu panjang dan lebar. Kelas ini memiliki lima method yang terdiri dari :

 __init__(), konstruktor kelas persegi panjang


 hitung_luas(), method untuk menghitung luas persegi panjang
 hitung_keliling(), method untuk menghitung keliling persegi panjang
 gambar_persegi_panjang(), menggambar persegi panjang yang direpresentasikan dengan
kumpulan bintang.
 gambar_persegi_panjang_tanpa_isi(), menggambar persegi panjang tetapi hanya batas
luarnya saja, isinya tak digambar.

listing : class_1.py
84

class PersegiPanjang:

def __init__(self, panjang, lebar):


[Link] = panjang
[Link] = lebar

def hitung_luas(self):
return [Link] * [Link]

def hitung_keliling(self):
return (2*[Link]) + (2*[Link])

def gambar_persegi_panjang(self):
for i in range(0, [Link]):
for j in range(0, [Link]):
print '*',
print ""

def gambar_persegi_panjang_tanpa_isi(self):
for i in range(0, [Link]):
if i > 0 and i < [Link]-1:
for j in range(0, [Link]):
if j > 0 and j < [Link]-1:
print ' ',
else:
print '*',
else:
for j in range(0, [Link]):
print '*',

print ""

PersegiPanjangA = PersegiPanjang(20, 10)


PersegiPanjangB = PersegiPanjang(10, 5)

print "Panjang persegi panjang A :", [Link]


print "Lebar persegi panjang A :", [Link]
print "Luas persegi panjang A : ", PersegiPanjangA.hitung_luas()
print "Keliling persegi panjang A : ", PersegiPanjangA.hitung_keliling()
print "Menggambar Persegi Panjang A : "
PersegiPanjangA.gambar_persegi_panjang()

print "\nMenggambar Persegi Panjang A hanya tepinya saja : "


PersegiPanjangA.gambar_persegi_panjang_tanpa_isi()

print "\n"

print "Panjang persegi panjang B :", [Link]


print "Lebar persegi panjang B :", [Link]
print "Luas persegi panjang B : ", PersegiPanjangB.hitung_luas()
85

print "Keliling persegi panjang B : ", PersegiPanjangB.hitung_keliling()


PersegiPanjangB.gambar_persegi_panjang()
print "\nMenggambar Persegi Panjang B hanya tepinya saja : "
PersegiPanjangB.gambar_persegi_panjang_tanpa_isi()

Proses instansiasi dilakukan dengan menentukan nama objek yang diinginkan kemudian panggil
nama kelas yang akan diinginkan dan masukan parameter awal yang dibutuhkan. Kemudian saat
objek berhasil dibuat, kita bisa mengakses atribut dan method dari objek tersebut. Seperti yang kita
lakukan pada manipulasi file, kita bisa mengakses method close(), write(), dan read() serta
mengakses atribut close, name, dan mode. Dengan parameter berbeda namun karakterisitik sama,
persegi panjang yang dihasilkan jadi beragam.

Tujuan dari OOP ini sendiri, menghemat penulisan kode program yang kita buat. Tanpa OOP kita
harus membuat atribut untuk setiap objek. Dan penulisan kode program pun menjadi menumpuk,
Karena untuk method yang sama harus di tulis ulang.

<< gambar 10.1 hasil eksekusi class_1.py bagian ke - 1 >>


86

<< gambar 10.2 hasil eksekusi class_1.py bagian ke - 2 >>

Mengenal Built-in Function pada Class dan Object

Berikutnya kita akan mengenal beberapa built-in class attribute yang akan bisa digunakan saat kita
membuat kelas apapun. Built-in class attribute akan selalu menyertai kelas yang kita rancang.
Berikut beberapa atribut yang bisa Anda gunakan untuk mengakses informasi dari sebuah kelas :

 __doc__, digunakan untuk mengakses dokumentasi yang terdapat pada kelas


 __name__, digunakan untuk mengakses nama kelas
 __dict__, digunakan untuk mendapatkan namespace dari kelas tersebut. Kalau pada objek
yang sudah diinstansiasi method ini akan mengeluarkan informasi tentang atribut yang
sudah terisi nilai
 __module__, digunakan untuk mendapatkan informasi dimana lokasi modul yang
mendefinisikan kelas tersebut
 __bases__, digunakan untuk melihat darimana kelas tersebut diwariskan. Pewarisan pada
OOP adalah menggunakan karakteristik suatu kelas pada kelas yang ingin menggunakan
karakteristik kelas yang mewariskannya.

Sebagai contoh ada beberapa built-in class attribute yang bisa diakses kelas dan objek hasil
instansiasi dan ada yang hanya bisa diakeses kelas.
87

listing : class_2.py

class PersegiPanjang:
'''
Sebuah kelas yang memodelkan persegi panjang.
Mempunyai dua atribut yaitu panjang dan lebar.
Bisa menghitung luas dan keliling.
Bisa juga menggambar persegi panjang sesuai atribut
'''
def __init__(self, panjang, lebar):
[Link] = panjang
[Link] = lebar

def hitung_luas(self):
return [Link] * [Link]

def hitung_keliling(self):
return (2*[Link]) + (2*[Link])

def gambar_persegi_panjang(self):
for i in range(0, [Link]):
for j in range(0, [Link]):
print '*',
print ""

def gambar_persegi_panjang_tanpa_isi(self):
for i in range(0, [Link]):
if i > 0 and i < [Link]-1:
for j in range(0, [Link]):
if j > 0 and j < [Link]-1:
print '-',
else:
print '*',
else:
for j in range(0, [Link]):
print '*',

print ""

PersegiPanjangA = PersegiPanjang(20, 10)

print PersegiPanjang.__doc__
print PersegiPanjang.__name__
print PersegiPanjang.__dict__
print PersegiPanjang.__module__
print PersegiPanjang.__bases__
88

print PersegiPanjangA.__doc__
print PersegiPanjangA.__dict__
print PersegiPanjangA.__module__

Pada contoh diatas, atribut __name__ dan __bases__ hanya bisa diakses oleh kelas. Sedangkan
objek hasil instansiasi tidak bisa mengaksesnya.

<< gambar 10.3 hasil class_2.py >>

Pembahasan mengenai OOP ini tidak bisa dibahas secara keseluruhan dalam satu bab. Ada banyak
hal yang harus diulas seperi inheritance, polymorphism, abstract, overriding, overload, dan lain –
lain.

11. Pengenalan Module


89

Module dan Packages

Module adalah istilah file yang berisi kode Python. Jadi dari awal sebenarnya kita sudah membuat
module Python. Hanya saja pada konsep module ini, kode Python yang akan digunakan berulang
akan dipisahkan dari file utama ke dalam file lain yang khusus menampung kode Python tersebut.
Di dalam module kita bisa menyimpan class, function, variabel, dan struktur data yang bisa
digunakan oleh program. Misal kita ingin membuat sebuah kode yang hanya berisi jenis – jenis
segitiga seperti segitiga sama kaki, segitiga sembarang, segitiga sama sisi, dan segitiga siku – siku.
Kenapa tidak dicampur saja dengan jenis bidang yang lain ? Hal ini dilakukan agar kita mudah
dalam mengelola kode Python yang kita tulis. Contoh lainnya misal kita menulis kode yang
berinteraksi dengan database dan kode untuk melakukan proses penulisan laporan secara terpisah.

Dalam hal ini module mempunyai kode Python yang reusable agar kode yang ditulis pada program
kita terduplikasi. Sedangkan file Python yang akan dijalankan dan memanggil function, class, atau
variabel dari kumpulan module yang dibuat berisi runnable code. Kode yang dieksekusi oleh
interpreter Python untuk menampilkan wujud dari program yang dibuat.

Kemudian module – module yang sudah ditulis bisa dikelompokan kedalam sebuah package.
Package ini sendiri berupa folder yang memiliki file __init__.py, agar folder tersebut dikenali
sebagai module. Di dalam package ini module – module memiliki tujuan dan fungsional yang
seragam. Misal pada contoh yang akan kita coba, terdapat sebuah package bidang, yang berisi
module bidang segitiga dan persegi. Di dalamnya terdapat file __init__.py yang bertugas untuk me-
load semua module yang ada di dalam package, [Link] yang berisi class segitiga, dan
[Link] yang berisi class persegi. Di dalam file [Link] dan [Link] masing – masing bisa
diisi berbagai jenis bidang yang sesuai nama module tersebut. Hanya saja untuk contoh kali ini
dibatasi kepada satu jenis bidang saja

Membuat Module – Module di dalam Packages

Setelah memahami konsep module, mari kita coba program yang agak banyak ini. Sebelumnya di
direktori tempat kita akan menulis program, terlebih dahulu buatlah sebuah folder baru bernama
bidang. Folder tersebut merupakan package yang akan menyimpan [Link], [Link], dan
__init__.py.

listing : [Link]

class Persegi:
def __init__(self, s):
[Link] = s

def SetSisi(self, s):


[Link] = s

def GetSisi(self):
return [Link]
90

def HitungKeliling(self):
return 4 * [Link]

def HitungLuas(self):
return [Link] * [Link]

Kode [Link] diatas hanya bersegi class Persegi yang mempunyai atribut sisi dan method –
method-nya. Di dalam module ini kita bisa saja menulis kelas PersegiPanjang. Hal tersebut
memudahkan kita agar bidang yang jenisnya persegi tidak tercampur dengan bidang yang jenisnya
segitiga. Pastikan Anda menyimpan file [Link] di dalam folder bidang.

listing : [Link]

import math

class Segitiga:
def __init__(self, a, t):
[Link] = a
[Link] = t

def SetAlas(self, a):


[Link] = a

def GetAlas(self):
return [Link]

def SetTinggi(self, t):


[Link] = t

def GetTinggi(self):
return [Link]

def GetSisiMiring(self):
return [Link]([Link]**2 + [Link]**2)

def HitungKeliling(self, s):


return [Link] + [Link] + s

def HitungLuas(self):
return ([Link] * [Link]) / 2

Hampir sama dengan fungsi dari module [Link], hanya saja module [Link] akan diisi
berbagai jenis segitiga. Selain itu pada kode diatas kita memanggil module math karena saat nanti
module [Link] ini diload, kode yang menggunakan method – method pada math harus di load
juga dari module math. Pastikan module ini tersimpan di folder bidang.
91

listing : __init__.py

from segitiga import Segitiga


from persegi import Persegi

if __name__ == '__main__':
pass

Kemudian file yang mesti ada di dalam sebuah package adalah __init__.py. File tersebut berfungsi
untuk me-load isi module ke dalam memori agar isi module bisa digunakan di file yang berisi
runnable code. Pada kode diatas, terdapat sintaks : from segitiga import Segitiga. Keyword from
adalah keyword yang digunakan untuk menentukan package atau module mana yang akan kita
rujuk, sedangkan import digunakan untuk mengambil class, function atau variabel yang
didefinisikan di dalam module. Disana kita meng-import dua buah kelas yaitu Segitiga dan Persegi
dari dua module berbeda yaitu [Link] dan [Link]. Sedangkan kode dibawahnya digunakan
jika file __init__.py ingin menjalankan perintah tertentu. Pastikan file ini disimpan di folder bidang.

Menggunakan Module di File Utama

Sampai akhirnya kita tiba untuk menulis kode utama. Kode utama ini merupakan kode yang berisi
runnable code, dan menggunakan class yang sudah didefinisikan di module – module sebelumnya.
Dengan demikian kode program tidak akan menumpuk di file utama.

Jika Anda berhasil mengikuti petunjuk pada bab ini, module, packages dan file utama harus
mempunyai sususan seperti berikut :

<< gambar 12.1 struktur module packages bidang >>

listing : [Link]
92

from bidang import Segitiga, Persegi

sgtgA = Segitiga(3, 9)
prsgA = Persegi(5)

print "Luas Segitiga A : ", [Link]()


print "Sisi Miring Segitiga A : ", [Link]()
print "Keliling Segitiga A : ", [Link]([Link]())
print "\n"
print "Luas Persegi A : ", [Link]()
print "Keliling Segitiga A : ", [Link]()

Pada kode diatas kita meng-import kelas dari package bidang. Kemudian melakukan instansiasi dan
memberikan nilai sesuai yang kita inginkan. Kemudian kita akses method – method yang terdapat
pada kelas tersebut untuk mendapatkan informasi luas, dan keliling pada masing – masing bidang.
Jika berhasil maka kode yang akan dijalankan seperti berikut :

<< gambar 12.2 eksekusi [Link] >>


93

Daftar Pustaka

 Python Software Foundation Team. Python v2.7.2 Documentation 1990 – 2011. The Python
Software Foundation.
 Downey, Allen, Jeffrey Elkner, dan Chris Meyers. How to Think Like a Computer Scientist :
Learning with Python. 2002. Green Tea Press : Wellesley, Massachusetts
 Swaroop. A Byte of Python. 2005. IonLab : Bangalore, India
 Craven, Paul Vincent. Introduction to Computer Science Using Python and Pygame. 2011.
Simpson College, Computer Science Department : Indianola, Iowa
94

Lampiran 1 – Teknologi yang Menggunakan Python

Sebuah web framework yang memiliki motto “The Web


Framework for Perfectionist with Deadline”. Django
merupakan salah satu megaframework yang sudah
memiliki template engine, object relational mapper,
session, security, pagination, logging, authentication,
Django
caching, dan lain – lain.

Lebih lengkap kungjungi link berikut :


[Link]
PyGame adalah wrapper untuk Simple Direct Media
Library, sebuah library untuk memanipulasi grafis dan
media berupa audio dan video. Dengan PyGame Anda
bisa membuat game berbasis 2D. Kalaupun ingin
membuat game 3D dibutuhkan library lain untuk
mendukung pengolahan 3D

Fitur – fitur yang bisa didapatkan dari module – module


PyGame :

 cdrom, mengelola cdrom dan pemutar suara


 cursors, me-load gambar kursor, dan
menyertakan kursor standard
 display, mengendalikan layar
 draw, menggambar grafis sederhana pada
Surface
PyGame  event, mengelola event dan antrian event
 font, membuat dan menggunakan Truetype fonts
 image, menyimpan dan me-load gambar
 joystick, mengelola joystick
 key, mengelola keyboard
 mouse, mengelola mouse
 movie, memainkan film bertipe mpeg
 sndarray, memanipulasi suara dalam angka
 surfarray, memanipulasi gambar dalam angka
 time, mengendalikan waktu
 transform, memperbesar, memutar, dan
membalik gambar

Bagi teman – teman yang ingin menggunakan Pygame


lebih lanjut bisa kunjungi link berikut :
[Link]
95

Panda 3D adalah 3D Engine, library dari kumpulan


fungsi – fungsi untuk 3D rendering dan pengembangan
game. Library-nya ditulis dengan C++. Untuk
pengembangan game dengan Panda3D, Anda harus
menulis dalam bahasa Python yang mengendalikan
library di Panda3D.

Panda3D mempunyai dukungan seperti : The Scene


Panda 3D
Graph, Model dan Actor,Texturing, Shaders, Camera
Control, Sound, Interval, Task dan Event Handling, Text
dan Image Rendering, DirectGUI, Render Effect,
Collision Detection, dan lainnya

lebih lengkap kunjungi link berikut ini :


[Link]
SimpleCV merupakan singkatan dari Simple Computer
Vision, merupakan framework python yang mudah
digunakan dan membungkus library computer vision
open source dan algoritma terkait untuk pemecahan
masalah.

Beberapa fitur yang didukung oleh SimpleCV antara


lain : membaca gambar, konversi gambar ke RGB,
SimpleCV
konversi gambar ke HLS, konversi gambar ke HSV,
konversi gambar ke Gray, membuat gambar baru dalam
format bitmap, menyalin gambar, memperbesar gambar,
pencerminan gambar, memperhalus gambar, edge
detection, dan lain – lain.

Lebih lengkapnya checklink berikut ini :


[Link]
Teknologi Natural Language Processing semakin hari
semakin maju. Sebagai contoh, banyak smartphones,
yang sudah mendukung pengenalan tulisan, kemudian
banyak mesin pencari yang mendukung penulisan teks
ta struktur, ada juga penerjemahan bahasa.

NLTK hadir sebagai salah satu tools yang ditulis dalam


NLTK Python untuk mendukung teknologi Natural Language
Processing. Beberapa fitur yang didukung oleh NLTK
antara lain : Language Processing, Text Corpora,
Processing Raw Text, Categorizing and Tagging Words,
Parsing text, Semantic Analysis, dan lain – lain.

Lebih lanjut cobe kunjungi link berikut :


[Link]
Flask Flask merupakan micro web framework yang
mendukung untuk diintegrasikan dengan berbagai
96

library pendukung lainnya. Flask memerlukan WSGI


Toolkit yang dinamakan Weurkzeug dan Template
Engine Jinja2.

Flask memiliki fitur seperti : templating engine, testing


application, logging application error, debuggin
application error, configuration handling, signal,
pluggable view, extension, dan lain – lain.

Lebih lengkap kunjungi link berikut :


[Link]

Anda mungkin juga menyukai