MODUL 6 : PENGENALAN DAN KONSEP OOP

HALLO!!

Pernahkah kamu merasa kode yang kamu buat semakin lama semakin sulit dikelola seperti benang kusut? Jika iya, itu tandanya kamu siap untuk meninggalkan gaya lama dan beralih ke Object-Oriented Programming (OOP). OOP bukan sekadar tren, melainkan standar industri yang mengubah cara kita memandang sebuah aplikasi ,bukan lagi sebagai tumpukan instruksi, melainkan sebagai ekosistem objek yang cerdas dan saling berinteraksi.

Di materi kali ini, kita akan membedah rahasia di balik Class, Object, hingga prinsip sakti seperti Encapsulation dan Inheritance dengan cara yang paling santai. Siapkan kopi kamu, mari kita bangun fondasi pemrograman yang lebih profesional dan terstruktur!


1. PARADIGMA PROSEDURAL

Program ini fokus pada ututan eksekusi(prosedur)


Penjelasan:
• def hitung_luas():: Kita membungkus perintah ke dalam sebuah "wadah" bernama fungsi.
• float(input(...)): Kita harus mengubah input (yang aslinya teks) menjadi angka agar bisa dihitung.
• Kekurangan: Jika kita ingin memakai hasil perhitungan luas tadi untuk perhitungan lain, kita tidak bisa, karena hasilnya hanya "mampir" untuk dicetak.


2. PARADIGMA FUNGSIONAL
Pada praktikum kedua, program dibuat menggunakan fungsi biasa (tanpa OOP) dan melibatkan input dari pengguna. Fungsi ini digunakan untuk mengambil input alas dan tinggi dari pengguna, lalu dikembalikan ke program utama.


Penjelasan:
  • input() digunakan untuk menerima nilai dari pengguna.
  • float() digunakan untuk memastikan data bertipe numerik.
  • Nilai dikembalikan menggunakan return.

3. PARADIGMA BERORIENTASI OBJEK (OPP)
Program ini fokus pada pembuatan objek yang punya data dan perilaku.

Penjelasan:
• class Segitiga: Ini adalah cetakannya (blueprint).
• self: Ini adalah cara objek menunjuk ke dirinya sendiri. Ibaratnya, "alas saya adalah 5".
• return: Berbeda dengan print, return memberikan hasil hitungan kembali ke pemanggilnya sehingga bisa disimpan dalam variabel lain.


4. MEMBUAT DAN MENGANALISIS OBJEK


1. Membuat Class Mobil
class Mobil:
class Mobil digunakan untuk mendefinisikan sebuah class bernama Mobil.

Class ini menjadi cetakan (blueprint) untuk membuat object mobil.

 2. Membuat Constructor (__init__)
def __init__(self, merk, model):
    self.merk = merk
    self.model = model
Penjelasan:
  • __init__ adalah constructor, yaitu fungsi yang otomatis dipanggil saat object dibuat.
  • self.merk dan self.model adalah atribut instance.
  • Nilainya diisi sesuai data saat object dibuat.
3. Membuat Method deskripsi()
def deskripsi(self):
    return f"Mobil {self.merk} model {self.model}"

Penjelasan:
  • Method adalah fungsi di dalam class.
  • Method ini digunakan untuk menampilkan informasi mobil.
  • self digunakan untuk mengakses atribut milik object.
 4. Membuat Object dari Class
mobil1 = Mobil("Toyota", "Camry")
mobil2 = Mobil("Honda", "Civic")
Penjelasan:
  • mobil1 dan mobil2 adalah object dari class Mobil.
  • Masing-masing object memiliki data berbeda.
 5. Menampilkan Hasil Method
print(mobil1.deskripsi())
print(mobil2.deskripsi())

Output:
Mobil Toyota model Camry
Mobil Honda model Civic
Penjelasan:
  • Method deskripsi() dipanggil melalui object.
  • Output menampilkan data sesuai atribut masing-masing object.

5. ATRIBUT INSTANCE VS ATRIBUT KELAS

Penjelasan:
1. Menambahkan Atribut Class
class Mobil:
    jumlah_roda = 4
Penjelasan:
  • jumlah_roda adalah atribut class.
  • Berlaku untuk semua object dari class Mobil.
  • Tidak bergantung pada data object.
2. Constructor Tetap Digunakan
def __init__(self, merk, model):
    self.merk = merk
    self.model = model
Constructor tetap digunakan untuk atribut instance (merk, model).

 3. Membuat Object
mobil1 = Mobil("Toyota", "Camry")
mobil2 = Mobil("Honda", "Civic")
Object dibuat seperti biasa.

 4. Mengakses Atribut Class melalui Object
print(mobil1.jumlah_roda)
print(mobil2.jumlah_roda)
Output:
4
4


6. STUDI KASUS

DEKLARASI CLASS KARYAWAN
1.class Karyawan:
    bonus_tahunan = 1000000  # Atribut kelas

Penjelasan:
  • Karyawan adalah class (cetak biru objek karyawan).
  • bonus_tahunan adalah atribut kelas → nilainya sama untuk semua karyawan.
  • Bonus ini akan digunakan saat karyawan memiliki performa yang baik.
2. Method __init__ (Constructor)

def __init__(self, nama, jabatan, gaji):
    self.nama = nama        # Atribut instance
    self.jabatan = jabatan
    self.gaji = gaji
Penjelasan:
  • __init__ adalah constructor, otomatis dipanggil saat objek dibuat.
  • self.nama, self.jabatan, dan self.gaji adalah atribut instance (milik tiap objek).
  • Setiap karyawan bisa punya data yang berbeda.
