Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da sappe Visualizza il messaggio
    codice:
    public class Spettacolo {
        // ....
        private Persona [] spettatori ;
        private int postiPrenotati = 0;
        private static final int CAPIENZA =100;
    
        public Spettacolo ( String titolo , String compagnia , String dataora ) {
            // ....
            this . spettatori = new Persona [ CAPIENZA ];
        }
    
        public int postiDisponibili () {
            return CAPIENZA - postiPrenotati ;
        }
    
        public boolean prenota ( Persona spettatore ) {
            if ( postiDisponibili () >0) {
                spettatori [ postiPrenotati ] = spettatore ;
                postiPrenotati ++;
                return true ;
            }
            else return false ;
        }
    
        // ....
    }
    Ho quotato nel codice solo le parti rilevanti. Il concetto che hai applicato per gestire l'insieme delle Persone per lo Spettacolo, è sensato e corretto!

    Cioè tenere un array, tenere il numero "logico" di elementi occupati e poi nel prenota assegnare il Persona al posto corrente e aumentare il numero di posti prenotati (che sarà l'indice del successivo Persona).
    Tutto questo ti ripeto che l'hai fatto giusto. Se non si usano le "collezioni", questo è il modo basilare e minimale per gestire un insieme di oggetti che cresce con un limite fisico massimo (se volessi che sia espandibile a piacere in modo arbitrario, chiaramente serve altra logica in più ma sicuramente non è l'obiettivo degli esercizi che stai facendo).

    La questione della classe Veicolo è diversa, principalmente a livello concettuale. Una classe Veicolo denota una singola entità, appunto 1 veicolo. Non ha senso che Veicolo contenga un array di N veicoli. Invece una classe es. Garage o Parcheggio ha senso che abbia N veicoli. E li puoi gestire esattamente come hai fatto per Spettacolo, che ti ribadisco, è appropriata come gestione.


    P.S. cura solo di più lo stile di scrittura. Vedo "troppi" spazi superflui.
    Ultima modifica di andbin; 02-02-2016 a 19:42
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it L'avatar di sappe
    Registrato dal
    May 2011
    Messaggi
    19
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ho quotato nel codice solo le parti rilevanti. Il concetto che hai applicato per gestire l'insieme delle Persone per lo Spettacolo, è sensato e corretto!
    Ci credo è corretto, è quello che ci ha dato il professore come esempio

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Tutto questo ti ripeto che l'hai fatto giusto. Se non si usano le "collezioni", questo è il modo basilare e minimale per gestire un insieme di oggetti che cresce con un limite fisico massimo (se volessi che sia espandibile a piacere in modo arbitrario, chiaramente serve altra logica in più ma sicuramente non è l'obiettivo degli esercizi che stai facendo).

    La questione della classe Veicolo è diversa, principalmente a livello concettuale. Una classe Veicolo denota una singola entità, appunto 1 veicolo. Non ha senso che Veicolo contenga un array di N veicoli. Invece una classe es. Garage o Parcheggio ha senso che abbia N veicoli. E li puoi gestire esattamente come hai fatto per Spettacolo, che ti ribadisco, è appropriata come gestione.
    La cosa che mi creava dubbi principalmente era che il professore non aveva minimamente accennato ad altre classi nel testo dell'esercizio beh l'ho risolto, grazie al tuo consiglio che mi ha permesso di arrivare ad una soluzione più logica per i posteri, ecco la soluzione con una classe Garage:
    codice:
    public class Garage {
    	private Veicolo[] garage;
    	private int postiOccupati = 0;
    	private static final int CAPIENZA =100;
    	public Garage(){
    		this.garage = new Veicolo[CAPIENZA];
    	}
    	public int postiDisponibili () {
    		return CAPIENZA - postiOccupati;
    		}
    	
    	public boolean occupa(Veicolo postoLibero) {
    		if ( postiDisponibili () >0) {
    		garage[postiOccupati] = postoLibero;
    		postiOccupati++;
    		return true ;
    		}
    		else return false ;
    		}
    	//stampa l'elenco dei veicoli
    	public void stampaElencoVeicoli() {
    		System.out.println("Elenco delle targhe dei veicoli guasti:");
    	for (int i =0; i< postiOccupati; i ++) {
    	garage[i].stampaTarga();
    	}
    	}
    	
    }
    codice:
    public class UsaVeicoli {
    	public static void main ( String args []) {
    		
    		Garage g = new Garage();
    		
    		Veicolo v1 = new Veicolo(54627, "Fiat", "Panda", false);
    		Motociclo mot1 = new Motociclo(4853, "Audi", "smart", false, 150);
    	    Veicolo veic2 = new Veicolo(7683, "Fiat", "panda", false);
    	    Vettura vett1 = new Vettura(67894, "Volvo", "sportivo", true, "SUV");
    		
    	    boolean ok1 = g.occupa(v1);
    	    boolean ok2 = g.occupa(mot1);
    	    boolean ok3 = g.occupa(veic2);
    	    boolean ok4 = g.occupa(vett1);
    	    
    	    if (!ok1 || !ok2 || !ok3 ){
    	    	System.out.println("Ci sono dei problemi con i tuoi veicoli!");
    	    }
    	    
    	    g.stampaElencoVeicoli();
    	    
    	}
    }
    Ovviamente la classe Veicolo cambia di conseguenza, e al suo interno si tolgono tutte le porzioni di codice che servono a creare un array, che sono nel garage.

    Grazie ancora della tua disponibilità e del tuo aiuto!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.