Caratteristiche dell'applicazione utente
Nell’applicazione, ogni utente è caratterizzato da attributi:
- Nome
- ID (può essere un INT o un String Code)
- Collezione di libri (ogni utente ha la sua collezione di libri)
Il prestito, come anche la condivisione, ovviamente non implicano la rimozione dall’archivio del possessore.
Operazioni del codice utente
Non si richiede implementazione delle operazioni il codice utente che si occupa di:
- Richiesta di condivisione libro
- Ricezione di un libro in prestito/o condivisione
Main
- Istanziare due utenti (A e B), ognuno di essi con una collezione di libri a dimensione arbitraria.
- Collezione dell’utente A contiene almeno 3 libri, di cui almeno uno prestabile e uno condivisibile.
- Utente A deve cercare dentro la propria collezione un libro per titolo e prestarlo all’utente B. Il successo dell’operazione produce un aggiornamento nello stato del libro prestato. Questo stato deve essere stampato a video.
- Nel caso in cui il libro non è stato trovato, sollevare un’eccezione che deve essere catturata.
- Utente A vuole leggere un libro. Ci chiediamo se B possiede il libro e può prestarlo o condividerlo con A.
- Utente B deve cercare dentro la propria collezione un libro per titolo e renderlo condiviso. Se non trovato, sollevare un’eccezione.
Offerta del ristorante
Un ristorante offre ai suoi clienti un menu che comprende:
- Primi piatti
- Secondi piatti
- Pizze
Ogni pietanza è caratterizzata da:
- Nome
- Set di ingredienti
- Prezzo
Ogni ingrediente ha una descrizione ed una tipologia di appartenenza che ne indica l'origine (vegetale, animale).
Per i primi piatti si desidera memorizzare anche la quantità di carboidrati, proteine e grassi. Per i secondi piatti occorre memorizzare proteine e grassi. Per le pizze occorre anche indicare la tipologia di farina utilizzata, ed un set di eventuali supplementi (aggiuntivi rispetto agli ingredienti). Il supplemento è definito come l'ingrediente ma in più ha anche il proprio prezzo.
Definizione delle classi
Definire le opportune classi, prevedere per ciascuna il metodo toString() per tutte le informazioni di ogni prodotto.
Per i primi piatti e i secondi piatti occorre un metodo che indichi l’apporto calorico principale, tenendo presente che:
- Calorie = 4 * carboidrati
- Calorie = 4 * proteine
- Calorie = 9 * grassi
Per ogni possibile pietanza occorre poterne calcolare il costo (NB: per la pizza deve sommare anche i costi dei supplementi).
È definita poi l'interfaccia "vegano", che prevede un metodo "controllaSeVegano" che verifica se una pietanza lo è o meno. Prevedere l’implementazione di tale interfaccia per primi piatti e pizze.
Gestione degli abbonamenti teatrali
Si definisca un insieme di interfacce e classi per rappresentare la gestione degli abbonamenti per una rassegna teatrale.
Ogni abbonato è un utente caratterizzato dai seguenti dati:
- Nome e cognome
- Età
- E-mail (chiave utente)
Sono previsti i seguenti tipi di abbonati:
- Anziani (età≥70)
- Studenti universitari
- Utente normale
Per ciascun abbonato occorre implementare tutti e soli i setter e getter che si ritengono necessari. Occorre lanciare delle eccezioni in caso di inserimento di valori errati.
Un abbonamento ha un prezzo base pari a BASE € e un codice abbonamento univoco (a scelta dello studente tipo e meccanismo di incremento). Alcuni tipi di utente hanno diritto ad una detrazione sul prezzo totale dell’abbonamento.
- Agli studenti universitari si applica una detrazione del 40% del costo dell’abbonamento.
- Agli anziani va applicata una detrazione del 50% del costo dell’abbonamento.
- Utenti normali non implementano alcuna funzione di detrazione.
Gli utenti normali possono richiedere un posto numerato pagando il 10% in più rispetto al prezzo BASE. Per semplicità non è richiesta l’implementazione del meccanismo di numerazione dei posti. Quindi, gli utenti normali saranno caratterizzati da un booleano che sarà settato a True se hanno richiesto un posto numerato, False altrimenti.
Il teatro ha una capacità di posti limitata, per cui si prevede di assegnare un certo numero di MAX_POSTI di abbonamenti; il numero massimo di posti in sala per abbonamenti agli studenti universitari è MAX_UNIV ≤ 10% MAX_POSTI.
Operazione di abbonamento al Teatro
Va specificato:
- Utente
- Se vuole un posto numerato
Va restituito il costo dell’abbonamento. Se all'atto dell'abbonamento il posto non c’è o non può essere accettato con tali specifiche, va sollevata un’eccezione.
-
Programmazione 1 - Esercitazione
-
Programmazione 1 - Esercitazione
-
Programmazione 1 - Esercitazione
-
Programmazione 1 - Esercitazione