You are on page 1of 14

DAFTAR ISI

Introduction OOP..................................................................................................................................2
Encapsulation........................................................................................................................................6
Polymorphism.......................................................................................................................................7
Abstraction............................................................................................................................................7
Inherintace............................................................................................................................................8
Exception.............................................................................................................................................10
The iterator pattern (1-3)....................................................................................................................12
Introduction OOP
OOP adalah singkatan dari Object Oriented Programing, yaitu suatu metode pemograman yang fokus
atau berorientasi pada objek. Tujuan dari dirancangnya OOP adalah membantu para developer dalam
mengembangkan model yang sudah ada di kehidupan sehari-hari.

 Object
Secara umum Segala sesuatu yang dapat kita rasakan dan dimanipulasi, tetapi Secara
pemrograman Model yang dapat melakukan sesuatu hal yang memiliki sekumpulan data
dengan perilaku terkait.
 Oriented
Oriented yang dikenal dalam pemogrman adalah cara pandang.
 Object Oriented Progrming
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. Keluaran dari tahap analisis adalah sekumpulan kebutuhan

 Object-Oriented Design (OOD)


Proses mengubah sekumpulan kebutuhan menjadi spesifikasi implementasi. Keluaran dari
tahap desain adalah spesifikasi implementasi (Design) berupa sekumpulan kelas dan tampilan
pemrograman. Desain dapat digambarkan dengan menggunakan UML (Unified Modeling
Language) khususnya Class Diagaram.

 Object-Oriented Programming (OOP)


Proses mengubah desain yang didefinisikan pada design menjadi sebuah program.

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 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 / “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.

 
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

 
 
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.

 4 Pilar dalam OOP

 Encapsulation
 Polymorphism
 Abstraction
 Inheritance
Encapsulation
Enkapsulasi atau pengubah akses adalah salah satu dari empat pilar utama dalam pemrograman
berorientasi objek. Enkapsulasi merupakan konsep fundamental pada pemrograman berorientasi objek
yang digambarkan sebagai suatu ide untuk membungkus data dan metode yang bekerja pada suatu
data di dalam suatu unit. Enkapsulasi betujuan untuk membatasi akses suatu variabel maupun metode
secara langsung
Enkapsulasi juga bertujuan untuk mencegah perubahan / modifikasi data secara tidak sengaja.
Penerapan enkapsulasi bukan berarti variabel tidak dapat diubah sama sekali melainkan hanya dapat
di ubah dengan metode objek

 
Enkapsulasi disebut juga sebagai Access Modifiers adalah sebuah konspe di dalam pemrograman
berorientasi objek di mana kita dapat mengatur/merubah dan memodifikasi hak akses suatu variabel,
atribut, metode dan fungsi pada sebuah kelas. Pada konsep ini kita dapat mendefinisikan mana
variabel, atribut, metode dan fungsi yang boleh diakses secara terbuka dan mana yang bisa diakses
secara terbatas.
Enkapsulasi hampir ada disetiap bahasa pemrograman yang mendukung orientasi objek. Enkapsulasi
sering ditemui dalam bahasa pemrograman berorientasi objek seperti Java, C++, PHP, Python dan lain
– lain.
Enkapsulasi yang tersedia di dalam Python ada 3 jenis :
1. Public
2. Protected
3. Private

Encapsulation: public
Variabel atau atribut yang memiliki hak akses publik dapat diakses dari mana saja, baik dari luar kelas
maupun dari dalam kelas itu sendiri.
Encapsulation: protected
Variabel atau atribut yang memiliki hak akses protected hanya bisa diakses secara terbatas oleh
dirinya sendiri (yaitu di dalam internal kelas), dan juga dari kelas turunannya.
Encapsulation: private
Modifier selanjutnya adalah private. Setiap variabel di dalam suatu kelas yang memiliki hak akses
private maka ia hanya bisa diakses di dalam kelas tersebut. Tidak bisa diakses dari luar bahkan dari
kelas yang mewarisinya. Untuk membuat sebuah atribut menjadi private, kita harus menambahkan
dua buah underscore sebagai prefix nama atribut.

