Proje Yapısı
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 62 / 70.
Görev
KolayKütüphane Sistemi projenizin temelini atalım! Gelecek derslerde eksiksiz bir kütüphane yönetim uygulamasına dönüşecek olan temel dosya yapısını oluşturacaksınız.
Kodunuzu, her biri belirli bir sorumluluğa sahip dört dosya halinde düzenleyeceksiniz:
Book.cs: Bu dosya Kitap modelinizi tutacaktır. Şimdilik,LibrarySystemad alanında (namespace) üç adet otomatik uygulanan özelliğe (auto-implemented property) sahip birBooksınıfı oluşturun:Title(string),Author(string) veIsAvailable(bool, varsayılan olaraktrue). Başlık ve yazarı parametre olarak alan bir yapıcı metot (constructor) ekleyin.User.cs: Bu dosya Kullanıcı modelinizi içerecektir. Aynı ad alanında iki özelliğe sahip birUsersınıfı oluşturun:Name(string) veMemberId(int). Her iki değeri de kabul eden bir yapıcı metot ekleyin.Library.cs: Temel mantığınızın yer alacağı yer burasıdır. BirNameözelliğine (string) ve bunu ayarlamak için bir yapıcı metoda sahip birLibrarysınıfı oluşturun."{Name} Library System Initialized"formatında bir dize döndürenGetInfo()adlı bir metot ekleyin.Program.cs: Burada her şeyi bir araya getirin. Bu, sınıflarınızın örneklerini oluşturacağınız ve yapının doğru çalışıp çalışmadığını doğrulayacağınız giriş noktanızdır.
Üç girdi alacaksınız:
- Kütüphane adı
title|authorformatında bir kitap girişiname|memberIdformatında bir kullanıcı girişi
Verilen adla bir Library örneği, sağlanan başlık ve yazarla bir Book ve sağlanan ad ve üye kimliğiyle bir User oluşturun. Ardından üç satır yazdırın:
- Kütüphanenizde
GetInfo()metodunu çağırmanın sonucu Book: {Title} by {Author} - Available: {IsAvailable}formatında kitabın bilgileriUser: {Name} (ID: {MemberId})formatında kullanıcının bilgileri
Örneğin, girdiler şunlarsa:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001Çıktı şöyle olmalıdır:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Bu yapı Tek Sorumluluk Prensibi'ni (Single Responsibility Principle) takip eder - her dosya belirli bir konuyla ilgilenir. Gelecek derslerde, bu sınıfları ödünç alma mantığı, arama işlevselliği ve tam bir konsol arayüzü ile genişleteceksiniz!
Kendin dene
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Girdileri oku
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// Kitap girdisini ayrıştır (format: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// Kullanıcı girdisini ayrıştır (format: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: Kütüphane adıyla bir Library örneği oluşturun
// TODO: Başlık ve yazarla bir Book örneği oluşturun
// TODO: İsim ve üye kimliği ile bir User örneği oluşturun
// TODO: GetInfo() kullanarak kütüphane bilgilerini yazdırın
// TODO: Kitap bilgilerini şu formatta yazdırın: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: Kullanıcı bilgilerini şu formatta yazdırın: User: {Name} (ID: {MemberId})
}
}
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarı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ı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları9Değişken Argümanlar
'params' Anahtar Kelimesiİsteğe Bağlı Parametrelerİsimlendirilmiş ArgümanlarMetot Aşırı Yükleme12Proje: Kütüphane Sistemi
Proje YapısıKitap ve Kullanıcı Modelleri