Anda di halaman 1dari 29

DAFTAR ISI

Daftar Isi ............................................................................................... 1

Modul 1 Gambaran Umum Penggunaan PBO ........................................ 2

Modul 2 Class dan Instance ................................................................... 5

Modul 3 Method ..................................................................................... 9

Modul 4 Konstruktor ............................................................................... 12

Modul 5 Dokumentasi class dan Methode ............................................. 15

Modul 6 Dasar – dasar Inheritance ......................................................... 17

Modul 7 Operator Overloading ............................................................... 20

Modul 8 Kasus Terpadu ......................................................................... 21

Latihan dan Soal .................................................................................. 24

2
MODUL I
Gambaran Umum Penggunaan PBO
I.1 Maksud dan Tujuan
I.1.1 Maksud
Modul ini membahas tentang penggunaan pemrograman berorientasi
obyek pada Python. Modul ini belum membahas pembuatan obyek, tetapi
baru pada tahap penggunaan class yang sudah ada untuk memberi
gambaran tentang bagaimana memanfaatkan class yang sudah ada.
I.1.2 Tujuan
1. Mahasiswa memahami cara menggunakan class yang sudah ada pada
Python.

I.2 Dasar Teori


Python merupakan bahasa pemrograman yang mendukung berbagai
paradigma pemrograman, diantaranya adalah imperatif, pemrograman
berorientasi obyek, dan fungsional. Modul ini membahas tentang PBO yang ada
pada Python. Sebagai bahasa pemrograman yang mendukung PBO, Python
menyediakan berbagai class yang bisa langsung digunakan, fasilitas ini disebut
dengan built-in class.
Daftar lengkap dari class yang tersedia pada Python bisa dilihat pada
manual di bagian Library Reference. Seperti halnya bahasa pemrograman lain,
class yang ada pada Python dapat dibuat instancenya, dan setelah itu bisa
menyediakan berbagai method maupun property (atau atribut).

Mengakses Built-in Class


Ada beberapa langkah yang harus dilakukan untuk mengakses suatu built-in
class.
1. Modul yang menyediakan class tersebut harus di-import terlebih dahulu,
kecuali tersedia dalam modul builtin
2. Buat instance dari class tersebut
3. Tanda titik digunakan oleh Python sebagai pemisah antara instance dengan
method dan atribut.

Dokumentasi
Setiap built-in class pada Python biasanya menyediakan dokumentasi. Jika
Python terinstall lengkap, bisa digunakan executable script pydoc <nama- class>
untuk menampilkan dokumentasi, atau bisa juga dengan menggunakan method
doc__.

I.3 Praktik
Untuk praktik berikut ini, kita akan menggunakan bult-in class str yang bisa
digunakan untuk operasi yang berkaitan dengan string (huruf alfanumerik) dan os
yang digunakan untuk berbagai operasi yang berkaitan dengan sistem

3
operasi (seperti melihat isi direktori, menghapus file, dan lain-lain). Modul str
merupakan bagian dari modul builtin sedangkan os tidak.

1. Ketikkan perintah berikut pada prompt Python:


>>> import str

Adakah kesalahan yang terjadi? jelaskan!

2. Ketikkan perintah berikut pada prompt Python:

>>> import os

Adakah kesalahan yang terjadi? jelaskan!

3. Untuk membuat suatu instance, anda hanya perlu mendefinisikan instance


tersebut sesuai dengan yang ditentukan oleh class yang bersangkutan. Contoh:

>>> nama = str('Spongebob Squarepants')


>>> type(nama)
<type 'str'>
>>> nama.capitalize
<built-in method capitalize of str object at 0xb7df1b60>
>>> nama.capitalize()
'Spongebob squarepants'

Jelaskan contoh di atas!

4. doc__ adalah method khusus yang bisa dipanggil pada level class dan pada
level method. Coba panggil method tersebut dan perhatikan hasilnya! Jelaskan
hasil yang anda lihat!

5. Ketikkan perintah berikut ini pada prompt Python dan perhatikan kemudian
jelaskan hasilnya:

>>> myOS = os
>>> myOS.name
>>> myOS
>>> myOS.curdir
>>> myOS.sep
>>> myOS.defpath
>>> myOS.getcwd
>>> myOS.getcwd()
>>> myOS.mkdir('direktoriku')
>>> myOS.listdir('.')
>>> myOS.rmdir('direktoriku')
>>> myOS.listdir('.')

4
MODUL II
Class dan Instance
II.1 Maksud dan Tujuan
II.1.1 Maksud
Modul ini membahas tentang class yang merupakan cetak biru suatu obyek
serta bagaimana membuat suatu instance yaitu obyek spesifik yang
mempunyai karakteristik seperti yang didefinisikan oleh class.
II.1.2 Tujuan
1. Mahasiswa memahami dan bisa mempraktikkan pembuatan class
dengan menggunakan Python.
2. Mahasiswa bisa membedakan class dengan instance.
3. Mahasiswa bisa membuat suatu instance berdasarkan definisi obyek
yang telah dibuat oleh class.

