Menu
Coddy logo textTech

Özet - Doğrulanmış Kullanıcı

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

challenge icon

Görev

Kolay

Girdi verilerini doğrulayan ve tam olarak neyin yanlış gittiğini bildirmek için özel istisnalar kullanan eksiksiz bir kullanıcı kayıt sistemi oluşturalım! Bu bölümdeki her şeyi bir araya getireceksin: özel checked ve unchecked istisnalar, istisna hiyerarşisi ve otomatik kapatılabilir bir doğrulayıcıyla try-with-resources.

Kodunu beş dosyaya ayıracaksın:

  • ValidationException.java: Tüm doğrulama hatalarının temelini oluşturacak checked bir istisna oluştur. Bu istisna Exception sınıfını genişletmeli ve bir mesaj kabul eden bir kurucu içermelidir.
  • InvalidUsernameException.java: Kullanıcı adı doğrulama hataları için checked bir istisna oluştur. Bu istisna, küçük bir istisna hiyerarşisi oluşturacak şekilde senin ValidationException sınıfını genişletmelidir. Bir mesaj kabul eden ve bu mesajı üst sınıfa ileten bir kurucu ekle.
  • InvalidAgeException.java: Yaşla ilgili hatalar için (programlama hatalarını temsil eden negatif yaşlar gibi) unchecked bir istisna oluştur. Bu istisna, bir mesaj kabul eden bir kurucuyla RuntimeException sınıfını genişletmelidir.
  • UserValidator.java: Düzgün şekilde kapatılması gereken bir doğrulama oturumunu simüle etmek için AutoCloseable uygulayan bir sınıf oluştur. Doğrulayıcın şunları yapmalıdır:

    Kurucuda Validator session started yazdır.

    Kullanıcı adı null, boş veya 3 karakterden kısaysa validateUsername(String username) fırlatan bir InvalidUsernameException metoduna sahip ol (mesaj "Username must be at least 3 characters" olmalıdır). Aksi takdirde Username '[username]' is valid yazdır.

    Yaş negatifse validateAge(int age) fırlatan (mesaj InvalidAgeException olmalıdır) bir "Age cannot be negative: [age]" metoduna sahip ol. Yaş 13'ten küçükse ValidationException fırlat ve mesaj olarak "Must be at least 13 years old" kullan. Aksi takdirde Age [age] is valid yazdır.

    close() metodunu, Validator session closed yazdıracak şekilde uygula.

  • Main.java: Doğrulama sistemini bir araya getir! İki girdi alacaksın: bir kullanıcı adı (String) ve bir yaş (integer).

    Bir UserValidator oluşturmak için try-with-resources kullan. try bloğunun içinde önce kullanıcı adını, ardından yaşı doğrula. İkisi de başarılı olursa User registration successful! yazdır.

    InvalidUsernameException yakala ve Username error: [message] yazdır. InvalidAgeException yakala ve Age error: [message] yazdır. ValidationException (üst sınıf) yakala ve Validation error: [message] yazdır.

    Doğrulama başarılı olsun veya olmasın, doğrulayıcı otomatik olarak kapanmalıdır!

İki girdiyi sırayla alacaksın: kullanıcı adı (String) ve yaş (integer).

Bu görev tüm bölümü bir araya getiriyor: üst sınıf olarak ValidationException ile bir istisna hiyerarşisi oluşturacak, hem checked hem de unchecked istisnaları uygun şekilde kullanacak ve try-with-resources ile doğrulayıcı kaynağının her zaman temizlenmesini sağlayacaksın. Alt sınıfı ValidationException sonrasında üst sınıf olan InvalidUsernameException sınıfını yakalamanın, belirli durumları önce ele alırken diğer doğrulama hatalarını da yakalamanı sağladığına dikkat et!

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Girdileri oku
        String username = scanner.nextLine();
        int age = scanner.nextInt();
        
        // TODO: Bir UserValidator oluşturmak için try-with-resources kullanın
        // try bloğunun içinde:
        //   1. Kullanıcı adını (username) doğrulayın
        //   2. Yaşı (age) doğrulayın
        //   3. Her ikisi de geçerliyse, "User registration successful!" yazdırın
        
        // TODO: InvalidUsernameException hatasını yakalayın ve "Username error: [message]" yazdırın
        
        // TODO: InvalidAgeException hatasını yakalayın ve "Age error: [message]" yazdırın
        
        // TODO: ValidationException (üst sınıf) hatasını yakalayın ve "Validation error: [message]" yazdırın
        
        // Note: Doğrulayıcı (validator), başarı veya başarısızlık durumuna bakılmaksızın otomatik olarak kapanmalıdır!
    }
}

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

Kendi başına pratik yap: Online Java derleyicisi