Chapter 14: OOP Lanjutan, Pewarisan dan Polimorfisme! 🏰

"Pewarisan dan polimorfisme itu kayak membangun kerajaan, bikin kode kita lebih fleksibel! 🏰✨"
Doa: "Ya Tuhan, bantu kami membangun kode yang fleksibel dan efisien. Aamiin. 🙏"

Di chapter ini, kita bakal belajar konsep lanjutan OOP: pewarisan (inheritance) dan polimorfisme (polymorphism), biar kode kita lebih fleksibel dan efisien. Kita pake semua konsep dari Chapter 1-13, termasuk kelas dasar dari Chapter 13. Yuk, kita eksplorasi bareng Arry Hutomo! 🚀

Contoh Query Python: OOP Lanjutan buat Isu Lingkungan 🌍

1. Pewarisan Sederhana (Super Gampang)

class Lingkungan:
    def aksi(self):
        print("Arry Hutomo peduli lingkungan!")

class Pohon(Lingkungan):
    pass

pohon = Pohon()
pohon.aksi()

Output:

Arry Hutomo peduli lingkungan!

Penjelasan Output: Outputnya "Arry Hutomo peduli lingkungan!" karena kelas Pohon mewarisi metode aksi() dari kelas Lingkungan.

Penjelasan Query: Aku bikin query ini sederhana buat kenalin pewarisan. Kelas Pohon mewarisi Lingkungan pake tanda kurung. Aku pake pass biar kelas anak minimalis. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham dasar pewarisan, dan gampang diinget karena mirip kayak anak mewarisi sifat orang tua! Yuk, coba di VSCode, pasti langsung bisa! 🌱

2. Pewarisan dengan Atribut (Gampang)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

class Pohon(Lingkungan):
    pass

pohon = Pohon("Pantai")
pohon.aksi()

Output:

Arry Hutomo peduli lingkungan di Pantai!

Penjelasan Output: Outputnya "Arry Hutomo peduli lingkungan di Pantai!" karena kelas Pohon mewarisi atribut lokasi dan metode aksi() dari Lingkungan.

Penjelasan Query: Aku bikin query ini buat nunjukin pewarisan dengan atribut. Kelas Pohon mewarisi __init__ dari Lingkungan, jadi bisa pake atribut lokasi. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara waris atribut, dan gampang diinget karena mirip kayak anak mewarisi harta orang tua! Coba di VSCode, gampang kok! 🌳

3. Pewarisan dengan Atribut Tambahan (Gampang)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

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

pohon = Pohon("Pantai", "Mangrove")
pohon.aksi()
pohon.tanam()

Output:

Arry Hutomo peduli lingkungan di Pantai!
Arry Hutomo tanam pohon Mangrove di Pantai!

Penjelasan Output: Outputnya punya dua baris: satu dari metode warisan aksi(), satu dari metode baru tanam() yang pake atribut tambahan jenis.

Penjelasan Query: Aku bikin query ini buat nunjukin pewarisan dengan atribut tambahan. Aku pake super().__init__ buat panggil konstruktor induk, lalu tambah atribut jenis. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara tambah atribut di kelas anak, dan gampang diinget karena mirip kayak anak punya barang sendiri selain warisan! Coba di VSCode, gampang kok! 🌳

4. Pewarisan dengan Override Metode (Masih Gampang)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

class Pohon(Lingkungan):
    def aksi(self):
        print(f"Arry Hutomo tanam pohon di {self.lokasi}!")

pohon = Pohon("Pantai")
pohon.aksi()

Output:

Arry Hutomo tanam pohon di Pantai!

Penjelasan Output: Outputnya "Arry Hutomo tanam pohon di Pantai!" karena kelas Pohon override metode aksi() dari Lingkungan.

Penjelasan Query: Aku bikin query ini buat nunjukin konsep override metode. Kelas Pohon punya metode aksi() sendiri, jadi ganti perilaku metode induk. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara override metode, dan gampang diinget karena mirip kayak anak punya cara sendiri meski mirip orang tua! Coba di VSCode, gampang kok! 🌳

