Anda di halaman 1dari 22

Mikroskil

Perancangan dan
Pemerograman
Berorientasi Objek

aditya Syahputr Sinaga


NIM = 211111597
Daftar ISI
Pengenalan PBO.................................................................2
Kelas dan Objek..................................................................4
ENCAPSULATION...........................................................6
Inheritance...........................................................................8
Polymorphism...................................................................10
Syntax error.......................................................................13
Abstraction........................................................................14
Exceptions.........................................................................17
Exception Handling..........................................................18
Catch.................................................................................19

1
Pengenalan PBO

Terdapat 3 paradigma utama (mainstream) dalam pemrograman yakni :


 Procedural Programming (Pemrograman Prosedural) menggunakan metode pemrograman dengan
mengeluarkan perintah yang akan dieksekusi oleh komputer dari baris atas hingga baris bawah, dimana
semua data dan kode digabung menjadi satu bagian dalam satu program.
 Functional Programming (Pemrograman Fungsional) Adalah paradigma 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 (Pemrograman Berorientasi Objek) Adalah sebuah paradigma 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).

Object Oriented Programming


Object:
Secara umum : Segala sesuatu yang dapat kita rasakan dan dimanipulasi.
Secara pemrograman : Model yang dapat melakukan sesuatu hal yang memiliki sekumpulan data dengan perilaku
terkait.
Oriented :
Cara Pandang
Object Oriented Programming:
Pemrograman dengan sudut pandang Model yang memiliki kumpulan data (Variable/ Property) dan berperilaku
(Metode).

Tahapan Pengembangan dengan Object Oriented


Object-oriented analysis (OOA)
- Proses melihat masalah, sistem, atau tugas dan mengidentifikasi objek dan interaksi antara objek tersebut.
- Tahap analisis adalah tentang apa yang dibutuhkan harus dilakukan (what needs to be done)
- Proses : Wawancara, diskusi dan analisa.
- Keluaran dari tahap analisis adalah sekumpulan kebutuhan.
Desain berorientasi objek (OOD) => how thing should be done
- Proses mengubah sekumpulan kebutuhan menjadi spesifikasi implementasi.
- Perancang harus memberi nama objek, mendefinisikan perilaku, dan secara formal menentukan objek mana
yang dapat mengaktifkan perilaku tertentu pada objek lain.
- Keluaran dari tahap desain adalah spesifikasi implementasi.
- Desain dapat menggunakan UML (Unified Modeling Language) khususnya class diagaram.
- Jika kita menyelesaikan tahap desain dalam satu langkah, kita akan mengubah persyaratan yang ditentukan
selama analisis berorientasi objek menjadi satu set kelas dan antarmuka yang dapat diimplementasikan dalam
(idealnya) bahasa pemrograman berorientasi objek apa pun.

2
Object-Oriented Programming (OOP) => what customer want
- Proses mengubah desain yang didefinisikan pada design menjadi sebuah program.

Unified Modeling Language (UML)

Class Diagram
• Class diagram merupakan salah satu struktur diagram dari UML.
• Digunakan untuk mengambarkan kelas dan hubungannya.
• Contoh class Diagram

3
Kelas dan Objek
Apa itu Kelas 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, terdapat istilah 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 .

4
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 namaLengkap didefinisikan dengan private, sehingga fungsi
tersebut hanya dapat diakses di dalam lingkungan kelas Testing.
• Sedangkan prosedur cetakNama didefinisikan dengan public, sehingga prosedur tersebut dapat diakses dari
luar kelas Testing.
• Fungsi namaLengkap dan prosedur cetakNama disebut sebagai Method.
• Apabila memanggil fungsi __namaLengkap dari luar kelas Testing, maka menghasilkan output error seperti
berikut:

4 Pilar dalam OOP


• Inheritance
5
• Polymorphism
• Abstraction
• Encapsulation

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 kesatuan.
• konsep kerja dari enkapsulasi ialah akan melindungi sebuah program dari akses ataupun 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 :

Output
Output

6
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”

7
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 mengsupport 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 diair,
maka kita dapat menggabungkan 2 Superclass yaitu Motor dan juga Kapal.
8
- 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

