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

  • Book sparar titel, författare och om boken är tillgänglig.
  • Member sparar låntagarens namn och vilka böcker personen har lånat.
  • Library sparar 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.

Tillbaka till kap 3.8