Menu
Coddy logo textTech

Bilgi Gizleme

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 12 / 87.

Bilgi gizleme, bir nesnenin dahili verilerine doğrudan erişimi kısıtlama ilkesidir. private alanları getter ve setter'lar ile birleştirerek, nesnenizin durumu etrafında koruyucu bir bariyer oluşturursunuz.

Bilgi gizleme (information hiding) olmadan neler olacağını düşünün:

public class Temperature {
    public double celsius;  // Doğrudan açığa çıkarılmış
}

// Herkes geçersiz değerler atayabilir
Temperature t = new Temperature();
t.celsius = -500;  // Mutlak sıfırın altında - imkansız!

Bilgi gizleme ile, verilerin nasıl erişildiğini ve değiştirildiğini kontrol edersiniz:

public class Temperature {
    private double celsius;
    
    public void setCelsius(double celsius) {
        if (celsius >= -273.15) {
            this.celsius = celsius;
        }
    }
    
    public double getCelsius() {
        return celsius;
    }
}

Artık geçersiz sıcaklıklar otomatik olarak reddedilir. Dahili temsil gizlidir - sınıfı kullanan kodu etkilemeden daha sonra sıcaklığın dahili olarak nasıl saklandığını (belki Kelvin'e) değiştirebilirsiniz.

Bu yaklaşım üç temel avantaj sunar: doğrulama veri bütünlüğünü sağlar, esneklik dış kodu bozmadan dahili değişikliklere izin verir ve kontrol verileriniz üzerinde tam olarak hangi işlemlere izin verileceğine karar vermenizi sağlar.

challenge icon

Görev

Kolay

Hassas verileri koruyarak ve kontrollü erişim yoluyla güvenlik kurallarını uygulayarak bilgi gizlemeyi gösteren bir Password yönetim sınıfı oluşturalım.

Kodunu düzenlemek için iki dosya oluşturacaksın:

  • Password.java: İç verilerini gizleyen ve parolaların nasıl ayarlanıp erişilebileceğini denetleyen bir Password sınıfı oluştur:
    • Gerçek parolayı depolayan özel bir password alanı (String)
    • Kabul edilebilir minimum parola uzunluğunu tanımlayan özel bir minLength alanı (int)
    • Minimum uzunluk gereksinimini alan bir kurucu
    • Yalnızca minimum uzunluk gereksinimini karşılayan parolaları kabul eden bir setter setPassword(String password). Geçerliyse parolayı depola ve true döndür; çok kısaysa parolayı değiştirme ve false döndür
    • Tüm karakterleri yıldız işaretleriyle değiştirilmiş olarak (getMaskedPassword()) döndüren bir getter * — gerçek parolayı asla açığa çıkarma!
    • Denemenin depolanan parolayla eşleşmesi durumunda checkPassword(String attempt), aksi durumda true döndüren bir false yöntemi
    • Geçerli parolanın uzunluğunu (parola ayarlanmamışsa 0) döndüren bir getter getLength()
  • Main.java: Minimum uzunluğu 6 olan bir Password nesnesi oluştur, ardından iki girdi oku: ayarlanacak parola ve kontrol edilecek deneme. Üç satır yazdır:
    • Set: true veya Set: false (parola ayarlama sonucu)
    • Masked: ****** (parolanın maskelenmiş hâli)
    • Match: true veya Match: false (denemeyi kontrol etme sonucu)

İki girdi alacaksın: ayarlanacak parola ve kontrol edilecek parola denemesi.

Gerçek parolaya sınıfın dışından doğrudan hiçbir zaman erişilemediğine dikkat et — bu, bilgi gizlemenin iş başındaki hâlidir. Sınıf, tam olarak hangi bilgilerin açığa çıkarılacağını ve parolanın nasıl değiştirilebileceğini denetler.

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Ayarlanacak şifreyi oku
        String passwordToSet = scanner.nextLine();
        // Kontrol edilecek şifre denemesini oku
        String passwordAttempt = scanner.nextLine();
        
        // TODO: Minimum uzunluğu 6 olan bir Password nesnesi oluşturun
        
        // TODO: Şifreyi ayarlayın ve sonucu yazdırın ("Set: true" veya "Set: false")
        
        // TODO: Maskelenmiş şifreyi yazdırın ("Masked: ******")
        
        // TODO: Şifre denemesini kontrol edin ve sonucu yazdırın ("Match: true" veya "Match: false")
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi