Tugas Coding Kedua (Semester 2) Kelvin Terrence XI TJKT

PETA KONSEP BAB 3



OBJECT ORIENTED PROGRAMMING  

Pemrograman Berbasis Objek (PBO) atau Object-Oriented Programming (OOP) merupakan paradigma pemrograman yang mengorganisasi kode ke dalam unit-unit logis yang disebut objek, yaitu instansiasi dari class.

1. Konsep Dasar OOP >

Konsep ini diperkenalkan pertama kali oleh Alan Kay pada 1960-an dan kemudian dipopulerkan oleh bahasa pemrograman seperti Smalltalk, C++, dan Java (Kay, 2003). OOP dirancang untuk meningkatkan modularitas, code reuse, serta manajemen kompleksitas dalam pengembangan perangkat lunak skala besar (Gamma et al., 1995).

> Pilar OOP >

1. Abstraksi = 

Abstraksi dalam pemrograman berorientasi objek (OOP) merupakan teknik penyederhanaan kompleksitas dengan menekankan pada fungsionalitas esensial sambil menyembunyikan detail implementasi (Sommerville, 2016). Konsep ini memungkinkan pengembang untuk membuat model yang hanya mengekspos fitur-fitur penting suatu objek kepada pengguna, mirip dengan cara kerja rem mobil yang menyembunyikan mekanisme hidrolik kompleks di balik pedal sederhana (Kay, 2003). Dalam Python, abstraksi diimplementasikan menggunakan kelas abstrak (Abstract Base Class) melalui modul abc, dengan bantuan dekorator @abstractmethod, yang memaksa kelas turunan untuk mengimplementasikan metode wajib tertentu (Lutz, 2013). Contohnya, sistem pembayaran digital dapat mendefinisikan metode abstrak proses_ pembayaran() tanpa menentukan cara kerjanya, sehingga memungkinkan variasi implementasi seperti transfer bank, dompet digital, atau cryptocurrency dalam kelas turunannya.

2. Inheritance

Inheritance (pewarisan) dalam pemrograman berorientasi objek merupakan mekanisme di mana sebuah kelas dapat mewarisi atribut dan metode dari kelas lain, membentuk hubungan hierarkis parent-child. Konsep ini meniru pewarisan genetik di alam, di mana anak mewarisi karakteristik dasar orang tua, tetapi dapat mengembangkan ciri khas sendiri. Dalam implementasinya, Python menggunakan sintaks kelas Anak(Parent): untuk menetapkan relasi pewarisan, memungkinkan kelas turunan mengakses semua anggota publik dan protected dari kelas induk. Contoh praktis terlihat pada sistem kendaraan, di mana kelas dasar Kendaraan dengan properti umum, seperti warna dan kecepatan_max dapat diwarisi oleh kelas Mobil yang menambahkan fitur khusus seperti jumlah_pintu. Pewarisan mendukung konsep DRY (Don't Repeat Yourself) dengan menghindari duplikasi kode untuk fungsionalitas yang sama.

3. Enkapsulasi

Enkapsulasi dalam pemrograman berorientasi objek merupakan mekanisme pengemasan data dan perilaku terkait dalam satu unit (kelas), sekaligus mengontrol akses terhadapnya melalui antarmuka yang terdefinisi dengan baik. Konsep ini berfungsi layaknya kapsul obat yang menyembunyikan komposisi kimiawi di dalamnya, hanya mengekspos informasi dosis dan cara konsumsi kepada pasien. Dalam implementasinya, enkapsulasi menggunakan tiga level akses, yaitu public (dapat diakses semua pihak), protected (diakses kelas turunan), dan private (hanya diakses kelas itu sendiri). Python menerapkan ini melalui konvensi penamaan - variabel dengan awalan underscore tunggal (nama) menandakan protected, sementara underscore ganda (saldo) mengaktifkan name mangling untuk efek private. Sebagai contoh, kelas RekeningBank mungkin menyembunyikan atribut_saldo dan hanya mengizinkan modifikasi melalui method setor() serta tarik() yang mengandung validasi bisnis.

4. Polymorpisme

Polymorphisme merupakan konsep fundamental dalam OOP yang memungkinkan objek dari kelas berbeda merespons metode dengan nama sama secara berlainan, layaknya seorang poliglot yang dapat menanggapi pertanyaan dalam berbagai bahasa sesuai konteks. Mekanisme ini terwujud melalui dua pendekatan utama: overriding (penimpaan metode turunan) dan overloading (beberapa versi metode dalam kelas yang sama, meski Python tidak mendukung overloading secara native). Contoh konkret terdapat pada sistem bentuk geometri, di mana metode hitung_luas() akan menghasilkan perhitungan berbeda ketika dipanggil pada objek Persegi (sisi²) versus objek Lingkaran (πr²). Python mengimplementasikan polimorfisme melalui duck typing, selama objek memiliki metode yang diperlukan, ia dapat diproses tanpa peduli kelas asalnya, seperti fungsi ukur() yang dapat menerima parameter apa pun selama memiliki metode hitung_luas().

> Kelebihan/Kekurangan

A. Kelebihan

Modularitas: Kode terorganisasi dalam objek yang independen.

Reusability: Fitur seperti inheritance memungkinkan penggunaan ulang kode.

Enkapsulasi: Data dan method dibungkus bersama, meningkatkan keamanan.

Scalability: Lebih mudah dikembangkan untuk proyek besar.

Maintainability: Perubahan pada satu kelas tidak selalu memengaruhi kelas lain.

B. Kekurangan

Kompleksitas: Membutuhkan lebih banyak boilerplate code.

Overhead: Konsumsi memori lebih tinggi karena struktur objek.

Kurang efisien: Untuk operasi sederhana, OOP bisa terlalu "berat".

Learning curve: Konsep seperti polymorphism dan inheritance butuh waktu untuk dipahami.

2. Engineering Process > 

Engineering process dalam pengembangan aplikasi berbasis menggunakan Python menekankan pembuatan kode yang dikembangkan dengan memanfaatkan fitur-fitur OOP dunder objek utama (seperti user, product, atau order dalam sistem e-diagram dan design patterns, seperti Factory atau Observer untuk pengembangan. Python dengan sintaksnya yang intuitif termasuk kelas inti.

1. Analisis = Spesifikasi kebutuhan sistem.
2. Desain = Rancangan class Siswa dan Kelas.
3. Implementasi = Penulisan metode dengan prinsip OOP.
4. Testing = Verifikasi fungsi dasar (contoh: perhitungan rata-rata).
5. Deployment = Integrasi dalam main() dan penyimpanan file.
6. Documentation = Penambahan docstring dan komentar.




Komentar

Postingan populer dari blog ini

OTDR ( Optical Time Domain Reflectometer ) by Kelvin Terrence (X TJKT)

Tugas Coding Pertama (Semester 2) Kelvin Terrence XI TJKT