Lösningsförslag
Kap 3.8 – Bibliotekssystem
Ett exempel på ett objektorienterat projekt med tre samverkande klasser.
Klassdiagram
classDiagram
Library --> Book : contains
Library --> Member : registers
Member --> Book : borrows
class Book {
-string title
-string author
-bool available
+borrow() bool
+return_book() void
+get_title() string
+__str__() string
}
class Member {
-string name
-list borrowed_books
+borrow_book(book) void
+return_book(book) void
+list_books() void
+get_name() string
}
class Library {
-list books
-list members
+add_book(title, author) void
+register_member(name) void
+find_book(title) Book
+find_member(name) Member
+list_books() void
}
Kodstruktur
Booksparar titel, författare och om boken är tillgänglig.Membersparar låntagarens namn och vilka böcker personen har lånat.Librarysparar böcker och medlemmar samt söker fram rätt objekt.
Attribut och metoder
Book: har attributen _title, _author och
_available. Metoderna lånar ut, lämnar tillbaka och skriver ut bokens status.
Member: har attributen _name och _borrowed_books.
Metoderna lånar, lämnar tillbaka och listar böcker.
Library: har attributen _books och _members. Metoderna
lägger till böcker, registrerar medlemmar och söker efter objekt.
Python-kod
Ladda ner ett komplett lösningsförslag: kap3-8-bibliotek-projekt-losningsforslag.py
Vad lösningen visar
- Tre klasser samarbetar i samma program.
- Attribut markeras som interna med understreck.
- Objekt skickas som argument mellan metoder.
- Programmet testas genom ett konkret scenario där en medlem lånar och lämnar tillbaka en bok.