Proje Genel Bakış ve UML Tasarımı
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 77 / 87.
Görev
KolayKütüphane Yönetim Sistemi projesine temel oluşturarak başlayalım: diğer her şeyin bağlı olacağı temel varlık sınıflarını oluşturalım. Bu ilk görev, sistemin temel varlıklarını modelleyen iyi yapılandırılmış Book ve User sınıflarını oluşturmaya odaklanır.
Kodunuzu üç dosya arasında düzenleyeceksiniz:
Book.java: Bir kütüphane kitabını temsil edenBooksınıfını oluşturun. Her kitaptaisbn(String),title(String),author(String) veisAvailable(boolean, varsayılan değeritrue) için private alanlar bulunmalıdır. isbn, title ve author kabul eden bir kurucu ekleyin. Tüm alanlar için uygun getter metotlarını veisAvailableiçin bir setter sağlayın. Biçimlendirilmiş bir dize döndüren birgetDetails()metodu ekleyin:[isbn] title by author.User.java: Bir kütüphane üyesini temsil edenUsersınıfını oluşturun. Her kullanıcıdaid(String) vename(String) için private alanlar bulunmalıdır. Her iki değeri kabul eden bir kurucu ekleyin ve her alan için getter metotları sağlayın. Şunu döndüren birtoString()metodu ekleyin:User[id]: name.Main.java: Doğru çalıştıklarını göstermek için sınıflarınızı bir araya getirin. Dört girdi alacaksınız: bir kitabın ISBN'si, başlığı, yazarı ve ardından bir kullanıcının ID'si ile adı.İlk üç girdiyle bir
Book, son iki girdiyle birUseroluşturun.getDetails()kullanarak kitabın ayrıntılarını yazdırın, ardından kitabın kullanılabilir olup olmadığınıAvailable: trueveyaAvailable: falsebiçiminde yazdırın. Son olarak kullanıcıyı kenditoString()metodunu kullanarak yazdırın.
Beş girdiyi şu sırayla alacaksınız: ISBN (String), başlık (String), yazar (String), kullanıcı ID'si (String) ve kullanıcı adı (String).
Örneğin, girdiler 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 ve Alice Smith olduğunda çıktınız şöyle olur:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithBu temel sınıflar, Kütüphane Yönetim Sistemi'nin tamamı için yapı taşları olarak hizmet edecektir. Gelecek derslerde bunları ödünç alma işlevleri, arama yetenekleri ve daha fazlasıyla genişleteceksiniz!
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Kitap bilgilerini oku
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Kullanıcı bilgilerini oku
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: isbn, title ve author ile bir Book nesnesi oluştur
// TODO: userId ve userName ile bir User nesnesi oluştur
// TODO: getDetails() kullanarak kitabın detaylarını yazdır
// TODO: Print whether the book is available (format: "Available: true" or "Available: false")
// TODO: toString() kullanarak kullanıcıyı yazdı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ı13Proje: Kütüphane Yönetimi
Proje Genel Bakış ve UML TasarımıKitap ve Kullanıcı SınıflarıÖdünç Alma SistemiArama İşlevselliğiYönetici ArayüzüException Handling EntegrasyonuTest ve Entegrasyon2Eriş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