You are on page 1of 17

Perancangan dan Pemrograman Berorientasi Objek

Nama : Jikky

Nim : 211110217

Pengenalan PBO....................................................................................................................................1
Kelas dan Objek.....................................................................................................................................2
Kelas vs Objek........................................................................................................................................2
4 Pilar OOP............................................................................................................................................4
Inheritance............................................................................................................................................5
Polymorphism.......................................................................................................................................8
Abstraction..........................................................................................................................................10
Exceptions...........................................................................................................................................13
Assertions............................................................................................................................................13
Exception Handling..............................................................................................................................14
Try except............................................................................................................................................15
Catch....................................................................................................................................................15
Jenis-Jenis Error...................................................................................................................................17

Pengenalan PBO

Terdapat 3 paradigmautama (mainstream) dalam pemrograman yakni:

 Procedural Programming (PemrogramanProsedural )menggunakan metode pemrograman


dengan mengeluarkan perintah yang akan di eksekusi oleh computer dari baris atas hingga
baris bawah, dimana semua data dan kode digabung menjadi satu bagian dalam satu
program.
 Functional Programming (PemrogramanFungsional )Adalah paradigm pemrograman yang
berkutat pada komputasi yang terjadi didalam fungsi matematis dan menghindari terjadinya
perubahan data. Fungsi matematis sendiri adalah sebuah hubungan antara input yang akan
mengembalikan output
 Object-Oriented Programming (PemrogramanBerorientasiObjek) Adalah sebuah paradigm
pemrograman yang menggunakan konsep objek dimana akan berisi data dalam bentuk yang
dikenal sebagai atribut (attributes), dan kode dalam bentuk yang dikenal sebagai metode
(methods).
Kelas dan Objek
ApaituKelas Dan Objek :
• Merupakan bagian dari encapsulation
• Kelas terdiri dari sejumlah variable, prosedur, fungsi, dan atribut
• Variabel didalam kelas diistilahkan sebagai Instant Variable
• Prosedur dan Fungsi di dalam kelas diistilahkan sebagai Method
• Atribut di dalam kelas diistilahkan sebagai Assesor dan Mutator
• Selain itu, terdapatistilah Constructor dan Destructor.
• Objek adalah representasi dari kelas, sehingga isi dari kelas dapat dimanfaatkan.
• Di dalam Visual Studio Code/ IDLE / PyCharm , 1 file .py dapat memuat 1 kelas atau banyak
kelas.
• Cara menjalankan file .py pada terminal : python <spasi><NamaFile> .py
• Misalkan nama file adalah index.py maka cara melihat output yang dihasilkan melalui
terminal command prompt :python index.py
• Di dalam pendefinisian kelas, instant variable, method, assesor, dan mutator, dapat
didefinisikan dengan public atau private.
• Dengan pendefinisian public, maka kelas, instant variable, method, assesor, dan mutator
dapat diakses dari luar kelas, sebaliknya dengan private, hanya dapat diakses dari kelasnya
sendiri.
• Pada Python, pendefinisian public ditulis mengikuti penamaan kelas, instant
variable/method/assessor/mutator sedangkan pendefinisian private ditulis dengan
menambahkan tanda garis bawah dua kali (__) di depan nama instant
variable/method/assessor/mutator.
Misalkan nama variable adalah mahasiswa, maka mahasiswa merupakan variable public dan
__mahasiswa merupakan variable private.

Kelas vs Objek
• Kelas / “Blueprint” : kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk
suatu tujuan tertentu dimana didalamnya terdapat sekumpulan atribut dan method.
Contoh : Class Person, Vehicle, Tree, Fruit dan lainnya.

• Objek :bentuk representasi dari sebuah kelas, membungkus data dan fungsi bersama menjadi
suatu unit atau entitas dalam sebuah program komputer.

Contoh : Dari Class Fruit kita dapat membuat object Mangga, Pisang, Apel, dan lainnya .

Atribute
• Atribut lebih sering disebut juga anggota atau ciri khas.

• Atribut biasanya juga dilengkapi dengan jenis atribut tersebut seperti string, int, float dan
lain sebagainya.

