Chapter 13: OOP Dasar, Bikin Program Berbasis Objek! 🏗️

"OOP itu kayak bikin blueprint, bikin program kita lebih terstruktur! 🏗️✨"
Doa: "Ya Tuhan, bantu kami membuat program yang terstruktur biar bantu dunia. Aamiin. 🙏"

Di chapter ini, kita bakal belajar dasar-dasar Object-Oriented Programming (OOP) di Python, biar program kita lebih terstruktur. Kita pake variabel (Chapter 2), operasi (Chapter 3), input (Chapter 4), pengkondisian (Chapter 5), perulangan (Chapter 6), list (Chapter 7), dictionary (Chapter 8), fungsi (Chapter 9), modul (Chapter 10), error handling (Chapter 11), file handling (Chapter 12), dan print (Chapter 1). Yuk, kita bikin kelas bareng Arry Hutomo! 🚀

Contoh Query Python: OOP buat Isu Lingkungan 🌍

1. Kelas Sederhana Tanpa Atribut (Super Gampang)

class Pohon:
    def tanam(self):
        print("Arry Hutomo tanam pohon!")

pohon = Pohon()
pohon.tanam()

Output:

Arry Hutomo tanam pohon!

Penjelasan Output: Outputnya "Arry Hutomo tanam pohon!" karena kita bikin objek pohon dari kelas Pohon dan panggil metode tanam().

Penjelasan Query: Aku bikin query ini sederhana buat kenalin konsep kelas pake class. Kelas Pohon punya metode tanam() tanpa atribut. Aku bikin objek dan panggil metode biar kamu paham dasar OOP. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas sederhana, dan gampang diinget karena mirip kayak bikin blueprint pohon! Yuk, coba di VSCode, pasti langsung bisa! 🌱

2. Kelas dengan Atribut (Gampang)

class Pohon:
    def __init__(self, jenis):
        self.jenis = jenis
    
    def tanam(self):
        print(f"Arry Hutomo tanam pohon {self.jenis}!")

pohon = Pohon("Mangrove")
pohon.tanam()

Output:

Arry Hutomo tanam pohon Mangrove!

Penjelasan Output: Outputnya "Arry Hutomo tanam pohon Mangrove!" karena kita bikin objek pohon dengan atribut jenis "Mangrove", lalu metode tanam() pake atribut itu.

Penjelasan Query: Aku bikin query ini buat nunjukin cara bikin kelas dengan atribut pake __init__. Aku kasih atribut jenis biar kelas fleksibel. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas dengan atribut, dan gampang diinget karena mirip kayak bikin blueprint pohon dengan nama! Coba di VSCode, gampang kok! 🌳

3. Kelas dengan Multiple Atribut (Gampang)

class Pohon:
    def __init__(self, jenis, jumlah):
        self.jenis = jenis
        self.jumlah = jumlah
    
    def tanam(self):
        print(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis}!")

pohon = Pohon("Mangrove", 10)
pohon.tanam()

Output:

Arry Hutomo tanam 10 pohon Mangrove!

Penjelasan Output: Outputnya "Arry Hutomo tanam 10 pohon Mangrove!" karena kita bikin objek dengan atribut jenis dan jumlah, lalu metode tanam() pake keduanya.

Penjelasan Query: Aku bikin query ini buat nunjukin cara bikin kelas dengan lebih dari satu atribut. Aku tambah jumlah biar lebih realistis. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas dengan banyak atribut, dan gampang diinget karena mirip kayak bikin blueprint pohon dengan detail! Coba di VSCode, gampang kok! 🌳

4. Kelas dengan Metode Tambahan (Masih Gampang)

class Pohon:
    def __init__(self, jenis, jumlah):
        self.jenis = jenis
        self.jumlah = jumlah
    
    def tanam(self):
        print(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis}!")
    
    def info(self):
        print(f"Pohon {self.jenis} berjumlah {self.jumlah}.")

