Cinema/risposte.md

4.1 KiB

Problemi segnalati

Problema 1

Perché il main stampa 16 volte "Film non trovato"? Quale è l'errore? Individua la causa e spiegamela come risposta.

  • Il problema che sono riuscito ad inviduare è il seguente: il fatto che essendo andato a fare per 4 volte prenotaPosti, e la funzione prenotaPosti è fatta cosi
    public void prenotaPosti(int Posti, Film film){
        for (int i = 0; i < this.film.length; i++) {
            if (this.film[i] == film) {
                if (this.film[i].getPosti() >= Posti) {
                    this.film[i].setPosti(this.film[i].getPosti() - Posti);
                } else {
                    System.out.println("Posti non disponibili");
                }
            }else {
                System.out.println("Film non trovato");
            }
        }
    }
    
    Vado a fare un controllo in tutto l'array e dato che non viene trovato quel film andiamo nel else che stampa film non trovato. Per questo motivo viene stampato 16 volte "Film non trovato".

Problema 2 (classe Film)

  • distingui tra posti disponibili e massimo numero di posti disponibili (all'inizio sono tutti disponibili, poi calano).

    • fatto, ho aggiunto postiTotali e postiDisponibili.
  • setPosti mette il massimo dei posti disponibili.

    • Risolto. Andando a mettere due variabili ovvero postiRimasti & postiTotali.
  • Poi serve un vendiBiglietti (int num) che deve fare dei controlli per vedere se ce ne sono disponibili e restituire true o false a seconda che l'operazione sia possibile (e allora cambia il numero di posti ) o no (e allora non modifica nulla).

    • fatto, ho aggiunto il metodo vendiBiglietti(int num) che restituisce true se la vendita è andata a buon fine, altrimenti restituisce false.
  • Serve un metodo equals: quando un film è uguale ad un altro? Scrivilo nella documentazione.

    • fatto, ho aggiunto il metodo equals per poter fare il confronto tra due oggetti, e non come ho fatto io ovvero ==
    • In questo caso il film è uguale ad un altro se il titolo è uguale. In quanto è l'unico dato che può identificare univocamente un film. Dato che il dato durata e posti posso esseuguali ad altri film.
  • Serve un toString da usare quando stampi, fatto bene, non Titolo: Il Signore degli Anelli Durata: 180 Sala: Sala 1 Posti: 60 ma con uno spazio fisso per il titolo (50 caratteri?) e il resto analogamente.

    • fatto, ho sistemato per il sistema la formattazione della stringa che rappresenta il film.

Problema 3 (classe Cinema)

  • aggiungiFilm: if (film[i] == f) è errato, NON va bene. Perché? Fammi un esempio in cui fallisce (mettilo come test nel main). Inoltre non stai facendo quello che è richiesto: "aggiunge un film alla programmazione (non possono esistere due film nella stessa sala)"

    • allora è errato in quanto vado a fare un confronto tra due oggetti, che non sono uguali, in quanto sono due oggetti diversi, quindi non posso fare un confronto diretto tra due oggetti, ma devo fare un confronto tra i valori degli attributi degli oggetti. e qui sono stato stupido io...
    • soluzione in questo caso dovrei usare il metodo equals per poter fare il confronto tra due oggetti, e non come ho fatto io ovvero ==
  • prenotaPosti: if (this.film[i] == film) { (vedi sopra) Poi usa vendiBiglietti di Film per cambiare il numero di posti, così eviti possibili errori. Deve restituire true o false, non void. Non deve stampare nulla a video (documentare cosa fa). A video deve stampare il main in base all'esito.

    • fatto, ho sistemato il metodo prenotaPosti, ora restituisce un booleano, e non stampa nulla a video, ma restituisce un booleano, in base all'esito dell'operazione.
  • filmPiuLungo deve restituire (una copia, se vuoi fare le cose fatte bene) del film, il main poi chiama il metodo toString del film restituito

    • fatto, ho sistemato il metodo filmPiuLungo, ora restituisce una copia del film più lungo.
  • percentualePostiOccupati così come è non ha senso. pensaci meglio

    • fatto, ho sistemato il metodo percentualePostiOccupati, ora calcola la percentuale di posti occupati in base al numero di posti totali e posti disponibili.
  • rimuoviFilm ha il solito problema