II.2 Dasar Teori


Suatu class merupakan suatu template (cetakan) yang digunakan untuk
mendefinisikan suatu obyek secara umum. Sebagai contoh, “manusia” adalah
suatu class sedangkan “Zaky” adalah instance dari manusia. Hal ini berarti “Zaky”
mempunyai atribut serta perilaku sebagai “manusia” tetapi mempunyai atribut
serta perilaku khusus.

“manusia” “Zaky”
Mempunyai mata Mempunyai mata (dan matanya berwarna
hitam)
Berlari Bisa berlari (cepat)
Mempunyai hidung Mempunyai hidung (mancung)
... ...

Suatu class bisa didefinisikan dengan beberapa cara:


1. Membuat class dari awal
2. Membuat class dari class yang sudah ada (disebut sebagai subclassing). Pada
beberapa bahasa pemrograman lain, proses ini disebut sebagai inheritance.

Praktikum ini hanya membahas tentang pembuatan class dari awal.

Membuat class dari awal

class <nama class>:


[“teks untuk dokumentasi class”]
<perintah-perintah Python>

5
Definisi Atribut
Atribut merupakan karakteristik yang melekat pada suatu obyek. Dalam
kehidupan sehari-hari, bisa dicontohkan suatu obyek manusia mempunyai atribut
telinga, kepala, perut, nama, status, dan lain-lain. Atribut bisa didefinisikan
seperti halnya pemrogram mendefinisikan suatu variabel (pada dasarnya, atribut
pada suatu class memang merupakan variabel). Berikut ini adalah contoh definisi
atribut:

class mahasiswa:
jurusan = 'Komputerisasi Akuntansi'

Untuk mengakses atribut tersebut, pemrogram bisa menggunakan tanda


pemisah berupa titik. Contoh:

>>> print mahasiswa.jurusan

Definisi Instance
Setiap instance yang didefinisikan mempunyai identitas. Untuk mengetahui
identitas dari instance, kita bisa menggunakan fungsi id (namaInstance). Untuk
membuat suatu instance, pemrogram melakukan penugasan ke suatu pengenal
(identifier), jika diperlukan / diwajibkan, penugasan ini dapat disertai dengan
parameter tertentu. Contoh:

>>> aditya = mahasiswa()

Untuk mengetahui apakah suatu identifier merupakan instance atau bukan, bisa
digunakan perintah isinstance(identifier, class).

II.3 Praktik
1. Ketikkan dan jalankan script berikut ini:

#!/usr/bin/python

class mahasiswa:
kampus = 'STMIK AKAKOM'
jurusan = 'Komputerisasi Akuntansi'

bambang = mahasiswa()
print bambang.kampus
print bambang.jurusan

print isinstance(bambang, mahasiswa)


2. Ketikkan dan jalankan script berikut ini:

class Product:
__vendor_message = "Ini adalah rahasia"
name = ""
price = ""
6
size = ""
unit = ""

def __init__(self, name):


print "Ini adalah constructor"
self.name = name
self.unit = "ml"
self.size = 250

def get_vendor_message(self):
print self.__vendor_message

def set_price(self, price):


self.price = price

p = Product("Ultora Milek")
p.set_price(5500)

print "%s dengan ukuran %s %s harganya Rp. %d" % (p.name, p.size, p.unit,
p.price)
# print p.__vendor_message

p.get_vendor_message()

p1 = Product("Indomilek")
p1.set_price(5000)

print "%s dengan ukuran %s %s harganya Rp. %d" % (p.name, p.size, p.unit,
p.price)

print p == p
print p1 == p1
print p == p1

3. Buatlah class baru bernama karyawan dan definisikan berbagai atribut dari
seorang karyawan. Buat juga instance dari karyawan serta buat perintah untuk
mengetahui apakah instance tersebut memang benar-benar instance dari
karyawan!

4. Implementasikan Diagram class dibawah ini dalam bentuk program !

7
Tulislah listing program dan Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka program anda sudah
benar. Jika tidak sama, benahi kembali program anda dan lakukan hal yang sama
seperti diatas.

8
MODUL III
Method
III.1 Maksud dan Tujuan
III.1.1 Maksud
Modul ini membahas tentang method, yaitu suatu bagian dari class yang
digunakan untuk mendefinisikan berbagai aksi yang bisa dilakukan oleh
obyek.
III.1.2 Tujuan
1. Mahasiswa memahami pengertian method.
2. Mahasiswa memahami cara mendefinisikan method.
3. Mahasiswa memahami dan dapat membuat script Python yang
menyertakan suatu method.

