Modul AjarBab 3Fase FSemester 1

Modul Ajar Koding dan Kecerdasan Artifisial Kelas 11 Bab 3: Pemrograman Berorientasi Objek

Modul Ajar ini memuat seluruh rangkaian Koding dan Kecerdasan Artifisial kelas 11 untuk Bab 3 "Pemrograman Berorientasi Objek", lengkap per pertemuan dalam satu dokumen.

MEJAGURU.ID - DOKUMEN MODUL AJAR

Modul Ajar Koding dan Kecerdasan Artifisial Kelas 11 Bab 3: Pemrograman Berorientasi Objek

Koding dan Kecerdasan Artifisial - Kelas 11

Bab 3

MODUL AJAR

Koding dan Kecerdasan Artifisial — Kelas 11 (Fase F)

Topik: Bab 3 — Pemrograman Berorientasi Objek

INFORMASI UMUM

Mata PelajaranKoding dan Kecerdasan Artifisial
Fase / KelasFase F / Kelas 11
TopikBab 3 — Pemrograman Berorientasi Objek
Alokasi Waktu37 JP (37 x 45 menit = 1665 menit)
Jumlah Pertemuan15
Tahun Ajaran2026/2027
Semester1

TUJUAN PEMBELAJARAN

  1. TP 11.3.1 Menjelaskan algoritma dan paradigma pemrograman berorientasi objek dalam pemodelan sistem perangkat lunak
  2. TP 11.3.2 Menerapkan pemrograman berorientasi objek melalui pendefinisian kelas, atribut, dan metode
  3. TP 11.3.3 Menerapkan prinsip enkapsulasi dalam pemrograman berorientasi objek untuk perlindungan data
  4. TP 11.3.4 Menerapkan pewarisan dan polimorfisme dalam pemrograman berorientasi objek untuk mengoptimalkan hierarki struktur kode

PROFIL LULUSAN

DimensiDisasar
Keimanan dan Ketakwaan terhadap Tuhan Yang Maha Esa
Kewargaan
Penalaran Kritis✓
Kreativitas
Kolaborasi✓
Kemandirian✓
Kesehatan
Komunikasi

PERTANYAAN PEMANTIK

  1. Ketika program komputer yang kita buat semakin besar dan kompleks, mengapa pendekatan instruksi langkah demi langkah (prosedural) mulai sulit dikelola?
  2. Bagaimana cara paradigma Pemrograman Berorientasi Objek (OOP) memandang dan memodelkan masalah nyata dibandingkan dengan algoritma prosedural?
  3. Jika sebuah pabrik ingin memproduksi ribuan mobil dengan tipe yang sama, apakah perancang menggambar ulang desain mobil dari nol setiap kali mencetak satu mobil?
  4. Bagaimana kita membedakan rancangan konseptual (blueprint) dengan wujud nyata hasil cetakan rancangan tersebut dalam sistem perangkat lunak?
  5. Bagaimana sebuah objek dalam sistem perangkat lunak dapat saling berinteraksi dan bertukar data dengan objek lainnya?
  6. Mengapa dalam pemodelan sistem nyata seperti marketplace atau sekolah, entitas tidak bisa berdiri sendiri melainkan harus saling terhubung?
  7. Bagaimana cara kita menuangkan cetak biru (blueprint) sebuah benda ke dalam baris kode program secara terstruktur?
  8. Setelah sebuah kelas didefinisikan, perintah apa yang mengubah cetak biru tersebut menjadi wujud objek nyata yang siap menyimpan data?
  9. Bagaimana sebuah program dapat langsung memberikan nilai awal (seperti nama atau warna) pada saat objek baru diciptakan?
  10. Mengapa kita perlu menuliskan parameter self ketika menetapkan atribut di dalam metode khusus __init__?
  11. Mengapa fungsi di dalam kelas Python selalu mencantumkan parameter 'self' pada baris pertamanya?
  12. Bagaimana sebuah metode di dalam kelas dapat mengakses dan mengubah nilai atribut spesifik dari objek yang memanggilnya?
  13. Bagaimana sebuah metode di dalam objek dapat memanggil metode lain dalam kelas yang sama?
  14. Mengapa suatu metode perlu memperbarui nilai atribut sebelum memanggil metode lain untuk menampilkan status objek yang berubah?
  15. Apa risiko yang terjadi jika saldo rekening bank dalam program aplikasi dapat diubah langsung secara bebas oleh pengguna dari luar kelas?
  16. Bagaimana cara bahasa Python membedakan variabel data yang boleh diakses langsung dan variabel data yang disembunyikan di dalam kelas?
  17. Mengapa atribut privat yang terkunci rapat tetap membutuhkan gerbang khusus bernama getter untuk dibaca nilainya oleh bagian program luar?
  18. Bagaimana metode getter bekerja mengembalikan nilai atribut privat tanpa memberikan izin pengubahan langsung pada data tersebut?
  19. Bagaimana sebuah program mencegah pengisian data yang tidak masuk akal, seperti nilai ujian bernilai -50 atau 150?
  20. Mengapa kita memerlukan metode setter berpengaman dan tidak membiarkan atribut diubah secara langsung dari luar kelas?
  21. Jika atribut privat menggunakan dua garis bawah (__), bagaimana cara kita menandai atribut internal yang masih boleh diakses secara terbatas menurut konvensi Python?
  22. Mengapa dalam pemrograman berorientasi objek kita memerlukan tingkat perlindungan atribut protected di samping public dan private?
  23. Jika kita sudah memiliki kelas Kendaraan dengan atribut nama dan metode bergerak(), mengapa kita perlu membuat kelas Mobil yang mewarisi kelas Kendaraan daripada menulis ulang kodenya dari nol?
  24. Bagaimana sintaks Python menghubungkan kelas turunan (anak) dengan kelas induk agar metode dan atribut kelas induk langsung dapat digunakan oleh kelas anak?
  25. Bagaimana cara kelas anak memanggil konstruktor atau metode milik kelas induk tanpa harus menduplikasi penulisan kodenya?
  26. Mengapa penggunaan fungsi super() dapat membuat hierarki struktur kode program Python menjadi lebih ringkas dan terhindar dari redundansi data?
  27. Jika kelas Hewan memiliki metode bersuara(), mengapa kelas Kucing dan Anjing perlu mendefinisikan ulang isi metode tersebut dengan suara yang berbeda?
  28. Bagaimana sebuah perulangan pemanggilan metode yang sama dapat menghasilkan keluaran aksi yang berbeda-beda untuk tiap objek turunan?
  29. Bagaimana pemodelan sistem menggunakan paradigma berorientasi objek membedakan struktur data dan perilaku dibandingkan pendekatan prosedural?
  30. Mengapa enkapsulasi, pewarisan, dan polimorfisme menjadi pilar penting dalam membangun kode program yang terstruktur dan aman?

KEGIATAN PEMBELAJARAN