Contoh:
Karyawan("PIPEH", "ob", 500000)

3. Method total_gaji()

def total_gaji(self, performa_baik):
    if performa_baik:
        return self.gaji + Karyawan.bonus_tahunan
    else:
        return self.gaji

Penjelasan:
  • Method ini menghitung total gaji karyawan.
  • Parameter performa_baik menentukan apakah karyawan mendapat bonus.
  • Jika True → gaji + bonus
  • Jika False → hanya gaji pokok
Karyawan.bonus_tahunan diambil dari atribut kelas.

4. Fungsi buat_karyawan()

def buat_karyawan():
    nama = input("Masukkan nama karyawan: ")
    jabatan = input("Masukkan jabatan karyawan: ")
    gaji = int(input("Masukkan gaji karyawan: "))
    return Karyawan(nama, jabatan, gaji)

Penjelasan:
  • Fungsi ini mengambil input dari pengguna.
  • Data yang dimasukkan digunakan untuk membuat objek Karyawan.
  • int() dipakai agar gaji bertipe integer.
  • return mengembalikan objek karyawan.
  •  Fungsi ini membuat program lebih rapi dan reusable.
5. Membuat Objek Karyawan

karyawan1 = buat_karyawan()
karyawan2 = buat_karyawan()

Penjelasan:
  • Membuat dua objek karyawan.
  • Setiap pemanggilan fungsi akan meminta input baru.
  • karyawan1 dan karyawan2 menyimpan objek berbeda.

6.  Input Performa Karyawan

performa1 = input(f"Apakah {karyawan1.nama} memiliki performa baik? (yes/no): ")
performa2 = input(f"Apakah {karyawan2.nama} memiliki performa baik? (yes/no): ")

Penjelasan:
  • Program menanyakan performa masing-masing karyawan.
  • Menggunakan f-string agar nama karyawan tampil dinamis.
Jawaban disimpan dalam variabel performa1 dan performa2.

7. Menampilkan Total Gaji

print(f"{karyawan1.nama} - Total Gaji: {karyawan1.total_gaji(performa1)}")
print(f"{karyawan2.nama} - Total Gaji: {karyawan2.total_gaji(performa2)}")

Penjelasan:
  • Memanggil method total_gaji().
  • Jika performa "yes" → dianggap True → dapat bonus.
  • Jika "no" → False → tanpa bonus.
  • Hasil ditampilkan ke layar.


LATIHAN DAN TUGAS
1. Buat sebuah program sederhana dengan tema yang mudah di pahami oleh kalian (tidak boleh sama dengan teman yang lain) untuk belajar konsep paradigma pemrogrman, dengan menggunakan fungsi input dalam bahasa python, buat 1 program dengan Paradigma prosedural, 1 dengan Paradigma fungsional dan 1 Paradigma PBO (Pemrograman Berorientasi Objek) jelaskan alur dan proses dari setiap program yang kalian buat

TEMA: SISTEM MANAJEMEN KEDAI KOPI SEDERHANA

1. Paradigma Prosedural
    Paradigma ini berfokus pada langkah-langkah atau instruksi yang berurutan. Program dibaca dari atas ke bawah seperti sebuah resep.
Alur dan Proses:
  • Urutan: Program berjalan linear. Pertama mendefinisikan data, lalu meminta input.
  • Eksekusi: Setelah input diterima, program langsung mengalikan jumlah dengan harga_satuan.
  • Fokus: Fokus utamanya adalah "Bagaimana cara menyelesaikan tugas ini langkah demi langkah?

2. Paradigma Fungsional
    Paradigma ini memecah program menjadi fungsi-fungsi kecil yang spesifik. Fokusnya adalah pada transformasi data tanpa mengubah variabel asli secara sembarangan (mengutamakan return value).

Alur dan Proses:
• Modularitas: Logika perhitungan (hitung_total) dipisahkan dari logika tampilan (cetak_struk).
• Abstraksi: Program utama (main) tidak perlu tahu cara menghitung harga, ia hanya perlu memanggil fungsi dan menerima hasilnya.
• Fokus: Fokus utamanya adalah "Fungsi apa yang dibutuhkan untuk mengolah input menjadi output?"


3. Paradigma Berorientasi Objek (PBO/OOP)
    Paradigma ini membungkus data dan fungsi ke dalam satu kesatuan yang disebut Objek (berdasarkan Class). Ini sangat cocok untuk memodelkan benda nyata.

Alur dan Proses:
• Enkapsulasi: Data (nama, harga, jumlah) dan perilaku (hitung_bayar) disatukan dalam satu kelas PesananKopi.
• Objek: pesanan_user adalah representasi nyata dari pesanan di dunia asli.
• Fokus: Fokus utamanya adalah "Siapa (objek apa) yang terlibat dan apa yang bisa dilakukan oleh objek tersebut?"





Referensi
Sumber utama:
Modul Praktikum Pemrograman Dasar Lanjutan (Python), disusun oleh Adi Muhamad Muhsidi (2025).
Program Studi Bisnis Digital, Fakultas Ekonomi dan Bisnis, Universitas Kuningan. 
link: https://heyzine.com/flip-book/6d9cf7412d.html
Atau dapat diakses langsung dari blog pribadi penulis di: https://adi-muhamad.my.id

Komentar

Postingan populer dari blog ini

MODUL 5 TIPE DATA CASTING

MODUL 4 : MODUL DAN PAKET

MODUL 3 : MENGELOLA FILE DI PHYTON