III.2 Dasar Teori


Method merupakan suatu bagian dari class yang digunakan untuk
mendefinisikan berbagai aksi / tindakan yang bisa dilakukan oleh obyek. Dalam
kehidupan biasa, method ini bisa diibaratkan seperti tindakan yang melekat pada
obyek. Sebagai contoh, seorang manusia yang diberi tugas sebagai dosen
mempunyai kemampuan untuk bertindak mengajar, meneliti, dan melakukan
pengabdian pada masyarakat.
Jika digambarkan pada script Python, secara garis besar suatu class akan
terdiri atas atribut dan method dengan struktur sebagai berikut:

class namaclass:

atribut = nilai
atribut = nilai

def namaMethod(self, parameter_lain):


perintah Python
perintah Python

Contoh:

class mahasiswa:

kampus = 'STMIK AKAKOM'


jurusan = 'Komputerisasi Akuntansi'
mataKuliah = '--kosong--'
status = '--kosong--'

def belajar(self, mk='none', st='none'):


self.mataKuliah = mk
self.status = st

scoobydoo = mahasiswa()
print scoobydoo.mataKuliah
print scoobydoo.status

9
.
spongebob = mahasiswa()
spongebob.belajar('Sistem Informasi Akuntansi','Paham')

print spongebob.mataKuliah
print spongebob.status

Catatan:
Untuk keperluan kemudahan pemahaman, struktur di atas bukan
merupakan struktur yang lengkap. Perhatikan struktur dari class tersebut
agar memperoleh gambaran bagaimana mendefinisikan suatu class.

Jika diperhatikan pada script di atas, terdapat suatu kata kunci (keyword) self. self
digunakan untuk memberitahu Python bahwa method tersebut merupakan
anggota dari class. Jika pemrogram ingin mengakses atribut maupun suatu
method dari method, maka pengaksesan tersebut harus disertai dengan self pada
bagian depan, dipisahkan dengan titik kemudian baru nama atribut dan method
yang akan diakses. Perhatikan contoh pada definisi method belajar di atas.

Paramater Method
Suatu method bisa mempunyai parameter yang bisa diakses oleh anggota
method dan setiap parameter tersebut bisa juga diberi nilai default. Perhatikan
contoh pada definisi method belajar yang menyertakan dua parameter dengan
nilai default berupa none

III.3 Praktik
1. Ketikkan dan jalankan script berikut ini:

#!/usr/bin/python

class kalkulator:
def tambah(angka1, angka2):
hasil = angka1 + angka2
return hasil

def bagi(pembilang, penyebut):


hasil = pembilang / penyebut
return hasil

def kali(angka1, angka2):


hasil = angka1 * angka2
return hasil

calc = kalkulator
print calc.tambah(2,6)

Adakah error yang terjadi? Mengapa? Jika memang terjadi error, carilah

10
bagian yang error kemudian betulkan bagian tersebut sehingga script tersebut
dapat berjalan dengan baik.

2. Ketikkan dan jalankan suatu script yang berisi class mahasiswa di atas.
Mengapa definisi instance scoobydoo dan spongebob mempunyai hasil yang
berlainan? Jelaskan!

3. Buatlah sebuah class Pelajar dengan ketentuan sebagai berikut :


a. Memiliki atribut: nip, nama, nilaiUjian1, nilaiUjian2, nilaiTugas.
b. Memiliki method nilaiAkhir untuk menghitung nilai akhir dari pelajar
tersebut dimana rumusnya adalah :
NA=(nilaiUjian1*35%)+(nilaiUjian2*40%)+(nilaiTugas*25%)
c. Ada method isLulus yang digunakan untuk mengecek apakah seorang
siswa lulus atau tidak, dimana dinyatakan lulus bila nilai akhirnya sama
dengan 60 ke atas. Dan ada pula method status yang digunakan untuk
menampilkan status keterangan lulus atau tidaknya pelajar tersebut.

11
MODUL IV
Constructor
IV.1 Maksud dan Tujuan
IV.1.1 Maksud
Modul ini membahas tentang method yang akan dikerjakan langsung oleh
Python pada saat suatu instance diciptakan. Method tersebut adalah
constructor
IV.1.2 Tujuan
1. Mahasiswa memahami pengertian constructor
2. Mahasiswa memahami kapan suatu constructor digunakan.
3. Mahasiswa memahami dan mampu membuat script Python yang
menyertakan constructor.

IV.2 Dasar Teori


Constructor atau dalam bahasa Indonesia sering disebut konstruktor adalah
suatu method khusus yang akan selalu dikerjakan begitu suatu instance dibuat.
Pada saat membuat suatu obyek, seringkali kita berpikir bahwa seharusnya ada
atribut atau aksi yang langsung ditetapkan atau dikerjakan. Sebagai contoh, jika
kita menetapkan obyek manusia, maka secara otomatis kita berpikir bahwa
seorang manusia normal mempunyai nyawa.