5. Polimorfisme Sederhana (Mulai Agak Menantang)

class Lingkungan:
    def aksi(self):
        print("Arry Hutomo peduli lingkungan!")

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

class Sampah(Lingkungan):
    def aksi(self):
        print("Arry Hutomo daur ulang sampah!")

def lakukan_aksi(obj):
    obj.aksi()

pohon = Pohon()
sampah = Sampah()
lakukan_aksi(pohon)
lakukan_aksi(sampah)

Output:

Arry Hutomo tanam pohon!
Arry Hutomo daur ulang sampah!

Penjelasan Output: Outputnya punya dua baris karena fungsi lakukan_aksi() memanggil metode aksi() dari objek yang berbeda, menunjukkan polimorfisme.

Penjelasan Query: Aku bikin query ini buat kenalin polimorfisme. Kelas Pohon dan Sampah override metode aksi(), dan fungsi lakukan_aksi() bisa panggil metode yang sesuai berdasarkan objek. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham polimorfisme dasar, dan gampang diinget karena mirip kayak orang tua kasih perintah, tapi anak jalani dengan cara sendiri! Coba di VSCode, gampang kok! 🌳♻️

6. Pewarisan dengan For Loop (Agak Menantang)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

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

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

Output:

Arry Hutomo tanam pohon di Pantai ke-1!
Arry Hutomo tanam pohon di Pantai ke-2!
Arry Hutomo tanam pohon di Pantai 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 pewarisan sama for loop. Kelas Pohon mewarisi lokasi dan punya metode tanam() yang ngulang. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara gabungin pewarisan dan loop, dan gampang diinget karena mirip kayak nyanyi lagu di lokasi tertentu! Coba di VSCode, gampang kok! 🌳

7. Pewarisan dengan While Loop (Agak Menantang)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

class Sampah(Lingkungan):
    def __init__(self, lokasi, berat):
        super().__init__(lokasi)
        self.berat = berat
    
    def daur_ulang(self):
        i = 0
        while i < self.berat:
            print(f"Arry Hutomo daur ulang 1 kg di {self.lokasi}!")
            i = i + 1

sampah = Sampah("Kota", 3)
sampah.daur_ulang()

Output:

Arry Hutomo daur ulang 1 kg di Kota!
Arry Hutomo daur ulang 1 kg di Kota!
Arry Hutomo daur ulang 1 kg di Kota!

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 pewarisan sama while loop. Kelas Sampah mewarisi lokasi dan punya metode daur_ulang() yang ngulang. Tema daur ulang dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara gabungin pewarisan dan loop, dan gampang diinget karena mirip kayak ngitung sisa sampah di lokasi! Coba di VSCode, gampang kok! ♻️

8. Polimorfisme dengan If-Else (Menantang)

class Lingkungan:
    def aksi(self):
        print("Arry Hutomo peduli lingkungan!")

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

class Sampah(Lingkungan):
    def __init__(self, berat):
        self.berat = berat
    
    def aksi(self):
        if self.berat > 5:
            print(f"Arry Hutomo daur ulang {self.berat} kg, banyak!")
        else:
            print(f"Arry Hutomo daur ulang {self.berat} kg, tambah lagi!")

def lakukan_aksi(obj):
    obj.aksi()

pohon = Pohon(10)
sampah = Sampah(3)
lakukan_aksi(pohon)
lakukan_aksi(sampah)

Output:

Arry Hutomo tanam 10 pohon, banyak!
Arry Hutomo daur ulang 3 kg, tambah lagi!

Penjelasan Output: Outputnya punya dua baris: Pohon masuk ke blok if (10 > 7), Sampah masuk ke blok else (3 < 5).

Penjelasan Query: Aku bikin query ini buat gabungin polimorfisme sama if-else. Kelas Pohon dan Sampah override aksi() dengan logika masing-masing. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham polimorfisme dengan logika, dan gampang diinget karena mirip kayak anak punya cara sendiri sesuai kondisi! Coba di VSCode, gampang kok! 🌳♻️

