Menu
Coddy logo textTech

Sistema di prestito

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 103 di 110.

challenge icon

Sfida

Facile

Nella lezione precedente, hai creato le classi Book e User con proprietà di base. Ora è il momento di creare un vero sistema di prestito con una classe Library che gestisce l'intero processo di prestito.

Creerai un nuovo file e aggiornerai i file esistenti per implementare la logica dei prestiti:

  • book.dart: mantieni la classe Book esistente con isbn, title, author, isAvailable e toString().
  • user.dart: mantieni la classe User esistente con id, name, borrowedBooks e toString().
  • library.dart: crea una nuova classe Library che gestisce libri e utenti. Dovrebbe avere due liste: una per books e una per users. Includi i metodi per:
    • addBook(Book book) - aggiunge un libro alla raccolta della biblioteca
    • registerUser(User user) - aggiunge un utente alla biblioteca
    • borrowBook(String isbn, String userId) - trova il libro e l'utente, quindi, se il libro esiste ed è disponibile e l'utente esiste, contrassegna il libro come non disponibile, lo aggiunge ai libri presi in prestito dall'utente e stampa userId borrowed "title". Se il libro non esiste, stampa Book not found. Se il libro non è disponibile, stampa Book not available. Se l'utente non esiste, stampa User not found.
    • returnBook(String isbn, String userId) - trova il libro e l'utente, quindi, se entrambi esistono e l'utente ha quel libro, contrassegna il libro come disponibile, lo rimuove dai libri presi in prestito dall'utente e stampa userId returned "title". Se il libro non esiste, stampa Book not found. Se l'utente non esiste, stampa User not found.
  • main.dart: importa tutti i file e mostra il funzionamento del sistema di prestito. Crea una Library, aggiungi due libri (978-0-13-468599-1, The Pragmatic Programmer, David Thomas e 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford) e registra un utente (U001, Alice Johnson). Poi:
    1. Presta il primo libro ad Alice
    2. Prova a prestare di nuovo lo stesso libro (dovrebbe fallire)
    3. Presta il secondo libro ad Alice
    4. Stampa Alice per mostrare il numero di libri che ha preso in prestito
    5. Restituisci il primo libro
    6. Stampa di nuovo Alice per mostrare il conteggio aggiornato

Output previsto:

U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)

Provalo tu

import 'book.dart';
import 'user.dart';
import 'library.dart';

void main() {
  // TODO: Crea un'istanza di Library
  
  // TODO: Crea due libri:
  // - Book 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
  // - Book 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
  
  // TODO: Aggiungi entrambi i libri alla biblioteca
  
  // TODO: Crea un utente con id 'U001' e nome 'Alice Johnson'
  
  // TODO: Registra l'utente nella biblioteca
  
  // TODO: Fai prendere in prestito il primo libro ad Alice
  
  // TODO: Prova a prendere in prestito di nuovo lo stesso libro (l'operazione dovrebbe fallire con 'Book not available')
  
  // TODO: Fai prendere in prestito il secondo libro ad Alice
  
  // TODO: Stampa Alice per mostrare il numero di libri che ha preso in prestito
  
  // TODO: Restituisci il primo libro
  
  // TODO: Stampa di nuovo Alice per mostrare il conteggio aggiornato
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online