Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Venezia
    Messaggi
    2

    [JAVA] Pareri su primo programma

    Salve a tutti! Mi sono da qualche giorno avvicinato al Java (dopo la parentesi scolastica del pascal di ormai qualche anno fa) e mi sono deciso a iscrivermi su questo forum per poter usufruire dei consigli dei più esperti durante il mio percorso di apprendimento (sperando, in un futuro vicino, di poter ricambiare allo stesso modo!). Dopo aver visto la sintassi (abbastanza semplice e pulita) e i primi paradigmi OO (astrazione, incapsulamento, ereditarietà e polimorfismo) ho provato a fare un primo semplice esercizio trovato online, di cui purtroppo non è presente la soluzione.

    In particolare volevo provare nella pratica l'uso del polimorfismo e dell'ereditarietà. Qualche esperto con cinque minuti a disposizione può controllare il mio svolgimento dell'esercizio e dirmi se è risolto in maniera corretta? Il programma di per sé funziona, ma non vorrei aver fatto errori concettuali che mi porterei avanti (trovando difficoltà in futuro).

    Allego il testo dell'esercizio e i file .java per non rendere troppo lungo il post. Notare che non ho usato l'inserimento da parte dell'utente dei dati come indicato sull'esercizio perché il manuale che sto usando non ha ancora trattato i metodi di input (quindi ho inserito il tutto nel metodo main!).

    Grazie per ogni eventuale risposta
    File allegati File allegati

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Innanzitutto, in generale:
    - il documento pdf mostra il diagramma UML e mostra 2 package "veicoli" e "garage". Quei blocchi viola non sono lì solo per caso o solo per estetica ... nel senso che se sono stati messi è perché si richiedeva espressamente di disporre le classi in quei due package.

    Ecco una valutazione di ciascuna classe:

    - VeicoloAMotore:
    in generale tutto ok, classe public ok, costruttore ok, campi correttamente private, metodi getter/setter public ok. Salvo una cosa: se hai un getter getAnnoImmatricolazione, il setter corrispettivo dovrebbe essere setAnnoImmatricolazione ... non setAnnoImm.

    - Motocicletta/Furgone/Automobile:
    in generale tutto ok. Struttura, livelli di accesso e denominazioni sono ok. Il toString() sarebbe da rendere un po' più "espressivo", perché adesso elenca proprio solo i dati e basta. Almeno mettere cosa è l'oggetto ... "Motocicletta:" .. "Automobile:" .... ecc....

    - Garage:
    in generale va bene. Il campo 'arr' sarebbe però da tenere private. Nota che nel println il .toString() su arr[x] è superfluo, la concatenazione delle stringhe invocherebbe già implicitamente toString se mettessi solo + arr[x]);
    Cosa succede (o dovrebbe succedere) se immetti più di 15 veicoli? Così come è, otterresti una eccezione (ArrayIndexOutOfBoundsException). In effetti il testo non dice cosa dovrebbe succedere ... quindi senza indicazioni particolari può andare bene così.

    - MainGarage:
    Ok.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Venezia
    Messaggi
    2
    Intanto grazie mille per la risposta!

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto, in generale:
    - il documento pdf mostra il diagramma UML e mostra 2 package "veicoli" e "garage". Quei blocchi viola non sono lì solo per caso o solo per estetica ... nel senso che se sono stati messi è perché si richiedeva espressamente di disporre le classi in quei due package.
    Hai perfettamente ragione, mi era completamente sfuggito, forse anche a causa del fatto che il manuale che sto seguendo (Java 5 di Claudio De Sio Cesari) non ha ancora trattato in maniera approfondita i package al punto in cui sono arrivato (è giusto il capitolo dopo!).

    Quote Originariamente inviata da andbin Visualizza il messaggio
    - VeicoloAMotore:
    in generale tutto ok, classe public ok, costruttore ok, campi correttamente private, metodi getter/setter public ok. Salvo una cosa: se hai un getter getAnnoImmatricolazione, il setter corrispettivo dovrebbe essere setAnnoImmatricolazione ... non setAnnoImm.
    Non ci avevo fatto caso, grazie per l'appunto!

    Quote Originariamente inviata da andbin Visualizza il messaggio
    - Motocicletta/Furgone/Automobile:
    in generale tutto ok. Struttura, livelli di accesso e denominazioni sono ok. Il toString() sarebbe da rendere un po' più "espressivo", perché adesso elenca proprio solo i dati e basta. Almeno mettere cosa è l'oggetto ... "Motocicletta:" .. "Automobile:" .... ecc....
    Hai ragione, l'ho buttato giù di getto e non mi sono preoccupato troppo di rendere l'output leggibile, in futuro perderò sicuramente un minuto in più per farlo!

    Quote Originariamente inviata da andbin Visualizza il messaggio
    - Garage:
    in generale va bene. Il campo 'arr' sarebbe però da tenere private. Nota che nel println il .toString() su arr[x] è superfluo, la concatenazione delle stringhe invocherebbe già implicitamente toString se mettessi solo + arr[x]);
    Oddio, hai ragione, effettivamente il toString() messo in quel modo non ha molto senso. Sull'array credo di aver fatto una dimenticanza!

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Cosa succede (o dovrebbe succedere) se immetti più di 15 veicoli? Così come è, otterresti una eccezione (ArrayIndexOutOfBoundsException). In effetti il testo non dice cosa dovrebbe succedere ... quindi senza indicazioni particolari può andare bene così.

    - MainGarage:
    Ok.
    Sì, in effetti le eccezioni non le ho ancora viste! Bene, sono contento di aver fatto più o meno un buon lavoro, almeno continuo sicuro di aver capito!

    Grazie mille per la disponibilità.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ellric Visualizza il messaggio
    Oddio, hai ragione, effettivamente il toString() messo in quel modo non ha molto senso. Sull'array credo di aver fatto una dimenticanza!
    Il toString() che hai messo va anche bene, non è un "errore", ti facevo semplicemente notare che è superfluo.
    Perché facendo:

    "blabla" + oggetto
    oppure
    "blabla" + oggetto.toString()

    il risultato finale per la stringa complessiva è lo stesso. Il bytecode generato no, non è uguale perché nel secondo caso il toString() è invocato da te mentre nel primo caso il toString() è già dentro il append(Object obj) di StringBuffer/StringBuilder usato sotto-sotto dalla concatenazione. (se ho detto cose che non comprendi ora, non fa niente)

    Quote Originariamente inviata da Ellric Visualizza il messaggio
    Grazie mille per la disponibilità.
    Prego.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava 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 © 2025 vBulletin Solutions, Inc. All rights reserved.