Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: proggetto d'esame java

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    16

    proggetto d'esame java

    Salve, mi scuso in anticipo per tutti i disturbi, ma questo esame mi sta stressando.
    Riferendomi alla discussione "piccolo problema concettuale con.." sto proggettando un programma in java per gestire un'agenzia di viaggi. Fin'ora ho creato un paio di classi che svolgono ognuna il suo ruolo e sarebbero le seguenti:
    codice:
    ublic class Clienti
    {
    	Clienti(String n, String c, int g, int m, int a)
    	{
    		Set_data_nascita(g, m, a);
    		nome = n;
    		cognome = c;
    	}
    	
    	public void Set_data_nascita(int g, int m, int a)
    	{
    		String d = g + "/" + m + "/" + a;
    		data_nascita = d;
    	}
    	
    	public String Get_data_nascita()
    	{
    		return data_nascita;
    	}
    	
    	public String Get_nome()
    	{
    		return nome;
    	}
    	
    	public String cognome()
    	{
    		return cognome;
    	}
    	
    
    	private String nome;
    	private String cognome;
    	private String data_nascita;
    
    }
    La classe che gestisce gli Hotel:
    codice:
    import java.util.*;
    
    public class Hotel
    {
    	Hotel(String n, String l, int s)
    	{
    		nome = n;
    		località = l;
    		stelle = s;
        }
    	
    	public void Add_servizi(String n, double c)
    	{
    		servizi.put(n, c);
    	}
    	
    	public HashMap Get_servizi()
    	{
    		return (HashMap)this.servizi.clone();			
    	}
    	
    	public String Get_nome()
    	{
    		return nome;
    	}
    	
    	public String Get_località()
    	{
    		return località;
    	}
    	
    	public int Get_stelle()
    	{
    		return stelle;
    	}
    	
    	private HashMap servizi = new HashMap();
    	private String nome;
    	private String località;
    	private int stelle;
    
    }
    La classe che gestisce i biglietti ferroviari:
    codice:
    import java.util.*;
    public class biglietto_ferroviario
    {
    	biglietto_ferroviario(double c, int g, int m, int a, int gg)
    	{
    		Set_giorni_validità(gg);
    		costo = c;
    		data_emissione.set(a, m, g);   
        }
    	
    	public void Set_giorni_validità(int v)
    	{
    		giorni_validità = v;	 	
    	}
    	
    	public int Get_giorni_validità()
    	{
    		return giorni_validità;
    	}
    	
    	public Calendar Get_data_emissione()
    	{
    		return (Calendar) data_emissione.clone();		
    	}
    	
    	
    	private Calendar data_emissione = new GregorianCalendar();
    	private int giorni_validità;
    	private double costo;
    }
    Successivamente estenderò la classe viglietto ferroviario per aggiungere biglietto aereo.
    Comunque, a questo punto mi sorgono alcuni dubbi su come poter implementare la prenotazione, cioè: un cliente deve poter prenotare uno o più soggiorni in un hotel e può scegliere se prendere uno o più biglietti, mi chiedevo se mi convenisse migliorare la classe Clienti ed aggiungere campi e funzioni come: "ha_prenotato();" ecc!

  2. #2
    La lettera iniziale del nome di un metodo per convenzione bean deve essere minuscola.

    Per quanto riguarda la relazione tra Cliente e Prenotazione, questa puoi implementarla seguendo una tra due strade alternative:
    1) Nella classe Cliente ci metti un campo privato di tipo lista/vector che dunque conterrà oggetti di tipo Soggiorno;
    2) Crei una classe Prenotazione la quale si occupa di gestire tutte le prenotazioni fatte da ogni cliente, quindi ad ogni cliente verrà associata una serie di soggiorni.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    16
    Ok, credo di aver capito il tuo concetto, pensavo però di mettere un private LinkedList che gestisca gli hotel, o dovrei proprio creare la classe soggiorno adibita?!

  4. #4
    Originariamente inviato da demi90
    Ok, credo di aver capito il tuo concetto, pensavo però di mettere un private LinkedList che gestisca gli hotel, o dovrei proprio creare la classe soggiorno adibita?!
    Se non c'è bisogno di astrarre per quanto riguarda i soggiorni potrebbe andare bene..

  5. #5
    Originariamente inviato da VincenzoTheBest
    La lettera iniziale del nome di un metodo per convenzione bean deve essere minuscola.
    Io aggiungerei anche che nel nome dei metodi non ci devono essere gli underscore (che sono usati nella programmazione imperativa con le funzioni)
    Ogni parola interna al nome del metodo deve avere la prima lettera maiuscola (getDisponibilitaHotel non Get_disponibilita_hotel).

    I nomi delle classi invece hanno la prima lettra maiuscola e la stessa convenzione dei metodi, quindi:

    la classe biglietto_ferroviario diventa BigliettoFerroviario.

    Queste cose per un professore di università sono cose basilari e fondamentali, se vedesse una cosa del genere si metterebbe le mani nei capelli

    buona programmazione

  6. #6

    Re: proggetto d'esame java

    Originariamente inviato da demi90
    ...
    Successivamente estenderò la classe viglietto ferroviario per aggiungere biglietto aereo.
    ...
    Concettualmente sbagliato. Una ipotetica classe biglietto aereo dovrebbe estendere una classe biglietto e non biglietto ferroviario in quanto entrambe sono una specializzazione della classe biglietto. Una generica classe Biglietto potrebbe avere un costo, una data di validità ecc. Mentre la specializzazione ferroviaria potrebbe avere una binario di partenza ed un numero di treno così come la specializzazione aereo potrebbe avere un numero di volo ed un gate per l'imbarco.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    16
    Si, ci stavo pensando prima, vale meno punti all'esame sbagliare concettualizazzione immagino no?
    Comunque creerò le dipendenze in modo corretto per i biglietti dopo.
    La traccia mi chiede di registrare 2 tipi di biglietti: ferroviari ed aerei, dei primi devo registrare data emissione, giorni validità e costo; dei secondi data_emissione, costo e compagnia aerea.
    A quanto ho capito creo prima una classe biglietto dove aggiungo una data di emissione ed un costo, poi la estendo e nei ferroviari aggiungo i giorni di validità ed infine nei biglietti aerei estendo sempre la classe biglietto ed aggiungo solo compagnia aerea??!

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    questo è un problema di progettazione generale (non riguarda java in particolare, ma la programmazione ad oggetti).

    Ci sono delle considerazioni da fare: ognuno fa gli algoritmi secondo le sue abitudini e i suoi punti di vista, ma in generale qui si vuole mettere in evidenza la tua capacità di comprensione del problema, la capacità di mettere in pratica i concetti spiegati dal prof. Inoltre, per come è stato dato l'esercizio, è ovvio che mira a farti usare i principi di ereditarietà tipici di un linguaggio di programmazione ad oggetti. Da questo è parecchi punti in meno sbagliare concettualizzazione se non sbagliare l'intero esame, visto che alla fine dimostra che non hai capito molto di quello che ha spiegato.

    Tecnicamente anche per i biglietti aerei puoi avere una validità (ci sono biglietti open in cui la data la metti all'ultimo o i carnet in cui usufruisci del volo quando ti pare), quindi in generale la validità è una caratteristica del biglietto in sé e non dell'aereo, ma può in questo caso andare bene.
    Ricorda che derivando le due classi devi caratterizzarle con gli attributi propri e definire comportamenti differenti per i vari metodi (che è ciò che si vuole mettere in evidenza con il progetto).

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    16
    Chiaro fin qui, però nella traccia il professore ci limita il modo in cui devono essere i biglietti e richiede giorni di validità solo per quelli ferroviari, quindi potrebbe forse andare bene come vorrei procedere io?
    Punto secondo, mi hai appena scritto che estendendo per esempio la classe biglietto con biglietto ferroviario, devo per forza ridefinire tutti i metodi. Se però io ho bisogno di estendere la classe biglietto solo per aggiungere i giorni di validità e poterli restituire che rimodello a fare anche i metodi precedenti che la nuova classe comunque eredità?

    Senza voler intasare il forum, qui c'è il link per poter leggere la traccia!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Attento io non ti ho detto che devi definire i metodi differenti obbligatoriamente per le classi figlie, ma in generale il comportamento è differente in caso di prenotazione di biglietto aereo e in caso di prenotazione di biglietto ferroviario ed è questo che ti obbliga a ridefinire il comportamento.
    Banalmente, questo può semplicemente equivalere a dover fare inserimenti in diverse tabelle di un db oppure scrittura di dati in diverse locazioni del file system e in questo caso il comportamento dipende dalla classe derivata, non dalla superclasse.
    Ovvio che per alcuni metodi il comportamento della classe padre va bene, per cui non sei obbligato a cambiare niente. L'esercizio di comprensione vuole che sia chiaro a te cosa modificare e cosa no.

    E attento che non ti ho detto che giorni di validità deve obbligatoriamente andare nella super-classe, ma che volendo essere precisi e pignoli anche per i biglietti aerei nella realtà hai giorni di validità.
    Il tuo prof, volendo mettere in evidenza le differenze delle classi, ha semplificato la realtà, ma nella pratica è facile che quella sia una proprietà generale.

    Il punto chiave è che si presume che derivando il comportamento di alcuni (o tutti dipende dal programmatore) metodi sia differente, perdi il senso della derivazione se quello che facevi sopra lo fai allo stesso modo nella derivata.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.