Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Esercizio scolastico

  1. #1
    Utente di HTML.it L'avatar di roxi.g
    Registrato dal
    Jul 2008
    Messaggi
    288

    Esercizio scolastico

    Ciao, ho bisogno di capire una cosa per un compito che deve fare mio figlio.
    Ha creato una classe Java vagoni caratterizzata da un
    Codice vagone e un anno di costruzione.
    Poi ha creato una classe vagone passeggeri con in più un numero di posti a sedere e un' altra classe vagone merci con un peso totale merce.
    Ora va creata una classe treno in cui vanno inseriti metodi vari, tipo inserire un vagone passeggeri o merci, ma gli manca come poter utilizzare all' interno della classe treno le classi vagone passeggeri o merci con tutto quello che in esse è stato definito come elemento della classe. Che istruzioni vanno usate per importare nella classe treno le tre classi dei vagoni che ha creato precedentemente? Senza di questo non se ne cava un ragno dal buco.
    Spero di essere stata chiara, di Java so quel poco che sto vedendo con lui in questi giorni.
    Grazie a chi avrà la pazienza di spiegarmi
    sostieni la ricerca - http://www.unverosorriso.it/ita/home.html

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da roxi.g Visualizza il messaggio
    Ha creato una classe Java vagoni caratterizzata da un
    Codice vagone e un anno di costruzione.
    Poi ha creato una classe vagone passeggeri con in più un numero di posti a sedere e un' altra classe vagone merci con un peso totale merce.
    Purtroppo detto così non è chiarissimo. Si capisce che ci sono 3 classi ma non se (e come) sono in relazione tra di loro.
    Se ci sono appunto 3 classi come Vagone, VagonePasseggeri e VagoneMerci, queste ultime due sono sottoclassi di Vagone??

    Perché così avrebbe pienamente senso. Un VagonePasseggeri è-un Vagone così come un VagoneMerci è-un Vagone.

    Se non è così .... sarebbe tutto da (ri)valutare.

    Quindi direi innanzitutto di chiarire meglio questa questione, magari mostrando il codice (tutto o parziale purché si capisca la struttura) di queste 3 classi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di roxi.g
    Registrato dal
    Jul 2008
    Messaggi
    288
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Purtroppo detto così non è chiarissimo. Si capisce che ci sono 3 classi ma non se (e come) sono in relazione tra di loro.
    Se ci sono appunto 3 classi come Vagone, VagonePasseggeri e VagoneMerci, queste ultime due sono sottoclassi di Vagone??

    Perché così avrebbe pienamente senso. Un VagonePasseggeri è-un Vagone così come un VagoneMerci è-un Vagone.

    Se non è così .... sarebbe tutto da (ri)valutare.

    Quindi direi innanzitutto di chiarire meglio questa questione, magari mostrando il codice (tutto o parziale purché si capisca la struttura) di queste 3 classi.
    Ciao scusa non avevo specificato ma vagone passeggeri e merci sono sottoclassi di vagone
    Non riesco a postare codice, è sul PC e io sto scrivendo dal telefono.
    Posso dire se serve che dopo aver fatto la classe vagone per fare la classe vagone passeggeri e vagone merci ha utilizzato "extend" spero possa essere utile come jnformazione
    sostieni la ricerca - http://www.unverosorriso.it/ita/home.html

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da roxi.g Visualizza il messaggio
    Ciao scusa non avevo specificato ma vagone passeggeri e merci sono sottoclassi di vagone
    Posso dire se serve che dopo aver fatto la classe vagone per fare la classe vagone passeggeri e vagone merci ha utilizzato "extend" spero possa essere utile come jnformazione
    Chiarissimo, allora così HA senso. La classe "base" è quindi Vagone.

    La classe Treno quindi potrà avere, detto in generale, un elenco di oggetti visti come tipo Vagone. Potrebbe essere un array o meglio ancora una collezione (una lista ha senso).

    Qualcosa tipo:

    codice:
    public class Treno {
        private List<Vagone> vagoni;
    
        // ......altro
    }

    All'interno della classe ci potranno essere metodi es. public void aggiungiVagone(Vagone v)

    Notare che la lista è parametrizzata Vagone e anche il parametro di aggiungiVagone l'ho messo Vagone. Per effetto della ereditarietà/polimorfismo, posso passare ad aggiungiVagone qualunque oggetto che è-un Vagone, ad esempio un VagonePasseggeri. La gerarchia di classi con Vagone alla "base" serve proprio per essere sfruttata in questo modo!

    Treno deve "sapere" delle sottoclassi di Vagone? Di base, di per sé NO, potrebbe anche essere codificata solo in funzione del tipo Vagone (un getVagone(int indice) restituisce un Vagone, ecc...).
    Se ci sono necessità particolari e diverse, allora VANNO ben specificate, motivate e chiarite.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di roxi.g
    Registrato dal
    Jul 2008
    Messaggi
    288
    Penso che Treno debba sapere delle sottoclassi perché uno dei metodi da creare è proprio per aggiungere un vagone merci o passeggeri, ognuno caratterizzato da cose diverse. Quando dici che puoi passare ad aggiungiVagone un vagone merci o passeggeri come si fa? Mio figlio nella classe treno ha creato un Vector di tipo vagone ma poi non riesce ad andare avanti perché non riesce a sondare se sta inserendo un vagone merci o passeggeri perché non trova le variabili che caratterizzano un vagone merci o passeggeri, ma solo quelle che caratterizzano un vagone generico. In questa cosa dell'ereditarietà/polimorfismo c è sicuramente qualcosa che gli sfugge.
    sostieni la ricerca - http://www.unverosorriso.it/ita/home.html

  6. #6
    Utente di HTML.it L'avatar di roxi.g
    Registrato dal
    Jul 2008
    Messaggi
    288
    Domani se riesco ti posto il codice che ha scritto x la classe vagone
    sostieni la ricerca - http://www.unverosorriso.it/ita/home.html

  7. #7
    Utente di HTML.it L'avatar di roxi.g
    Registrato dal
    Jul 2008
    Messaggi
    288
    No scusa intendevo dire la classe treno.
    Meglio se ora vado a dormire...
    sostieni la ricerca - http://www.unverosorriso.it/ita/home.html

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da roxi.g Visualizza il messaggio
    Penso che Treno debba sapere delle sottoclassi perché uno dei metodi da creare è proprio per aggiungere un vagone merci o passeggeri, ognuno caratterizzato da cose diverse. Quando dici che puoi passare ad aggiungiVagone un vagone merci o passeggeri come si fa?
    Il principio della ereditarietà/polimorfismo consente una cosa che si può descrivere con una semplice frase:

    Ovunque è richiesto un tipo X, è lecito passare/assegnare un tipo esattamente X oppure un sottotipo di X


    Questo vuol dire che un oggetto Integer può essere assegnato ad una variabile Number (Integer deriva da Number, quindi è-un Number)

    Number n = new Integer(123);

    Se un metodo è prova(Object obj) io posso invocarlo passando es. un String:

    xyz.prova("ciao");

    E se Treno ha un metodo public void aggiungiVagone(Vagone v) allora posso invocarlo passando ad esempio un oggetto VagonePasseggeri:

    VagonePasseggeri vp = new VagonePasseggeri( ...... );
    unTreno.aggiungiVagone(vp);


    Tutto questo "funziona così", è dato proprio dalla ereditarietà/polimorfismo!

    Quote Originariamente inviata da roxi.g Visualizza il messaggio
    In questa cosa dell'ereditarietà/polimorfismo c è sicuramente qualcosa che gli sfugge.
    Tutto questo infatti VA capito bene, fin dall'inizio. Garantisco che senza queste nozioni, in Java (come in qualunque altro linguaggio "ad oggetti"), non si va molto lontano ....
    Ultima modifica di andbin; 23-08-2017 a 09:35
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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