pohon = Pohon("Mangrove", 10)
pohon.tanam()
pohon.info()

Output:

Arry Hutomo tanam 10 pohon Mangrove!
Pohon Mangrove berjumlah 10.

Penjelasan Output: Outputnya punya dua baris: satu dari metode tanam(), satu dari metode info(), yang nampilin detail pohon.

Penjelasan Query: Aku bikin query ini buat nunjukin cara bikin kelas dengan lebih dari satu metode. Aku tambah metode info() biar kelas lebih fungsional. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas dengan banyak metode, dan gampang diinget karena mirip kayak bikin blueprint pohon dengan banyak fungsi! Coba di VSCode, gampang kok! 🌳

5. Kelas dengan Input (Mulai Agak Menantang)

class Pohon:
    def __init__(self, jenis, jumlah):
        self.jenis = jenis
        self.jumlah = jumlah
    
    def tanam(self):
        print(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis}!")

jenis = input("Masukkan jenis pohon: ")
jumlah = int(input("Masukkan jumlah pohon: "))
pohon = Pohon(jenis, jumlah)
pohon.tanam()

Output (misalnya user masukkan "Mangrove", 10):

Masukkan jenis pohon: Mangrove
Masukkan jumlah pohon: 10
Arry Hutomo tanam 10 pohon Mangrove!

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin "Mangrove" dan 10, lalu objek dibuat dan metode tanam() dipanggil.

Penjelasan Query: Aku bikin query ini buat gabungin input() sama kelas, biar kamu paham cara bikin objek interaktif. Aku pake int() buat jumlah biar jadi integer. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas interaktif, dan gampang diinget karena mirip kayak bikin blueprint pohon dari input! Coba di VSCode, gampang kok! 🌳

6. Kelas dengan For Loop (Agak Menantang)

class Pohon:
    def __init__(self, jenis, jumlah):
        self.jenis = jenis
        self.jumlah = jumlah
    
    def tanam(self):
        for i in range(self.jumlah):
            print(f"Arry Hutomo tanam pohon {self.jenis} ke-{i+1}!")

pohon = Pohon("Mangrove", 3)
pohon.tanam()

Output:

Arry Hutomo tanam pohon Mangrove ke-1!
Arry Hutomo tanam pohon Mangrove ke-2!
Arry Hutomo tanam pohon Mangrove ke-3!

Penjelasan Output: Outputnya mencetak tiga baris karena metode tanam() pake for loop untuk ulang sebanyak jumlah.

Penjelasan Query: Aku bikin query ini buat gabungin kelas sama for loop, biar kamu paham cara bikin metode yang ngulang berdasarkan atribut. Aku pake range(self.jumlah) biar dinamis. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin metode yang ngulang, dan gampang diinget karena mirip kayak nyanyi lagu berkali-kali! Coba di VSCode, gampang kok! 🌳

7. Kelas dengan While Loop (Agak Menantang)

class Sampah:
    def __init__(self, berat):
        self.berat = berat
    
    def daur_ulang(self):
        i = 0
        while i < self.berat:
            print("Arry Hutomo daur ulang 1 kg!")
            i = i + 1

sampah = Sampah(3)
sampah.daur_ulang()

Output:

Arry Hutomo daur ulang 1 kg!
Arry Hutomo daur ulang 1 kg!
Arry Hutomo daur ulang 1 kg!

Penjelasan Output: Outputnya mencetak tiga baris karena metode daur_ulang() pake while loop untuk ulang sebanyak berat.

Penjelasan Query: Aku bikin query ini buat gabungin kelas sama while loop, biar kamu paham cara bikin metode yang ngulang berdasarkan kondisi. Aku pake while biar realistis kayak daur ulang per kg. Tema daur ulang dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin metode yang ngulang, dan gampang diinget karena mirip kayak ngitung sisa sampah! Coba di VSCode, gampang kok! ♻️

