Anatomi Kelas
Diperkenalkan| English | Makna |
|---|---|
| encapsulation/ɪnˌkæpsjʊˈleɪʃn/ | pengkapsulan |
| instance variables/ˈɪnstəns ˈveərɪəblz/ | variabel instance |
Medan pribadi tetap memerlukan metode yang diperiksa
- Seorang Siswa memiliki skor pribadi, tetapi
public void setScore(int s) { score = s; }tetap memungkinkan pemanggil menyediakan nilai -5. Akses pribadi saja tidak menjamin skor non-negatif. - Setter yang dijaga dapat menolak pembaruan itu. Periksa konstruktor dan setiap metode lain yang menulis bidang juga; enkapsulasi membuat kebijakan validasi lebih mudah diterapkan tetapi tidak membuatnya secara otomatis.
Menjadikan score pribadi otomatis menolak argumen negatif yang diberikan ke setter publik yang tidak terlindungi.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Salah: setter adalah kode kelas dan dapat menetapkan nilai negatif. Validasi harus diimplementasikan.
Tiga bagian dari sebuah kelas
- Desain kelas di sini berisi bidang instance untuk data, konstruktor untuk setup awal, dan metode untuk perilaku. Ini adalah tiga bagian berguna untuk diidentifikasi; secara formal, Java tidak mengklasifikasikan konstruktor sebagai anggota kelas.
- Jejakkan Siswa dari konstruksi hingga pembaruan: konstruktor menginisialisasi bidang skornya, dan metode instance kemudian membaca atau mengubah skor objek tersebut. Metode statis sebaliknya tidak memiliki objek saat ini implisit.
Variabel instance menyimpan keadaan
- Variabel instance menyimpan keadaan masing-masing objek.
private String name; private int score;— dideklarasikan di dalam kelas, di luar metode apa pun.- Setiap objek mendapat salinannya sendiri —
scoresatu siswa terpisah dari yang lain. - Ini bertahan sepanjang hidup objek (tidak seperti variabel lokal).
private dan public
- Modulator akses mengontrol siapa yang dapat mengakses anggota.
private— hanya dapat digunakan di dalam kelas;public— terekspos ke kode lain yang dapat mengakses kelas.- Variabel instance biasanya
private; metode yang membentuk antarmuka adalahpublic. - Penyembunyian data internal ini disebut enkapsulasi.
Bagian manakah tiga bagian yang mengatur desain kelas Student yang diajarkan di sini?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bidang instance menyimpan state, konstruktor menginisialisasi objek baru, dan metode menyediakan perilaku. Konstruktor bukan anggota kelas secara formal dalam terminologi Java.
Variabel instance biasanya dideklarasikan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Data privat + metode publik = enkapsulasi.
Menjaga data tetap privat dan menampilkannya hanya melalui metode disebut ___ (satu kata).
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Enkapsulasi melindungi data objek.
Dua objek dari kelas yang sama berbagi satu salinan dari setiap variabel instance.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Setiap objek memiliki salihan sendiri dari variabel instance.
Untuk kelas Student tingkat atas yang ditampilkan di sini, kelas eksternal yang tidak terkait dapat membaca bidang pribadi secara langsung...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Akses pribadi mencegah kelas eksternal yang tidak terkait membaca bidang tersebut secara langsung. Kode di dalam Student dapat membaca bidang pribadi objek Student lain.
Mengapa menjaga data tetap private
- Enkapsulasi mencegah kode eksternal yang tidak terkait langsung menetapkan bidang pribadi. Kode di dalam Siswa masih dapat membaca atau menulis bidang pribadi, termasuk milik Siswa lain yang dirujuk secara eksplisit.
- Pihak luar hanya berinteraksi melalui metode publik, yang dapat memvalidasi dan mengontrol akses.
- Anda bisa menolak skor negatif dalam sebuah metode; variabel publik tidak memiliki pengaman semacam itu.
- Bidang pribadi dengan antarmuka publik yang dipilih dengan sengaja mendukung pembaruan terkendali. Setiap metode dan konstruktor harus tetap menerapkan aturan yang dimaksud; mengembalikan objek internal yang dapat dimodifikasi juga dapat mengekspos perubahan secara tidak langsung.
Jaga variabel instance private; tampilkan perilaku melalui metode public. Bidang public memungkinkan kode apa pun menyetelnya menjadi apa pun (skor negatif, nama null) tanpa pemeriksaan. Enkapsulasi mengarahkan semua akses melalui metode yang dapat memvalidasi perubahan. Setiap objek memiliki penyimpanan bidang instance terpisah, tetapi bidang referensi di objek yang berbeda mungkin menunjuk ke objek bersama yang sama. Bedakan bidang terpisah dari objek yang dirujuk terpisah.
Dua objek memiliki bidang referensi terpisah, sehingga bidang-bidang tersebut harus menunjuk ke objek yang berbeda.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Salah: bidang referensi yang terpisah dapat keduanya menunjuk ke objek mutable yang sama.
Dua siswa merujuk pada ArrayList yang awalnya kosong yang sama. Satu menambahkan satu item. Ukuran list apa yang diamati oleh referensi yang lain?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Kedua referensi menunjuk ke objek list yang sama, yang ukurannya sekarang 1.
Anatomi kelas Student:
- Variabel instance:
private String name; private int score; - Konstruktor:
public Student(String n) { ... } - Metode:
public void addScore(int s) { ... },public int getScore() { ... }
Memisahkan penyimpanan bidang dari objek bersama
- Jika dua objek Student keduanya menyimpan referensi ke ArrayList yang sama, bidang list mereka terpisah tetapi daftar yang dirujuk bersama. Menambahkan item melalui salah satu referensi mengubah satu daftar tersebut.
- Mengubah penugasan bidang list seorang siswa ke ArrayList baru hanya mengubah bidang tersebut. Ikuti panah referensi saat memprediksi keadaan; akses privat dan identitas objek menjawab pertanyaan yang berbeda.
Sebuah kelas memiliki variabel instance (keadaan setiap objek), konstruktor (menyiapkan objek baru), dan metode (perilaku). Variabel instance biasanya private dan diakses melalui metode public — enkapsulasi ini melindungi data. Setiap objek memegang bidang instance yang terpisah; objek-objek yang dirujuk oleh bidang-bidang tersebut mungkin masih dibagikan.
Setiap objek memiliki keadaannya sendiri
a.score dan b.score terpisah — setiap objek memiliki kepemilikan atas keadaannya.