Pertemuan 1 — Menjelaskan Perbandingan Alur Algoritma Prosedural dan Paradigma Pemrograman Berorientasi Objek — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.1 Menjelaskan algoritma dan paradigma pemrograman berorientasi objek dalam pemodelan sistem perangkat lunak

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kehadiran, serta mengondisikan kesiapan belajar murid (5 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ini, yaitu menjelaskan perbandingan alur algoritma prosedural dan paradigma Pemrograman Berorientasi Objek (OOP) dalam pemodelan perangkat lunak (5 menit).
  • Guru melaksanakan asesmen awal diagnostik melalui 2 pertanyaan lisan: (1) 'Apa fokus utama dalam alur pemrograman prosedural?' (acuan: instruksi sekuensial/fungsi/prosedur yang memanipulasi data terpisah); dan (2) 'Bagaimana data dan fungsi dikelola dalam OOP?' (acuan: data dan perilaku dibungkus bersama menjadi entitas objek) (10 menit).

Kegiatan Inti:

Memahami (Berkesadaran, Bermakna):

  • Murid menyimak pemaparan perbandingan konseptual antara paradigma prosedural (urutan instruksi linier, fungsi terpisah dari variabel global/lokal) dengan paradigma OOP (pemodelan berbasis objek yang menggabungkan state/data dan behaviour/perilaku) menggunakan diagram analogi sistem kasir toko (15 menit).
  • Guru memberikan Lembar Perbandingan Konseptual yang memuat 4 aspek perbandingan: (1) Fokus Utama, (2) Pengorganisasian Data dan Fungsi, (3) Pendekatan Pemodelan Masalah, dan (4) Skalabilitas Sistem Kompleks (15 menit).

Mengaplikasi (Bermakna, Menggembirakan):

  • Murid berpasangan memainkan aktivitas tantangan interaktif 'Pilah Paradigma' dengan mengelompokkan 6 kartu karakteristik ke dalam kategori 'Prosedural' atau 'OOP': Kartu A 'Alur instruksi sekuensial langkah-demi-langkah', Kartu B 'Entitas mandiri yang menggabungkan atribut dan metode', Kartu C 'Fungsi beroperasi langsung pada struktur data eksternal yang terpisah', Kartu D 'Pemodelan meniru interaksi entitas di dunia nyata', Kartu E 'Pendekatan top-down berfokus pada urutan pengerjaan tugas', Kartu F 'Modularitas tinggi berbasis interaksi antarentitas objek' (kunci: Prosedural = Kartu A, C, E; OOP = Kartu B, D, F) (20 menit).
  • Setiap pasangan menganalisis skenario studi kasus: 'Perancangan Sistem Perangkat Lunak Manajemen Kendaraan Rumah Sakit' dan menyusun teks penjelasan perbandingan alur algoritma prosedural vs paradigma OOP pada lembar kerja berdasarkan 4 parameter perbandingan (30 menit).

Merefleksi (Berkesadaran):

  • Dua perwakilan pasangan membacakan hasil penjelasan perbandingan alur algoritma dan saling memberikan masukan konseptual dipandu oleh guru (15 menit).
  • Murid bersama guru menyimpulkan inti perbedaan alur algoritma prosedural yang fokus pada urutan fungsi dan OOP yang fokus pada pemodelan objek mandiri dalam sistem perangkat lunak (10 menit).

Penutup:

  • Guru memberikan penguatan terhadap penjelasan murid mengenai keuntungan paradigma OOP saat menangani sistem perangkat lunak yang berskala besar dan kompleks (5 menit).
  • Guru menutup pertemuan dengan memberikan pengantar untuk pertemuan berikutnya (Konsep Objek dan Blueprint Kelas) dan mengucapkan salam (5 menit).

Diferensiasi:

  • Konten: Menyediakan infografik visual skematis alur eksekusi memori data-fungsi prosedural vs enkapsulasi objek bagi murid yang membutuhkan bantuan visual.
  • Proses: Memberikan panduan scaffolding berisi kata kunci pemandu (fokus alur, letak data, cara kerja fungsi) untuk murid yang membutuhkan bimbingan bertahap; murid berkemampuan tinggi menganalisis kompleksitas pemeliharaan kode (code maintenance) pada kedua paradigma.
  • Produk: Format penyajian perbandingan penjelasan dapat dipilih dalam bentuk tabel matriks komparasi terstruktur atau teks deskriptif analitis.

Asesmen Pertemuan:

Awal:

  • Pertanyaan lisan diagnostik: (1) 'Apa fokus utama dalam alur pemrograman prosedural?' (acuan jawaban: alur instruksi sekuensial langkah demi langkah dan fungsi/prosedur yang memproses data terpisah); (2) 'Bagaimana data dan fungsi dikelola dalam OOP?' (acuan jawaban: data dan fungsi disatukan ke dalam satu kesatuan objek yang meniru objek dunia nyata).

Proses:

  • Observasi kerja pasangan pada aktivitas tantangan pilah 6 kartu karakteristik paradigma (acuan: Kartu A, C, E masuk Prosedural; Kartu B, D, F masuk OOP)
  • Pemeriksaan lembar kerja penjelasan perbandingan alur algoritma prosedural dan OOP berdasarkan 4 parameter (Fokus Utama, Pengorganisasian Data dan Fungsi, Pendekatan Pemodelan Masalah, dan Skalabilitas Sistem Kompleks)

Akhir Pertemuan:

  • Cek pemahaman 2 butir tertulis singkat di akhir sesi: (1) Jelaskan perbedaan mendasar bagaimana data diperlakukan pada alur algoritma prosedural dibandingkan pada OOP! (acuan: pada prosedural data bersifat pasif dan terpisah diproses oleh fungsi, sedangkan pada OOP data dibungkus bersama metode di dalam objek); (2) Mengapa paradigma OOP lebih tepat untuk memodelkan sistem perangkat lunak yang kompleks? (acuan: karena OOP membagi sistem menjadi modul-modul objek independen yang meniru entitas nyata sehingga mudah dirawat dan dikembangkan).

Formatif:

  • Kuis mencocokkan kartu karakteristik paradigma algoritma prosedural vs OOP
  • Penilaian lembar kerja perbandingan penjelasan alur algoritma prosedural dan paradigma OOP

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penjelasan Perbandingan Paradigma Prosedural dan OOPHanya menjelaskan 1 dari 4 parameter perbandingan (Fokus Utama, Pengorganisasian Data dan Fungsi, Pendekatan Pemodelan Masalah, Skalabilitas Sistem Kompleks) dengan tepat.Menjelaskan 2 dari 4 parameter perbandingan (Fokus Utama, Pengorganisasian Data dan Fungsi, Pendekatan Pemodelan Masalah, Skalabilitas Sistem Kompleks) dengan tepat.Menjelaskan 3 dari 4 parameter perbandingan (Fokus Utama, Pengorganisasian Data dan Fungsi, Pendekatan Pemodelan Masalah, Skalabilitas Sistem Kompleks) dengan tepat.Menjelaskan seluruh 4 parameter perbandingan (Fokus Utama, Pengorganisasian Data dan Fungsi, Pendekatan Pemodelan Masalah, Skalabilitas Sistem Kompleks) dengan tepat dan runtut.
Ketepatan Klasifikasi Karakteristik Algoritma ParadigmaTepat mengelompokkan 1–2 dari 6 kartu karakteristik paradigma (acuan Prosedural: A, C, E; OOP: B, D, F).Tepat mengelompokkan 3–4 dari 6 kartu karakteristik paradigma (acuan Prosedural: A, C, E; OOP: B, D, F).Tepat mengelompokkan 5 dari 6 kartu karakteristik paradigma (acuan Prosedural: A, C, E; OOP: B, D, F).Tepat mengelompokkan seluruh 6 dari 6 kartu karakteristik paradigma (acuan Prosedural: A, C, E; OOP: B, D, F) secara konsisten dan mandiri.

Refleksi Pertemuan:

Guru:

  • Apakah analogi sistem kasir toko efektif membantu murid membedakan alur prosedural dan paradigma OOP?
  • Apakah alokasi waktu 135 menit memadai bagi seluruh murid untuk memahami konsep abstrak paradigma sebelum masuk ke sintaks kode?

Murid:

  • Bagian mana dari perbedaan alur pemrograman prosedural dan OOP yang paling mudah kamu pahami?
  • Mengapa menurutmu pengelompokan data dan perilaku menjadi satu objek membuat program lebih mudah dipahami?

Pertemuan 2 — Menjelaskan Konsep Objek dan Blueprint Kelas dalam Pemodelan Sistem Perangkat Lunak — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.1 Menjelaskan algoritma dan paradigma pemrograman berorientasi objek dalam pemodelan sistem perangkat lunak

Pendahuluan:

  • Guru membuka pembelajaran dengan salam, memeriksa kehadiran murid, dan menyampaikan tujuan pembelajaran pertemuan ini mengenai konsep objek dan cetak biru (blueprint) kelas dalam pemodelan sistem perangkat lunak (5 menit).
  • Guru melaksanakan asesmen diagnostik awal lisan dengan menanyakan 2 pertanyaan pemantik konsep kelas dan objek: (1) 'Apa perbedaan konsep dasar antara cetak biru bangunan dengan bangunan rumah yang sudah berdiri?'; (2) 'Dalam pemodelan perangkat lunak, apa peran kelas terhadap objek?' (10 menit).

Kegiatan Inti:

Memahami (Bermakna, Menggembirakan):

  • Guru memproyeksikan visual analogi cetak biru (blueprint rancangan mobil) bersanding dengan wujud fisik beberapa mobil nyata yang diproduksi berdasarkan cetak biru tersebut (15 menit).
  • Murid menyimak paparan materi esensial mengenai konsep Class sebagai blueprint (cetak biru/templat pemodelan sistem yang memuat rancangan atribut dan perilaku) serta Object sebagai instansiasi konkret di memori komputer yang memiliki state (nilai atribut tertentu) dan behavior (perilaku) (15 menit).
  • Guru memberikan tantangan tebak cepat klasifikasi yang menggembirakan 'Blueprint vs Realita': murid secara beregu mengangkat kartu penanda 'KELAS' atau 'OBJEK' ketika guru menyebutkan 4 entitas pemodelan: (1) Gambar arsitektur smartphone, (2) Smartphone milik Andi dengan nomor seri XYZ, (3) Formulir pendaftaran akun kosong, (4) Akun pengguna Budi dengan saldo Rp50.000 (acuan jawaban: 1=KELAS, 2=OBJEK, 3=KELAS, 4=OBJEK) (15 menit).

Mengaplikasi (Berkesadaran, Bermakna):

  • Murid dibagi menjadi kelompok berpasangan untuk mengerjakan Lembar Aktivitas 3.2 Pemodelan Sistem: mengklasifikasikan objek nyata ke dalam struktur blueprint kelas (20 menit).
  • Setiap kelompok berpasangan menganalisis 2 studi kasus pemodelan sistem perangkat lunak: (1) Sistem Perpustakaan (blueprint kelas: Buku, objek: Buku Laskar Pelangi dan Buku Algoritma) dan (2) Sistem Akun Bank (blueprint kelas: Rekening, objek: Rekening A/N Siti dan Rekening A/N Joko), lalu merumuskan penjelasan atribut serta perilaku dari masing-masing kelas dan objek sesuai lembar kerja (25 menit).

Merefleksi (Berkesadaran):

  • Perwakilan pasangan murid menjelaskan kembali secara bergantian hubungan antara kelas sebagai blueprint dan objek sebagai perwujudan konkret dalam konteks pemodelan sistem perangkat lunak (15 menit).
  • Murid bersama guru menyimpulkan bagaimana pemikiran berorientasi objek menyederhanakan pemodelan sistem dunia nyata ke dalam arsitektur perangkat lunak yang terstruktur (5 menit).

Penutup:

  • Murid mengerjakan asesmen akhir formatif singkat tertulis berupa 2 butir soal penjelasan konsep kelas dan objek pada lembar penilaian (5 menit).
  • Guru memberikan umpan balik umum, menyampaikan pengantar materi untuk pertemuan berikutnya mengenai hubungan antarentitas, dan menutup pembelajaran dengan doa bersama (5 menit).

Diferensiasi:

  • Konten: Menyediakan diagram visual analogi cetak biru-objek untuk kelompok yang membutuhkan scaffolding visual, serta diagram UML kelas pemodelan sistem untuk kelompok yang siap menerima tantangan lebih.
  • Proses: Murid yang membutuhkan bimbingan didampingi guru dengan membedah 1 contoh objek konkret terlebih dahulu, sedangkan murid yang telah mahir secara mandiri menjelaskan relasi kelas-objek pada sistem e-commerce.
  • Produk: Kelompok dapat menuliskan penjelasan pemodelan sistem dalam bentuk tabel spesifikasi blueprint atau bagan relasi entitas kelas-objek.

Asesmen Pertemuan:

Awal:

  • Pertanyaan lisan diagnostik: (1) 'Apa perbedaan konsep dasar antara cetak biru bangunan dengan bangunan rumah yang sudah berdiri?' (acuan jawaban: cetak biru adalah rancangan/desain konseptual, sedangkan rumah berdiri adalah wujud fisik nyata yang dibangun dari cetak biru tersebut). (2) 'Dalam pemodelan perangkat lunak, apa peran kelas terhadap objek?' (acuan jawaban: kelas berperan sebagai blueprint/templat rancangan yang menentukan atribut dan metode, sedangkan objek adalah instansi nyata dari kelas tersebut).

Proses:

  • Pengamatan keterlibatan dan ketepatan murid dalam lembar kerja Aktivitas 3.2 pemodelan sistem. Acuan penilaian: (1) Pada Sistem Perpustakaan, kelas adalah 'Buku' dengan atribut (judul, pengarang, nomor_isbn) dan perilaku (dipinjam, dikembalikan), objek adalah Buku Laskar Pelangi dan Buku Algoritma. (2) Pada Sistem Akun Bank, kelas adalah 'Rekening' dengan atribut (nomor_rekening, nama_nasabah, saldo) dan perilaku (setor_tunai, tarik_tunai), objek adalah Rekening A/N Siti dan Rekening A/N Joko.

Akhir Pertemuan:

  • Cek pemahaman tertulis 2 butir soal: Butir 1: 'Jelaskan pengertian class sebagai blueprint dalam pemodelan sistem perangkat lunak!' (kriteria acuan: class dijelaskan sebagai cetak biru/templat/rancangan yang mendefinisikan struktur atribut dan perilaku yang akan dimiliki oleh objek). Butir 2: 'Jelaskan perbedaan mendasar antara class dan object dalam pemodelan sistem!' (kriteria acuan: class adalah konsep/rancangan belum berwujud data konkret, sedangkan object adalah instansiasi/wujud nyata dari class yang menempati memori dengan nilai atribut tertentu).

Formatif:

  • Tanya jawab diagnostik awal pemahaman analogi blueprint dan objek fisik
  • Observasi unjuk kerja diskusi kelompok saat mengidentifikasi atribut dan perilaku pada Aktivitas 3.2
  • Tes tertulis singkat cek pemahaman akhir sesi mengenai penjelasan konsep kelas dan objek

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penjelasan Konsep Kelas sebagai Blueprint Pemodelan SistemBelum mampu menjelaskan konsep kelas sebagai cetak biru (blueprint) dalam pemodelan sistem perangkat lunak.Mampu menjelaskan konsep kelas sebagai cetak biru secara parsial dengan bantuan bimbingan guru.Mampu menjelaskan konsep kelas sebagai cetak biru (blueprint) pemodelan sistem secara tepat dan mandiri sesuai kriteria acuan.Mampu menjelaskan konsep kelas sebagai cetak biru pemodelan sistem secara tepat, komprehensif, mendalam, dan menghubungkannya dengan efisiensi pemodelan sistem perangkat lunak secara mandiri.
Penjelasan Hubungan dan Perbedaan Konsep Kelas dan ObjekBelum mampu membedakan konsep kelas dan objek dalam pemodelan sistem perangkat lunak.Mampu membedakan konsep kelas dan objek namun masih tertukar antara spesifikasi rancangan dan instansi konkret.Mampu menjelaskan perbedaan serta hubungan antara kelas dan objek secara tepat sesuai kriteria acuan.Mampu menjelaskan perbedaan serta hubungan antara kelas dan objek secara tepat, runtut, dan mengilustrasikan contoh konkret pemodelan sistem nyata tanpa keraguan.

Refleksi Pertemuan:

Guru:

  • Apakah analogi blueprint yang digunakan berhasil memfasilitasi murid memahami perbedaan konseptual antara class dan object?
  • Bagaimana keterlibatan murid dalam aktivitas kelompok mengklasifikasikan objek nyata ke dalam struktur kelas?

Murid:

  • Apa hal paling jelas yang membedakan antara cetak biru (kelas) dan hasil cetakan (objek) dalam program komputer?
  • Bagian mana dari konsep pemodelan kelas dan objek yang menurut saya masih menantang untuk dipahami?

Pertemuan 3 — Menjelaskan Hubungan Antarentitas pada Paradigma Pemrograman Berorientasi Objek dalam Pemodelan Sistem — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.1 Menjelaskan algoritma dan paradigma pemrograman berorientasi objek dalam pemodelan sistem perangkat lunak

Pendahuluan:

  • Guru membuka pelajaran dengan salam, memeriksa kehadiran murid, dan menyampaikan tujuan pembelajaran mengenai penjelasan hubungan antarentitas dalam paradigma PBO untuk pemodelan sistem (5 menit).
  • Guru melaksanakan asesmen awal singkat untuk memetakan kesiapan murid terkait relasi antarentitas dalam pemodelan sistem: murid menjawab pertanyaan lisan guru mengenai jenis interaksi objek pada skenario perpustakaan (acuan: objek Siswa meminjam objek Buku, di mana entitas Siswa berelasi/berasosiasi dengan entitas Buku) (10 menit).

Kegiatan Inti:

Memahami (Berkesadaran, Bermakna):

  • Guru memaparkan materi konseptual tentang bagaimana paradigma PBO memodelkan hubungan antarentitas dalam sistem perangkat lunak, mencakup 3 jenis relasi: Asosiasi (hubungan interaksi umum 'menggunakan/berhubungan'), Agregasi (hubungan kepemilikan 'memiliki bagian' bersifat longgar di mana objek bagian tetap bisa ada mandiri), dan Komposisi (hubungan kepemilikan utuh bersifat terikat erat di mana bagian tidak bisa ada tanpa induknya) (25 menit).
  • Murid secara berpasangan mencermati 3 contoh studi kasus sistem pemodelan perangkat lunak berikut: Kasus 1: Dokter dan Pasien (Asosiasi); Kasus 2: Jurusan dan Mahasiswa (Agregasi); Kasus 3: Mobil dan Mesin (Komposisi), lalu mengidentifikasi karakteristik keterikatan antarentitasnya (15 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Guru membagikan Lembar Kerja Tantangan 'Kartu Relasi Entitas' yang berisi 4 skenario sistem nyata untuk dianalisis dan dijelaskan jenis hubungan antarentitasnya secara berkelompok (10 menit).
  • Murid dalam kelompok berdiskusi menganalisis 4 skenario pemodelan sistem berikut: (1) Skenario Toko Online: entitas Pelanggan berinteraksi dengan entitas Produk (acuan: Asosiasi); (2) Skenario Sekolah: entitas Kelas memiliki entitas Siswa yang tetap ada jika kelas dibubarkan (acuan: Agregasi); (3) Skenario Bangunan: entitas Rumah memiliki entitas Ruangan yang hancur jika rumah dihancurkan (acuan: Komposisi); (4) Skenario Bank: entitas Nasabah bertransaksi menggunakan entitas Mesin ATM (acuan: Asosiasi) (30 menit).
  • Permainan interaktif 'Tebak Hubungan Entitas': perwakilan tiap kelompok mengambil 1 kartu tantangan acak di depan kelas, lalu menjelaskan jenis hubungan antarentitas serta alasannya secara lugas kepada kelas untuk dinilai ketepatannya oleh kelompok lain dan guru (acuan kunci: kartu A 'Komputer & Motherboard' = Komposisi; kartu B 'Perpustakaan & Buku' = Agregasi; kartu C 'Pengemudi & Mobil Sewaan' = Asosiasi) (20 menit).

Merefleksi (Berkesadaran):

  • Murid menuliskan rangkuman reflektif singkat di buku catatan mengenai perbedaan mendasar antara asosiasi, agregasi, dan komposisi serta pentingnya relasi tersebut dalam menyusun pemodelan sistem perangkat lunak berorientasi objek yang utuh (10 menit).

Penutup:

  • Guru memberikan umpan balik menyeluruh atas hasil kerja kelompok dan menegaskan kembali intisari pemodelan hubungan antarentitas dalam paradigma PBO (5 menit).
  • Guru menyampaikan agenda pengantar untuk pertemuan berikutnya mengenai pendefinisian kelas dan instansiasi objek dalam kode program Python, lalu menutup kelas dengan doa bersama (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan diagram analogi visual hubungan antarentitas yang dilengkapi kata kunci pengarah ('berinteraksi', 'memiliki mandiri', 'memiliki terikat'), sedangkan murid yang mahir diberikan skenario kompleks pemodelan sistem e-commerce berskala besar.
  • Proses: Pada tahap Mengaplikasi, murid pemula dipandu guru langkah demi langkah menentukan ketergantungan hidup antarentitas, sedangkan murid mahir bekerja mandiri merumuskan alasan logika di balik relasi antarentitas.
  • Produk: Semua murid menjelaskan 4 skenario relasi antarentitas pada format lembar kerja yang sama.

Asesmen Pertemuan:

Awal:

  • Tanya jawab diagnostik awal untuk mengukur pemahaman konsep interaksi entitas: 'Pada sistem aplikasi perpustakaan, terdapat entitas Siswa dan entitas Buku. Bagaimana kedua entitas ini saling berhubungan dalam sistem?' (Acuan jawaban: Siswa berinteraksi/meminjam Buku; entitas Siswa memiliki relasi dengan entitas Buku untuk mencatat transaksi peminjaman).

Proses:

  • Penilaian formatif pada tahap Mengaplikasi saat murid menganalisis 4 skenario pemodelan sistem: (1) Pelanggan - Produk (acuan: Asosiasi); (2) Kelas - Siswa (acuan: Agregasi); (3) Rumah - Ruangan (acuan: Komposisi); (4) Nasabah - Mesin ATM (acuan: Asosiasi). Kriteria: ketepatan identifikasi jenis relasi dan kelogisan penjelasan keterikatan antarentitas.

Akhir Pertemuan:

  • Cek pemahaman di akhir sesi berupa lembar tiket keluar (exit ticket): Murid menjelaskan jenis hubungan antarentitas untuk kasus 'Sekolah dan Ruang Kelas' (acuan: Komposisi, karena Ruang Kelas secara fisik dan struktural merupakan bagian terikat utuh yang tidak berdiri sendiri tanpa keberadaan gedung Sekolah) serta kasus 'Guru dan Siswa' (acuan: Asosiasi, karena keduanya entitas mandiri yang saling berinteraksi dalam proses pembelajaran).

Formatif:

  • Observasi diskusi kelompok dan unjuk kerja penjelasan relasi antarentitas pada permainan kartu tantangan
  • Pemeriksaan Lembar Kerja Analisis Hubungan Antarentitas 4 Skenario

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penjelasan Hubungan Antarentitas dalam Pemodelan SistemMampu menjelaskan paling banyak 1 dari 4 skenario hubungan antarentitas secara tepat sesuai acuan (acuan: Skenario 1 = Asosiasi, Skenario 2 = Agregasi, Skenario 3 = Komposisi, Skenario 4 = Asosiasi).Mampu menjelaskan 2 dari 4 skenario hubungan antarentitas secara tepat sesuai acuan disertai alasan keterikatan yang masih memerlukan bimbingan guru.Mampu menjelaskan 3 dari 4 skenario hubungan antarentitas secara tepat sesuai acuan disertai alasan keterikatan antarentitas yang logis secara mandiri.Mampu menjelaskan seluruh 4 skenario hubungan antarentitas (Asosiasi, Agregasi, Komposisi) secara tepat sesuai acuan dan memberikan alasan keterikatan sistem secara mendalam tanpa kekeliruan.

Refleksi Pertemuan:

Guru:

  • Apakah skenario sistem nyata yang disajikan cukup kontekstual sehingga memudahkan murid membedakan relasi asosiasi, agregasi, dan komposisi?
  • Apakah durasi waktu pada aktivitas permainan interaktif kartu tantangan berjalan efektif dan melibatkan seluruh murid secara aktif?

Murid:

  • Bagian mana dari konsep hubungan antarentitas (asosiasi, agregasi, komposisi) yang paling mudah dan paling menantang untuk dipahami?
  • Bagaimana pemahaman tentang hubungan antarentitas ini membantu saya melihat cara kerja perangkat lunak di dunia nyata?

Pertemuan 4 — Menerapkan Pendefinisian Kelas dan Instansiasi Objek Sederhana dalam Pemrograman Berorientasi Objek — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.2 Menerapkan pemrograman berorientasi objek melalui pendefinisian kelas, atribut, dan metode

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kehadiran murid, dan menyampaikan tujuan pembelajaran yaitu mendefinisikan kelas dan melakukan instansiasi objek sederhana dalam bahasa Python (5 menit).
  • Guru melaksanakan asesmen awal diagnostik melalui 2 pertanyaan tertulis di papan tulis: (1) Kata kunci apa yang digunakan untuk mendefinisikan kelas dalam Python? (acuan: class), (2) Bagaimana sintaks membuat objek 'mobil1' dari kelas 'Mobil'? (acuan: mobil1 = Mobil()) (10 menit).
  • Guru memberikan pengantar singkat mengaitkan konsep cetak biru di pertemuan sebelumnya dengan penulisan sintaks program nyata hari ini (5 menit).

Kegiatan Inti:

Memahami (Bermakna, Berkesadaran):

  • Murid menyimak demonstrasi guru di layar proyektor mengenai sintaks pendefinisian kelas kosong menggunakan kata kunci 'class' dan 'pass', serta sintaks pemanggilan kelas untuk membuat objek (instansiasi) (15 menit).
  • Murid menganalisis 3 contoh potongan kode pendek yang disajikan guru untuk membedakan nama kelas, baris instansiasi, dan nama variabel objek: Kode A: class Robot: pass; r1 = Robot(); Kode B: class Laptop: pass; l1 = Laptop(); l2 = Laptop(); Kode C: class Buku: pass; b = Buku() (acuan komponen: nama kelas diawali huruf kapital, instansiasi ditandai tanda kurung setelah nama kelas) (15 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Murid mengikuti tantangan cepat 'Code Matching' secara berpasangan: mencocokkan 4 kartu skenario objek ke dalam sintaks Python (1. Kelas Kucing -> k1 = Kucing(); 2. Kelas Pesawat -> p1 = Pesawat(); 3. Kelas Siswa -> s1 = Siswa(); 4. Kelas Lingkaran -> c1 = Lingkaran()) yang diperiksa langsung dengan umpan balik antarteman (15 menit).
  • Murid secara mandiri membuka IDE Python dan mengetikkan kode program pendefinisian kelas 'Kendaraan' serta melakukan instansiasi 2 objek yaitu 'kendaraan1' dan 'kendaraan2' (20 menit).
  • Murid menyelesaikan Lembar Kerja Praktikum Mandiri: membuat 2 kelas baru (Kelas Persegi dan Kelas Pengguna) beserta instansiasi masing-masing minimal 2 objek (persegiA = Persegi(), persegiB = Persegi(), user1 = Pengguna(), user2 = Pengguna()), lalu menjalankan program untuk memastikan tidak ada error sintaks (20 menit).

Merefleksi (Berkesadaran):

  • Murid memeriksa kembali kode programnya sendiri menggunakan daftar periksa mandiri (checklist sintaks: penulisan kata kunci 'class', titik dua ':', indentasi blok, dan pemanggilan konstruktor kelas 'NamaKelas()') (15 menit).
  • Murid mengidentifikasi satu kendala pengetikan (syntax error) yang paling sering muncul saat instansiasi dan mencatat solusinya pada buku catatan praktikum (5 menit).

Penutup:

  • Guru memfasilitasi murid menyimpulkan aturan sintaks pendefinisian kelas dan mekanisme instansiasi objek dalam Python (5 menit).
  • Guru memberikan asesmen akhir berupa cek pemahaman 2 butir soal sintaks instansiasi dan menyampaikan topik pertemuan berikutnya mengenai atribut instance dan konstruktor __init__ (5 menit).

Diferensiasi:

  • Konten: Menyediakan lembar contekan sintaks (syntax cheatsheet) untuk murid yang membutuhkan scaffolding memori sintaks Python.
  • Proses: Murid yang telah menguasai cepat diminta membuat 4 instansiasi objek tambahan dengan nama variabel berbeda secara mandiri tanpa template, sedangkan murid yang membutuhkan bimbingan diberikan kerangka kode rumpang.
  • Produk: Bagi murid reguler menghasilkan script berisi 2 pendefinisian kelas dan 4 objek instansiasi; bagi murid mahir menambahkan pencetakan tipe data objek menggunakan fungsi print(type(objek)).

Asesmen Pertemuan:

Awal:

  • Pertanyaan diagnostik tertulis singkat: (1) Kata kunci apa yang digunakan untuk membuat kelas di Python? (acuan: class), (2) Bagaimana sintaks instansiasi objek mobil1 dari kelas Mobil? (acuan: mobil1 = Mobil()). Kriteria kesiapan: Menjawab tepat kedua butir menunjukkan siap tugas mandiri penuh; menjawab salah/belum tepat diberikan pendampingan pada tahap Memahami.

Proses:

  • Pemeriksaan eksekusi kode Lembar Kerja Praktikum Mandiri pada 2 tugas: Tugas 1 mendefinisikan class Persegi dan 2 objeknya (persegiA = Persegi(), persegiB = Persegi()); Tugas 2 mendefinisikan class Pengguna dan 2 objeknya (user1 = Pengguna(), user2 = Pengguna()). Acuan: kode bebas SyntaxError dan kedua objek berhasil teralokasi di memori.

Akhir Pertemuan:

  • Cek pemahaman 2 butir soal singkat di akhir pertemuan: (1) Tuliskan baris kode untuk mendefinisikan kelas kosong bernama 'Akun'! (acuan: class Akun: pass), (2) Tuliskan baris kode instansiasi objek 'akunUtama' dari kelas 'Akun'! (acuan: akunUtama = Akun()). Kriteria: jawaban diterima bila penulisan sintaks tepat huruf besar/kecil, titik dua, dan tanda kurung.

Formatif:

  • Observasi unjuk kerja pemrograman (pemeriksaan langsung kode program di layar komputer murid)
  • Cek pemahaman tertulis singkat di awal dan akhir sesi

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Pendefinisian Kelas SederhanaBelum mampu menuliskan kata kunci class dan nama kelas secara tepat sehingga program menghasilkan SyntaxError.Mampu menuliskan kata kunci class dan nama kelas namun masih memerlukan bantuan untuk memperbaiki kesalahan indentasi atau tanda titik dua (:).Mampu menuliskan pendefinisian kelas sederhana dengan sintaks yang tepat (class NamaKelas: pass) secara mandiri pada 2 kelas tugas.Mampu menuliskan pendefinisian kelas sederhana dengan sintaks yang tepat secara konsisten dan mandiri pada lebih dari 2 kelas tugas tanpa kekeliruan sintaks.
Instansiasi Objek SederhanaBelum mampu menuliskan sintaks pembuatan variabel objek dari kelas yang telah didefinisikan.Mampu melakukan instansiasi objek namun masih keliru melewatkan tanda kurung () atau salah menuliskan nama kelas sehingga terjadi NameError.Mampu melakukan instansiasi objek dari kelas yang telah didefinisikan dengan sintaks tepat (objek = Kelas()) pada seluruh 4 objek tugas mandiri.Mampu melakukan instansiasi objek secara tepat dan mandiri pada seluruh objek tugas serta memverifikasi keberadaan objek di memori (misalnya menggunakan print() atau type()).

Refleksi Pertemuan:

Guru:

  • Apakah alokasi waktu 135 menit mencukupi bagi seluruh murid untuk mempraktikkan sintaks class dan instansiasi secara langsung di komputer?
  • Bagian sintaks mana yang paling banyak menimbulkan galat (syntax error) pada murid saat mendefinisikan kelas dan instansiasi?

Murid:

  • Apakah saya sudah dapat membedakan dengan jelas antara nama kelas dan nama objek dalam baris kode yang saya buat?
  • Langkah apa yang akan saya lakukan jika saat melakukan instansiasi objek muncul pesan kesalahan di layar?

Pertemuan 5 — Menerapkan Pendefinisian Atribut Instance dan Konstruktor __init__ dalam Kelas Pemrograman Berorientasi Objek — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.2 Menerapkan pemrograman berorientasi objek melalui pendefinisian kelas, atribut, dan metode

Pendahuluan:

  • Guru membuka sesi pembelajaran dengan salam, memeriksa kesiapan belajar murid, dan menyampaikan topik pembelajaran yaitu penerapan atribut instance dan konstruktor __init__ dalam kelas PBO (5 menit).
  • Guru melaksanakan asesmen awal diagnostik singkat menggunakan 2 pertanyaan tertulis di papan tulis: (1) Apa kata kunci Python untuk mendefinisikan sebuah kelas? (acuan: class); (2) Bagaimana sintaks membuat objek mobil1 dari kelas Mobil kosong? (acuan: mobil1 = Mobil()) (10 menit).
  • Guru mengaitkan jawaban murid dengan tujuan sesi hari ini, yaitu menginisialisasi atribut spesifik saat objek dibuat tanpa perlu mengisi nilai atribut satu per satu secara manual di luar kelas (5 menit).

Kegiatan Inti:

Memahami (Berkesadaran, Bermakna):

  • Guru mendemonstrasikan penulisan konstruktor __init__ dengan parameter self dan atribut instance melalui contoh kelas Sepeda di papan tulis/proyektor: def __init__(self, warna, jenis): self.warna = warna; self.jenis = jenis (15 menit).
  • Murid mencermati perbedaan pengisian nilai secara manual vs otomatis lewat konstruktor dan menelaah peran kata kunci self dalam mengikat atribut ke instance objek tertentu (10 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Murid berpartisipasi dalam kuis tantangan interaktif berpasangan 'Tebak Nilai Instance' untuk mencocokkan kode pembuatan objek dengan output nilai atribut instance yang dihasilkan (15 menit).
  • Murid secara mandiri menulis kode program Python di IDE untuk mendefinisikan kelas Siswa dengan konstruktor __init__(self, nama, kelas) dan atribut instance self.nama serta self.kelas, lalu melakukan instansiasi 2 objek: s1 = Siswa('Budi', 'XI IPA 1') dan s2 = Siswa('Ani', 'XI IPS 2') serta mencetak nilai atributnya (40 menit).

Merefleksi (Berkesadaran):

  • Murid mengevaluasi hasil eksekusi kodenya, memeriksa apakah terjadi galat (misalnya TypeError karena argumen __init__ kurang atau lupa menulis self), lalu memperbaiki baris kode tersebut (15 menit).
  • Murid menyimpulkan fungsi konstruktor __init__ dan atribut instance dalam pemodelan data objek (10 menit).

Penutup:

  • Guru bersama murid menyimpulkan alur pendefinisian atribut instance menggunakan metode konstruktor __init__(self, ...) (5 menit).
  • Guru memberikan umpan balik menyeluruh terhadap hasil eksekusi kode murid dan menginformasikan topik pertemuan berikutnya mengenai penambahan metode perilaku objek (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan kartu panduan sintaks struktur konstruktor __init__, sedangkan murid yang lebih cepat diberikan skenario pendefinisian kelas dengan 4 atribut instance (nama, nis, jurusan, angkatan).
  • Proses: Murid yang mengalami kendala sintaks didampingi langsung secara bertahap saat mengetik konstruktor di IDE, sementara murid yang telah lancar mengerjakan latihan kode secara mandiri penuh.
  • Produk: Semua murid menghasilkan skrip Python kelas berkonstruktor; murid cepat menambahkan instansiasi hingga 4 objek berbeda secara mandiri.

Asesmen Pertemuan:

Awal:

  • Dua pertanyaan diagnostik awal: (1) Sebutkan kata kunci Python untuk mendefinisikan kelas! (acuan kunci: class); (2) Tuliskan satu baris kode untuk membuat objek bernama mobil1 dari kelas Mobil! (acuan kunci: mobil1 = Mobil())

Proses:

  • Pengamatan unjuk kerja mandiri penulisan kode kelas Siswa dengan kriteria: ketepatan sintaks def __init__(self, nama, kelas), penetapan kedua atribut self.nama = nama dan self.kelas = kelas, serta ketepatan pemanggilan instansiasi s1 = Siswa('Budi', 'XI IPA 1') dan s2 = Siswa('Ani', 'XI IPS 2'). Kunci acuan kode: class Siswa: def __init__(self, nama, kelas): self.nama = nama self.kelas = kelas s1 = Siswa('Budi', 'XI IPA 1') s2 = Siswa('Ani', 'XI IPS 2') print(s1.nama) print(s2.kelas)

Akhir Pertemuan:

  • Cek pemahaman penutup berupa 1 tugas kode mandiri satu baris: Murid menuliskan kode instansiasi objek s3 dari kelas Siswa dengan nilai nama 'Citra' dan kelas 'XI BAHASA'. (acuan kunci: s3 = Siswa('Citra', 'XI BAHASA'))

Formatif:

  • Tes diagnostik awal berupa 2 butir pertanyaan dasar sintaks kelas dan instansiasi
  • Unjuk kerja praktik penulisan kode program pendefinisian konstruktor __init__ dan atribut instance pada kelas Siswa menggunakan lembar observasi koding

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Pendefinisian Konstruktor __init__ dan Atribut InstanceBelum mampu mendefinisikan konstruktor __init__ dan belum mampu menetapkan atribut instance dengan benar (sintaks eror atau atribut tidak terdefinisi).Mampu mendefinisikan konstruktor __init__, tetapi masih salah dalam penggunaan parameter self atau hanya menetapkan 1 atribut instance dengan benar.Mampu mendefinisikan konstruktor __init__ dengan parameter self dan menetapkan kedua atribut instance (self.nama dan self.kelas) secara tepat dengan sedikit bimbingan guru.Mampu mendefinisikan konstruktor __init__ dengan parameter self dan menetapkan seluruh atribut instance secara tepat, mandiri, serta bebas dari galat sintaks.
Penerapan Instansiasi Objek BerargumenBelum mampu melakukan instansiasi objek yang mengirimkan argumen ke dalam konstruktor __init__.Mampu melakukan instansiasi objek tetapi nilai argumen yang diberikan belum sesuai dengan parameter pada konstruktor sehingga menghasilkan TypeError.Mampu melakukan instansiasi 2 objek (s1 dan s2) dengan argumen yang tepat dan mencetak atributnya dengan sedikit arahan guru.Mampu melakukan instansiasi 2 objek atau lebih dengan argumen yang tepat serta berhasil mengakses/mencetak nilai atribut instance secara mandiri tanpa kesalahan.

Refleksi Pertemuan:

Guru:

  • Apakah seluruh murid memahami fungsi parameter self dalam mengikat atribut instance saat konstruktor __init__ dipanggil?
  • Bagian mana dari penulisan konstruktor __init__ yang paling sering menimbulkan galat pada murid saat kompilasi/eksekusi kode?

Murid:

  • Apa perbedaan mendasar yang saya rasakan antara membuat objek tanpa konstruktor dibanding menggunakan konstruktor __init__?
  • Bagian mana dari pembuatan atribut instance yang masih membingungkan bagi saya saat mengetik kode di IDE?

Pertemuan 6 — Menerapkan Pendefinisian Metode Perilaku Objek dengan Parameter self dalam Pemrograman Berorientasi Objek — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.2 Menerapkan pemrograman berorientasi objek melalui pendefinisian kelas, atribut, dan metode

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kehadiran murid, dan mengondisikan kesiapan belajar (5 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ini: menerapkan pendefinisian metode perilaku objek dengan parameter self dalam pemrograman berorientasi objek (5 menit).
  • Guru melaksanakan asesmen diagnostik singkat: murid menjawab 2 butir pertanyaan terkait konsep method dan self melalui lembar cek singkat. Butir 1: Apa kata kunci untuk mendefinisikan metode dalam kelas Python? (Acuan: def). Butir 2: Apa fungsi utama parameter pertama self pada metode kelas? (Acuan: merujuk/mereferensikan ke instance/objek pemanggil itu sendiri untuk mengakses atribut dan metode objek) (10 menit).

Kegiatan Inti:

Memahami (Bermakna, Menggembirakan):

  • Murid mengamati dan menganalisis perbandingan 2 potongan kode program Python di layar: Potongan A mendefinisikan metode tanpa parameter 'self' sehingga menghasilkan TypeError saat dipanggil, sedangkan Potongan B menggunakan 'def tampilkan_info(self): print(self.nama)'. Guru menjelaskan peran krusial 'self' sebagai rujukan eksplisit ke instance objek yang sedang aktif (15 menit).
  • Murid mengikuti sesi interaktif kuis tebak luaran 'Game Debugging Cepat' untuk mengidentifikasi baris kode yang menyebabkan galat pemanggilan metode tanpa self, yang membangun suasana menyenangkan dan keterlibatan aktif (15 menit).

Mengaplikasi (Berkesadaran, Bermakna):

  • Murid secara mandiri menulis kode program pada IDE Python untuk membuat kelas 'KarakterGame' yang memiliki konstruktor '__init__(self, nama, energi)' serta menerapkan metode perilaku 'istirahat(self)' yang menambahkan energi sebesar 10 poin ('self.energi += 10') dan mencetak informasi status energi terkini (30 menit).
  • Murid memperluas kode dengan menerapkan metode kedua bernama 'berlari(self, jarak)' yang menerima parameter tambahan berupa jarak tempuh, mengurangi nilai 'self.energi' sebesar jarak dikali 2, lalu melakukan instansiasi objek dan menguji kedua metode perilaku tersebut melalui pemanggilan 'hero.istirahat()' dan 'hero.berlari(5)' (30 menit).

Merefleksi (Berkesadaran):

  • Murid memeriksa kembali kode program masing-masing menggunakan daftar periksa mandiri: verifikasi sintaks penulisan parameter self di setiap definisi metode, ketepatan pengaksesan atribut menggunakan self.atribut, dan keberhasilan eksekusi pemanggilan metode tanpa galat (15 menit).

Penutup:

  • Guru memberikan ulasan penguatan atas hasil eksekusi kode murid mengenai peran parameter self saat memanipulasi atribut objek (5 menit).
  • Guru menginformasikan agenda pertemuan berikutnya mengenai interaksi antarmetode dan atribut pada objek (3 menit).
  • Guru menutup sesi pembelajaran dengan doa bersama dan salam penutup (2 menit).

Diferensiasi:

  • Konten: Menyediakan template rintisan kode (scaffolding) dengan penanda komentar '# tulis def metode di sini' bagi murid yang membutuhkan panduan sintaks, serta kode bebas tanpa template bagi murid yang siap mandiri.
  • Proses: Memberikan bimbingan terarah bagi murid yang masih mengalami galat TypeError pada parameter self, serta memberikan tantangan penambahan metode perhitungan perilaku objek yang lebih kompleks bagi murid yang menyelesaikan lebih awal.
  • Produk: Variasi kompleksitas kode program: murid yang membutuhkan bimbingan menyelesaikan kelas dengan 1 metode perilaku, sedangkan murid yang mahir menerapkan 2 metode perilaku dengan parameter tambahan.

Asesmen Pertemuan:

Awal:

  • Cek diagnostik 2 butir pertanyaan di awal sesi: (1) Kata kunci pendefinisian metode fungsi kelas (Kunci: def); (2) Fungsi parameter self pada metode Python (Kunci: merujuk/mereferensikan ke instance atau objek pemanggil itu sendiri).

Proses:

  • Observasi ketercapaian sintaksis saat murid menulis kode kelas KarakterGame: (1) Ketepatan menuliskan 'def nama_metode(self)' di dalam blok kelas; (2) Ketepatan mereferensikan atribut menggunakan sintaks 'self.nama_atribut' di dalam badan metode; (3) Keberhasilan eksekusi pemanggilan metode melalui objek tanpa memicu TypeError.

Akhir Pertemuan:

  • Cek pemahaman mandiri di akhir pertemuan melalui verifikasi eksekusi program: Program murid berhasil menampilkan perubahan nilai atribut energi setelah pemanggilan metode istirahat() dan berlari() (Acuan output: energi bertambah setelah istirahat dan berkurang setelah berlari sesuai logika perhitungan).

Formatif:

  • Penilaian unjuk kerja pemrograman: menuliskan definisi kelas, atribut instansiasi, dan metode perilaku dengan parameter self pada lembar kerja IDE Python.

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Sintaks Parameter self pada Definisi MetodeBelum mampu menuliskan parameter self pada pendefinisian metode kelas sehingga memicu TypeError saat metode dipanggil.Menuliskan parameter self pada pendefinisian metode namun keliru saat memanggil atribut di dalam badan metode (tidak menggunakan self.atribut).Mampu menerapkan penulisan parameter self pada pendefinisian metode dan mengakses atribut objek dengan tepat dengan sedikit bimbingan perbaikan sintaks.Mampu menerapkan penulisan parameter self pada pendefinisian seluruh metode perilaku objek secara tepat, mandiri, dan bebas galat.
Penerapan Metode Perilaku untuk Memanipulasi Nilai Atribut ObjekBelum mampu menerapkan logika manipulasi nilai atribut di dalam tubuh metode objek.Menerapkan metode perilaku yang memanipulasi atribut objek, namun logika perhitungan atau pembaruan nilai belum tepat sesuai skenario.Menerapkan metode perilaku yang memanipulasi nilai atribut objek (penambahan energi dan pengurangan energi) dengan tepat sesuai instruksi.Menerapkan metode perilaku dengan penambahan parameter masukan dinamis untuk memanipulasi nilai atribut objek secara tepat, runtut, dan mandiri.

Refleksi Pertemuan:

Guru:

  • Apakah alokasi waktu 135 menit memadai untuk melatih keterampilan menulis metode berparameter self secara mandiri?
  • Bagian mana dari konsep parameter self yang paling banyak menimbulkan kesalahan sintaks pada kode murid?

Murid:

  • Apakah saya sudah memahami mengapa parameter self harus dituliskan pertama kali pada setiap metode kelas di Python?
  • Kendala apa yang saya hadapi saat menghubungkan metode perilaku dengan pembaruan nilai atribut objek?

Pertemuan 7 — Menerapkan Interaksi Antarmetode dan Atribut pada Objek dalam Pemrograman Berorientasi Objek — 3 JP (3 x 45 menit = 135 menit)

Tujuan Pertemuan:

  • TP 11.3.2 Menerapkan pemrograman berorientasi objek melalui pendefinisian kelas, atribut, dan metode

Pendahuluan:

  • Guru membuka kelas dengan salam dan memfasilitasi murid memeriksa kesiapan lingkungan koding (editor teks/IDE) (5 menit).
  • Guru melaksanakan asesmen awal singkat untuk mengecek pemahaman prasyarat sintaks pemanggilan atribut dan metode dengan parameter self melalui pertanyaan terarah di layar (10 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ini, yaitu menerapkan interaksi antarmetode dan pembaruan nilai atribut pada objek dalam kelas (5 menit).

Kegiatan Inti:

Memahami (Bermakna):

  • Murid menyimak demonstrasi guru mengenai cara sebuah metode memanggil metode lain menggunakan sintaks 'self.nama_metode()' dan bagaimana metode tersebut memanipulasi nilai atribut 'self.nama_atribut' (15 menit).
  • Murid menelaah kode contoh kelas 'Mobil' dengan atribut 'bensin' dan 'kecepatan', serta metode 'isi_bensin()', 'tambah_kecepatan()', dan 'cek_status()', guna memahami alur pemanggilan metode di dalam metode lain (15 menit).

Mengaplikasi (Menggembirakan):

  • Murid mengikuti tantangan berpasangan 'Debugging Cepat' untuk menemukan dan memperbaiki 2 kesalahan pemanggilan internal metode: (1) pemanggilan metode tanpa awalan 'self.' dan (2) kesalahan logika pembaruan atribut sebelum cetak status (15 menit).
  • Murid secara mandiri menuliskan kode program lengkap kelas 'DompetDigital' yang memiliki atribut 'saldo', metode 'isi_saldo(jumlah)', metode 'bayar(jumlah)', dan metode internal 'catat_transaksi(tipe, jumlah)' yang dipanggil otomatis oleh metode 'isi_saldo' dan 'bayar' (30 menit).

Merefleksi (Berkesadaran):

  • Murid memverifikasi kesesuaian eksekusi kodingnya secara mandiri dengan mencocokkan perubahan nilai atribut dan riwayat pemanggilan metode terhadap 3 kasus uji keluaran (20 menit).
  • Murid mengidentifikasi bagian kode yang paling krusial dalam memastikan konsistensi atribut saat terjadi pemanggilan metode berantai (10 menit).

Penutup:

  • Guru memberikan penguatan umum mengenai pentingnya kata kunci 'self' dalam mengelola interaksi antarmetode dan pembaruan atribut objek (5 menit).
  • Murid menyelesaikan asesmen akhir berupa pengecekan ketercapaian kode dan guru menyampaikan topik pertemuan berikutnya (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan kartu panduan alur 'self.metode()' dan struktur kode rumpang, sedangkan murid yang siap diberikan spesifikasi tambahan berupa validasi kecukupan atribut sebelum pemanggilan metode berikutnya.
  • Proses: Murid yang mengalami kendala sintaks didampingi langsung pada tahap penulisan kode awal, sedangkan murid mahir langsung menyusun interaksi antarmetode secara mandiri.
  • Produk: Seluruh murid menghasilkan kode program yang memuat kelas dengan interaksi antarmetode dan atribut; murid mahir menyertakan minimal 2 metode yang saling berinteraksi secara berantai.

Asesmen Pertemuan:

Awal:

  • Diagnostik pemahaman prasyarat sintaks berupa 2 butir soal lisan/layar: (1) Bagaimana sintaks untuk mengakses atribut 'saldo' dari dalam metode kelas? (Acuan jawaban benar: self.saldo); (2) Bagaimana sintaks untuk memanggil metode 'tampil()' dari dalam metode lain di kelas yang sama? (Acuan jawaban benar: self.tampil())

Proses:

  • Observasi unjuk kerja saat murid menyelesaikan penulisan kelas 'DompetDigital', berfokus pada ketepatan penulisan sintaks 'self.catat_transaksi()' di dalam metode 'isi_saldo()' dan 'bayar()', serta pembaruan atribut 'self.saldo' (Acuan kode benar: self.saldo += jumlah; self.catat_transaksi('isi', jumlah) dan self.saldo -= jumlah; self.catat_transaksi('bayar', jumlah))

Akhir Pertemuan:

  • Pengecekan hasil keluaran program mandiri terhadap 3 skenario uji: (1) Instansiasi awal saldo 0 menghasilkan saldo 0; (2) Pemanggilan isi_saldo(50000) menghasilkan atribut saldo bernilai 50000 dan tercatat transaksi 'isi'; (3) Pemanggilan bayar(20000) menghasilkan atribut saldo terbarui menjadi 30000 dan tercatat transaksi 'bayar' (Acuan ketepatan: seluruh 3 kasus uji tereksekusi tanpa error)

Formatif:

  • Pemeriksaan ketepatan sintaks pemanggilan antarmetode 'self.metode()' dan pembaruan atribut pada latihan mandiri

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Pendefinisian Kelas dan AtributBelum mampu mendefinisikan kelas dan atribut instance yang sesuai spesifikasi tugas.Mampu mendefinisikan kelas dan atribut instance namun masih terdapat kesalahan pada inisialisasi nilai atribut awal.Mampu mendefinisikan kelas dan menginisialisasi seluruh atribut instance dengan tepat menggunakan konstruktor secara mandiri.Mampu mendefinisikan kelas dan seluruh atribut instance secara tepat, konsisten, serta mengelola tipe data atribut secara optimal tanpa kesalahan sintaks.
Penerapan Interaksi Antarmetode pada ObjekBelum mampu menerapkan pemanggilan metode lain dari dalam suatu metode kelas.Mampu menerapkan pemanggilan metode lain namun lupa menyertakan kata kunci 'self' sehingga menghasilkan NameError.Mampu menerapkan pemanggilan metode lain di dalam kelas menggunakan sintaks 'self.nama_metode()' secara tepat pada tugas mandiri.Mampu menerapkan interaksi antarmetode secara tepat dan konsisten, serta memastikan pembaruan nilai atribut objek terintegrasi sempurna di setiap alur pemanggilan metode.

Refleksi Pertemuan:

Guru:

  • Apakah alur demonstrasi interaksi antarmetode menggunakan 'self' cukup jelas dipahami oleh sebagian besar murid?
  • Apakah waktu 35 menit pada pengerjaan tugas mandiri mencukupi bagi murid untuk menyusun dan menguji kode kelas secara utuh?

Murid:

  • Bagian mana dari penulisan kode interaksi antarmetode yang masih terasa membingungkan bagi saya?
  • Bagaimana pemahaman tentang pemanggilan antarmetode ini membantu saya membuat program yang lebih terstruktur?

Pertemuan 8 — Menerapkan Pembatasan Hak Akses Atribut Publik dan Privat untuk Perlindungan Data — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.3 Menerapkan prinsip enkapsulasi dalam pemrograman berorientasi objek untuk perlindungan data

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kehadiran murid, dan menyampaikan tujuan pembelajaran mengenai penerapan pembatasan hak akses publik dan privat pada atribut kelas untuk perlindungan data (5 menit).
  • Guru melaksanakan asesmen awal diagnostik singkat dengan menampilkan 2 baris kode Python: `s1.nilai = 100` dan menanyakan apakah atribut tersebut publik atau privat serta risikonya (acuan: atribut publik dapat diakses/dimodifikasi langsung tanpa proteksi) untuk memetakan kesiapan murid (5 menit).
  • Guru memantik kesadaran murid melalui analogi kapsul obat dan brankas: data penting dalam kelas harus dilindungi agar tidak dapat dimanipulasi dari luar secara sembarangan (5 menit).

Kegiatan Inti:

Memahami (Berkesadaran, Bermakna):

  • Murid menyimak demonstrasi guru mengenai perbedaan sintaks atribut publik (`self.nama`) dan atribut privat dengan penambahan awalan garis bawah ganda (`self.__saldo`) pada kelas `AkunBank` (10 menit).
  • Murid mengamati pembuktian langsung saat program mencoba memanggil `akun.__saldo` dari luar kelas yang menghasilkan pesan kesalahan `AttributeError` karena proteksi enkapsulasi (10 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Murid secara berpasangan mengikuti tantangan kuis kode interaktif 'Uji Jebol Atribut' di mana murid saling menukar kode kelas dan membuktikan bahwa atribut privat berawalan ganda '__' tidak bisa diubah langsung dari instansiasi luar objek (15 menit).
  • Murid secara mandiri menuliskan kode program kelas `AkunBank` yang memuat atribut publik `nomor_rekening` dan atribut privat `__saldo`, kemudian menguji instansiasi objek untuk memastikan pembatasan hak akses berhasil diterapkan (acuan kode: `class AkunBank: def __init__(self, no_rek, saldo): self.nomor_rekening = no_rek; self.__saldo = saldo`) (20 menit).

Merefleksi (Berkesadaran):

  • Murid memverifikasi kesesuaian kodenya terhadap lembar cek mandiri dan mengevaluasi bagaimana penambahan garis bawah ganda (`__`) melindungi integritas data dalam objek dari pengubahan liar (10 menit).

Penutup:

  • Murid bersama guru menyimpulkan prinsip pembatasan hak akses publik dan privat pada pemrograman berorientasi objek dalam Python (5 menit).
  • Guru memberikan umpan balik pelaksanaan praktik serta menginformasikan materi pertemuan berikutnya mengenai metode getter untuk membaca data privat dengan aman, lalu menutup pembelajaran dengan doa dan salam (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan panduan sintaks perbandingan atribut publik dan privat, sedangkan murid cepat diberikan kasus penambahan atribut privat tambahan seperti `__pin`.
  • Proses: Murid dengan pemahaman dasar didampingi guru saat penulisan konstruktor, sedangkan murid yang mandiri langsung melakukan pengujian pesan error AttributeError di terminal.
  • Produk: Seluruh murid menghasilkan kode kelas dengan pembatasan hak akses publik dan privat yang valid saat dieksekusi.

Asesmen Pertemuan:

Awal:

  • Pertanyaan diagnostik: Perhatikan kode berikut: (1) `self.nama = nama`, (2) `self.__pin = pin`. Tentukan atribut mana yang bersifat publik dan mana yang privat beserta alasannya! (Acuan jawaban: `self.nama` adalah atribut publik karena tidak menggunakan awalan garis bawah ganda dan dapat diakses langsung dari luar objek; `self.__pin` adalah atribut privat karena menggunakan awalan garis bawah ganda `__` sehingga akses langsung dari luar kelas diblokir oleh Python).

Proses:

  • Lembar observasi tugas pemrograman mandiri: Memeriksa kode kelas `AkunBank` yang ditulis murid dengan 2 kriteria: (1) Pendefinisian atribut publik `nomor_rekening` tanpa awalan garis bawah ganda, (2) Pendefinisian atribut privat `__saldo` dengan awalan dua garis bawah ganda (`__`) di dalam `__init__`, serta pembuktian pemanggilan `akun.__saldo` menghasilkan pesan kesalahan `AttributeError` saat dijalankan (acuan: atribut privat berhasil terlindungi bila memicu `AttributeError: 'AkunBank' object has no attribute '__saldo'`).

Akhir Pertemuan:

  • Cek pemahaman tertulis singkat (2 butir): (1) Ubahlah atribut `nilai` pada `self.nilai = 80` menjadi atribut privat! (Acuan jawaban: `self.__nilai = 80`); (2) Apa output saat kode `print(s1.__nilai)` dipanggil dari luar kelas jika `__nilai` berstatus privat? (Acuan jawaban: Program memunculkan pesan kesalahan `AttributeError` karena atribut privat disembunyikan/dibatasi aksesnya dari luar kelas).

Formatif:

  • Penilaian unjuk kerja pemrograman penulisan atribut publik dan privat
  • Cek mandiri hasil pengujian akses atribut pada terminal/IDE

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Pembatasan Hak Akses Atribut Publik dan PrivatBelum mampu menerapkan tanda garis bawah ganda (`__`) untuk atribut privat pada konstruktor kelas dan kedua atribut masih didefinisikan secara publik.Mampu mendefinisikan atribut publik secara tepat, namun penulisan atribut privat masih keliru (misalnya hanya menggunakan satu garis bawah atau salah penempatan posisi sintaks) sehingga proteksi data belum berfungsi.Mampu menerapkan sintaks atribut publik (`nomor_rekening`) dan atribut privat (`__saldo`) secara tepat pada kelas serta membuktikan perlindungan data melalui pesan kesalahan pemanggilan luar secara tepat.Mampu menerapkan sintaks atribut publik dan privat secara tepat, mandiri, tanpa kekeliruan sintaks, serta membuktikan pembatasan akses data pada beberapa instansiasi objek dengan tepat.

Refleksi Pertemuan:

Guru:

  • Apakah seluruh murid berhasil membedakan penulisan dan fungsi atribut publik serta atribut privat dalam kode Python?
  • Apakah analogi dan demonstrasi pesan error AttributeError cukup efektif membantu pemahaman murid mengenai proteksi data?

Murid:

  • Bagian mana dari penulisan atribut privat dengan tanda `__` yang masih terasa membingungkan?
  • Mengapa penting melindungi data tertentu agar tidak bisa diubah langsung dari luar kelas?

Pertemuan 9 — Menerapkan Metode Pengakses Getter untuk Perlindungan Data dalam Pemrograman Berorientasi Objek — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.3 Menerapkan prinsip enkapsulasi dalam pemrograman berorientasi objek untuk perlindungan data

Pendahuluan:

  • Guru membuka sesi pembelajaran, memeriksa kehadiran murid, dan menyampaikan fokus pertemuan yaitu menerapkan metode pengakses (getter) pada atribut privat dalam enkapsulasi (5 menit).
  • Guru melaksanakan asesmen awal diagnostik singkat dengan menampilkan potongan kode: 'class Akun: def __init__(self, saldo): self.__saldo = saldo; a = Akun(1000); print(a.__saldo)'. Murid menjawab apakah baris cetak tersebut berhasil atau menghasilkan AttributeError (acuan: menghasilkan AttributeError karena atribut __saldo bersifat privat dan tidak dapat diakses langsung dari luar kelas) (5 menit).
  • Guru menyampaikan tujuan pembelajaran serta alur aktivitas praktik pembuatan metode getter pada kelas Python (5 menit).

Kegiatan Inti:

Memahami (Berkesadaran, Bermakna):

  • Murid menyimak pemaparan guru mengenai sintaksis metode pengakses (getter) dengan kata kunci 'def get_nama_atribut(self): return self.__nama_atribut' sebagai fungsi gerbang baca data privat secara berkesadaran terhadap prinsip keamanan data (10 menit).
  • Murid menelaah kode contoh kelas Siswa dengan atribut privat '__nilai' dan metode getter 'get_nilai(self)' yang mengembalikan nilai '__nilai' ke pemanggil luar tanpa mengekspos variabel aslinya secara langsung (10 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Murid secara berpasangan mengikuti tantangan adu cepat koding interaktif 'Tebak & Tulis Gerbang Baca': melengkapi 2 potongan kode rumpang kelas Python agar nilai atribut privat '__pin' pada kelas DompetDigital dan '__gaji' pada kelas Karyawan dapat dibaca dengan getter yang tepat (acuan: metode 'def get_pin(self): return self.__pin' dan 'def get_gaji(self): return self.__gaji') (15 menit).
  • Murid secara mandiri menyusun kode program kelas 'RekeningBank' yang memiliki atribut privat '__nomor_rekening' dan '__saldo', lalu menerapkan dua metode getter 'get_nomor_rekening(self)' dan 'get_saldo(self)' untuk mencetak informasi rekening secara aman (25 menit).

Merefleksi (Berkesadaran):

  • Murid melakukan uji jalan (running test) mandiri pada terminal/editor Python dan memeriksa apakah seluruh pemanggilan getter mengembalikan nilai data privat secara tepat tanpa terjadi error akses atribut (5 menit).

Penutup:

  • Murid dan guru menyimpulkan fungsi metode getter dalam enkapsulasi sebagai mekanisme pemberian hak akses baca terkendali terhadap atribut privat (5 menit).
  • Guru memberikan asesmen akhir singkat berupa cek pemahaman 2 butir sintaksis getter dan menyampaikan bahwa materi berikutnya akan melengkapi enkapsulasi dengan metode pengubah nilai (setter) (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan panduan template sintaksis metode getter berparameter 'self' dan perintah 'return', sedangkan murid yang cepat diberikan kode kelas dengan 3 atribut privat bertipe data berbeda (string, integer, list).
  • Proses: Murid berpencapaian lambat dipandu langkah per langkah dalam menuliskan 'return self.__atribut', sedangkan murid cepat menyelesaikan penulisan getter secara mandiri tanpa bantuan template.
  • Produk: Semua murid menghasilkan skrip program Python berisi kelas dengan atribut privat dan metode getter yang berhasil dieksekusi.

Asesmen Pertemuan:

Awal:

  • Pertanyaan diagnostik awal: 'Jika objek a memiliki atribut self.__saldo = 50000, apakah perintah print(a.__saldo) dapat berjalan normal di luar kelas? Jelaskan!' (Acuan jawaban: Tidak dapat berjalan normal/akan menghasilkan AttributeError, karena atribut dengan awalan garis bawah ganda bersifat private sehingga disembunyikan dari akses langsung di luar kelas).

Proses:

  • Pemeriksaan kode praktik mandiri kelas RekeningBank: guru memeriksa ketepatan penulisan sintaksis 2 metode getter yaitu 'def get_nomor_rekening(self): return self.__nomor_rekening' dan 'def get_saldo(self): return self.__saldo' serta keberhasilan eksekusi kode saat dipanggil melalui objek (acuan: nilai kedua atribut privat berhasil dikembalikan dan tercetak di terminal tanpa error).

Akhir Pertemuan:

  • Cek pemahaman akhir terdiri atas 2 butir soal: (1) Tuliskan potongan kode metode getter untuk atribut privat '__kode_rahasia'! (Acuan jawaban: def get_kode_rahasia(self): return self.__kode_rahasia); (2) Apa peran kata kunci 'return' pada metode getter dalam prinsip enkapsulasi? (Acuan jawaban: Mengembalikan atau mengirimkan nilai atribut privat kepada pemanggil di luar kelas tanpa membuka akses manipulasi langsung terhadap atribut tersebut).

Formatif:

  • Observasi unjuk kerja sintaksis penulisan getter pada lembar aktivitas pemrograman Python
  • Cek pemahaman tertulis singkat mengenai fungsi return pada metode pengakses getter

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Metode Getter untuk Perlindungan DataBelum mampu mendefinisikan metode getter; atribut privat tetap diakses secara langsung sehingga memicu kesalahan pemanggilan data.Mampu mendefinisikan metode getter tetapi masih terdapat kesalahan sintaksis pada nama parameter self atau tidak menyertakan perintah return nilai atribut privat.Mampu menerapkan metode getter dengan sintaksis parameter self dan return nilai atribut privat secara tepat pada 2 metode dalam program dengan sedikit panduan.Mampu menerapkan seluruh metode getter dengan struktur sintaksis yang tepat dan mengembalikan seluruh nilai atribut privat secara konsisten serta mandiri tanpa kesalahan eksekusi.

Refleksi Pertemuan:

Guru:

  • Apakah penjelasan mengenai analogi gerbang baca getter mampu membuat murid memahami mengapa enkapsulasi tetap membutuhkan metode pengakses?
  • Apakah durasi waktu praktik penulisan kode mandiri mencukupi bagi seluruh murid untuk menguji kode mereka hingga bebas error?

Murid:

  • Bagian mana dari penulisan sintaksis metode getter yang paling mudah atau paling menantang bagimu?
  • Mengapa kita harus menggunakan 'return self.__nama_atribut' di dalam metode getter dan tidak membiarkan atribut bersifat publik?

Pertemuan 10 — Menerapkan Metode Pengubah Setter dengan Validasi Nilai untuk Perlindungan Data dalam Enkapsulasi — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.3 Menerapkan prinsip enkapsulasi dalam pemrograman berorientasi objek untuk perlindungan data

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kehadiran murid, dan mengondisikan kesiapan belajar (3 menit).
  • Guru memberikan asesmen diagnostik awal lisan dengan menampilkan kode Python sederhana kelas Siswa tanpa validasi untuk mengecek kesiapan murid mengenai fungsi pengubah data (4 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ini, yaitu menerapkan metode setter dengan logika validasi nilai untuk melindungi atribut privat dalam prinsip enkapsulasi (3 menit).

Kegiatan Inti:

Memahami (Bermakna, Berkesadaran):

  • Murid menyimak demonstrasi guru mengenai kode kelas Siswa dengan atribut privat __nilai, membandingkan dampak penetapan nilai langsung tanpa validasi dengan penggunaan metode setter berpintu validasi logika kondisional 'if' (12 menit).
  • Murid menelaah struktur sintaks metode setter pengaman: penerimaan parameter nilai baru, pemeriksaan batasan (misal 0 <= nilai_baru <= 100), pembaruan atribut self.__nilai jika valid, dan pencetakan peringatan jika tidak valid (8 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Tantangan Koding 'Bug Hunter Berpasangan': Murid berpasangan memainkan simulasi peran peretas vs pengaman kode; murid pertama menguji masukan nilai ekstrem/invalid (misal -10 atau 999) pada kelas RekeningBank atau Siswa, sementara murid kedua menuliskan metode setter dengan validasi nilai yang tepat agar nilai data privat terlindungi dari masukan tidak sah (22 menit).
  • Murid secara mandiri menulis dan mengeksekusi program Python lengkap untuk kelas AkunBank dengan atribut privat __saldo, metode getter get_saldo(), dan metode setter set_saldo(nominal_baru) dengan aturan validasi: nominal_baru harus bertipe numerik dan bernilai >= 0; jika valid saldo diperbarui, jika kurang dari 0 saldo tetap dan program mencetak pesan penolakan (18 menit).

Merefleksi (Berkesadaran):

  • Murid memverifikasi dan menguji kembali kode programnya dengan 3 masukan uji: nilai valid (500000), nilai negatif (-25000), dan nilai nol (0) untuk memastikan nilai atribut privat terlindungi secara konsisten (7 menit).
  • Murid mengidentifikasi peran logika validasi pada setter dalam menjaga integritas data sistem perangkat lunak berorientasi objek (5 menit).

Penutup:

  • Guru bersama murid menyimpulkan fungsi metode setter bervalidasi sebagai gerbang kendali mutasi atribut privat dalam enkapsulasi (4 menit).
  • Guru memberikan asesmen akhir singkat (cek pemahaman satu baris kode setter bervalidasi), menyampaikan materi berikutnya tentang hak akses protected, serta menutup pembelajaran dengan doa dan salam (4 menit).

Diferensiasi:

  • Konten: Menyediakan template rumpang struktur blok 'def set_nilai(self, nilai): if ...' bagi murid yang membutuhkan scaffolding logika percabangan.
  • Proses: Bagi murid yang memerlukan bimbingan, guru memberikan panduan langkah per langkah penyusunan kondisi 'if-else'; bagi murid mahir, diberikan tantangan tambahan validasi tipe data (isinstance) dan rentang majemuk.
  • Produk: Murid cepat melengkapi setter dengan validasi ganda (tipe data dan rentang nilai), sedangkan murid reguler fokus pada validasi rentang nilai minimal-maksimal.

Asesmen Pertemuan:

Awal:

  • Pertanyaan diagnostik: 'Perhatikan kode: class Siswa: def __init__(self): self.__nilai = 0. Bagaimana cara membuat fungsi agar atribut __nilai hanya bisa diubah jika angka yang dimasukkan tidak bernilai negatif?' (Acuan jawaban: Membuat metode setter, contoh def set_nilai(self, nilai_baru): if nilai_baru >= 0: self.__nilai = nilai_baru; fungsi membutuhkan parameter nilai baru dan pengkondisian if).

Proses:

  • Pengamatan langsung saat murid menuliskan kode metode setter pada tugas mandiri kelas AkunBank (Acuan ketercapaian: sintaks 'def set_saldo(self, nominal_baru):', struktur percabangan 'if nominal_baru >= 0:', pengubahan nilai privat 'self.__saldo = nominal_baru', dan blok 'else' untuk penolakan nilai negatif).

Akhir Pertemuan:

  • Cek pemahaman akhir: Murid melengkapi potongan kode setter rumpang: 'def set_skor(self, skor_baru): if ____: self.__skor = skor_baru else: print("Skor tidak valid")' agar skor hanya menerima rentang 0 hingga 100. (Acuan kunci jawaban tepat: kondisi rumpang diisi '0 <= skor_baru <= 100' atau 'skor_baru >= 0 and skor_baru <= 100').

Formatif:

  • Penilaian unjuk kerja pemrograman penulisan metode setter dengan validasi nilai pada lembar kerja/IDE Python
  • Observasi diagnostik dan lembar cek pemahaman sintaks validasi enkapsulasi

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Metode Setter dengan Validasi Nilai pada EnkapsulasiBelum mampu mendefinisikan metode setter dan belum mampu menuliskan blok logika validasi untuk atribut privat.Mampu mendefinisikan metode setter untuk atribut privat, namun logika validasi nilai belum berfungsi tepat sehingga data tidak valid masih dapat lolos mengubah atribut.Mampu menerapkan metode setter dengan struktur logika validasi nilai yang tepat sesuai rentang batasan yang ditentukan secara mandiri pada kelas objek.Mampu menerapkan metode setter dengan logika validasi nilai yang tepat, lengkap dengan penanganan kondisi masukan di luar rentang serta pesan penolakan yang presisi secara mandiri dan konsisten.

Refleksi Pertemuan:

Guru:

  • Apakah skenario tantangan koding berpasangan berhasil membantu murid memahami pentingnya pembatasan masukan melalui setter?
  • Bagian mana dari penulisan logika percabangan pada setter yang paling banyak memicu galat sintaks pada murid?

Murid:

  • Apa perbedaan mendasar antara mengubah atribut secara langsung dengan mengubahnya melalui metode setter bervalidasi?
  • Kondisi apa saja yang berhasil dicegah oleh metode setter yang telah kamu buat hari ini?

Pertemuan 11 — Menerapkan Konsep Atribut Protected dalam Prinsip Enkapsulasi Pemrograman Berorientasi Objek — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.3 Menerapkan prinsip enkapsulasi dalam pemrograman berorientasi objek untuk perlindungan data

Pendahuluan:

  • Guru membuka pembelajaran dengan salam, memeriksa kehadiran murid, dan menciptakan suasana kelas yang kondusif (3 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ini, yaitu menerapkan konsep atribut protected menggunakan konvensi satu garis bawah (_) dalam prinsip enkapsulasi untuk perlindungan data internal (3 menit).
  • Guru melakukan asesmen awal diagnostik singkat dengan menampilkan 2 baris kode Python: baris A (self.saldo = 1000) dan baris B (self.__saldo = 1000), lalu meminta murid menuliskan perbedaan akses keduanya (acuan jawaban: baris A adalah atribut publik yang bisa diakses langsung dari luar kelas, sedangkan baris B adalah atribut privat yang tersembunyi dan tidak dapat diakses langsung dari luar) (4 menit).

Kegiatan Inti:

Memahami (Berkesadaran, Bermakna):

  • Guru menyajikan perbandingan sintaksis deklarasi atribut dalam kelas AkunBank: publik (`self.nama`), privat (`self.__pin`), dan protected (`self._saldo`), lalu menjelaskan bahwa awalan satu garis bawah (_) adalah konvensi enkapsulasi protected yang menandakan atribut ditujukan untuk penggunaan internal dan tidak boleh diubah sembarangan dari luar (10 menit).
  • Murid secara mandiri menganalisis perbedaan aksesibilitas kode contoh: `class Akun: def __init__(self, saldo): self._saldo = saldo` saat dicoba diakses langsung via `akun._saldo`, membandingkannya secara logis dengan proteksi name mangling pada atribut private `self.__saldo` (10 menit).

Mengaplikasi (Menggembirakan):

  • Guru mengadakan tantangan interaktif 'Protected Code Detective' berpasangan: murid menerima lembar studi kasus akun perbankan dan kartu game berisi 3 variabel data (`nomor_rekening`, `level_keamanan`, `saldo_cadangan`) untuk diubah sintaksisnya menjadi atribut protected dan dilengkapi metode pelindung (15 menit).
  • Murid secara mandiri menulis kode program kelas `RekeningTabungan` dengan mengimplementasikan minimal 2 atribut protected (`self._saldo` dan `self._status_aktif`) serta menambahkan metode internal `perbarui_saldo(nominal)` yang mengubah nilai atribut protected tersebut secara sah (25 menit).

Merefleksi (Berkesadaran):

  • Murid mengevaluasi hasil eksekusi program masing-masing dan mencatat mengapa konvensi satu garis bawah (_) penting ditaati oleh programmer demi menjaga integritas data dalam enkapsulasi meskipun Python tidak mengunci secara fisik seperti pada atribut private (10 menit).

Penutup:

  • Guru bersama murid menyimpulkan esensi penerapan atribut protected (_) dalam enkapsulasi sebagai penanda proteksi data internal (5 menit).
  • Guru memberikan lembar cek pemahaman singkat mandiri (3 soal benar/salah), menyampaikan gambaran materi pertemuan berikutnya mengenai pewarisan kelas, dan menutup sesi dengan doa (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan kartu panduan perbandingan sintaks publik (nama), protected (_nama), dan privat (__nama). Murid yang mahir diberikan struktur kelas yang melibatkan kalkulasi bunga pada atribut protected.
  • Proses: Murid yang memerlukan scaffolding menyusun kode dengan kerangka fungsi rumpang, sementara murid berkemampuan tinggi menulis kelas utuh secara mandiri dari awal.
  • Produk: Semua murid menghasilkan kelas Python yang menerapkan atribut protected; murid yang mahir menambahkan validasi nilai sebelum memodifikasi atribut protected.

Asesmen Pertemuan:

Awal:

  • Diagnostik pemahaman hak akses: Murid mengidentifikasi sifat hak akses dari dua sintaks deklarasi: (1) `self.data = 10` dan (2) `self.__data = 10`. (Acuan jawaban: (1) Publik: dapat diakses/diubah bebas dari luar objek; (2) Privat: terenkapsulasi/hanya bisa diakses di dalam objek tersebut).

Proses:

  • Formatif praktik: Guru memeriksa ketepatan penulisan kode Python murid saat mengonversi 2 atribut menjadi protected menggunakan tanda satu garis bawah (`_saldo`, `_status_aktif`) dan pemanggilan metode yang mengelolanya secara sah di dalam kelas (acuan: atribut dideklarasikan dengan awalan `_` tunggal dan dimanipulasi melalui metode internal kelas).

Akhir Pertemuan:

  • Cek pemahaman 3 butir pernyataan benar/salah: (1) Atribut protected di Python ditandai dengan dua tanda garis bawah di awal nama atribut [Kunci: SALAH, dua garis bawah untuk private; protected memakai satu garis bawah]; (2) Konvensi penamaan satu garis bawah `_` mengindikasikan bahwa data ditujukan untuk internal kelas [Kunci: BENAR]; (3) Atribut protected bertujuan mendukung prinsip enkapsulasi dalam menjaga integritas data internal [Kunci: BENAR].

Formatif:

  • Observasi unjuk kerja pemrograman menulis kelas dengan atribut protected
  • Cek pemahaman tertulis singkat di akhir sesi

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Sintaks Atribut Protected dalam EnkapsulasiBelum mampu menerapkan penulisan atribut protected dengan awalan satu garis bawah (_) pada kelas Python secara tepat.Mampu mendeklarasikan 1 atribut protected dengan awalan satu garis bawah (_) namun masih memerlukan bimbingan guru dalam menghubungkannya ke metode kelas.Mampu mendeklarasikan 2 atribut protected (`_saldo` dan `_status_aktif`) dengan awalan satu garis bawah (_) dan memanipulasinya melalui metode kelas secara tepat.Mampu mendeklarasikan 2 atribut protected (`_saldo` dan `_status_aktif`) secara mandiri, mengintegrasikannya dengan metode internal kelas, serta menyertakan logika validasi nilai sebelum modifikasi data.

Refleksi Pertemuan:

Guru:

  • Apakah murid dapat membedakan secara jelas tujuan penggunaan konvensi protected (_) dibandingkan atribut privat (__) dalam enkapsulasi?
  • Apakah aktivitas tantangan 'Protected Code Detective' efektif memotivasi murid memahami hak akses internal?

Murid:

  • Apa perbedaan mendasar yang saya pahami antara atribut protected (_) dengan atribut privat (__)?
  • Kapan saya harus memilih menggunakan atribut protected saat merancang struktur data dalam sebuah kelas?

Pertemuan 12 — Menerapkan Pewarisan Tunggal Antarkelas Induk dan Anak dalam Pemrograman Berorientasi Objek — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.4 Menerapkan pewarisan dan polimorfisme dalam pemrograman berorientasi objek untuk mengoptimalkan hierarki struktur kode

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kesiapan belajar murid, dan mengondisikan suasana ruang kelas yang kondusif (3 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ke-12, yaitu menerapkan pewarisan tunggal (single inheritance) antarkelas induk dan anak dalam Python untuk mengoptimalkan struktur kode program (4 menit).
  • Guru melaksanakan asesmen awal diagnostik melalui 2 pertanyaan lisan terstruktur mengenai pemahaman kelas dan instansiasi objek: (1) Sebutkan kata kunci untuk mendefinisikan kelas dalam Python! (kunci: 'class'); (2) Jika ada objek 'm = Mobil()', bagaimana cara memanggil metode 'jalan()' milik objek tersebut? (kunci: 'm.jalan()') (8 menit).

Kegiatan Inti:

Memahami (Berkesadaran):

  • Murid menyimak demonstrasi guru tentang struktur pewarisan tunggal dalam Python menggunakan format sintaks 'class Anak(Induk):' dengan contoh kelas induk 'Kendaraan' (metode 'info_dasar()') dan kelas turunan 'Mobil' (metode 'klakson()') secara berkesadaran (15 menit).

Mengaplikasi (Bermakna, Menggembirakan):

  • Murid mengikuti permainan tantangan kode cepat berpasangan 'Hubungkan Pewarisan' yang menggembirakan: murid mengisi rumpang sintaks definisi kelas anak 'class Kucing(Hewan):' pada potongan kode di layar editor dan mengeksekusinya tanpa galat (15 menit).
  • Murid secara mandiri mengerjakan tugas penerapan pewarisan tunggal bermakna pada editor Python: membuat kelas induk 'Karyawan' (atribut 'nama' dan metode 'bekerja()') serta kelas anak 'Programmer(Karyawan)' yang menambahkan metode khusus 'koding()', kemudian melakukan instansiasi objek kelas anak dan memanggil metode warisan dari kelas induk serta metode miliknya sendiri (30 menit).

Merefleksi (Berkesadaran):

  • Murid menguji hasil eksekusi program masing-masing dan mencatat bagaimana pewarisan tunggal mengeliminasi penulisan kode berulang (DRY - Don't Repeat Yourself) dalam struktur kelas (7 menit).

Penutup:

  • Murid bersama guru menyimpulkan konsep sintaks kelas induk dan kelas anak pada pewarisan tunggal (5 menit).
  • Guru memberikan umpan balik penguatan terhadap eksekusi kode murid dan menginformasikan bahwa pertemuan berikutnya akan membahas pemanfaatan fungsi super() pada hierarki pewarisan (3 menit).

Diferensiasi:

  • Konten: Menyediakan contoh struktur kelas yang sudah dilengkapi kerangka rumpang sintaks class Anak(Induk): bagi murid yang membutuhkan panduan bertahap.
  • Proses: Memberikan bimbingan langsung pada pengecekan baris deklarasi kelas turunan bagi murid yang mengalami galat NameError atau TypeError.
  • Produk: Bagi murid yang selesai lebih cepat diberikan tantangan memperluas pewarisan tunggal dengan menambahkan kelas anak kedua yang mewarisi kelas induk yang sama (misal kelas Designer).

Asesmen Pertemuan:

Awal:

  • Pertanyaan diagnostik kesiapan materi dasar kelas dan objek: (1) 'Apa kata kunci untuk membuat kelas dalam Python?' (acuan jawaban benar: kata kunci 'class'); (2) 'Bagaimana sintaks pemanggilan metode info() dari objek bernama obj?' (acuan jawaban benar: sintaks 'obj.info()').

Proses:

  • Pengamatan formatif saat murid mengonstruksi kode pewarisan tunggal pada editor Python dengan indikator: ketepatan sintaks deklarasi 'class Anak(Induk):', keberhasilan instansiasi objek dari kelas anak, serta keberhasilan pemanggilan metode milik kelas induk melalui objek kelas anak tanpa galat sintaks.

Akhir Pertemuan:

  • Cek pemahaman tertulis singkat (1 butir kode): Melengkapi baris rumpang sintaks pewarisan tunggal: 'class Burung(____):' agar kelas Burung mewarisi kelas Hewan, serta menuliskan 1 baris pemanggilan metode 'makan()' warisan kelas Hewan melalui objek 'b = Burung()' (acuan jawaban benar: rumpang diisi 'Hewan', pemanggilan metode ditulis 'b.makan()').

Formatif:

  • Penilaian kinerja penulisan kode program pewarisan tunggal (single inheritance) pada lembar kerja praktik pemrograman Python.

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Pewarisan Tunggal Antarkelas Induk dan AnakBelum mampu menuliskan sintaks pewarisan kelas turunan 'class Anak(Induk):' secara benar dan objek gagal mengakses metode warisan kelas induk.Mampu mendeklarasikan sintaks kelas anak 'class Anak(Induk):' dengan benar namun masih membutuhkan bantuan instruktur saat melakukan instansiasi objek atau pemanggilan metode warisan.Mampu mendeklarasikan kelas induk dan kelas anak, melakukan instansiasi objek kelas anak, serta memanggil metode warisan dari kelas induk dan metode kelas anak secara tepat dan mandiri.Mampu mendeklarasikan kelas induk dan anak secara tepat, memanggil metode warisan dan metode spesifik kelas anak secara mandiri tanpa galat, serta mampu menerapkan variasi kelas anak kedua yang mewarisi kelas induk yang sama secara konsisten.

Refleksi Pertemuan:

Guru:

  • Apakah alokasi waktu 90 menit mencukupi bagi seluruh murid untuk mempraktikkan sintaks pewarisan tunggal di komputer/editor masing-masing?
  • Bagian mana dari konsep pewarisan antarkelas induk dan anak yang paling sering menimbulkan galat pada kode murid?

Murid:

  • Bagian mana dari penulisan kode pewarisan tunggal hari ini yang paling mudah dan paling menantang bagimu?
  • Bagaimana penggunaan pewarisan mempermudahmu dalam mengelola kode agar tidak perlu menulis ulang kode atribut atau metode yang sama?

Pertemuan 13 — Menerapkan Pewarisan dengan Fungsi super() untuk Mengoptimalkan Hierarki Struktur Kode — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.4 Menerapkan pewarisan dan polimorfisme dalam pemrograman berorientasi objek untuk mengoptimalkan hierarki struktur kode

Pendahuluan:

  • Guru membuka kelas dengan salam, doa bersama, dan memeriksa kehadiran murid (3 menit).
  • Guru menyampaikan tujuan pembelajaran pertemuan ke-13 mengenai penerapan pewarisan menggunakan fungsi super() dalam pemrograman berorientasi objek (2 menit).
  • Murid mengerjakan tes diagnostik singkat berupa 2 butir pertanyaan di layar: (1) Sebutkan fungsi pemanggilan method konstruktor kelas induk pada subkelas di Python! (Acuan: super().__init__() atau memanggil konstruktor induk); (2) Jika kelas Kendaraan memiliki atribut 'merek', bagaimana subkelas Mobil memanfaatkan atribut tersebut tanpa mengetik ulang 'self.merek = merek'? (Acuan: memanggil super().__init__(merek)) (5 menit).

Kegiatan Inti:

Memahami (Bermakna, Berkesadaran):

  • Murid menyimak pemaparan guru mengenai struktur pewarisan dengan fungsi super(), membedakan pendefinisian konstruktor anak tanpa super() yang menyebabkan redundansi kode versus dengan super().__init__() yang mengoptimalkan hierarki pewarisan (10 menit).
  • Murid menganalisis contoh kode Python kelas induk 'Kendaraan' (atribut 'merek' dan 'kecepatan_maks') serta kelas turunan 'Mobil' (memanggil super().__init__(merek, kecepatan_maks) dan menambah atribut 'jumlah_pintu') untuk mengamati alur inisialisasi bertingkat (10 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Murid memainkan kuis tantangan berpasangan interaktif 'Tebak Baris super()': murid menganalisis 3 potongan kode hierarki kelas tak lengkap dan secara bergantian melengkapi baris pemanggilan super() yang tepat untuk menghubungkan atribut kelas anak ke induk (15 menit).
  • Murid secara mandiri menyusun kode program Python utuh yang menerapkan pewarisan dengan fungsi super() pada hierarki kelas perangkat: kelas induk 'PerangkatElektronik' (memiliki konstruktor dengan atribut 'nama' dan 'daya_watt') dan kelas anak 'Laptop' (menggunakan super().__init__(nama, daya_watt) serta menambahkan atribut 'kapasitas_ram'), lalu melakukan instansiasi objek dan mencetak seluruh nilai atributnya (25 menit).

Merefleksi (Berkesadaran):

  • Murid memeriksa kembali kode program masing-masing untuk memastikan sintaks fungsi super() ditulis secara tepat tanpa kesalahan eksekusi (NameError, TypeError, atau AttributeError) serta memastikan tidak ada pengulangan pendefinisian atribut yang sudah ditangani oleh kelas induk (10 menit).

Penutup:

  • Murid dan guru menyimpulkan manfaat pemanfaatan fungsi super() dalam mengoptimalkan struktur hierarki kode pewarisan agar efisien dan terstruktur (5 menit).
  • Guru memberikan penguatan terhadap hasil implementasi murid, menyampaikan rencana materi pertemuan berikutnya tentang polimorfisme dan method overriding, serta menutup sesi pembelajaran dengan doa dan salam (5 menit).

Diferensiasi:

  • Konten: Menyediakan contoh potongan kode terstruktur dengan diagram alur hierarki inheritance bertingkat bagi murid yang memerlukan dukungan visual, serta dokumen referensi Python docs super() bagi murid yang cepat.
  • Proses: Memberikan bimbingan terarah (scaffolding sintaks super().__init__) bagi murid yang masih kesulitan menghubungkan parameter kelas induk, sedangkan murid yang telah menguasai diberikan tantangan menambahkan method cetak info spesifik yang juga memanfaatkan super().info().
  • Produk: Murid menghasilkan skrip program Python pewarisan tunggal kelas anak dengan fungsi super() yang bebas dari duplikasi inisialisasi atribut.

Asesmen Pertemuan:

Awal:

  • Tes diagnostik 2 butir pertanyaan di awal sesi: (1) Menuliskan sintaks pemanggilan konstruktor induk (Acuan: super().__init__()); (2) Menjelaskan cara menghindari duplikasi penulisan atribut kelas induk pada kelas anak (Acuan: menggunakan fungsi super() untuk memanggil konstruktor induk).

Proses:

  • Observasi pengerjaan tantangan kuis kode berpasangan 'Tebak Baris super()' dengan memeriksa ketepatan pengisian pemanggilan fungsi super() pada 3 potongan kode: potongan 1 super().__init__(nama), potongan 2 super().__init__(merk, harga), potongan 3 super().__init__(id_alat, status).
  • Pemeriksaan eksekusi kode mandiri pembuatan kelas 'Laptop' turunan 'PerangkatElektronik' yang memanfaatkan super().__init__(nama, daya_watt) dan penambahan atribut khusus 'kapasitas_ram'.

Akhir Pertemuan:

  • Cek pemahaman di akhir sesi melalui eksekusi program mandiri: memastikan keluaran program sukses menampilkan nilai atribut warisan ('nama', 'daya_watt') dan atribut lokal ('kapasitas_ram') dari objek Laptop tanpa galat eksekusi (Acuan: objek Laptop berhasil terinstansiasi dengan nilai terdefinisi lewat super()).

Formatif:

  • Penilaian unjuk kerja pemrograman penulisan fungsi super() pada kelas turunan Python melalui rubrik observasi ketercapaian sintaks dan hierarki atribut

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan pewarisan dengan fungsi super()Belum mampu menerapkan pewarisan dengan fungsi super(), kode mengalami galat sintaks atau masih menduplikasi pendefinisian atribut induk secara manual di kelas anak.Mampu menuliskan sintaks super() pada kelas anak namun masih terdapat kesalahan argumen parameter yang dikirimkan ke konstruktor kelas induk sehingga eksekusi program menghasilkan TypeError.Mampu menerapkan pewarisan dengan fungsi super() secara tepat pada konstruktor kelas anak untuk mengalirkan atribut kelas induk ('nama', 'daya_watt') dan program berjalan sukses tanpa galat.Mampu menerapkan pewarisan dengan fungsi super() secara mandiri, tepat, dan optimal pada konstruktor maupun pemanggilan metode kelas induk, menghasilkan struktur kode hierarki yang rapi dan bebas dari redundansi.

Refleksi Pertemuan:

Guru:

  • Apakah murid dapat memahami alur kerja pengalihan argumen dari konstruktor subkelas ke superclass melalui fungsi super()?
  • Bagian sintaks pemanggilan super() mana yang paling banyak memicu kesalahan pengetikan atau pemahaman pada murid?

Murid:

  • Apa keuntungan nyata yang kamu rasakan saat menggunakan fungsi super() dibandingkan mendefinisikan ulang atribut secara manual pada kelas anak?
  • Apakah kamu menemui kendala saat mencocokkan urutan parameter antara kelas induk dan kelas anak?

Pertemuan 14 — Menerapkan Polimorfisme Melalui Penimpaan Metode (Method Overriding) pada Struktur Hierarki Kelas — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.4 Menerapkan pewarisan dan polimorfisme dalam pemrograman berorientasi objek untuk mengoptimalkan hierarki struktur kode

Pendahuluan:

  • Guru membuka kelas dengan salam, memeriksa kehadiran murid, dan menyampaikan tujuan pembelajaran mengenai penerapan polimorfisme melalui method overriding pada struktur hierarki kelas (5 menit).
  • Guru melaksanakan asesmen awal diagnostik singkat menggunakan 2 butir pertanyaan di papan tulis: (1) Apa sintaks pewarisan kelas Kucing dari kelas Hewan di Python? (acuan: class Kucing(Hewan):); (2) Jika kelas anak mendefinisikan metode dengan nama yang persis sama dengan kelas induk, metode milik siapa yang akan dieksekusi oleh objek kelas anak? (acuan: metode milik kelas anak karena menimpa/meng-override metode induk) (10 menit).

Kegiatan Inti:

Memahami (Bermakna, Berkesadaran):

  • Murid mencermati tayangan kode hierarki kelas Hewan dengan metode bersuara() yang mencetak 'Suara hewan', serta kelas Kucing(Hewan) dan Anjing(Hewan) yang mendefinisikan ulang metode bersuara() masing-masing mencetak 'Meong' dan 'Guk guk' (15 menit).
  • Murid menyimak penjelasan konsep polimorfisme dinamis (satu nama metode, perilaku berbeda sesuai tipe objek) dan mekanisme penimpaan metode (method overriding) dalam struktur pewarisan (10 menit).

Mengaplikasi (Menggembirakan, Bermakna):

  • Murid mengikuti tantangan permainan kode berpasangan 'Tebak & Tulis Polimorfisme' dengan mengetik kode pada IDE Python: membuat kelas induk Notifikasi dengan metode kirim() yang mencetak 'Pengiriman umum', lalu membuat dua kelas turunan Email(Notifikasi) dengan metode kirim() mencetak 'Mengirim email ke inbox' dan SMS(Notifikasi) dengan metode kirim() mencetak 'Mengirim SMS ke nomor ponsel' (15 menit).
  • Murid menerapkan polimorfisme melalui daftar objek dan perulangan: daftar_pesan = [Email(), SMS()], lalu mengeksekusi perulangan 'for p in daftar_pesan: p.kirim()' untuk mengamati keluaran polimorfis yang dieksekusi secara tepat (15 menit).

Merefleksi (Berkesadaran):

  • Murid membandingkan keluaran pemanggilan metode overriding dengan keluaran jika metode kelas turunan tidak dioverride (mencetak default milik induk), lalu menarik kesimpulan mengenai efisiensi pemanggilan kode polimorfis (10 menit).

Penutup:

  • Guru memberikan penguatan terhadap konsep method overriding dan polimorfisme, serta memberikan umpan balik atas hasil latihan kode murid (5 menit).
  • Guru dan murid melakukan cek pemahaman akhir pertemuan dan menutup pembelajaran dengan doa serta salam (5 menit).

Diferensiasi:

  • Konten: Murid yang membutuhkan bimbingan diberikan kerangka kode (scaffolding) dengan deklarasi kelas induk dan tanda komentar penunjuk letak penulisan metode override. Murid yang lebih mahir diberikan studi kasus tambahan hierarki Kendaraan dengan kelas turunan Mobil dan Motor yang meng-override metode jalan().
  • Proses: Murid yang memerlukan pendampingan dibimbing langsung oleh guru pada saat penyusunan sintaks kelas turunan, sedangkan murid mahir mengerjakan penulisan kode mandiri dan menguji berbagai kombinasi objek dalam perulangan.
  • Produk: Seluruh murid menghasilkan berkas kode program Python yang memuat kelas induk, minimal 2 kelas anak dengan penimpaan metode (overriding), dan instansiasi objek yang dieksekusi menggunakan perulangan polimorfik.

Asesmen Pertemuan:

Awal:

  • Diagnostik lisan/tulis 2 butir: (1) Sintaks penulisan kelas Kucing yang mewarisi kelas Hewan di Python (acuan: class Kucing(Hewan):); (2) Penentuan metode mana yang berjalan saat objek kelas anak memanggil nama metode yang sama dengan kelas induk (acuan: metode milik kelas anak/hasil penimpaan).

Proses:

  • Pengamatan saat murid menuliskan kelas induk Notifikasi, kelas turunan Email dan SMS dengan metode kirim() yang dioverride, serta pemanggilan metode kirim() lewat perulangan polimorfis (acuan kriteria: tidak ada error sintaks, metode kirim() terdefinisi pada kedua kelas anak, dan keluaran konsol menampilkan pesan spesifik masing-masing anak).

Akhir Pertemuan:

  • Cek pemahaman akhir berupa 2 pertanyaan singkat: (1) Syarat teknis terjadinya method overriding dalam Python (acuan: nama metode dan parameter pada kelas anak sama dengan nama metode pada kelas induk dalam relasi pewarisan); (2) Keluaran dari eksekusi kode: untuk objek k = Kucing(), pemanggilan k.bersuara() mencetak (acuan: 'Meong').

Formatif:

  • Penilaian unjuk kerja pemrograman penimpaan metode (method overriding) pada IDE Python
  • Observasi diagnostik awal tentang sintaks pewarisan dan pemahaman overriding

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penerapan Pewarisan Kelas untuk Penimpaan MetodeBelum mampu menuliskan sintaks pewarisan antarkelas induk dan anak secara tepat sehingga program menghasilkan galat.Mampu menuliskan pewarisan antarkelas induk dan anak dengan benar tetapi memerlukan bimbingan guru.Mampu menerapkan pewarisan antarkelas induk dan anak (Notifikasi ke Email dan SMS) secara mandiri dan benar.Mampu menerapkan pewarisan antarkelas induk dan anak secara mandiri, tepat, serta mampu menyusun hierarki tambahan tanpa bantuan guru.
Penerapan Polimorfisme Melalui Method OverridingBelum mampu meng-override metode kelas induk pada kelas anak; metode kelas anak belum menampilkan perilaku spesifik.Mampu meng-override metode pada salah satu kelas anak saja atau masih terdapat kesalahan identasi/nama metode.Mampu meng-override metode kirim() pada kedua kelas anak (Email dan SMS) serta mengeksekusinya dalam perulangan polimorfis dengan tepat.Mampu meng-override metode pada seluruh kelas anak dengan tepat, mengeksekusi perulangan polimorfis secara mandiri, serta menganalisis variasi keluaran kode secara akurat.

Refleksi Pertemuan:

Guru:

  • Apakah seluruh murid berhasil membedakan konsep penimpaan metode (overriding) pada kelas anak dibandingkan metode asal pada kelas induk?
  • Apakah alokasi waktu pada tahap praktik menulis kode polimorfisme cukup bagi murid yang memerlukan pendampingan lebih?

Murid:

  • Bagian mana dari penulisan method overriding yang paling mudah dan paling menantang bagi saya?
  • Bagaimana pemahaman polimorfisme ini membantu saya menyederhanakan cara memanggil banyak objek yang berbeda?

Pertemuan 15 — Asesmen Sumatif Bab — 2 JP (2 x 45 menit = 90 menit)

Tujuan Pertemuan:

  • TP 11.3.1 Menjelaskan algoritma dan paradigma pemrograman berorientasi objek dalam pemodelan sistem perangkat lunak
  • TP 11.3.2 Menerapkan pemrograman berorientasi objek melalui pendefinisian kelas, atribut, dan metode
  • TP 11.3.3 Menerapkan prinsip enkapsulasi dalam pemrograman berorientasi objek untuk perlindungan data
  • TP 11.3.4 Menerapkan pewarisan dan polimorfisme dalam pemrograman berorientasi objek untuk mengoptimalkan hierarki struktur kode

Pendahuluan:

  • Guru membuka sesi asesmen sumatif dengan salam, doa, memeriksa kesiapan perangkat lab komputer, serta menyampaikan tujuan pelaksanaan asesmen sumatif bab Pemrograman Berorientasi Objek secara tenang dan tertib (3 menit).
  • Guru membacakan tata tertib pengerjaan asesmen, integritas akademik, serta membagikan lembar soal tes tertulis uraian kepada seluruh murid (2 menit).

Kegiatan Inti:

Memahami (Berkesadaran):

  • Murid menyimak instruksi pengerjaan Bagian 1 (Tes Tertulis Uraian Serentak selama 20 menit) dan Bagian 2 (Unjuk Kerja Pemrograman serentak selama 60 menit), mencermati butir soal uraian: (1) Jelaskan 2 perbedaan mendasar antara alur algoritma prosedural dan paradigma berorientasi objek dalam memodelkan sistem; (2) Jelaskan bagaimana konsep kelas dan objek memodelkan entitas dunia nyata ke dalam kode program perangkat lunak (5 menit).

Mengaplikasi (Bermakna):

  • Murid mengerjakan Tugas 1 (Tes Tertulis Uraian Serentak) secara mandiri di lembar jawaban masing-masing dengan menuliskan penjelasan perbandingan alur algoritma prosedural versus OOP serta pemodelan kelas dan objek sesuai acuan materi [Kunci Soal 1: Prosedural berfokus pada urutan fungsi/prosedur dan pemisahan fungsi dari data global, sedangkan OOP membungkus data/atribut dan perilaku/metode menjadi satu kesatuan objek yang saling berinteraksi. Kunci Soal 2: Kelas berfungsi sebagai cetak biru (blueprint) yang mendefinisikan struktur atribut dan metode, sedangkan objek adalah wujud nyata (instansiasi) dari cetak biru tersebut yang merepresentasikan entitas spesifik di dunia nyata] (20 menit).
  • Guru mengumpulkan lembar jawaban uraian tepat waktu, kemudian menginstruksikan murid membuka editor teks/IDE Python di komputer masing-masing untuk memulai Tugas 2 (Unjuk Kerja Pemrograman Serentak) (2 menit).
  • Murid mengerjakan Tugas 2 Unjuk Kerja Pemrograman secara mandiri di komputer masing-masing berdasarkan lembar instruksi penugasan sistem entitas 'Akun Bank': (a) Mendefinisikan superclass 'AkunBank' dengan konstruktor '__init__' memuat atribut publik 'pemilik' dan atribut privat '__saldo', metode 'set_saldo(nilai)' dengan validasi nilai tidak boleh negatif (enkapsulasi), dan metode 'tampilkan_informasi()' yang menampilkan pemilik dan saldo; (b) Mendefinisikan subclass 'AkunTabungan' turunan dari 'AkunBank' dengan penambahan atribut 'bunga', memanggil konstruktor induk dengan 'super().__init__()' (pewarisan); (c) Menerapkan polimorfisme melalui method overriding pada metode 'tampilkan_informasi()' di 'AkunTabungan' sehingga menampilkan informasi pemilik, saldo, dan persentase bunga (53 menit).

Merefleksi (Berkesadaran):

  • Murid menyimpan berkas kode program Python dengan format nama 'Sumatif_NamaMurid.py', melakukan pengujian eksekusi program mandiri untuk memastikan sintaksis bebas dari error, lalu mengunggah/mengumpulkan berkas ke direktori server guru (3 menit).

Penutup:

  • Guru memastikan seluruh berkas kode program murid telah terkirim dan tersimpan lengkap di sistem (1 menit).
  • Guru memfasilitasi refleksi penutupan bab Pemrograman Berorientasi Objek secara singkat, mengapresiasi kerja keras dan kejujuran murid selama pelaksanaan asesmen sumatif, serta menutup pertemuan dengan doa bersama (1 menit).

Diferensiasi:

  • Konten: Tidak ada diferensiasi konten/tingkat kesulitan soal demi menjaga standarisasi asesmen sumatif. Disediakan akomodasi akses berupa penyesuaian kontras layar monitor dan ukuran font editor teks bagi murid dengan hambatan penglihatan.
  • Proses: Pemberian instruksi tertulis yang diperjelas secara bertahap pada layar proyektor bagi murid yang memerlukan penegasan alur teknis tanpa mengubah batas durasi dan kriteria ketercapaian.
  • Produk: Format berkas keluaran seragam berupa berkas program Python (.py) mandiri dan lembar jawaban tertulis sesuai instrumen acuan asesmen sumatif.

Asesmen Pertemuan:

Awal:

  • Pemeriksaan kesiapan lingkungan lab komputer dan pemahaman tata tertib asesmen sumatif (acuan: murid menempati komputer masing-masing, aplikasi IDE Python dapat dijalankan, dan lembar soal tertulis telah diterima lengkap).

Proses:

  • Pemantauan kepatuhan pengerjaan mandiri selama tes tertulis uraian dan unjuk kerja pemrograman serentak berlangsung di laboratorium.

Sumatif Bab:

  • kombinasi tes tertulis uraian dan unjuk kerja pemrograman serentak di lab komputer: lembar jawaban uraian konsep OOP serta berkas kode program Python utuh yang mengimplementasikan kelas, enkapsulasi, pewarisan, dan polimorfisme
  • tes tertulis uraian serentak: lembar jawaban murid yang memuat penjelasan perbandingan alur algoritma prosedural dengan paradigma berorientasi objek dalam pemodelan sistem perangkat lunak yang dikerjakan serentak oleh seluruh murid (25 menit; kelompok; instrumen: pedoman penskoran dan rubrik analitik uraian)
  • unjuk kerja pemrograman serentak di lab komputer: berkas kode program Python yang diselesaikan secara mandiri oleh tiap murid di komputer masing-masing secara serentak, memuat pendefinisian kelas dan atribut/metode, pembatasan akses atribut privat beserta metode pengakses (enkapsulasi), serta relasi pewarisan antarkelas dengan penimpaan metode (polimorfisme) (65 menit; kelompok; instrumen: rubrik penilaian kode program (kriteria: struktur kelas/objek, implementasi enkapsulasi, pewarisan, dan polimorfisme))

Sumatif:

  • kombinasi tes tertulis uraian dan unjuk kerja pemrograman serentak di lab komputer: lembar jawaban uraian konsep OOP serta berkas kode program Python utuh yang mengimplementasikan kelas, enkapsulasi, pewarisan, dan polimorfisme
  • tes tertulis uraian serentak: lembar jawaban murid yang memuat penjelasan perbandingan alur algoritma prosedural dengan paradigma berorientasi objek dalam pemodelan sistem perangkat lunak yang dikerjakan serentak oleh seluruh murid (25 menit; kelompok; instrumen: pedoman penskoran dan rubrik analitik uraian)
  • unjuk kerja pemrograman serentak di lab komputer: berkas kode program Python yang diselesaikan secara mandiri oleh tiap murid di komputer masing-masing secara serentak, memuat pendefinisian kelas dan atribut/metode, pembatasan akses atribut privat beserta metode pengakses (enkapsulasi), serta relasi pewarisan antarkelas dengan penimpaan metode (polimorfisme) (65 menit; kelompok; instrumen: rubrik penilaian kode program (kriteria: struktur kelas/objek, implementasi enkapsulasi, pewarisan, dan polimorfisme))

Rubrik Pertemuan:

AspekBelum BerkembangMulaiBerkembangSangat Berkembang
Penjelasan Paradigma OOP dan Algoritma (TP 11.3.1)Belum mampu menjelaskan perbedaan alur prosedural dan OOP, serta keliru mendefinisikan kelas dan objek (memenuhi 0 indikator acuan).Menjelaskan 1 dari 2 butir acuan secara tepat (hanya tepat pada perbandingan alur fungsi prosedural vs pembungkusan objek ATAU konsep blueprint kelas vs instansiasi objek).Menjelaskan kedua butir acuan (alur algoritma prosedural vs OOP dan konsep cetak biru kelas vs instansiasi objek) dengan tepat namun masih membutuhkan elaborasi kalimat pemodelan sistem.Menjelaskan kedua butir acuan secara tepat, komprehensif, dan runtut (alur algoritma pemisahan data-fungsi prosedural vs enkapsulasi objek, serta pemodelan konseptual cetak biru kelas menjadi wujud instansiasi objek nyata).
Penerapan Pendefinisian Kelas, Atribut, dan Metode (TP 11.3.2)Belum mampu mendefinisikan struktur kelas, atribut konstruktor __init__, maupun metode dengan self secara tepat.Mendefinisikan kelas dan konstruktor __init__ namun penulisan parameter self atau pemanggilan metode instansiasi masih memicu error sintaksis.Mendefinisikan kelas 'AkunBank', atribut instance 'pemilik' pada konstruktor, dan metode objek secara tepat dan dapat diinstansiasi menjadi objek tanpa error.Mendefinisikan kelas 'AkunBank', atribut instance, konstruktor, dan pemanggilan antarmetode secara tepat, terstruktur rapi, dan dieksekusi dengan sempurna.
Penerapan Prinsip Enkapsulasi untuk Perlindungan Data (TP 11.3.3)Belum menerapkan atribut privat (masih menggunakan atribut publik biasa) dan tidak membuat metode pengubah/setter.Mendeklarasikan atribut privat (__saldo) tetapi belum membuat metode setter tervalidasi atau validasi nilai negatif tidak berfungsi.Menerapkan atribut privat '__saldo' dan metode setter dengan logika validasi nilai non-negatif secara tepat sesuai acuan spesifikasi.Menerapkan enkapsulasi secara utuh: atribut privat '__saldo' terlindungi penuh, dilengkapi setter dengan percabangan validasi nilai yang akurat dan penanganan kondisi tidak valid secara tepat.
Penerapan Pewarisan dan Polimorfisme (TP 11.3.4)Belum menerapkan subclass turunan atau gagal menghubungkan relasi hierarki antarkelas.Menerapkan subclass 'AkunTabungan' turunan dari 'AkunBank', tetapi pemanggilan fungsi 'super().__init__()' keliru atau belum melakukan penimpaan metode (overriding).Menerapkan pewarisan menggunakan fungsi 'super().__init__()' dan melakukan method overriding pada metode 'tampilkan_informasi()' pada subclass secara benar.Menerapkan pewarisan hierarkis secara optimal menggunakan 'super()' serta mendemonstrasikan perilaku polimorfisme dinamis melalui method overriding yang dieksekusi secara tepat pada objek superclass maupun subclass.

Refleksi Pertemuan:

Guru:

  • Apakah alokasi waktu 20 menit untuk tes tertulis dan 60 menit untuk unjuk kerja pemrograman di lab komputer cukup memadai bagi seluruh murid?
  • Aspek kompetensi manakah di antara enkapsulasi, pewarisan, dan polimorfisme yang paling banyak mengalami kendala implementasi kode oleh murid?

Murid:

  • Bagian mana dari konsep pemrograman berorientasi objek (kelas/objek, enkapsulasi, atau pewarisan-polimorfisme) yang paling saya kuasai dalam asesmen sumatif ini?
  • Kendala teknis atau logika apa yang saya temui saat mengimplementasikan method overriding dan enkapsulasi ke dalam kode Python?

SUMBER BELAJAR

  1. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikbudristek, 2023), Bab 3 Subbab A & B
  2. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikbudristek, 2023), Bab 3 Halaman 74-78
  3. Set Kartu Karakteristik Paradigma Algoritma dan Lembar Kerja Studi Kasus Pemodelan Sistem
  4. Buku Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikbudristek 2025), Bab 3 Subbab C 'Kelas dan Objek'
  5. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikbudristek 2025), Bab 3 Halaman 83 (Aktivitas 3.1 & 3.2)
  6. Lembar Kerja Murid (LKPD): Analisis Objek Nyata Menjadi Blueprint Kelas
  7. Slide visualisasi analogi Blueprint Arsitektur dan Objek Nyata
  8. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI, Pusat Perbukuan Kemendikbudristek 2025
  9. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI, Pusat Perbukuan Kemendikbudristek 2025
  10. Slide presentasi diagram relasi antarentitas PBO dan set kartu skenario sistem
  11. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI, Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi, 2023 (Bab 3 Subbab C: Kelas dan Objek)
  12. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI, Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi, 2023
  13. Komputer/Laptop dengan IDE/Editor Python terpasang (IDLE, VS Code, atau Jupyter Notebook / Google Colab)
  14. Lembar Kerja Praktikum Mandiri: Pendefinisian Kelas dan Instansiasi Objek
  15. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI, Bab 3 Subbab D
  16. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI, Bab 3
  17. Perangkat komputer/laptop dengan Python IDE (IDLE/VS Code/Thonny/Google Colab)
  18. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikdasmen, 2025)
  19. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI Bab 3: Pemrograman Berorientasi Objek
  20. Lingkungan Pengembangan Python (IDLE / VS Code / Google Colab / Replit)
  21. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikdasmen 2025)
  22. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Kemendikdasmen 2025)
  23. Perangkat komputer/laptop dengan Python 3 dan Text Editor/IDE (VS Code / Thonny / IDLE)
  24. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI
  25. Buku Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI Bab 3
  26. Perangkat komputer/laptop dengan Python IDE (IDLE / VS Code / Google Colab)
  27. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI
  28. Perangkat lunak Python IDLE / Visual Studio Code / Online Python Compiler
  29. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI Bab 3 Subbab Enkapsulasi
  30. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI Bab 3
  31. Perangkat komputer/laptop dengan Python IDLE atau editor kode (VS Code / Replit / Thonny)
  32. Buku Guru dan Buku Siswa Koding dan Kecerdasan Artifisial Kelas XI SMA/MA
  33. Lingkungan pengembangan Python (IDLE / Google Colab / VS Code)
  34. Lembar aktivitas pemrograman enkapsulasi atribut protected
  35. Buku Panduan Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Bab 3 Subbab F: Pewarisan dan Polimorfisme).
  36. Buku Siswa Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI.
  37. Perangkat komputer/laptop dengan Python IDE (IDLE, VS Code, atau Jupyter Notebook / Google Colab).
  38. Lingkungan pengembangan Python (IDE/Editor seperti VS Code, IDLE, atau Google Colab)
  39. Buku Guru Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Subbab F: Pewarisan dan Polimorfisme)
  40. Komputer/Laptop dengan Python IDE (IDLE, VS Code, atau Jupyter Notebook / Google Colab)
  41. Buku Siswa: Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Pusat Perbukuan Kemendikdasmen, 2025) Bab 3
  42. Buku Guru: Koding dan Kecerdasan Artifisial untuk SMA/MA Kelas XI (Pusat Perbukuan Kemendikdasmen, 2025) Bab 3
  43. Lembar Soal Asesmen Sumatif Bab 3: Tes Tertulis Uraian dan Panduan Unjuk Kerja Pemrograman Python
  44. Komputer laboratorium sekolah dengan lingkungan eksekusi Python 3 (IDLE/VS Code/Thonny)

Lihat & unduh lengkap

Masuk pakai Google untuk membuka modul ajar bab ini secara penuh.

Apa isi bab ini?

Dokumen memuat seluruh pertemuan bab ini dalam satu berkas: tujuan pembelajaran per pertemuan, urutan kegiatan inti sesuai alokasi JP, pertanyaan pemantik, asesmen formatif, asesmen sumatif bab, rubrik, dan refleksi. Cocok dipakai sebagai persiapan tatap muka sekaligus lampiran supervisi.

Cara pakai bab ini

Unduh DOCX, lalu sesuaikan nama sekolah, kepala sekolah, dan NIP. Bagian kegiatan inti bisa Bapak/Ibu kurangi atau tambah sesuai karakter siswa di kelas; tujuan pembelajaran sebaiknya tetap selaras dengan ATP induk.