Output

9
Polymorphism
Apa itu 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.
• Adalah suatu objek yang dapat memiliki berbagai bentuk, sebagai objek dari kelas sendiri maupun objek dari
kelas induknya.
• 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
10
Tipe Array

 Dynamic Polymorphism
Memiliki nama lain sebagai True Polymorphism yang merupakan function
overloading (sebuah fungsi kelas turunan yang memiliki nama, return type argumen
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, kita dapat menggunakan teknik yang
dikenal dengan function default parameters.

Contoh fungsi Built-in Polymorphism built-in

• Pada potongan kode diatas, 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.
11
12
Syntax error
• Syntax Error Adalah kesalahan yang disebabkan oleh kesalahan tata cara
penulisan tanda baca, kesalahan pemakaian operator dan nilai Kesalahan
jenis ini akan dengan mudah dideteksi oleh compiler.

• Kesalahan adalah keadaan dimana Python menemukan kesalahan dalam


baris kode yang sedang jalankan.

Contoh syntax error

13
Abstraction
Apa itu 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 segi empat yang akan dihitung luas dan kelilingnya, pastinya wajib memiliki
minimal 1-2 sisi. Maka atribut sisi tadi merupakan property abstract dari bangun datar segi empat 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 memiliki fungsi 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 abc import ABC

from abc import ABC import library


class SegiEmpat(ABC) : Kelas SegiEmpat turunan
kelas basis abstrak
    pass

14
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 abstractproperty dengan syntax

from abc import ABC, abstractproperty

Contoh Abstrak Property:

Parent Class: Child Class:


from abc import ABC, class Persegi(SegiEmpat) :
abstractproperty     sisi1, sisi2 = 0, 0
    def cetakSisi(self, s1) :
class SegiEmpat(ABC) :
        print("sisi1 awal =", Persegi.sisi1)
    @abstractproperty
        Persegi.sisi1 = s1
    def sisi1(self) :
        print("sisi1 akhir =", Persegi.sisi1)
        pass
persegi = Persegi()
    @abstractproperty
print("sisi1 awal =", persegi.sisi1)
    def sisi2(self) :
persegi.cetakSisi(20)
        pass
print("sisi1 akhir =", persegi.sisi1)

sisi1 awal (cetak dari luar kelas) = 0


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

15
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 untuk mengimport library abstract secara lengkap :

from abc import ABC, abstractproperty, abstractmethod

Contoh Abstrak Method:

Parent Class: Child Class :


from abc import ABC, class Persegi(SegiEmpat) :
abstractproperty, abstractmethod
    sisi1, sisi2 = 0, 0

class SegiEmpat(ABC) :     def cetakSisi(self, s1) :

    @abstractproperty         print("sisi1 awal =",


Persegi.sisi1)
    def sisi1(self) :
        Persegi.sisi1 = s1
        pass
        print("sisi1 akhir =",
    @abstractproperty Persegi.sisi1)
    def sisi2(self) :     def luas(self, s1, s2):
        pass         return super().luas(s1, s2)
    @abstractmethod persegi = Persegi()
    def luas(self, s1, s2) : print("sisi1 =", persegi.sisi1)
        print("Luas =", s1*s2) print("sisi2 =", persegi.sisi2)
persegi.luas(3, 8)

Output : sisi1 = 0
sisi2 = 0
Luas = 24

16
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 tejadi ketika program menemui kesalahan saat instruksi program dijalankan.
Contoh exception

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

– Exception Handling atau Penanganan Pengecualian:Ini akan dibahas habis slide 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.

17
Exception Handling
Apa itu 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 bagai mana python mencoba melewati error yang ditemukan dan try ini tidak
menghentikan program yang berjalan.

Contoh Try

18
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 donw dan tidak bisa memanggil database atau file
yanng seharusnya ada tiba-tiba tidak ada.

19
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
ke bentuk yang bisa di baca sama mesin. Error ini relatif lebih mudah untuk ditelusuri (trace) karena compiler
akan memberitahu pada baris program yang mana terdapat eror.
• EX: lupa membubuhkan notasi titik koma (;) pada akhir statement.
20
21

Anda mungkin juga menyukai