Rekap: Pengguna Tervalidasi
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 63 dari 87.
Tantangan
MudahMari kita buat sistem pendaftaran pengguna lengkap yang memvalidasi data input dan menggunakan exception kustom untuk menyampaikan dengan tepat apa yang salah! Kamu akan menggabungkan semua materi dari bab ini: exception checked dan unchecked kustom, hierarki exception, serta try-with-resources dengan validator yang dapat ditutup secara otomatis.
Kamu akan mengatur kodemu dalam lima file:
ValidationException.java: Buat exception checked yang menjadi dasar untuk semua error validasi. Exception ini harus mewarisiExceptiondan menyertakan konstruktor yang menerima pesan.InvalidUsernameException.java: Buat exception checked untuk kegagalan validasi username. Exception ini harus mewarisi classValidationException-mu, sehingga membentuk hierarki exception sederhana. Sertakan konstruktor yang menerima pesan dan meneruskannya ke induknya.InvalidAgeException.java: Buat exception unchecked untuk error terkait usia, seperti usia negatif yang menunjukkan error pemrograman. Exception ini harus mewarisiRuntimeExceptiondan memiliki konstruktor yang menerima pesan.UserValidator.java: Buat class yang mengimplementasikanAutoCloseableuntuk menyimulasikan sesi validasi yang harus ditutup dengan benar. Validator-mu harus:Mencetak
Validator session starteddi konstruktor.Memiliki method
validateUsername(String username)yang melemparInvalidUsernameExceptionjika username bernilai null, kosong, atau kurang dari 3 karakter (dengan pesan"Username must be at least 3 characters"). Jika tidak, cetakUsername '[username]' is valid.Memiliki method
validateAge(int age)yang melemparInvalidAgeExceptionjika usia negatif (dengan pesan"Age cannot be negative: [age]"). Jika usia kurang dari 13, lemparValidationExceptiondengan pesan"Must be at least 13 years old". Jika tidak, cetakAge [age] is valid.Implementasikan
close()untuk mencetakValidator session closed.Main.java: Satukan sistem validasimu! Kamu akan menerima dua input: username (String) dan usia (bilangan bulat).Gunakan try-with-resources untuk membuat
UserValidator. Di dalam blok try, validasi username terlebih dahulu, lalu validasi usia. Jika keduanya berhasil, cetakUser registration successful!Tangkap
InvalidUsernameExceptiondan cetakUsername error: [message]. TangkapInvalidAgeExceptiondan cetakAge error: [message]. TangkapValidationException(induknya) dan cetakValidation error: [message].Validator harus ditutup secara otomatis, baik validasi berhasil maupun gagal!
Kamu akan menerima dua input secara berurutan: username (String) dan usia (bilangan bulat).
Tantangan ini menggabungkan seluruh materi bab: kamu akan membuat hierarki exception dengan ValidationException sebagai induk, menggunakan exception checked dan unchecked dengan tepat, serta memastikan resource validator-mu selalu dibersihkan dengan try-with-resources. Perhatikan bagaimana menangkap induk ValidationException setelah turunannya, InvalidUsernameException, memungkinkanmu menangani kasus spesifik terlebih dahulu sambil tetap menangkap error validasi lainnya!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
String username = scanner.nextLine();
int age = scanner.nextInt();
// TODO: Gunakan try-with-resources untuk membuat UserValidator
// Di dalam blok try:
// 1. Validasi username
// 2. Validasi age
// 3. Jika keduanya lolos, cetak "User registration successful!"
// TODO: Tangkap InvalidUsernameException dan cetak "Username error: [message]"
// TODO: Tangkap InvalidAgeException dan cetak "Age error: [message]"
// TODO: Tangkap ValidationException (induk) dan cetak "Validation error: [message]"
// Catatan: Validator harus tertutup secara otomatis, baik validasi berhasil maupun gagal!
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online