Definisi Konstruktor
Definisi konstruktor pada Python dilakukan dengan menempatkan
berbagai inisialisasi tersebut ke dalam suatu method khusus yang bernama
init . Secara default, sama seperti method lainnya, init
menyertakan parameter self. Perhatikan contoh berikut:

class mahasiswa:

kampus = ''

def init (self):


self.kampus = 'STMIK AKAKOM'

print mahasiswa.kampus

Latihan

class Car:
_wheel = 4
_type = ""
_merk = ""
_owner = ""
color = ""

def get_owner(self):
return self._owner
12
def __init__(self, owner="unknown", color="green", merk="unknown",

types="Sport Car", wheeldrive=4):

self._owner = owner

self.color = color

self._merk = merk

self._type = types

self._wheeldrive = wheeldrive

def start_engine(self):

print ("Starting the car... ")

print ("owner: %s" % self._owner)

print ("color: %s" % self.color)

print ("merk: %s" % self._merk)

print ("type: %s" % self._type)

print ("wheeldrive: %s" % self._wheeldrive)

car = Car(wheeldrive=8)

car2 = Car(owner="kresnagaluh", color="red", merk="Isuju", types="City Car")

car.start_engine()

car2.start_engine()

owner = car.get_owner()

owner = car2.get_owner()

IV.3 Praktik
1. Ketik dan jalankan script yang berisi class mahasiswa di atas, jelaskan script
tersebut!
2. Tambahkan atribut jurusan, angkatan pada class tersebut kemudian isikan
jurusan dan angkatan sesuai dengan jurusan dan angkatan anda pada
konstruktor. Buktikan dengan menggunakan print bahwa atribut tersebut telah
masuk ke dalam konstruktor.
3. Buatlah suatu class bernama keluarga dengan ketentuan sebagai berikut:

➢ keluarga tersebut mempunyai atribut jumlah anak, nama ayah, nama

13
ibu, alamat, dan pekerjaan ayah.
➢ buat konstruktor untuk mendefinisikan jumlah anak = 0
➢ buat 3 method, masing-masing untuk mendefinisikan nama ayah, nama
ibut, dan pekerjaan ayah

14
MODUL V
Dokumentasi Class dan Method
IV.1 Maksud dan Tujuan
IV.1.1 Maksud
Modul ini membahas tentang cara membuat dokumentasi secara
langsung pada script.
IV.1.2 Tujuan
1. Mahasiswa memahami kemudahan membuat dokumentasi pada
Python dengan menuliskan dokumentasi langsung pada script.
2. Mahasiswa mampu mendefinisikan dokumentasi pada level class dan
method untuk mempermudah pekerjaan pemrograman.

IV.2 Dasar Teori


Pada dasarnya pekerjaan pemrograman akan sangat membutuhkan
pembuatan dokumentasi. Dengan menggunakan PBO, suatu program / script bisa
dengan mudah didokumentasikan karena suatu program PBO biasanya telah
mempunyai struktur yang tetap dan baik.
Pada saat membuat script Python, meskipun bukan kewajiban tetapi sangat
disarankan bagi pemrogram untuk membuat dokumentasi langsung pada kode
sumber script tersebut.

Mendefinisikan Dokumentasi
Dokumentasi bisa diletakkan pada level class maupun pada level method.
Caranya dengan meletakkan string komentar (diapit tanda petik tunggal atau
ganda untuk satu baris dan tanda petik tiga untuk lebih dari satu baris). String
komentar tersebut diletakkan tepat di bawah kata kunci class atau def. Berikut ini
adalah contohnya:

class mahasiswa:
''' class ini digunakan untuk mendefinisikan
obyek mahasiswa.
'''

def belajar(self,mk='none',st='none'):
'''method ini digunakan untuk
menyimpan status belajar mahasiswa'''

Mengakses Dokumentasi
Untuk mengakses dokumentasi, pemrogram bisa mengakses method
doc pada class atau method seperti yang dikehendaki. Berikut ini adalah
contohnya:

>>> bambang = mahasiswa()


>>> bambang. doc
>>> bambang.belajar. doc

15
Membuat File Dokumentasi
Jika pemrogram telah mendefinisikan string dokumentasi, maka Python
menyertakan script pydoc yang bisa digunakan untuk membuat dokumentasi
dalam format HTML. Script tersebut mirip dengan javadoc yang ada pada bahasa
Java. Berikut ini adalah cara membuat dokumentasi (dengan asumsi nama file
script yang akan dibuat dokumentasinya adalah modul4.py):

bpdp@bpdp-debian$ pydoc -w ./modul4.py


--kosong--
--kosong--
Sistem Informasi Akuntansi
Paham
wrote modul4.html
bpdp@bpdp-debian$

