Ö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 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 istisnaExceptionsı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 seninValidationExceptionsı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 kurucuylaRuntimeExceptionsınıfını genişletmelidir.UserValidator.java: Düzgün şekilde kapatılması gereken bir doğrulama oturumunu simüle etmek içinAutoCloseableuygulayan bir sınıf oluştur. Doğrulayıcın şunları yapmalıdır:Kurucuda
Validator session startedyazdır.Kullanıcı adı null, boş veya 3 karakterden kısaysa
validateUsername(String username)fırlatan birInvalidUsernameExceptionmetoduna sahip ol (mesaj"Username must be at least 3 characters"olmalıdır). Aksi takdirdeUsername '[username]' is validyazdır.Yaş negatifse
validateAge(int age)fırlatan (mesajInvalidAgeExceptionolmalıdır) bir"Age cannot be negative: [age]"metoduna sahip ol. Yaş 13'ten küçükseValidationExceptionfırlat ve mesaj olarak"Must be at least 13 years old"kullan. Aksi takdirdeAge [age] is validyazdır.close()metodunu,Validator session closedyazdı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
UserValidatoroluş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ı olursaUser registration successful!yazdır.InvalidUsernameExceptionyakala veUsername error: [message]yazdır.InvalidAgeExceptionyakala veAge error: [message]yazdır.ValidationException(üst sınıf) yakala veValidation 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
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ıKendi başına pratik yap: Online Java derleyicisi