8. Kelas dengan If-Else (Menantang)

class Pohon:
    def __init__(self, jenis, jumlah):
        self.jenis = jenis
        self.jumlah = jumlah
    
    def cek(self):
        if self.jumlah > 7:
            print(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis}, banyak!")
        else:
            print(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis}, tambah lagi!")

pohon = Pohon("Mangrove", 10)
pohon.cek()

Output:

Arry Hutomo tanam 10 pohon Mangrove, banyak!

Penjelasan Output: Outputnya "Arry Hutomo tanam 10 pohon Mangrove, banyak!" karena jumlah 10 > 7, jadi masuk ke blok if.

Penjelasan Query: Aku bikin query ini buat gabungin kelas sama if-else, biar kamu paham cara bikin metode dengan keputusan. Aku pake jumlah > 7 sebagai batas "banyak". Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin metode dengan logika, dan gampang diinget karena mirip kayak nyanyi lagu dengan nada yang beda! Coba di VSCode, gampang kok! 🌳

9. Kelas dengan Input dan For Loop (Menantang)

class Pohon:
    def __init__(self, jenis, jumlah):
        self.jenis = jenis
        self.jumlah = jumlah
    
    def tanam(self):
        for i in range(self.jumlah):
            print(f"Arry Hutomo tanam pohon {self.jenis} ke-{i+1}!")

jenis = input("Masukkan jenis pohon: ")
jumlah = int(input("Masukkan jumlah pohon: "))
pohon = Pohon(jenis, jumlah)
pohon.tanam()

Output (misalnya user masukkan "Mangrove", 3):

Masukkan jenis pohon: Mangrove
Masukkan jumlah pohon: 3
Arry Hutomo tanam pohon Mangrove ke-1!
Arry Hutomo tanam pohon Mangrove ke-2!
Arry Hutomo tanam pohon Mangrove ke-3!

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin data, lalu metode tanam() ulang tiga kali berdasarkan input.

Penjelasan Query: Aku bikin query ini buat gabungin input(), kelas, dan for loop, biar kamu paham cara bikin metode interaktif yang ngulang. Aku pake int() buat jumlah. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas interaktif yang ngulang, dan gampang diinget karena mirip kayak nyanyi lagu sesuai jumlah! Coba di VSCode, gampang kok! 🌳

10. Kelas dengan List dan Metode (Menantang)

class Pohon:
    def __init__(self, daftar_pohon):
        self.daftar_pohon = daftar_pohon
    
    def tanam_semua(self):
        total = 0
        for pohon in self.daftar_pohon:
            total = total + pohon
            print(f"Arry Hutomo tanam {pohon} pohon!")
        return total

pohon = Pohon([10, 5, 8])
hasil = pohon.tanam_semua()
print(f"Total pohon: {hasil}")

Output:

Arry Hutomo tanam 10 pohon!
Arry Hutomo tanam 5 pohon!
Arry Hutomo tanam 8 pohon!
Total pohon: 23

Penjelasan Output: Outputnya mencetak tiga baris dari loop, lalu total 23 dari penjumlahan list.

Penjelasan Query: Aku bikin query ini buat gabungin kelas sama list dan for loop, biar kamu paham cara bikin metode yang ngolah list. Aku pake list sebagai atribut biar fleksibel. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara ngolah list dalam kelas, dan gampang diinget karena mirip kayak njumlahin daftar belanja! Coba di VSCode, gampang kok! 🌳

11. Kelas dengan Dictionary dan Metode (Agak Sulit)

class Sampah:
    def __init__(self, berat_dict):
        self.berat_dict = berat_dict
    
    def hitung_total(self):
        total = 0
        for berat in self.berat_dict.values():
            total = total + berat
        return total

sampah = Sampah({"Plastik": 5.5, "Kertas": 3.0, "Organik": 2.5})
hasil = sampah.hitung_total()
print(f"Arry Hutomo daur ulang {hasil} kg!")

