Kelas dan objek – referensi, enkapsulasi, dan pewarisan

InformatikaAlgoritma dan pemecahan masalahUsia 17–18

Gunakan di kelas saya ✨ Sesuaikan dengan AI Laporkan masalah

Jalankan per langkah program Python atau Java kecil yang mendefinisikan kelas, membuat objek, dan memanggil metode, lalu amati memorinya: variabel di stack menyimpan panah (referensi) ke objek di heap, di samping diagram kelas UML. Enam contoh membahas konstruktor dan keadaan objek, aliasing dan null, objek sebagai parameter dan nilai kembalian, enkapsulasi dengan getter dan setter, pewarisan dengan override dan polimorfisme, serta anggota statis. Mode Eksperimen memungkinkan Anda membuat objek dan menyalin referensi sendiri, dan Tugas desain meminta Anda menyusun diagram kelas dari spesifikasi tertulis.

Pelajaran: Pemrograman berorientasi objek: kelas, objek, referensi, enkapsulasi, pewarisan, dan polimorfisme

Yang ditunjukkan

Kelas adalah cetak biru yang mendefinisikan atribut (data) dan metode (perilaku); setiap objek yang dibuat darinya adalah instans dengan salinan atributnya sendiri. Variabel bertipe kelas tidak berisi objek, tetapi referensi ke objek itu, sehingga menyalin satu variabel ke variabel lain membuat alias, dan referensi bisa bernilai null (None di Python). Enkapsulasi menjaga atribut tetap privat dan membukanya lewat metode yang dapat memeriksa nilai. Subkelas mewarisi anggota superkelasnya dan dapat meng-override metode; saat program berjalan, kelas sebenarnya dari objek menentukan versi yang dijalankan, dan inilah polimorfisme.

Cara menggunakan

Pilih Jalankan per langkah, sebuah Bahasa, dan sebuah Contoh, lalu tekan Langkah atau Jalankan dan ikuti baris yang disorot, panah di tampilan memori, serta metode yang disorot di diagram kelas. Di Eksperimen, buat objek Account atau SavingsAccount, salin referensi dengan Tetapkan, dan gunakan Panggil untuk melihat aliasing, sampah, dan override. Di Tugas desain, baca spesifikasinya, klik anggota untuk menempatkannya di kelas, lalu tekan Periksa.

Parameter yang dapat diubah

  • Mode Jalankan per langkah, Eksperimen, Tugas desain
  • Contoh Kelas, objek, dan metode, Referensi, aliasing, dan null, Objek sebagai parameter dan nilai kembalian, Enkapsulasi: getter dan setter, Pewarisan dan polimorfisme, Anggota statis (milik kelas)
  • Bahasa Python, Java
  • Kecepatan jalan 0,5–5 langkah/detik
  • Tugas desain Buku perpustakaan, Bangun datar (pewarisan), Siswa (anggota statis)

Pertanyaan untuk dijelajahi

  1. Setelah c2 = c1 dan c2.increment(), mengapa c1.count ikut berubah?
  2. Mengapa reset(p) tidak mengubah variabel pemanggil, sedangkan move_right(p, dx) mengubah objek milik pemanggil?
  3. Dalam perulangan atas pets, mengapa p.describe() menghasilkan suara berbeda untuk Dog dan Cat?