Method
• Metode lebih menjelaskan berupa aksi apa yang bisa dilakukan objek tersebut.
• Metode biasanya dilengkapi dengan parameter. Metode tersebut ada yang bisa
mengembalikan nilai dan ada juga yang tidak kembalikan nilai kepada pengguna.

Contoh Kelas dan Objek

• Pada contoh, dapat dilihat bahwa fungsi nama Lengkap didefinisikan dengan private,
sehingga fungsi tersebut hanya dapat diakses di dalam lingkungan kelas Testing.
• Sedangkan prosedur cetak Nama didefinisikan dengan public, sehingga prosedur tersebut
dapat diakses dari luar kelas Testing.
• Fungsi nama Lengkap dan prosedur cetak Nama disebut sebagai Method.
• Apabila memanggil fungsi__namaLengkap dari luar kelas Testing, maka menghasilkan
output error seperti berikut:
4 Pilar OOP
Encapsulation
Apa itu Encapsulation:
• Encapsulation / Enkasulapsi adalah konsep tentang pengikatan data atau metode berbeda yang
disatukan atau “dikapsulkan” menjadi satu unit data.
• Encapsulation dapat memudahkan dalam pembacaan kode karena informasi yang disajikan
tidak perlu dibaca secara rinci dan sudah merupakan satu ke satuan.
• Konsep kerja dari enkapsulasi ialah akan melindungi sebuah program dari akses atau pun
intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan
program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.

Manfaat Encapsulation :
1. Penyembunyian Informasi
2. Modularitas
3. Peningkatan Fleksibilitas
4. Dapat digunakan kembali
5. Kode pengujian yang mudah

Contoh Encapsulation :
Protected Attribute

Atribut protected hanya dapat diakses dari method class. Dengan kata lain, mereka tidak dapat diakses
dari luar class. Di Python tidak memiliki konsep atribut protected. Dengan kata lain, semua atribut
dapat diakses dari luar class.

Kita dapat mendefinisikan atribut protected dengan mengawali satu garis bawah (_)

Name Mangling / Private

Name Mangling pada Python ditandai dengan awalan atribut memakai garis bawah ganda (__).
Dengan demikian, kita tidak dapat mengakses __attribute langsung dari luar kelas seperti

Tetapi kita bisa mengaksesnya dengan nama “_class__attribute”

Inheritance
Apa itu Inheritance
Inheritance merupakan suatu konsep dalam OOP (Object-Oriented Programming) yang digunakan
dengan menggunakan dimana suatu objek dapat memiliki hirarki, yang berisikan class dimana class
tersebut memiliki atribut dan juga properti, sehingga setiap class yang ada dalam objek merupakan
subclass dari objek tersebut. Bisa dikatakan seperti Pohon Keluarga

Contoh Inheritance dalam Kehidupan Sehari-hari


Buah apel yang berbuah besar dan manis disilangkan dengan buah apel yang berukuran kecil dan
manis, maka benih yang dihasilkan ketika sudah tumbuh besar akan menghasilkan buah :

1. Besar dan Manis


2. Kecil dan Manis
Dimana sifat tersebut merupakan turunan dari sifat kedua orang tuanya yaitu besar dan manis serta
kecil dan manis

Mengenal Superclass dan Subclass


Superclass atau yang dapat juga disebut dengan Parent Class merupakan induk dari class turunan

Subclass atau yang biasa disebut dengan Child Class merupakan anak dari superclass yang mampu
menurunkan semua sifat yang dimiliki dari parent class
Contoh Superclass dan Subclass
 Superclass :
Computer Parts : Nama, Jenis, Pabrikan, Harga

 Subclass :
Processor : Jumlah Core, Speed

RAM : Kapasitas

Dari contoh diatas kita mengetahui bahwa Processor dan juga RAM merupakan Subclass dari
Computer Parts dimana setiap subclass memiliki karakteristik yang berbeda seperti yang telah disusun

Contoh Penggunaan 2 Superclass dalam 1 Subclass

- Sebuah objek yang dibuat dengan rancangan agar dapat discan dan juga hasil scan tersebut
dikirim melalui fax dalam bentuk dokumen, program tersebut kemungkinan terbuat dari 2
superclass yaitu Scanner dan Faxer
Terdapat resiko ketika mengunakan sebuah subclass mewariskan fungsi dari 2 superclass berbeda

- Pemrograman yang ribet atau merepotkan developer