Output:

Arry Hutomo daur ulang 11.0 kg!

Penjelasan Output: Outputnya "Arry Hutomo daur ulang 11.0 kg!" karena metode hitung_total() jumlahkan semua nilai dalam dictionary: 5.5 + 3.0 + 2.5 = 11.0.

Penjelasan Query: Aku bikin query ini buat gabungin kelas sama dictionary, biar kamu paham cara bikin metode yang ngolah dictionary. Aku pake values() buat ambil nilai dan jumlahkan. Tema daur ulang dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara ngolah dictionary dalam kelas, dan gampang diinget karena mirip kayak njumlahin catatan! Coba di VSCode, gampang kok! ♻️

12. Kelas dengan If-Else dan List (Sulit)

class Pohon:
    def __init__(self, daftar_pohon):
        self.daftar_pohon = daftar_pohon
    
    def cek_pohon(self):
        for jumlah in self.daftar_pohon:
            if jumlah > 7:
                print(f"Arry Hutomo tanam {jumlah} pohon, banyak!")
            else:
                print(f"Arry Hutomo tanam {jumlah} pohon, tambah lagi!")

pohon = Pohon([10, 5, 8])
pohon.cek_pohon()

Output:

Arry Hutomo tanam 10 pohon, banyak!
Arry Hutomo tanam 5 pohon, tambah lagi!
Arry Hutomo tanam 8 pohon, banyak!

Penjelasan Output: Outputnya mencetak tiga baris berdasarkan kondisi: 10 dan 8 > 7 (banyak), 5 < 7 (tambah lagi).

Penjelasan Query: Aku bikin query ini buat gabungin kelas, list, for loop, dan if-else, biar kamu paham cara bikin metode dengan keputusan yang ngolah list. Aku pake jumlah > 7 sebagai batas. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin metode dengan logika, dan gampang diinget karena mirip kayak ngecek daftar! Coba di VSCode, gampang kok! 🌳

13. Kelas dengan Dictionary, While Loop, dan Return (Sulit)

class Sampah:
    def __init__(self, berat_dict):
        self.berat_dict = berat_dict
    
    def hitung_sampah(self):
        keys = list(self.berat_dict.keys())
        i = 0
        total = 0
        while i < len(keys):
            total = total + self.berat_dict[keys[i]]
            i = i + 1
        return total

sampah = Sampah({"Plastik": 5.5, "Kertas": 3.0, "Organik": 2.5})
hasil = sampah.hitung_sampah()
print(f"Arry Hutomo daur ulang {hasil} kg!")

Output:

Arry Hutomo daur ulang 11.0 kg!

Penjelasan Output: Outputnya "Arry Hutomo daur ulang 11.0 kg!" karena metode hitung_sampah() jumlahkan nilai pake while loop: 5.5 + 3.0 + 2.5 = 11.0.

Penjelasan Query: Aku bikin query ini buat gabungin kelas, dictionary, while loop, dan return, biar kamu paham cara ngolah dictionary pake indeks dalam kelas. Aku pake keys() dan while loop buat iterasi. Tema daur ulang dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara ngolah dictionary, dan gampang diinget karena mirip kayak njumlahin catatan! Coba di VSCode, gampang kok! ♻️

14. Kelas dengan Input, If-Else, dan Chapter 1 (Lebih Sulit)

class Donasi:
    def __init__(self, jumlah):
        self.jumlah = jumlah
    
    def cek_donasi(self):
        if self.jumlah > 150000:
            print(f"Arry Hutomo donasi Rp {self.jumlah}!\nBanyak ", "buat komunitas!", sep="=>", end="")
            print("yuk!")
        else:
            print(f"Arry Hutomo donasi Rp {self.jumlah}!\nTambah ", "buat komunitas!", sep="=>", end="")
            print("yuk!")