Hasil modul4.html tersebut bisa dilihat pada browser. Berikut ini adalah tampilan
pada browser:

IV.3 Praktik
1. Buat string dokumentasi untuk masing-masing method dan class dari semua
file script Python yang telah anda buat.
2. Cobalah menggunakan doc__!
3. Buat dokumentasi HTML dari masing-masing file tersebut!

16
MODUL VI
Dasar-dasar Inheritance
VI.1 Maksud dan Tujuan
VI.1.1 Maksud
Inheritance atau pewarisan merupakan konsep untuk membuat suatu class
baru dari template class yang sudah ada. Modul ini membahas pengertian
dasar dari pewarisan serta bagaimana pewarisan dilakukan dengan
menggunakan Python.
VI.1.2 Tujuan
1. Mahasiswa memahami konsep pembuatan class melalui penurunan
class induk.
2. Mahasiswa mempu mengaplikasikan konsep tersebut menggunakan
Python.

VI.2 Dasar Teori


Seperti yang telah dijelaskan pada modul I, pada dasarnya kita bisa
membuat suatu class baru berdasarkan class yang sudah ada. Bagian inilah yang
merupakan kekuatan dari pemrograman berorientasi obyek karena
memungkinkan terjadinya sifat reusable, artinya suatu obyek akan bisa digunakan
terus dan jika diinginkan obyek baru pemrogram bisa membuat class baru
berdasarkan class yang sudah ada. Contoh:

Makhluk Hidup -> Mamalia -> Manusia -> Bule -> mr. X

Definisi class berdasarkan class induk pada Python bisa dilakukan


dengan sintaksis berikut ini:

class <nama class> [(class dasar 1, class dasar 2, ...)]:


[“teks untuk dokumentasi class”]
<perintah-perintah Python>

Dari sintaksis tersebut, kita bisa mengetahui bahwa sebenarnya kita bisa
menggunakan lebih dari satu class sebagai dasar dalam pembuatan class baru.
Penggunaan lebih dari satu class dasar disebut dengan multiple inheritance dan
merupakan materi pembahasan praktikum Pemrograman Berorientasi Obyek II.

VI.3 Praktik
1. Ketikkan dan jalankan script berikut ini:
class manusia:
default_asal_negara = "Indonesia"
def setAsalNegara(self, negara):
self.default_asal_negara = negara

class mahasiswa(manusia):
default_umur = 20

17
default_kompetensi = ""
default_nama = ""
def init (self, umur):
self.default_umur = umur
def setNama(self, namaMhs):
self.default_nama = namaMhs
def setKompetensi(self, kompetensi='SIA, PBO, Linux'):
self.default_kompetensi = kompetensi
def tampilkanIdentitas(self):
print self.default_umur
print self.default_nama
print self.default_asal_negara
print self.default_kompetensi

print "Inisialisasi default = "


spongebob = mahasiswa(21)
spongebob.tampilkanIdentitas()
print "Setelah inisialisasi"
spongebob.setAsalNegara("Negara Laut")
spongebob.setNama('Spongebob Squarepants')
spongebob.setKompetensi()
spongebob.tampilkanIdentitas()

2. Jelaskan bagian dari script di atas yang merupakan pewarisan / inheritance.


3. Apa yang terjadi jika baris class mahasiswa(manusia): diganti dengan class
mahasiswa: ? Error apakah yang terjadi? Apa artinya?
4. Buat instance dari class tersebut kemudian buktikan bahwa method yang
anda kerjakan berjalan dengan baik.

Sebuah rental VCD memiliki desain class master untuk data


Vcd Film dan CD Musik sebagai berikut :
• Class CdFilm dengan atribut : judul
: judul film
pemain : nama-nama pemain di dilm tersebut
sutradara : nama sutradara film tersebut publiser
: yang memproduksi film tersebut
kategori : SU = Semua Umur, D = Dewasa, R = Remaja, A =
Anak
stok : jumlah stok vcd film tersebut
• Class CdMusik dengan atribut : judul
: judul album musik
penyanyi : nama penyanyi di album tersebut
produser : nama produser album tersebut
publiser : studio rekaman yang memproduksi cd musik
tersebut
top hits : lagu yang diandalkan pada album tersebut
kategori : C = Classic, J = Jazz, P = Pop, R = Rock, O =
Other stok : jumlah stok cd musik tersebut.

18
Dari data kedua class diatas, desainlah class-class tersebut dengan konsep
inheritance. Cari hubungan antar kedua class tersebut lalu tentukan superclass-
nya dan subclass-nya. Setelah itu implementasikan class-class yang telah anda
desain dan buatlah program sederhana yang memiliki fasilitas entri data vcd film,
entri data cd musik serta melihat daftar vcd film dan cd musik yang telah
dientrikan.