Polymorphism
Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu tipe
argumen. Polymorphism adalah konsep yang memungkinkan 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 memilki penanganan khusus terhadap hal tersebut. Hal ini disebabkan karena python
merupakan suatu Bahasa pemograman yang bersifat dynamic typing.

Dynamic Typing adalah konsep bahasa pemograman dimana bahasa tersebut tidak perlu melakukan
deklarasi tipe terlebih dahulu. 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 berada (beda parameter).
Overriding : Terjadi ketika deklarasi method subclass dengan nama method yang sama dengan
method dari kelas induknya.

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 wajib untuk class
turunannya.
Contoh : Sebuah bangun datar segi empat yang akan dihitung luas dan kelilingnya, pastinya wajib
memiliki minimal 1-2 sisi. Maka 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 dan Method dibuat sebagai ketentuan/ patokan bagai kelas turunannya.

Cara membuat abstact


Pada dasarnya, Python tidak menyiadakan keyword khusu 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

Inherintace
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
Konsep pewarisan adalah konsep dimana sebuah kelas atau objek mewariskan sifat dan perilaku
kepada kelas lainnya.
Pengenalan pewarisan

 Kelas yang menjadi “pemberi waris” dinamakan kelas induk/kelas basis (superclass)
 Sedangkan kelas yang menjadi “ahli waris” dinamakan kelas turunan (subclass)
Cara membuat superclass
Cara membuat sama seperti membuat kelas biasa, karena pada dasarnya, semua kelas pada python
bisa menjadi kelas induk dari kelas turunan lainnya.

Keterangan: Kelas tersebut hanya memiliki 2 atribut yakni nama dan asal serta memiliki satu buah
tindakan yakni perkenalan()
Kita bisa membuat instance dari kelas Masyarakat seperti biasanya :

 
Ouput:

Caraa membuat subcllas

Kita akan membuat kelas turunan dari kelas Masyarakat. Seperti yang sudah kita bahas sebelumnya,
kita tinggal membuat dua buah kelas yaitu kelas Pemadam kebakaran dan Polisi, yang mana keduanya
akan mewarisi kelas Masyarakat. Kita bisa membuat kelas turunan dengan cara mengirimkan kelas
induk sebagai parameter saat mendefinisikan kelas.

 
Exception
Kesalahan adalah keadaan dimana Python menemukan kesalahan dalam baris kode yang sedang
jalankan. Kesalahan dalam Python akan memaksa program untuk berhenti dan menampilkan
penyebab kesalahan, jenis kesalahan dan lokasi baris kode kesalahan berada. Hal ini tentunya dapat
merugikan pihak pembuat kode maupun pengguna yang menggunakan program tersebut. Maka dari
itu, Python memperkenalkan konsep Exception.

Syntax error dan exeption


Terdapat dua hal Python menjelaskan kesalahan, yakni Syntax Error dan Exception. Syntax Error
adalah suatu keadaan dimana baris kode dalam program berjalan teridentifikasi mengalami kesalahaan
dalam penulisan. Exception adalah keadaan dimana baris kode dalam program berjalan sudah benar,
namun ditemukannya kesalahan teknis seperti kesalahan nama function, library dan hal lainnya.
Langkah penelusuran kesalahan yang disediakan oleh Python untuk membantu pengguna
mengidentifikasi dan menangani kesalahan pada kode program berjalan dan tentunya hal ini tidak
terduga pengguna sebelumnya.
Exception Python
Python menyediakan dua fitur yang sangat penting untuk menangani kesalahan tak terduga dalam
program Python dan menambahkan kemampuan Debugging yakni :

 Exception Handling, dimana Python bisa melakukan pengecualian kesalahan pada baris kode
