Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Mari 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 password private (String) yang menyimpan password sebenarnya
    • Field minLength private (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 kembalikan true; jika terlalu pendek, jangan ubah password dan kembalikan false
    • Getter getMaskedPassword() yang mengembalikan password dengan semua karakternya diganti tanda bintang (*) , jangan pernah tampilkan password sebenarnya!
    • Method checkPassword(String attempt) yang mengembalikan true jika attempt cocok dengan password yang tersimpan, dan false jika tidak
    • Getter getLength() yang mengembalikan panjang password saat ini (atau 0 jika belum ada password yang diatur)
  • 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: true atau Set: false (hasil pengaturan password)
    • Masked: ****** (versi password yang disamarkan)
    • Match: true atau Match: 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")
        
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online