Penyembunyian Informasi
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 12 dari 87.
Penyembunyian informasi adalah prinsip yang membatasi akses langsung ke data internal suatu object. Dengan menggabungkan field private dengan getter dan setter, kamu membuat penghalang pelindung di sekitar state object-mu.
Pertimbangkan apa yang terjadi tanpa penyembunyian informasi:
public class Temperature {
public double celsius; // Dapat diakses langsung
}
// Siapa pun bisa menetapkan nilai yang tidak valid
Temperature t = new Temperature();
t.celsius = -500; // Di bawah nol mutlak, mustahil!Dengan penyembunyian informasi, kamu mengontrol cara data diakses dan diubah:
public class Temperature {
private double celsius;
public void setCelsius(double celsius) {
if (celsius >= -273.15) {
this.celsius = celsius;
}
}
public double getCelsius() {
return celsius;
}
}Sekarang suhu yang tidak valid otomatis ditolak. Representasi internal disembunyikan. Kamu nanti bisa mengubah cara suhu disimpan secara internal, mungkin dalam Kelvin, tanpa memengaruhi kode yang menggunakan class tersebut.
Pendekatan ini menawarkan tiga manfaat utama: validasi memastikan integritas data, fleksibilitas memungkinkan perubahan internal tanpa merusak kode eksternal, dan kontrol memungkinkan kamu menentukan dengan tepat operasi apa yang diizinkan pada datamu.
Tantangan
MudahMari kita buat class manajemen Password yang menunjukkan penyembunyian informasi dengan melindungi data sensitif dan menerapkan aturan keamanan melalui akses yang terkendali.
Kamu akan membuat dua file untuk mengatur kodemu:
Password.java: Buat class Password yang menyembunyikan data internalnya dan mengatur cara password dapat diatur dan diakses:- Field
passwordprivate (String) yang menyimpan password sebenarnya - Field
minLengthprivate (int) yang menentukan panjang minimum password yang dapat diterima - Konstruktor yang menerima persyaratan panjang minimum
- Setter
setPassword(String password)yang hanya menerima password yang memenuhi persyaratan panjang minimum. Jika valid, simpan dan kembalikantrue; jika terlalu pendek, jangan ubah password dan kembalikanfalse - Getter
getMaskedPassword()yang mengembalikan password dengan semua karakternya diganti tanda bintang (*) , jangan pernah tampilkan password sebenarnya! - Method
checkPassword(String attempt)yang mengembalikantruejika attempt cocok dengan password yang tersimpan, danfalsejika tidak - Getter
getLength()yang mengembalikan panjang password saat ini (atau 0 jika belum ada password yang diatur)
- Field
Main.java: Buat object Password dengan panjang minimum 6, lalu baca dua input: password yang akan diatur dan attempt yang akan diperiksa. Cetak tiga baris:Set: trueatauSet: false(hasil pengaturan password)Masked: ******(versi password yang disamarkan)Match: trueatauMatch: false(hasil pemeriksaan attempt)
Kamu akan menerima dua input: password yang akan diatur dan attempt password yang akan diperiksa.
Perhatikan bahwa password sebenarnya tidak pernah dapat diakses secara langsung dari luar class, inilah penerapan penyembunyian informasi. Class mengatur dengan tepat informasi apa yang ditampilkan dan bagaimana password dapat diubah.
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca kata sandi yang akan kamu tetapkan
String passwordToSet = scanner.nextLine();
// Baca kata sandi percobaan yang akan kamu periksa
String passwordAttempt = scanner.nextLine();
// TODO: Buat object Password dengan panjang minimum 6
// TODO: Tetapkan kata sandi dan cetak hasilnya ("Set: true" atau "Set: false")
// TODO: Cetak kata sandi yang disamarkan ("Masked: ******")
// TODO: Periksa kata sandi percobaan dan cetak hasilnya ("Match: true" atau "Match: false")
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online