9. Pewarisan dengan Input (Menantang)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

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

lokasi = input("Masukkan lokasi: ")
jenis = input("Masukkan jenis pohon: ")
pohon = Pohon(lokasi, jenis)
pohon.aksi()
pohon.tanam()

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

Masukkan lokasi: Pantai
Masukkan jenis pohon: Mangrove
Arry Hutomo peduli lingkungan di Pantai!
Arry Hutomo tanam pohon Mangrove di Pantai!

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin data, lalu metode warisan dan metode baru dipanggil.

Penjelasan Query: Aku bikin query ini buat gabungin pewarisan sama input(). Kelas Pohon mewarisi lokasi dan punya atribut tambahan jenis. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin kelas interaktif dengan pewarisan, dan gampang diinget karena mirip kayak bikin blueprint dari input! Coba di VSCode, gampang kok! 🌳

10. Polimorfisme dengan List (Menantang)

class Lingkungan:
    def aksi(self):
        print("Arry Hutomo peduli lingkungan!")

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

class Sampah(Lingkungan):
    def __init__(self, berat):
        self.berat = berat
    
    def aksi(self):
        print(f"Arry Hutomo daur ulang {self.berat} kg!")

objek = [Pohon(10), Sampah(5.5)]
for obj in objek:
    obj.aksi()

Output:

Arry Hutomo tanam 10 pohon!
Arry Hutomo daur ulang 5.5 kg!

Penjelasan Output: Outputnya mencetak dua baris karena loop memanggil metode aksi() dari masing-masing objek, menunjukkan polimorfisme.

Penjelasan Query: Aku bikin query ini buat gabungin polimorfisme sama list dan for loop. List objek berisi objek dari kelas berbeda, tapi bisa panggil metode yang sama. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara pake polimorfisme dengan list, dan gampang diinget karena mirip kayak ngatur banyak anak dengan tugas yang sama! Coba di VSCode, gampang kok! 🌳♻️

11. Pewarisan dengan Dictionary (Agak Sulit)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

class Sampah(Lingkungan):
    def __init__(self, lokasi, berat_dict):
        super().__init__(lokasi)
        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("Kota", {"Plastik": 5.5, "Kertas": 3.0, "Organik": 2.5})
hasil = sampah.hitung_total()
print(f"Arry Hutomo daur ulang {hasil} kg di {sampah.lokasi}!")

Output:

Arry Hutomo daur ulang 11.0 kg di Kota!

Penjelasan Output: Outputnya "Arry Hutomo daur ulang 11.0 kg di Kota!" karena metode hitung_total() jumlahkan nilai dictionary, dan lokasi diwarisi.

Penjelasan Query: Aku bikin query ini buat gabungin pewarisan sama dictionary. Kelas Sampah mewarisi lokasi dan punya atribut berat_dict untuk diolah. Tema daur ulang dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara gabungin pewarisan dan dictionary, dan gampang diinget karena mirip kayak njumlahin catatan di lokasi! Coba di VSCode, gampang kok! ♻️

12. Polimorfisme dengan Try-Except (Sulit)

class Lingkungan:
    def aksi(self):
        print("Arry Hutomo peduli lingkungan!")

class Pohon(Lingkungan):
    def __init__(self, jumlah):
        self.jumlah = jumlah
    
    def aksi(self):
        try:
            if self.jumlah < 0:
                raise ValueError("Jumlah pohon tidak boleh negatif!")
            print(f"Arry Hutomo tanam {self.jumlah} pohon!")
        except ValueError as e:
            print(e)

class Sampah(Lingkungan):
    def __init__(self, berat):
        self.berat = berat
    
    def aksi(self):
        try:
            if self.berat < 0:
                raise ValueError("Berat sampah tidak boleh negatif!")
            print(f"Arry Hutomo daur ulang {self.berat} kg!")
        except ValueError as e:
            print(e)

def lakukan_aksi(obj):
    obj.aksi()