- Tidak semua Bahasa pemrograman meng-support penggunaan 2 superclass dalam 1 subclass
(biasanya Java)
Contoh Resiko Penggunaan 2 Superclass dalam 1 Subclass

- Ketika kita ingin merancang sebuah objek kendaraan amfibi yang mampu berjalan didarat dan
juga di air, maka kita dapat menggabungkan 2 Superclass yaitu Motor dan juga Kapal.
- Ketika kita memanggil fungsi Maju, maka kita tidak akan mengetahui apa yang akan terjadi
karena setiap Superclass memiliki fungsi Maju, Jadi program tidak akan mengetahui maju
mana yang harus dijalankan

Contoh Pemrograman Inheritance


Polymorphism
Apaitu Polymorphism
• Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu
tipe argumen.
• Polymorphism adalah konsep yang memungkinkan untuk dapat digunakannya pada interface
yang sama untuk memerintah suatu objek agar melakukan suatu tindakan yang mungkin
secara prinsip sama tetapi memiliki proses yang berbeda.
• Pada Bahasa lain, seperti C++, konsep ini sering disebut dengan method overloading.
• Yang mana, Python tidak memiliki penanganan khusus terhadap hal tersebut.
• Hal ini disebabkan karena Python merupakan suatu Bahasa pemrograman yang bersifat
dynamic typing.
• Dynamic Typing adalah konsep bahasa pemrograman dimana bahasa tersebut tidak perlu
melakukan deklarasi tipe terlebih dahulu.
• Overloading :Penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
• Overriding :Terjadi ketika deklarasi method subclass dengan nama method yang sama dengan
method dari kelas induknya.
• Bisa diartikan sebagai banyak bentuk, yang artinya kita dapat menimpa (override), suatu
method yang berasal dari kelas induk (super class) dimana objek tersebut diturunkan,
sehingga memiliki perilaku (behaviour) yang berbeda.

Pentingnya Polymorphism
• Mempermudah kita menggunakan kelas – kelas yang telah kita buat (sebagai kelas induk) dan
membuat kelas – kelas baru berdasarkan kelas induk tersebut dengan karakteristik yang lebih
khusus dari perilaku umum yang dimiliki kelas induk.
• Memudahkan kita membuat superclass yang hanya mendefinisikan perilaku (behaviour)
namun tidak memberikan implementasi dari metode – metode yang telah ada.
• Dengan memahami dan menerapkan polymorphism, kita dapat menghindari kegiatan
duplikasi objek. Kita dapat menciptakan kelas baru dari kelas yang sudah ada, sehingga kita
tidak perlu menuliskan kode dari nol ataupun mengulanginya dari awal, namun tetap dapat
melakukan penambahan atribut dan/atau method unik dari kelas itu sendiri. Konsep umum
lain dalam pemahaman proses polymorphism itu sendiri adalah satu interface dengan banyak
aksi.

Tipe – Tipe Polymorphism


 Static (Trivial)
Disebut juga sebagai Trivial Polymorphism merupakan sebuah function overloading
(penggunaan kembali nama fungsi yang sama tetapi memiliki argumen yang berbeda) yang
terbagi ke dalam 3 signature yakni :
o Jenis Array
o Letak Array
o Tipe Array

 Dynamic Polymorphism
Memiliki nama lain sebagaiTrue Polymorphism yang merupakan function overloading
(sebuah fungsi kelas turunan yang memiliki nama, return type argument function yang sama
dengan fungsi dalam kelas induk) yang menggunakan virtual method.

Perbedaan Static dan Dynamic Polymorphism


 Polymorphism statis biasanya hanya terjadi dalam satu kelas saja sedangkan
polymorphism dinamis terjadi pada saat ada hubungan dengan kelas lain, seperti
inheritance

Overloading
• Metode overloading mengizinkan sebuah kelas untuk memiliki sekumpulan fungsi dan nama
yang sama dan parameter yang berbeda.
• Berkaitan dengan hal diatas, Python tidak mengizinkan pendeklarasian fungsi (baik pada
kelas maupun tidak) dengan nama yang sama
• Untuk mengimplementasikan method overloading pada Python, kitadapat menggunakan
teknik yang dikenal dengan function default parameters.

Contoh fungsi Built-in Polymorphism built-in