5. Buat Implementasi dari diagram class dibawah ini :

1. Konstruktor subclass harus mengambil konstruktor dari super class


dengan keyword super (lihat kode pada konstruktor subclass). Kasus
berbeda akan terjadi jika super class tidak memiliki konstruktor eksplisit
yang dituliskan. Sebagai informasi tambahan, kode akan error jika urutan
kode pada konstruktor SubKlas dibalik penulisannya (pemanggilan super
di bawah set nilai sub). Hal ini sesuai dengan sifat instansiasi pada
subbab sebelumnya.
2. Method private tidak dapat dipanggil melalui main karena sifatnya yang
private.
3. Method protected dan public dapat dipanggil dari class sub dengan
keyword super atau this (lihat isi dari methodSub).
4. Method protected dan public dapat dipanggil melalui objek subclass
walaupun tidak terdapat penulisan method tersebut pada class-nya
(subclass). Hal ini juga berlaku bagi atribut
19
MODUL VII
Operator Overloading
VII.1 Maksud dan Tujuan
VII.1.1 Maksud
Modul ini membahas tentang operator overloading yang merupakan
mekanisme untuk implementasi ulang operator yang telah
ditetapkan.
VII.1.2 Tujuan
1. Mahasiswa memahami pengertian operator overloading
2. Mahasiswa memahami dan mampu membuat script untuk
mendefinisikan ulang berbagai operator yang ada pada Python.

VII.2 Dasar Teori


Bahasa yang mendukung PBO biasanya mempunyai fasilitas untuk
operator overloading yang merupakan mekanisme untuk implementasi ulang
operator yang telah ditetapkan. Secara default, Python menyediakan berbagai
method khusus yang digunakan untuk operasi khusus dan bisa diakses pada
setiap definisi class. Method tersebut adalah sebagai berikut:
➢ mul__ untuk perkalian
➢ len untuk mengambil panjang dari a
➢ add untuk penjumlahan
➢ sub untuk pengurangan
➢ div untuk pembagian
➢ abs untuk mengambil nilai mutlak / absolut
➢ hex untuk mengambil nilai heksadesimal
➢ int untuk mengambil nilai bulat

VII.3 Praktik
1. Ketikkan dan jalankan script berikut ini:

class C:
def init (self, value):
self.value = value

def sub (self, other):


return self.value * other.value

varA = C(4)
varB = C(2)
varC = varA - varB

print varC

2. Jelaskan mengapa praktik 1 menghasilkan angka 8 padahal operasi yang dilakukan


adalah operasi pengurangan (varC = varA – varB).
3. Buat script untuk mencoba operator overloading dengan method lain (
sub , div , dan lain-lain).

20
MODUL VIII
Kasus Terpadu
VIII.1 Maksud dan Tujuan
VIII.1.1 Maksud
Modul ini membahas tentang pembuatan suatu aplikasi dengan
menggunakan PBO di Python.
VIII.1.2 Tujuan
1. Mahasiswa memahami secara utuh bagaimana
cara membangun suatu aplikasi dengan
menggunakan teknik PBO.

VIII.2 Dasar Teori


