Ö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.
Görev
KolayGirdi 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 istisnaExceptionsı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,ValidationExceptionsı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 ileRuntimeExceptionsınıfını genişletmelidir.UserValidator.java: Düzgün bir şekilde kapatılması gereken bir doğrulama oturumunu simüle etmek içinAutoCloseablearayüzünü uygulayan bir sınıf oluşturun. Doğrulayıcınız şunları yapmalıdır:Kurucu içinde
Validator session startedyazdırın.Kullanıcı adı null, boş veya 3 karakterden azsa (
"Username must be at least 3 characters"mesajıyla)InvalidUsernameExceptionfırlatan birvalidateUsername(String username)metoduna sahip olun. Aksi takdirde,Username '[username]' is validyazdırın.Yaş negatifse (
"Age cannot be negative: [age]"mesajıyla)InvalidAgeExceptionfırlatan birvalidateAge(int age)metoduna sahip olun. Eğer yaş 13'ten küçükse,"Must be at least 13 years old"mesajıylaValidationExceptionfırlatın. Aksi takdirde,Age [age] is validyazdırın.Validator session closedyazdırmak içinclose()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
UserValidatoroluş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.InvalidUsernameExceptionistisnasını yakalayın veUsername error: [message]yazdırın.InvalidAgeExceptionistisnasını yakalayın veAge error: [message]yazdırın.ValidationException(ebeveyn) istisnasını yakalayın veValidation 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
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama10OOP'de İstisna Yönetimi
İstisna Sınıfı HiyerarşisiÖzel İstisnalarDenetimli ve Denetimsiz HatalarTry-With-Resources YapısıÖzet - Doğrulanmış Kullanıcı2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici Kalıbı