• Pada potongan kode di atas, fungsi len() (fungsi sudah ada di python) telah mengalami
perubahan bentuk dari pemanggilan pertama sebagai string menjadi list

.
Contoh fungsi User-defined Polymorphism

• Pada contoh kasus diatas, polymorphism terjadi ketika kita telah mendeklarasikan add namun
di return menjadi perhitungan yang lain.

Abstraction
Apaitu Abstraction
 Abstraction adalah salah satu dari 4 pilar OOP yang bertujuan untuk mengaburkan sebagian/
seluruh property dan method dalam class.
 Namun “mengaburkan” disini bukan berarti atribut tersebut menjadi tidak terlihat atau tidak
penting. Malahan sebaliknya.
 Sebuah property/ method yang di-“abstrak”-an akan menjadi atribut wajib untuk class
turunannya.
 Contoh :
- Sebuah bangun datar segiempat yang akan dihitung luas dan kelilingnya, pastinya wajib
memiliki minimal 1-2 sisi. Maka atribut sisi tadi merupakan property abstract dari
bangun datar segiempat tersebut.

Kenapa Abstraction dibuat?


• Kelas ABSTRACT adalah kelas “blueprint” atau “cetakan” untuk kelas turunannya.
• Kelas ABSTRACT dibuat sebagai ketentuan/ patokan bagi kelas turunannya.

Kapan Abstraction dipakai?


Kelas ABSTRACT digunakan saat sebuah kelas induk ingin menetapkan/ mewajibkan / menyamakan
beberapa atribut, property, dan method yang bersifat umum untuk kelas turunannya.

Contoh: Setiap tombol pasti memiliki fungsi atau keluaran berbeda. Selain memilikifungsi yang
berbeda-beda, ada pula warna, ukuran, bentuk, dan sebagainya yang mungkin berbeda pula.

Namun ada 1 hal yang menyamakan semua tombol, yaitu bisa di tekan atau di klik.
Cara membuat class Abstract
Pada dasarnya, Python tidak menyediakan keyword khusus untuk mendeklarasikan sebuah kelas
Abstract. Oleh sebab itu, kita harus mengimport library Python yang bernama “abc” untuk dapat
menerapkan Abstraction pada class.

 ABC = Abstract Base Class


Syntax peng-import-an:from abcimport ABC

fromabcimportABC import library


classSegiEmpat(ABC) : KelasSegiEmpatturunanke
basis abstrak
    pass
Abstract Property
Sebuah property dalam class abstract bisa dideklarasikan menjadi properti abstract dengan cara
mendefinisikan decorator @abstractproperty sebelum/ diatas property yang akan di abstrak-an.

Note : jangan lupa diimport terlebih dahulu abstract property dengan syntax

from abc import ABC, abstractproperty


Contoh Abstrak Property:

Parent Class: Child Class:


fromabcimportABC, classPersegi(SegiEmpat) :
abstractproperty     sisi1, sisi2 = 0, 0

    defcetakSisi(self, s1) :
classSegiEmpat(ABC) :
        print("sisi1 awal=", Persegi.sisi1)
    @abstractproperty
        Persegi.sisi1 = s1
    defsisi1(self) :
        print("sisi1 akhir =", Persegi.sisi1)
        pass
persegi = Persegi()
    @abstractproperty
print("sisi1 awal =", persegi.sisi1)
    defsisi2(self) :
persegi.cetakSisi(20)
        pass

Output :
sisi1 awal (cetak dari luar kelas) = 0

sisi1 awal = 0

sisi1 akhir = 20
Abstract Method:
Sama seperti property, method abstract merupakan method yang wajib dimiliki/dideklarasikan oleh
semua kelas-kelas turunan dari parent class abstract nya.

Sebuah method dalam class abstract bisa dideklarasikan menjadi method abstract dengan cara
mendefinisikan decorator @abstractmethod sebelum/diatas method yang akan di abstrak-an.
Syntax untukmengimport library abstract secaralengkap :

fromabcimportABC, abstractproperty,abstractmethod

ContohAbstrak Method:

Parent Class: Child Class :


fromabcimportABC, classPersegi(SegiEmpat) :
abstractproperty,abstractmethod
    sisi1, sisi2 = 0, 0