pohon = Pohon(-5)
sampah = Sampah(5.5)
lakukan_aksi(pohon)
lakukan_aksi(sampah)

Output:

Jumlah pohon tidak boleh negatif!
Arry Hutomo daur ulang 5.5 kg!

Penjelasan Output: Outputnya mencetak pesan error untuk Pohon karena jumlah negatif, lalu berhasil untuk Sampah.

Penjelasan Query: Aku bikin query ini buat gabungin polimorfisme sama try-except. Kelas Pohon dan Sampah override aksi() dengan penanganan error. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham polimorfisme dengan error handling, dan gampang diinget karena mirip kayak anak punya cara sendiri tapi siap kalo salah! Coba di VSCode, gampang kok! 🌳♻️

13. Pewarisan dengan File Handling (Simulasi) (Sulit)

class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

class Pohon(Lingkungan):
    def __init__(self, lokasi, jenis, jumlah):
        super().__init__(lokasi)
        self.jenis = jenis
        self.jumlah = jumlah
    
    def simpan(self):
        # Simulasi menulis ke file pohon.txt
        # with open("pohon.txt", "w") as file:
        #     file.write(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis} di {self.lokasi}!\n")
        print("Simulasi isi file pohon.txt:")
        print(f"Arry Hutomo tanam {self.jumlah} pohon {self.jenis} di {self.lokasi}!")

pohon = Pohon("Pantai", "Mangrove", 10)
pohon.aksi()
pohon.simpan()

Output:

Arry Hutomo peduli lingkungan di Pantai!
Simulasi isi file pohon.txt:
Arry Hutomo tanam 10 pohon Mangrove di Pantai!

Penjelasan Output: Outputnya punya dua baris: satu dari metode warisan, satu dari simulasi file handling.

Penjelasan Query: Aku bikin query ini buat gabungin pewarisan sama file handling (disimulasikan). Kelas Pohon mewarisi lokasi dan punya metode simpan() untuk simulasi tulis file. Tema tanam pohon dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara gabungin pewarisan dan file handling, dan gampang diinget karena mirip kayak nulis catatan di lokasi! Coba di VSCode, gampang kok! 🌳

14. Polimorfisme dengan Modul (Lebih Sulit)

# Simulasi file lingkungan.py
class Lingkungan:
    def aksi(self):
        print("Arry Hutomo peduli lingkungan!")

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

class Sampah(Lingkungan):
    def __init__(self, berat):
        self.berat = berat
    
    def aksi(self):
        print(f"Arry Hutomo daur ulang {self.berat} kg!")

# File utama
# from lingkungan import Pohon, Sampah
def lakukan_aksi(obj):
    obj.aksi()

pohon = Pohon(10)
sampah = Sampah(5.5)
lakukan_aksi(pohon)
lakukan_aksi(sampah)

Output:

Arry Hutomo tanam 10 pohon!
Arry Hutomo daur ulang 5.5 kg!

Penjelasan Output: Outputnya mencetak dua baris karena fungsi lakukan_aksi() memanggil metode aksi() dari kelas yang diimpor dari modul.

Penjelasan Query: Aku bikin query ini buat gabungin polimorfisme sama modul. Kelas Pohon dan Sampah diimpor dari modul simulasi dan digunakan secara polimorfik. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham polimorfisme dengan modul, dan gampang diinget karena mirip kayak ngatur banyak anak dari kotak alat! Coba di VSCode, gampang kok! 🌳♻️

15. Semua Digabung (Paling Sulit)

# Simulasi file lingkungan.py
class Lingkungan:
    def __init__(self, lokasi):
        self.lokasi = lokasi
    
    def aksi(self):
        print(f"Arry Hutomo peduli lingkungan di {self.lokasi}!")