program berjalan yang salah dan melanjutkan pembacaan kode di baris selanjutnya tanpa
harus melakukan pemberhentian program berjalan.
 Assertions Exception merupakan penanganan peristiwa, yang terjadi selama pelaksanaan
program. Hal ini bertindak seperti if, hanya saja ketika mencapai tindakan tersebut maka akan
dianggap error dan program akan langsung berhenti.

Contoh penggunaan exception


1. pertama kita membuat sebuah functon seperti gambar di bawah ini:

2. kemudiaan kita memasukan angka 10 kedalam function tersebut


 

3. dan hasilnya

Tyr dan except


Di dalam pesan yang ditampilkan oleh Python, Python menyatakan bahwa kita salah memasukkan
input yang tidak sesuai dengan tipe data yang sudah dirancang sebelumnya di dalam kalimat
“ValueError: invalid literal for int() with base 10”. Disinilah kita bisa menambahkan instruksi try dan
except untuk mengimplementasikan bagaimana Python mencoba melewati error yang ditemukan dan
tidak langsung menghentikan program berjalan.
Jenis-jenis error
Terdapat berbagai macam error yang dapat diidentifikasi oleh Python dan berikut adalah jenis – jenis
error yang biasa ditemukan pada penggunaan Python :

 ImportError => Mengidentifikasi sebuah kesalahan import yang terjadi pada program berjalan
 IndexError => Python menemukan kesalahan bahwa terdapat array terindex tidak dapat
ditemukan di program berjalan
 NameError => Adanya kesalahan penggunaan variable yang tidak pernah dideklarasikan pada
program berjalan
 ValueError => Sebuah fungsi yang dipanggil saat kita mendeklarasikan nilai dengan tipe yang
sesuai namun nilainya yang salah.
 TypeError => Fungsi yang dipanggil menggunakan tipe nilai yang salah
 SyntaxError => Ditemukannya kesalahan penulisan baik function, property maupun atribut
dalam tingkatan huruf.
 AttributError => Terjadi ketika ditemukan adanya kegagalan referensi atribut atau penugasan
 SystemError => Interpreter menemukan masalah internal, yakni Python tidak bisa
menjalankan program
The iterator pattern (1-3)
Apa itu iterator pattern
Itereator pattern merupakan salah satu design pattern yang tergolong ke dalam behavioral pattern.
Itereator pattern ini digunakan dalam mengakses sekumpulan objek tanpa menyikap struktur di
dalamnya. Pattern ini mengambil alih mekanisme iterasi ke dalam kelas iterator.

Iterator pada python


Iterrator di Python merupakan suatu objek yang umumnya dapat dilakukan iterasi atau looping. Objek
ini akan mengembalikan data, yang dapat dilakukan satu per satu waktu. Secara teknis, sebuah iterator
adalah ibjek yang mengimplementasikan protokol iterator, yang terdiri dari metode __iter__() dan
__next__().
Itarable
Iterable adalah objek yang dapat diulang dengan bantuan for loop. Iterable juga sebuah container yang
memiliki data dan nilai yang dapat diulang untuk mengambil nilai dari masing-masing elemen. Suatu
objek dikatakan iterable jika dari objek tersebut bisa dibuat menjadi iterator.
Fungsi iter
Fungsi iter() menerima dua masukan parameter berikut:

 object – objek yang hendak dibuat iteratornya seperti list, tuple, set, dan lain-lain.
 sentinel (opsional) – karakter atau nilai yang digunakan untuk mewakili akhir dari suatu
urutan (sequence)
List
List adalah struktur data pada python yang mampu menyimpan lebih dari satu data, seperti array.
Set
Set adalah salah satu tipe data di Python yang tidak berurut (unordered). Set memiliki anggota yang
unik (tidak ada duplikasi). Jadi misalnya kalau kita meletakkan dua anggota yang sama di dalam set,
maka otomatis set akan menghilangkan yang salah satunya
Dictionary
Dictionary Python berbeda dengan List ataupun Tuple. Karena setiap urutanya berisi key dan value.
Setiap key dipisahkan dari value-nya oleh titik dua (:), item dipisahkan oleh koma, dan semuanya
tertutup dalam kurung kurawal. Dictionary kosong tanpa barang ditulis hanya dengan dua kurung
kurawal, seperti ini: {}.

