Kitap ve Kullanıcı Sınıfları
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 56 / 64.
Görev
KolayBu görevde, kapsamlı test kapsamına sahip çok dosyalı bir yapı kullanarak bir kütüphane yönetim sistemi için Book sınıfını uygulayacaksınız.
TODO yorumlarını takip ederek Book sınıfını uygulamak için book.py dosyasını düzenleyin. Uygulama şunları yapmalıdır:
- "title", "author" ve "isbn" parametreleri ile başlatılmalı
- Kullanılabilirlik durumunu ve ödünç alan bilgisini takip etmeli
- Uygun bir dize gösterimi (string representation) uygulamalı
Kopya kağıdı
Bu görev, bir kütüphane yönetim sistemi için bir Book sınıfının uygulanmasına odaklanmaktadır. Sınıf, kitap başlatma işlemlerini yönetmeli, kullanılabilirlik durumunu ve ödünç alan bilgilerini takip etmeli ve uygun dize gösterimi sağlamalıdır.
Uygulanacak temel bileşenler:
- Başlık (title), yazar (author) ve ISBN parametreleri ile başlatma
- Kullanılabilirlik durumunu ve ödünç alan bilgilerini takip etme
- Uygun dize gösterimi yöntemlerini uygulama
Kendin dene
from book import Book
from library import Library
# Kapsamlı test durumu işleyicisi
test_case = input()
if test_case == "create_book":
library = Library("Community Library")
title = "Title"
author = "Author"
isbn = "ISBN"
book = Book(title, author, isbn)
print(book)
elif test_case == "add_to_library":
library = Library("Community Library")
book1 = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
book2 = Book("To Kill a Mockingbird", "Harper Lee", "789012")
library.add_book(book1)
library.add_book(book2)
print(f"Library has {len(library.books)} books")
print(f"Book 1: {library.books[0]}")
print(f"Book 2: {library.books[1]}")
elif test_case == "book_availability":
book = Book("1984", "George Orwell", "345678")
print(f"Initial availability: {book.available}")
# Kullanılabilirliği değiştir
book.available = False
print(f"After change: {book.available}")
print(book) # "Not Available" göstermeli
elif test_case == "empty_values":
book = Book("", "", "")
print(book)
library = Library("")
library.add_book(book)
print(library)
elif test_case == "special_characters":
book = Book("Title with $#@!", "Author with &*^%", "ISBN-123!@#")
print(book)
elif test_case == "multiple_books":
library = Library("Public Library")
books = [
Book("Book 1", "Author 1", "111111"),
Book("Book 2", "Author 2", "222222"),
Book("Book 3", "Author 3", "333333"),
Book("Book 4", "Author 4", "444444"),
Book("Book 5", "Author 5", "555555")
]
for book in books:
library.add_book(book)
print(library)
for i, book in enumerate(library.books):
print(f"Book {i+1}: {book}")
elif test_case == "borrower_assignment":
book = Book("The Hobbit", "J.R.R. Tolkien", "987654")
print(f"Initial borrower: {book.borrower}")
book.borrower = "John Doe"
book.available = False
print(f"New borrower: {book.borrower}")
print(book)
elif test_case == "attribute_access":
book = Book("Pride and Prejudice", "Jane Austen", "246810")
print(f"Title: {book.title}")
print(f"Author: {book.author}")
print(f"ISBN: {book.isbn}")
print(f"Available: {book.available}")
print(f"Borrower: {book.borrower}")
# Öznitelikleri değiştir
book.title = "Updated Title"
book.author = "Updated Author"
book.isbn = "999999"
book.available = False
book.borrower = "Jane Smith"
print("\
After modifications:")
print(f"Title: {book.title}")
print(f"Author: {book.author}")
print(f"ISBN: {book.isbn}")
print(f"Available: {book.available}")
print(f"Borrower: {book.borrower}")Object Oriented Programming bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarı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 Özellikleri
Örnek ve Sınıf DeğişkenleriProperty DekoratörleriGizli ÖzniteliklerÖzet - Banka Hesabı Yöneticisi6Kapsülleme
Public, Protected, Private ÜyelerErişim BelirleyicilerBilgi Gizlemeİleri Seviye Property DekoratörleriÖzet - Öğrenci Kayıt Sistemi12Proje: Kütüphane Yönetimi
Projeye Genel BakışKitap ve Kullanıcı Sınıfları