class Pohon(Lingkungan):
    def __init__(self, lokasi, daftar_pohon):
        super().__init__(lokasi)
        self.daftar_pohon = daftar_pohon
    
    def aksi(self):
        try:
            total = 0
            for pohon in self.daftar_pohon:
                if pohon < 0:
                    raise ValueError("Jumlah pohon tidak boleh negatif!")
                total = total + pohon
                print(f"Arry Hutomo tanam {pohon} pohon di {self.lokasi}!")
            return total
        except ValueError as e:
            print(e)
            return 0

class Sampah(Lingkungan):
    def __init__(self, lokasi, berat_dict):
        super().__init__(lokasi)
        self.berat_dict = berat_dict
    
    def aksi(self):
        try:
            total = 0
            i = 0
            keys = list(self.berat_dict.keys())
            while i < len(keys):
                jenis = keys[i]
                berat = self.berat_dict[jenis]
                if berat < 0:
                    raise ValueError("Berat sampah tidak boleh negatif!")
                total = total + berat
                if total > 10:
                    print(f"Arry Hutomo daur ulang {total} kg di {self.lokasi}!\nCukup ", f"{jenis} banyak!", sep="=>", end="")
                    print("yuk!")
                else:
                    print(f"Arry Hutomo daur ulang {total} kg di {self.lokasi}!\nTambah ", f"{jenis} kurang!", sep="=>", end="")
                    print("yuk!")
                i = i + 1
            return total
        except ValueError as e:
            print(e)
            return 0

# File utama
# from lingkungan import Pohon, Sampah
def lakukan_aksi(obj):
    hasil = obj.aksi()
    print(f"Hasil di {obj.lokasi}: {hasil}")

lokasi = input("Masukkan lokasi: ")
daftar_pohon = []
for i in range(3):
    try:
        jumlah = int(input(f"Masukkan jumlah pohon ke-{i+1}: "))
        daftar_pohon.append(jumlah)
    except ValueError:
        print("Jumlah harus angka, coba lagi!")
        i = i - 1

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

pohon = Pohon(lokasi, daftar_pohon)
sampah = Sampah(lokasi, berat_dict)
lakukan_aksi(pohon)
lakukan_aksi(sampah)

Output (misalnya user masukkan "Pantai", 10, 5, 8, "Plastik", 5.5, "Kertas", 3.0, "Organik", 2.5):

Masukkan lokasi: Pantai
Masukkan jumlah pohon ke-1: 10
Masukkan jumlah pohon ke-2: 5
Masukkan jumlah pohon ke-3: 8
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 tanam 10 pohon di Pantai!
Arry Hutomo tanam 5 pohon di Pantai!
Arry Hutomo tanam 8 pohon di Pantai!
Hasil di Pantai: 23
Arry Hutomo daur ulang 5.5 kg di Pantai!
Tambah =>Plastik kurang!yuk!
Arry Hutomo daur ulang 8.5 kg di Pantai!
Tambah =>Kertas kurang!yuk!
Arry Hutomo daur ulang 11.0 kg di Pantai!
Cukup =>Organik banyak!yuk!
Hasil di Pantai: 11.0

Penjelasan Output: Outputnya dimulai dengan prompt, user masukin data, lalu metode aksi() dari Pohon dan Sampah dijalankan secara polimorfik, dengan error handling, loop, dan logika.

Penjelasan Query: Aku bikin query ini buat gabungin semua konsep: input(), for loop, while loop, list, dictionary, operasi +, if-else, return, try-except, modul, pewarisan, polimorfisme, plus \n, sep, dan end. Tema lingkungan dipilih karena Arry Hutomo peduli lingkungan, sesuai isu lingkungan. Struktur ini bikin kamu paham cara bikin program kompleks dengan OOP, dan gampang diinget karena mirip kayak bikin kerajaan lingkungan! Coba di VSCode, bakal bangga sama hasilnya! 🌳♻️

Do and Don'ts

"Setiap warisan dan polimorfisme yang kamu buat adalah langkah menuju kode yang lebih fleksibel! 🚀✨"
Doa: "Ya Tuhan, bantu kami terus belajar coding dengan semangat. Aamiin. 🙏"

✨ Sharing oleh Arry Hutomo dan ECC Team ✨