Comprehension
Merupakan syntax yang mentransformasi filter dari objek iterator menjadi sebuah perintah yang
singkat. List Comprehension digunakan untuk membuat daftar baru dari iterable lain seperti tupel,
string, array, daftar, dll. List ini terdiri dari ekspresi yang dieksekusi untuk setiap elemen bersama
dengan loop for untuk mengulangi setiap elemen.
Syntax list comprehension

 Expression : data Member Objek itu sendiri, dapat berupa metode, atau expresi yang valid
yang memiliki nilai.
 Member : objek atau nilai dari list atau iterable.
 Iterable : sebuah list, set, sequence, generator, atau objek yang dapat mengembalikn element
pada satuan waktu.
 Kondisi dari dari iterable

Generator
Generator merupakan cara sederhana untuk membuat iterator. Metode __Iter__(), __next__() dan
State StopIteration sudah di tangani secara automatis
Generator adalah fungsi yang mengembalikan sebuah objek perulangan yang ada. Objek tersebut
nantinya dapat melakukan perulangan sesuai dengan kondisi diberikan pada fungsi tersebut. (satu nilai
per satu waktu)
Pembuatan iterator dengan generator sama halnya dengan menggunaan fungsi, dimana ada statement
return akan di ganti dengan yield
Generator vs Functon
Fungsi generator berisi satu atau lebih pernyataan yield. Pada saat dipanggil, fungsi generator akan
mengembalikan objek iterator, tapi tidak langsung dieksekusi. Metode __iter__() dan __next__()
sudah diimplementasikan secara otomatis. Jadi kita bisa langsung melakukan iterasi dengan fungsi
next().
Sekali fungsi menemui yield, fungsi akan pause dan nilai yang didapatkan saat ini akan dikembali
kepada pemanggil. Variabel lokal dan state-nya diingat untuk pemanggilan selanjutnya. Terakhir,
pada saat fungsi diterminasi atau sampai tujuan (dihentikan total), maka statement StopIteration akan
dipanggil secara otomatis.
 
Generator expresion
Sintaks dari generator expression mirip dengan list comprehension. Hanya saja tanda kurung siku “[]”
digantikan dengan tanda kurung biasan “( )”. Perbedaan utama antara list comprehension dengan
generator expression adalah, list comprehension langsung menghasilkan keseluruhan anggota list,
sedangkan generator expression menghasilkannya satu item per satu waktu.
Tipe seperti generator expression ini sering disebut tipe lazy (malas), karena hanya memproduksi item
pada saat diminta. Hal inilah yang menyebabkan generator expression lebih hemat memori ketimbang
list comprehension.
Coroutines
Coroutine merupakan fungsi yang eksekusinya dapat di pause/ dihentikan sementara pada suatu titik
tertentu, dan kapanpun dapat dilanjutkan dari titik perhentian terakhir. Penghentian tersebut dapat
dilakukan dengan keyword Yield.
Fitur Coroutine dapat digunakan untuk:

 Membuat sebuah fungsi yang memiliki satu atau lebih check point yang dapat dihentikan
sementara dan dapat dilanjutkan kembali dari check point terakhir dimana eksekusi tersebut
di hentikan.
 coroutine adalah fungsi yang dibagi menjadi banyak bagian, dan dapat mengeksekusi setiap
bagian dari coroutine saat menjalankan setiap iterasi dari for loop menggunakan fungsi
berikutnya.
Coroutine menyerupai generator, dengan perbedaan:

 Generator menghasilkan data


 Coroutine mengkonsumsi data

You might also like