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
KolayLibrary System projeniz için temeli oluşturalım! Önümüzdeki derslerde eksiksiz bir kütüphane yönetim uygulamasına dönüşecek temel dosya yapısını oluşturacaksınız.
Kodunuzu, her birinin belirli bir sorumluluğu olan dört dosya arasında düzenleyeceksiniz:
Book.cs: Bu dosya Book modelinizi içerecek. Şimdilik,Booknamespace'i içinde üç otomatik uygulanan özelliğe sahip birLibrarySystemsınıfı oluşturun:Title(string),Author(string) veIsAvailable(bool, varsayılan değeritrue). Başlık ve yazarı parametre olarak alan bir constructor ekleyin.User.cs: Bu dosya User modelinizi içerecek. Aynı namespace içinde iki özelliğe sahip birUsersınıfı oluşturun:Name(string) veMemberId(int). Her iki değeri kabul eden bir constructor ekleyin.Library.cs: Temel mantığınız burada bulunacak.Libraryözelliğine (string) sahip birNamesınıfı ve bu özelliği ayarlayan bir constructor oluşturun.GetInfo()biçiminde bir string döndüren"{Name} Library System Initialized"adlı bir metot ekleyin.Program.cs: Her şeyi burada bir araya getirin. Burası sınıflarınızın örneklerini oluşturacağınız ve yapının doğru şekilde çalıştığını doğrulayacağınız giriş noktasıdır.
Üç girdi alacaksınız:
- Kütüphane adı
title|authorbiçiminde bir kitap girdisiname|memberIdbiçiminde bir kullanıcı girdisi
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()çağrısının sonucu - Kitabın
Book: {Title} by {Author} - Available: {IsAvailable}biçimindeki bilgileri - Kullanıcının
User: {Name} (ID: {MemberId})biçimindeki bilgileri
Örneğin, girdiler şöyleyse:
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 İlkesini izler; her dosya belirli bir sorumluluğu ele alır. Önümüzdeki derslerde bu sınıfları ödünç alma mantığı, arama işlevselliği ve eksiksiz bir konsol arayüzüyle 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Ödünç Alma Sistemi MantığıArama için LINQKonsol Arayüzü / Yönetici ArayüzüBirim Testi (NUnit/xUnit)Kendi başına pratik yap: Online C# derleyicisi