classSegiEmpat(ABC) :     defcetakSisi(self, s1) :

    @abstractproperty         print("sisi1 awal =",


Persegi.sisi1)
    defsisi1(self) :
        Persegi.sisi1 = s1
        pass
        print("sisi1 akhir =",
    @abstractproperty Persegi.sisi1)

    defsisi2(self) :     defluas(self, s1, s2):

        pass         returnsuper().luas(s1, s2)

    @abstractmethod persegi = Persegi()

    defluas(self, s1, s2) : print("sisi1 =", persegi.sisi1)

        print("Luas =", s1*s2) print("sisi2 =", persegi.sisi2)

Output : sisi1 = 0

sisi2 = 0

Luas = 24
Exceptions
Apa itu Exceptions
Exception adalah setiap kejadian yang tidak diharapkan, dan kondisi yang tidak umum yang mungkin
terjadi pada saat run – time program.

Exception terjadi ketika program menemui kesalahan saat instruksi program dijalankan.

Contoh exception

Exceptions python
• Python menyediakan duafitur yang sangat penting untuk menangani kesalahan tak
terduga dalam program Python anda dan untuk menambahkan kemampuan debugging
di dalamnya:

– Exception Handling atau PenangananPengecualian: Ini akan dibahas setelah


ini.

– Assertions Exception adalah sebuah peristiwa, yang terjadi selama


pelaksanaan program yang mengganggu aliran normal instruksi program.

Assertions
• Assertions adalah sanity-check yang dapat Anda nyalakan atau matikan ketika Anda
selesai dengan pengujian program
• Assertions mirip seperti dengan error yang memberikan informasi kesalahan yang
seharusnya tidak terjadi.
• Bedanya assertions hanya ada di mode debug, Ketika sudah sudah melakukan deploy
pada mode production,maka kesalahan ini akan diabaikan.

Exception Handling
Apaitu Exception Handling
Exception handling adalah suatu penanganan saat terjadi kesalahan pada sebuah program akan
terjadi suatu bentuk penanganan yang dilakukan oleh kita dan sering disebut dengan exception
handling. Adanya kesalahan / error yang terjadi pada program pada saat runtime dapat
menyebabkan program berhenti. 

Fungsi Exception Handling


Fungsi dari exception handling adalah untuk mengatasi suatu kesalahan inputan user dengan suatu
metode kita akan memberikan pesan pada saat user salah memasukan inputan dengan ini program
tidak akan tertutup dengan sendirinya.
Try except
Kegunaan Try Except
Try itu untuk mencoba atau menguji kesalahan kode.

Try ini untuk mengeplementasikan bagaimana python mencoba melewati error yang ditemukan dan
try ini tidak menghentikan program yang berjalan.

ContohTry

Catch
• Catch digunakan untuk menentukkan tipe eksepsi yang akan ditangkap.
• Try catch seperti namanya try mencoba dan catch adalah untuk menangkap
• Mencoba apa? Mencoba untuk menjalankan sebuah blok kode.
• Menagkap apa? Menangkap error misalnya error tersebut terjadi.

Contoh Try catch


Perbedaan try catch sama if else
Try catch di gunakan untuk situasi dimana blok kode melakukan sesuatu yang di luar normal
atau unexpected. Jadi contohnya misalnya server tiba-tiba down dan tidak bisa memanggil
database atau file yanng seharusnya ada tiba-tiba tidak ada.

Contoh if else
Jenis-Jenis Error
• Runtime error =>terjadi Ketika program melakukan perintah yang tidak dapat di selesaikan
• Resource error =>terjadi saat nilai variable yang kita masukkin terlalu besar sehingga
membuatnya melebihi batas maksimal progman..
• Arithmetic error =>terjadi saat mengerjakan perhitungan yang gak logis yang di masukan
oleh kita.
• Index error =>terjadi saat daftar index yang di luar jangkauan
• Compilation error =>terjadi saat proses di mana program yang ditulis dalam bahasa tingkat
tinggi dikonversi kebentuk yang bisa di baca sama mesin. Error ini relative lebih mudah untuk
ditelusuri (trace) karena compiler akan memberitahu pada baris program yang mana
terdapateror. Example : lupa membubuhkan notasi titik koma (;) pada akhir statement.

You might also like