I
Introduction OOP
A. Paradigma Pemrograman
Terdapat 3 paradigma utama (mainstream) dalam pemrograman yakni :
1. Procedural Programming (Pemrograman Prosedural)
2. Functional Programming (Pemrograman Fungsional)
3. Object-Oriented Programming (Pemrograman Berorientasi Objek)
B. Oriented :
Artinnya Cara Pandang
D. Class Diagram
A. Class diagram merupakan salah satu struktur diagram dari UML.
B. Digunakan untuk mengambarkan kelas dan hubungannya.
B. Kelas VS Objek
1. 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.
2. 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.
3. Atribute
a. Atribut lebih sering disebut juga anggota atau ciri khas.
b. Atribut biasanya juga dilengkapi dengan jenis atribut tersebut seperti string,
int, float dan lain sebagainya.
4. Method
a. Metode lebih menjelaskan berupa aksi apa yang bisa dilakukan objek tersebut.
b. Metode biasanya dilengkapi dengan parameter. Metode tersebut ada yang bisa me
ngembalikan nilai dan ada juga yang tidak kembalikan nilai kepada pengguna.
BAB
II
Inheritance
1. Pengertian 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
4. Kesimpulan
a. Inheritance merupakan Pewarisan dari induk (Parent Class) kepada anaknya (Child
Class)
b. Superclass merupakan induk sedangkan Subclass merupakan anak dari Superclass
c. Sebuah Subclass dapat mewarisi fungsi dari berbagai Superclass
BAB
III
Encapsulation
a. Pengertian Encapsulation (Pembungkusan)
Enkapsulasi atau pengubah akses adalah salah satu dari empat pilar utama dalam pemro
graman berorientasi objek.
Enkapsulasi merupakan konsep fundamental
pada pemrograman berorientasi objek yang digambarkan sebagai suatu ide untuk mem
bungkus data dan metode yang bekerja pada suatu data di dalam suatu unit.
Enkapsulasi betujuan untuk membatasi akses suatu variabel maupun metode secara lan
gsung
Enkapsulasi juga bertujuan untuk mencegah perubahan / modifikasi data secara tidak sen
gaja.
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 yan
g boleh diakses secara terbuka dan mana yang bisa diakses secara terbatas.
Enkapsulasi yang tersedia di dalam Python ada 3 jenis :
a. Public
Variabel atau atribut yang memiliki hak akses publik dapat diakses dari mana saja
, baik dari luar kelas maupun dari dalam kelas itu sendiri.
b. 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
c. Private
Modifier selanjutnya adalah private. Setiap variabel di dalam suatu kelas yang me
miliki 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 b
uah underscore sebagai prefix nama atribut.
Untuk apa accessor dan
mutator? Ia adalah sebuah fungsi yang akan dieksekusi ketika kita mengakses (aksesor) s
uatu atribut pada suatu kelas, atau fungsi yang dieksekusi ketika hendak mengatur (mut
ator) suatu atribut pada suatu kelas.
Untuk mendefinisikan accessor (getter), kita perlu mendefinisikan decorator
@property sebelum nama fungsi.
Sedangkan untuk mengatur mutator (setter), kita perlu mendefinisikan descriptor
@<nama-atribut>.setter.
d. Encapsulation : Conclusion
Dalam pemrograman python, kita bisa memanfaatkan fitur access modifier untuk mengenkapsul
asi sebuah kode program. Alias mengatur mana atribut yang boleh diakses dari luar, dan
mana atribut yang hanya konsumsi internal.
Sayangnya, kelemahan access modifier dalam python adalah:
1. Tidak ada atribut yang benar-benar public atau protected. Selama sebuah variabel ti
dak diawali dua buah underscore, maka ia bisa diakses dari mana pun.
2. Hal tersebut menjadikan konsep “protected”
modifier hanyalah sebuah convention atau kebiasaan saja, di
mana kalau kita mendefinisikan sebuah atribut yang diawali satu buah underscore,
maka kita seharusnya tidak mengakses atribut tersebut kecuali dari dalam kelas itu s
endiri atau dari kelas turunannya.
BAB
IV
Exception
1.Pengenalan Konsep Kesalahan
a. Kesalahan adalah keadaan dimana Python menemukan kesalahan dalam baris kode
yang sedang jalankan.
b. Kesalahan dalam Python akan memaksa program
untuk berhenti dan menampilkan penyebab kesalahan, jenis kesalahan dan lokasi
baris kode kesalahan berada.
c. Hal ini tentunya dapat merugikan pihak pembuat kode maupun pengguna yang men
ggunakan program tersebut.
d. Maka dari itu, Python memperkenalkan konsep Exception.
3.Exception
Langkah penelusuran kesalahan yang disediakan oleh Python
untuk membantu pengguna mengidentifikasi dan menangani kesalahan pada kode progr
am berjalan dan tentunya hal ini tidak terduga pengguna sebelumnya.
4.Exception phyton
Python menyediakan dua fitur yang
sangat penting untuk menangani kesalahan tak terduga dalam program Python
dan menambahkan kemampuan Debugging yakni :
a. Exception
Handling, dimana Python bisa melakukan pengecualian kesalahan pada bari
s kode program berjalan yang salah
dan melanjutkan pembacaan kode di baris selanjutnya tanpa harus melakuk
an pemberhentian program berjalan.
b. Assertions Exception merupakan penanganan peristiwa,
yang terjadi selama pelaksanaan program.
Hal ini bertindak seperti if, hanya saja ketika mencapai tindakan tersebut ma
ka akan dianggap error dan program akan langsung berhenti.
BAB
V
The iterator pattern (1)
1. Design Pattern
a. Merupakan suatu metode / konsep untuk menyelesaikan permasalahan-
permasalahan yang biasannya berulang atau memiliki pola dalam pengembangan su
atu software.
b. Pola dasar atau template
yang umum digunakan untuk menyelesaikan problem dimana pola tersebut sudah te
ruji kegunaannya.
c. Setiap pola
pada design pattern mengusulkan sekumpulan objek yang berinteraksi dengan cara t
ertentu untuk memecahkan masalah umum.
d. Salah satu penerapan design pattern yang popular di python, yaitu Iterator Pattern.
2. Iterator
a. Dapat diartikan sebagai perulangan
b. Dalam bahasa design pattern, iterator adalah objek dengan metode next() untuk
melanjutkan dan metode done() yang terakhir mengembalikan True jika tidak ada ite
m yang tersisa dalam urutan.
3. Iterator pada Phyton
a. Iterator di
Python merupakan suatu objek yang umumnya dapat dilakukan iterasi atau looping.
Objek ini akan mengembalikan data, yang dapat dilakukan satu per satu waktu.
b. Secara teknis, sebuah iterator adalah objek yang mengimplementasikan protokol ite
rator, yang terdiri dari metode __iter__() dan __next__()
c.
4. Iterable
a. Iterable adalah objek yang dapat diulang dengan bantuan for loop.
b. Iterable adalah sebuah container
yang memiliki data dan nilai yang dapat diulang untuk mengambil nilai dari masing-
masing elemen.
c. Suatu objek dikatakan iterable jika dari objek tersebut bisa dibuat menjadi iterator. C
th: list, tuple, string, dan lain-lain adalah iterable.
BAB
VI
The Iterator Pattern (2)
1. List
a. List adalah struktur data pada python
yang mampu menyimpan lebih dari satu data, seperti array.
b. Mengakses List dapat dilakukan dengan menggunakan index
2. 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
3. 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: {}.
4. Syntax List Comprehensions
a. Expression : data Member Objek itu sendiri, dapat berupa metode, atau expresi yang
valid yang memiliki nilai.
b. Member : objek atau nilai dari list atau iterable.
c. Iterable : sebuah list, set, sequence,
generator, atau objek yang dapat mengembalikn element pada satuan waktu.
d. Kondisi dari dari iterable
BAB
VII
The Iterator Pattern (3)
1. Generators
a. Kondisi dari dari iterable
b. Metode __Iter__(),
__next__() dan State StopIteration sudah di tangani secara automatis
c. Generator adalah fungsi yang mengembalikan sebuah objek perulangan yang ada. O
bjek tersebut nantinya dapat melakukan perulangan sesuai dengan kondisi diberikan
pada fungsi tersebut. (satu nilai per satu waktu)
d. Pembuatan
iterator dengan generator sama halnya dengan menggunaan fungsi, dimana ada stat
ement return akan di ganti dengan yield
2.Generators vs Function
a. Fungsi generator berisi satu atau lebih pernyataan yield
b. Pada saat dipanggil, fungsi generator akan mengembalikan objek iterator, tapi tidak l
angsung dieksekusi.
c. Metode __iter__() dan __next__() sudah diimplementasikan secara otomatis. Jadi kit
a bisa langsung melakukan iterasi dengan fungsi next().
d. Sekali fungsi menemui yield, fungsi akan pause
dan nilai yang didapatkan saat ini akan dikembali kepada pemanggil.
e. Variabel lokal dan state-nya diingat untuk pemanggilan selanjutnya.
f. Terakhir, pada saat fungsi diterminasi atau sampai tujuan (dihentikan total)
maka statement StopIteration akan dipanggil secara otomatis.
3. Generator Expression
a. Sintaks dari generator expression mirip dengan list
comprehension. Hanya saja tanda kurung siku “[ ]” digantikan dengan tanda kurung
biasan “( )”.
b. Perbedaan utama antara list comprehension dengan generator expression adalah,
list
comprehension langsung menghasilkan keseluruhan anggota list, sedangkan generat
or expression menghasilkannya satu item per satu waktu.
c. 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
4. Coroutines
a. Coroutine merupakan fungsi yang eksekusinya dapat di
pause/ dihentikan sementara pada suatu titik tertentu,
dan kapanpun dapat dilanjutkan dari titik perhentian terakhir.
b. Penghentian tersebut dapat dilakukan dengan keyword Yield.
c. 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 d
apat mengeksekusi setiap bagian dari coroutine saat menjalankan
setiap iterasi dari for loop menggunakan fungsi berikutnya.
d. Coroutine menyerupai generator, dengan perbedaan:
Generator menghasilkan data
Coroutine mengkonsumsi data