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 iletmek için özel istisnalar (custom exceptions) kullanan eksiksiz bir kullanıcı kayıt sistemi oluşturalım! Bu bölümdeki her şeyi birleştireceksiniz: özel denetimli (checked) ve denetimsiz (unchecked) istisnalar, istisna hiyerarşisi ve otomatik kapanabilir (auto-closeable) bir doğrulayıcı ile try-with-resources kullanımı.

Kodunuzu beş dosya halinde düzenleyeceksiniz:

  • ValidationException.java: Tüm doğrulama hataları için temel teşkil eden denetimli bir istisna oluşturun. Bu istisna Exception sınıfını genişletmeli ve bir mesaj kabul eden bir kurucu (constructor) içermelidir.
  • InvalidUsernameException.java: Kullanıcı adı doğrulama hataları için denetimli bir istisna oluşturun. Bu, ValidationException sınıfınızı genişleterek küçük bir istisna hiyerarşisi oluşturmalıdır. Bir mesaj kabul eden ve bunu üst sınıfa ileten bir kurucu ekleyin.
  • InvalidAgeException.java: Yaşla ilgili hatalar (programlama hatalarını temsil eden negatif yaşlar gibi) için denetimsiz bir istisna oluşturun. Bu, bir mesaj kabul eden bir kurucu ile RuntimeException sınıfını genişletmelidir.
  • UserValidator.java: Düzgün bir şekilde kapatılması gereken bir doğrulama oturumunu simüle etmek için AutoCloseable arayüzünü uygulayan bir sınıf oluşturun. Doğrulayıcınız şunları yapmalıdır:

    Kurucu içinde Validator session started yazdırın.

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

    Yaş negatifse ("Age cannot be negative: [age]" mesajıyla) InvalidAgeException fırlatan bir validateAge(int age) metoduna sahip olun. Eğer yaş 13'ten küçükse, "Must be at least 13 years old" mesajıyla ValidationException fırlatın. Aksi takdirde, Age [age] is valid yazdırın.

    Validator session closed yazdırmak için close() metodunu uygulayın.

  • Main.java: Doğrulama sisteminizi bir araya getirin! İki girdi alacaksınız: bir kullanıcı adı (String) ve bir yaş (tamsayı).

    Bir UserValidator oluşturmak için try-with-resources kullanın. Try bloğu içinde önce kullanıcı adını doğrulayın, ardından yaşı doğrulayın. Her ikisi de geçerse, User registration successful! yazdırın.

    InvalidUsernameException istisnasını yakalayın ve Username error: [message] yazdırın. InvalidAgeException istisnasını yakalayın ve Age error: [message] yazdırın. ValidationException (ebeveyn) istisnasını yakalayın ve Validation error: [message] yazdırın.

    Doğrulama başarılı olsa da başarısız olsa da doğrulayıcı otomatik olarak kapanmalıdır!

Sırasıyla iki girdi alacaksınız: kullanıcı adı (String) ve yaş (tamsayı).

Bu meydan okuma tüm bölümü bir araya getiriyor: ValidationException sınıfını ebeveyn olarak kullanarak bir istisna hiyerarşisi oluşturacak, hem denetimli hem de denetimsiz istisnaları uygun şekilde kullanacak ve doğrulayıcı kaynağınızın try-with-resources ile her zaman temizlendiğinden emin olacaksınız. Üst sınıf olan ValidationException'ı alt sınıfı olan InvalidUsernameException'dan sonra yakalamanın, diğer doğrulama hatalarını yakalamaya devam ederken belirli durumları önce ele almanıza nasıl olanak tanıdığına dikkat edin!

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