Pembuatan aplikasi dengan menggunakan teknik PBO bisa dikatakan
bukan merupakan hal yang mudah, bahkan pemrogram yang berpengalaman
pun biasanya akan menemui kesulitan dan kesalahan. Perancangan program
yang melibatkan definisi class biasanya juga tidak sekali jadi tetapi merupakan
suatu proses iteratif perbaikan terus menerus.
Secara sederhana, bisa dikatakan bahwa pembuatan aplikasi dengan
teknik PBO dapat dilakukan dengan langkah-langkah berikut ini:
1. Definisikan masalah.
2. Defiisikan obyek-obyek yang ada pada masalah tersebut.
3. Definisikan atribut, method yang dimiliki oleh masing-masing obyek tersebut
serta bagaimana antar obyek tersebut berinteraksi untuk menyelesaikan
masalah.
4. Implementasikan obyek-obyek tersebut serta definisikan interaksi antar
obyek tersebut dalam kelas utama (di java kelas utama adalah main,
di Python
main , sedangkan di C++ adalah main().

Catatan:
Dalam kenyataan, seringkali langkah ini akan dianggap sebagai langkah
penyederhanaan karena masalah yang dihadapi akan lebih kompleks,
tetapi anda harus memahami langkah tersebut untuk masalah kecil lebih
dahulu.

Contoh:

Masalah:
Pengelolaan data karyawan

Obyek yang ada:


manusia
karyawan (turunan dari manusia)

Atribut:

21
manusia -> nama, usia
karyawan->gaji, pekerjaan, keluarga

Method

manusia->inisialisasi = semua atribut bernilai kosong kecuali usia


karyawan ->inisialisasi = nama karyawan, usia, gaji, keluarga
->naikGaji = menaikkan gaji karyawan
->tampilkanPekerjaan = menunjukkan pekerjaan
->jumlahKeluarga = menunjukkan jumlah keluarga
->tambahKeluarga = menambahkan anggota keluarga
->hapusKeluarga = menghapus anggota keluarga

Definisi class Utama


Definisi class utama dilakukan dengan cara mendefinisikan if
name =' main ': berikut ini:

#!/usr/bin/python

class mahasiswa:
'''Kelas ini digunakan untuk
mendefinisikan mahasiswa'''
kampus = 'STMIK AKAKOM'
jurusan = 'Komputerisasi Akuntansi'
mataKuliah = '--kosong--'
status = '--kosong--'

def belajar(self, mk='none', st='none'):


'Method ini digunakan untuk menyimpan status belajar
mahasiswa'
self.mataKuliah = mk
self.status = st

if name ==' main ':


scoobydoo = mahasiswa()
print scoobydoo.mataKuliah
print scoobydoo.status

spongebob = mahasiswa()
spongebob.belajar('Sistem Informasi Akuntansi','Paham')

print spongebob.mataKuliah
print spongebob.status

22
VIII.3 Praktik
5. Implementasikan solusi masalah di atas sesuai dengan hasil analisis.

23
LATIHAN :
1. Kelas

class Karyawan:
'''Dasar kelas untuk semua karyawan'''
jumlah_karyawan = 0

def __init__(self, nama, gaji):


self.nama = nama
self.gaji = gaji
Karyawan.jumlah_karyawan += 1

def tampilkan_jumlah(self):
print("Total karyawan:", Karyawan.jumlah_karyawan)

def tampilkan_profil(self):
print("Nama :", self.nama)
print("Gaji :", self.gaji)
print()

2. Contoh Atribut, methode dan class

class Karyawan:
'''Dasar kelas untuk semua karyawan'''
jumlah_karyawan = 0

def __init__(self, nama, gaji):


self.nama = nama
self.gaji = gaji
Karyawan.jumlah_karyawan += 1

def tampilkan_jumlah(self):
print("Total karyawan:", Karyawan.jumlah_karyawan)

def tampilkan_profil(self):

24
print("Nama :", self.nama)
print("Gaji :", self.gaji)

# Membuat objek pertama dari kelas Karyawan


karyawan1 = Karyawan("Sarah", 1000000)
# Membuat objek kedua dari kelas Karyawan
karyawan2 = Karyawan("Budi", 2000000)

karyawan1.tampilkan_profil()
karyawan2.tampilkan_profil()
print("Total karyawan :", Karyawan.jumlah_karyawan)

3. Atribut kelas Built-in

 __dict__ – dictionary yang berisi namespace dari kelas


 __doc__ – mengakses string dokumentasi (docstring) dari kelas
 __name__ – nama kelas
 __module__ – nama modul tempat kelas didefinisikan. Nilai attribut ini di
mode interaktif adalah “__main__“.
 __bases__ – dasar dari kelas, bila kelas tidak merupakan turunan dari kelas
lain, maka induknya dalah kelas object.

class Karyawan:
'''Dasar kelas untuk semua karyawan'''
jumlah_karyawan = 0

def __init__(self, nama, gaji):


self.nama = nama
self.gaji = gaji
Karyawan.jumlah_karyawan += 1

def tampilkan_jumlah(self):
print("Total karyawan:", Karyawan.jumlah_karyawan)

def tampilkan_profil(self):
print("Nama :", self.nama)
print("Gaji :", self.gaji)

# Membuat objek pertama dari kelas Karyawan


karyawan1 = Karyawan("Sarah", 1000000)
# Membuat objek kedua dari kelas Karyawan
25
karyawan2 = Karyawan("Budi", 2000000)

print("Karyawan.__doc__:", Karyawan.__doc__)
print("Karyawan.__name__:", Karyawan.__name__)
print("Karyawan.__module__:", Karyawan.__module__)
print("Karyawan.__dict__:", Karyawan.__dict__)
print("Karyawan.__bases__:", Karyawan.__bases__)

SOAL :

1. Buat program untuk input 5 data Penjualan dengan spesifikasi program


sebagai berikut :
Input : kode pelanggan, nama pelanggan,kode barang,nama barang, harga
satuan, jumlah pesan;

Proses :
Jika kode pelanggan =’1’ maka status pelanggan =Tetap
Jika Kode Pelanggan=’2’ maka status pelanggan=Tidak Tetap
Selain kode pelanggan 1, 2 maka tampilkan pesan “SALAH KODE”

Total harga: harga satuan * jumlah pesan


Jika Total Harga >=100000 mendapatkan diskon 20 %
Jika total harga < 100000 mendapatkan diskon= 0 (tidak mendapatkan
diskon)

Output:
Daftar Penjualan
No Nama Pelanggan status Pelanggan nama barang jumlah pesan Total
harga diskon
1 …

5
Total Harga Keseluruhan :

2. Buat program untuk mencetak laporan penginapan pada hotel “Salsabila”


dengan spesifikasi program sebagai berikut (menggunakan array).
Kode pelanggan, nama pelanggan,kode kamar,lama menginap (5 data
pelanggan)
Proses :
Kode Nama kamar Tarif permalam
kamar

26
1 Borobudur 1000000
2 Prambanan 750000
3 Plaosan 500000
Total bayar= lama menginap * tarif permalam
Pajak = 10%*total bayar
Jika total bayar >=1000000 maka mendapatkan diskon 5 %
Jika total bayar <1000000 maka tidak mendapat diskon
Jumlah yang harus dibayar=total bayar+pajak-diskon

Keluaran/output :
LAPORAN PENGINAPAN HOTEL SALSABILA
TAHUN 2011
Nama Kode Nama Tarif Lama Diskon Pajak Total
pelanggan kamar kamar permalam menginap bayar

3. Buat Program untuk menghitung dan mencetak gaji dosen dengan konsep
inheritance, Adapun spesifikasi program sebagai berikut :

Class induk(super class) : dosen


Atribut : NIDN,nama dosen,jumlah sks mengajar
Method : InputDosen,TampilDosen

Class Turunan /sub class : DosenTetap


Atribut : gaji pokok,tunjangan keahlian
Method : InputDosenTetap,TampilDosenTetap
Proses : total Gaji =Gaji pokok+tunjangan keahlian(jumlah sks
mengajar*100000)

Class turunan/sub class : DosenHonorer


Atribut : uang transportasi
Metdod : inputdosenhonorer,tampildosenhonorer
Proses : total gaji = Uang transportasi+(jumlah sks mengajar *100000)
Buat satu obyek untuk setiap class turunan(sub class)

Catatan : method superclass dan subclass boleh ditambah sesuai dengan


kebutuhan

27
4. Seorang penjual alat tulis menjual 10 bolpoint, 10 pensil dan 10 penghapus.
1 biji bolpoint harganya Rp. 2000, 1 biji pensil harganya Rp. 1.000 dan 1
penghapus harganya Rp. 500.
Gunakanlah objek untuk menyelesaikan soal dibawah ini!
a. Buatlah method untuk memasukkan (setter) nama, stok, harga satuan,
dan harga (stok x harga satuan) alat tulis tersebut! (40 point)
b. Buatlah method untuk menampilkan (getter) nama, stok, harga satuan,
dan harga (stok x harga satuan) alat tulis tersebut! (40 point)
c. Buatlah method Total Harga (setter getter) untuk menampilkan uang
yang diterima penjual jika semua alat tulis tersebut terjual semuanya!

5. Buat program dengan konsep inheritance(pewarisan) untuk mencetak


kwitansi pembayaran, dengan spesifikasi program sebagai berikut :
Nama kelas induk : mahasiswa
Atribut : nim,nama.
Fungsi/Method : InputMahsiswa()

Nama kelas Turunan : Reguler (subclass dari mahasiswa)


Atribut : semester,biaya daftar ulang ,dana kemahasiswaan,BOP,jumlah sks
Nama Fungsi : entry Regular ()
Jika jumlah sks > 24 maka tampilkan pesan “MAKSIMAL 24 SKS”
hitungReguler()
biaya per sks=75.000
- total uang sks=jumlah sks * biaya per sks
- total pembayaran=biaya daftar ulang+total uang sks+dana
kemahasiswaan+BOP
- jika total pembayaran >=4500000 maka dapat diskon 5 % ,
selain itu diskon=0
- Total yang harus dibayar=total pembayaran - diskon

cetakReguler()

Nama kelas turunan: Eksekutif (subclass dari mahasiswa)


Atribut : periode, biaya angsuran BOP,,jumlah sks,jumlah matakuliah
Nama fungsi= entryEksekutif()
hitungEksekutif()

28
proses hitung :
- biaya per sks= 85000
- biaya ujian permatakuliah = 100000
- total uang sks= biaya per sks* jumlah sks
- total biaya ujian = jumlah matakuliah * biaya ujian per
matakuliah.
- Total pembayaran= Biaya angsuran BOP+total uang sks+total
biaya ujian
- jika total pembayaran >=1500000 maka dapat diskon 5 % ,
selain itu diskon=0
- Total yang harus dibayar=total pembayaran - diskon
cetakEksekutif()

Pada fungsi main :


- Nama obyek dari class Reguler adalah R
- Nama obyek dari class eksekutif adalah E
- Fungsi diatas boleh ditambah sesuai dengan kebutuhan

29

Anda mungkin juga menyukai