jumlah = int(input("Masukkan jumlah donasi (Rp): "))
donasi = Donasi(jumlah)
donasi.cek_donasi()

Output (misalnya user masukkan 200000):

Masukkan jumlah donasi (Rp): 200000
Arry Hutomo donasi Rp 200000!
Banyak =>buat komunitas!yuk!

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin 200000, lalu metode cek_donasi() cek jumlah > 150000, masuk ke blok if, dan cetak pesan dengan format sep dan end.

Penjelasan Query: Aku bikin query ini buat gabungin input(), kelas, if-else, dan \n, sep, end dari Chapter 1, biar kamu paham cara bikin metode interaktif dengan keputusan dan format kece. Tema donasi dipilih karena Arry Hutomo peduli sosial, sesuai isu sosial. Struktur ini bikin kamu paham cara bikin kelas interaktif, dan gampang diinget karena mirip kayak ngecek donasi! Coba di VSCode, gampang kok! 💸

15. Semua Digabung (Paling Sulit)

# Simulasi file lingkungan.py
class Sampah:
    def __init__(self, berat_dict):
        self.berat_dict = berat_dict
    
    def proses_sampah(self):
        try:
            total = 0
            i = 0
            keys = list(self.berat_dict.keys())
            while i < len(keys):
                jenis = keys[i]
                total = total + self.berat_dict[jenis]
                if total > 10:
                    print(f"Arry Hutomo daur ulang {total} kg!\nCukup ", f"{jenis} banyak!", sep="=>", end="")
                    print("yuk!")
                else:
                    print(f"Arry Hutomo daur ulang {total} kg!\nTambah ", f"{jenis} kurang!", sep="=>", end="")
                    print("yuk!")
                i = i + 1
            return total
        except KeyError:
            print("Ada jenis sampah yang tidak ditemukan!")
            return 0

# File utama
# from lingkungan import Sampah
berat_dict = {}
for i in range(3):
    try:
        jenis = input(f"Masukkan jenis sampah ke-{i+1}: ")
        berat = float(input(f"Masukkan berat {jenis} (kg): "))
        berat_dict[jenis] = berat
    except ValueError:
        print("Berat harus angka, coba lagi!")
        i = i - 1
sampah = Sampah(berat_dict)
hasil = sampah.proses_sampah()
print(f"Total akhir: {hasil} kg!")

Output (misalnya user masukkan "Plastik", 5.5, "Kertas", 3.0, "Organik", 2.5):

Masukkan jenis sampah ke-1: Plastik
Masukkan berat Plastik (kg): 5.5
Masukkan jenis sampah ke-2: Kertas
Masukkan berat Kertas (kg): 3.0
Masukkan jenis sampah ke-3: Organik
Masukkan berat Organik (kg): 2.5
Arry Hutomo daur ulang 5.5 kg!
Tambah =>Plastik kurang!yuk!
Arry Hutomo daur ulang 8.5 kg!
Tambah =>Kertas kurang!yuk!
Arry Hutomo daur ulang 11.0 kg!
Cukup =>Organik banyak!yuk!
Total akhir: 11.0 kg!

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin data, lalu metode proses_sampah() hitung total, cek kondisi, dan cetak pesan dengan format. Total akhir ditampilin.

Penjelasan Query: Aku bikin query ini buat gabungin semua konsep: input(), for loop, while loop, dictionary, operasi +, if-else, return, try-except, dan modul. Tema daur ulang dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas kompleks, dan gampang diinget karena mirip kayak bikin laporan daur ulang! Coba di VSCode, bakal bangga sama hasilnya! ♻️

Do and Don'ts

"Setiap kelas yang kamu buat adalah langkah menuju program yang lebih terstruktur! 🚀✨"
Doa: "Ya Tuhan, bantu kami terus belajar coding dengan semangat. Aamiin. 🙏"

✨ Sharing oleh Arry Hutomo dan ECC Team ✨