Superclasse/sottoclasse

di il
70 risposte

70 Risposte - Pagina 2

  • Re: Superclasse/sottoclasse

    Scusami, perché non avrebbe senso avere un file per le marche di auto?
    puoi per favore chiarire che intendi con "un file con uno o più oggetti automobile"? non riesco a capire cosa intendi
    non ho le idee chiare no, non son un professionista, non son minimamente al tuo livello, io la ragioni in maniera molto più semplice e meno "pensata" a java. non ho esperienza e la sto facendo ora a suon di rimproveri da parte vostra
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    Scusami, perché non avrebbe senso avere un file per le marche di auto?
    Guarda, chiariamo un attimo, perché dopo che ti ho risposto prima mi sono venuti dei dubbi. Cioè ... potrei anche aver frainteso io ma devi chiarire il senso/uso di quei file.

    Tu vuoi che in un file ci siano le informazioni puntuali su certi veicoli ben precisi e con tutti i loro dati, es.

    Fiat Panda, city car, 9000 euro, 1000cc, .......
    VolksWagen Polo, city car, 14000 euro, 1200cc, ........

    O vuoi avere le varie informazioni separate perché vuoi fare .. che so, tutte le combinazioni o estrarre a caso dei valori??

    Sono due cose ben DIVERSE.

    Per chiarire.

    Il file Automobili.txt

    Abarth
    AC
    Aixam
    Alfa Romeo
    Alpine
    ...ecc...
    Volvo

    COME dovrebbe relazionarsi con il file Cilindrata Automobili.txt

    750 1400
    1000 4500
    1000 3000
    2000 6000
    1400 2500
    1400 3000
    2000 8000


    ??? Perché è QUESTO che DEVI spiegare!
  • Re: Superclasse/sottoclasse

    Ah no, i file mi servono SOLO per poter scegliere in maniera casuale alcuni valori dei miei veicoli.
    difatti prima leggo il file, creo un array con tutte le marche/modelli, e poi scelgo casualmente un indice dell'array e mi va a impostare marca e modello
    allora io ho visto così il progetto:
    la mia automobile/moto deve avere tutti i valori scelti a caso, perché altrimenti avrei fatto prima a fare un database.
    detto questo, avevo 2 strade
    1) fare una classe chiamata, che ne so, modelClass, in cui ci ficcavo dentro tutte le marche di moto e di auto in 2 array distinti e poi con un metodo prendevo il valore casuale e lo ritornavo, e poi quel metodo lo chiamavo nel costruttore di auto/moto/veicolo (all'inizio avevo solo automobili su cui lavorare). e questo voleva dire fare una classe apposta per la tipologia di auto, ecc ecc
    2) fare un file da leggere ogni volta che fosse necessario, ed estrarre automaticamente un valore casuale dall'array creato.
    ora, avendo scelto di fare tutto a caso, cosa succede?
    1 - viene impostata la marca a caso.
    2 - a seconda della marca viene scelto a caso il modello tra quelli coerenti
    3 - viene scelta una tipologia della macchina, city car, station vagon etc
    4 - a seconda della tipologia poi verrà abbinato un prezzo, una massa, una cilindrata, i cavalli, il consumo.
    5 - nei file essendoci scaglioni di valori, come hai copiato te la cilindrata, con un random ottengo un valore compreso tra quei range. per esempio se la mia auto è una supersport, allora potrà avere dia 2000 agli 8000 cilindri, poi costerà dai 400 mila al milione e 4, e via dicendo
    ora è più chiaro?
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    i file mi servono SOLO per poter scegliere in maniera casuale alcuni valori dei miei veicoli.
    difatti prima leggo il file, creo un array con tutte le marche/modelli, e poi scelgo casualmente un indice dell'array e mi va a impostare marca e modello
    la mia automobile/moto deve avere tutti i valori scelti a caso, perché altrimenti avrei fatto prima a fare un database.
    Ok, ora è CHIARO. Vuoi combinare insieme tu i dati con un criterio di casualità.

    Anche se il senso/utilità di una cosa del genere sarebbe tutto da capire ... se non fosse che il fine ultimo è di "giocherellare" con classi, strutture dati, file. Una es. Panda non la puoi combinare casualmente con una tipologia ... una Panda è una city car, non è un coupè né una berlina, ecc..
    Cioè tu mi dici che puoi combinare Fiat <-> Panda <-> berlina ???
  • Re: Superclasse/sottoclasse

    Si, perché altrimenti avrebbe avuto più senso mettere su un database. e non avevo la benché minima voglia di lavorarci troppo su questo aspetto
    è solo un esercizio, mi serve per giocare un po' con varie cose e imparare ad usarle
    non deve avere nessun senso a livello di veridicità delle informazioni che butta in output
    senso ne ha poco, utilità che ho fatto pratica con la lettura da file, il random, e altre cosette banali
    ma basta, ho messo dei dati verosimili, ma non devono essere per forza reali. per dirti, può benissimo uscire una city car ferrari con 50 cavalli, ma chissene. voglio dire, l'importante è la programmazione non che gli appassionati di auto e moto approvino il mio lavoro
  • Re: Superclasse/sottoclasse

    andbin ha scritto:


    Tu vuoi che in un file ci siano le informazioni puntuali su certi veicoli ben precisi e con tutti i loro dati, es.

    Fiat Panda, city car, 9000 euro, 1000cc, .......
    VolksWagen Polo, city car, 14000 euro, 1200cc, ........

    O vuoi avere le varie informazioni separate perché vuoi fare .. che so, tutte le combinazioni o estrarre a caso dei valori??
    Ho paura che prima di arrivare a un file ben formato come quello ce ne vorranno di messaggi ...

    Quello che vorrebbe fare lui è fondamentalmente questo (da quello che ho appreso nella discussione precedente e nell'inizio di questa):
    
    public class Veicolo
    {
    	private String marca;
    	
    	// ... tutto il resto
    	
    	public void setMarca () {
    		if (this instanceof Automobile) {
    			marca = LetturaDati.scegliMarcaCasualeDa (new BufferedReader (new FileReader ("automobili.txt")));
    		}
    		else if (this instanceof Moto) {
    			marca = LetturaDati.scegliMarcaCasualeDa (new BufferedReader (new FileReader ("moto.txt")));
    		}
    	}
    }
    

    KuroKami69 ha scritto:


    Ah no, i file mi servono SOLO per poter scegliere in maniera casuale alcuni valori dei miei veicoli.
    difatti prima leggo il file, creo un array con tutte le marche/modelli, e poi scelgo casualmente un indice dell'array e mi va a impostare marca e modello
    allora io ho visto così il progetto:
    la mia automobile/moto deve avere tutti i valori scelti a caso, perché altrimenti avrei fatto prima a fare un database.
    1 - viene impostata la marca a caso.
    2 - a seconda della marca viene scelto a caso il modello tra quelli coerenti
    3 - viene scelta una tipologia della macchina, city car, station vagon etc
    4 - a seconda della tipologia poi verrà abbinato un prezzo, una massa, una cilindrata, i cavalli, il consumo.
    5 - nei file essendoci scaglioni di valori, come hai copiato te la cilindrata, con un random ottengo un valore compreso tra quei range. per esempio se la mia auto è una supersport, allora potrà avere dia 2000 agli 8000 cilindri, poi costerà dai 400 mila al milione e 4, e via dicendo
    ora è più chiaro?
    @Kurokami69

    Allora, ne abbiamo già parlato in qualche modo nell'altra discussione, fino a qui ci può anche stare.
    Vuoi fare un po' il passo più lungo della gamba, nel senso che non ti sono ancora chiare questioni basilari e vuoi un po' "strafare", leggendo da file, usando strutture dati che magari avrai visto 1/2 volte (non puoi andare avanti con 1/2 array), collegando le varie cose in modo casuale ma "sensato", vuoi imparare sbattendo la testa e questo può essere accettato, non dico sia sbagliato.

    Ma se vuoi andare avanti così, perlomeno ascolta i nostri consigli. Nell'altra discussione avevamo già cercato di farti capire che una classe come Automobile non può avere tutta la logica che stavi cercando di darle, ora @andbin te l'ha spiegato ancora meglio, ascoltalo.

    Quel codice che ho messo sopra è una delle più grandi schifezze che avrei mai potuto scrivere, non andrai mai avanti se provi a fare cose di quel tipo, spero che vedendolo tu possa capire, e il modo di far le cose che vorremmo suggerirti, oltre a essere corretto, a non causarti ogni sorta di problemi, è anche più semplice
    Cerca di capire, non voglio assolutamente essere spocchioso o abbatterti, ma ci stiamo dando un gran da fare per aiutarti e non puoi andare in quella direzione!

    KuroKami69 ha scritto:


    detto questo, avevo 2 strade
    1) fare una classe chiamata, che ne so, modelClass, in cui ci ficcavo dentro tutte le marche di moto e di auto in 2 array distinti e poi con un metodo prendevo il valore casuale e lo ritornavo, e poi quel metodo lo chiamavo nel costruttore di auto/moto/veicolo (all'inizio avevo solo automobili su cui lavorare). e questo voleva dire fare una classe apposta per la tipologia di auto, ecc ecc
    2) fare un file da leggere ogni volta che fosse necessario, ed estrarre automaticamente un valore casuale dall'array creato.
    1) No, No, NO. Non sarà mai il costruttore di Automobile/Moto o Veicolo a dover richiamare un metodo di quel tipo, l'abbiamo già detto, non è la macchina singola che decide quale marca avrà, non ha alcun senso, la classe veicolo e le sue sottoclassi ricevono semplicemente i dati dall'esterno, non devono preoccuparsi di altro.
    Puoi metterci tutta la casualità che vuoi, ma non in quelle classi.

    2) No anche questa volta. Il file non viene letto ogni volta che è necessario, che nel tuo caso vorrebbe dire ogni volta che crei un'automobile, non ha senso, è moltissimo inefficiente, e fonte di errori, il file può essere cancellato/modificato in esecuzione, possono esserci IOExceptions e quant'altro.
    Ogni file devi leggerlo una sola volta, e salverai i dati in strutture appropriate. Una volta che hai la tua collezione di dati puoi fare quello che vuoi, es. una classe CostruttoreAutomobile che in base a tutte le informazioni salvate all'interno ha un metodo creaAutomobileCasualmente che prende tutti i valori a caso, magari con una certa logica di fasce che suggerivi, e li passa al costruttore di Automobile o Moto, o se non vuoi un costruttore con 20 e più parametri passa solo i valori "essenziali" e poi chiama i vari set.

    Ma i set li chiami con i dati già pronti, non li scegli all'interno (il massimo che potresti fare è inserire dei valori "di default", ma a livello di classe, in questo caso comunque non si applica bene al contesto), spero che questo sia chiaro, altrimenti dobbiamo fermarci qui e convincerti, non vai davvero da nessuna parte sennò!
  • Re: Superclasse/sottoclasse

    Non mi abbatto, anzi, potrete considerarmi infantile ma io prendo moltissima "ispirazione" guardando anime, e giusto stanotte ne ho visto uno che bene o male centra qualcosa con il mondo della programmazione per cui sono deciso ad impegnarmi più che posso.
    se non ho frainteso quello che mi hai appena scritto, sarebbe opportuno avere una classe che mi costruisce una collezione di dati letti da file e poi le dovrò usare quando creo i mezzi giusto?
    quindi mi serve una classe che all'avvio del programma mi crei una collezione di dati basata sui file di testo e da li attingo quello che mi serve, giusto?
  • Re: Superclasse/sottoclasse

    Detto questo, dato che non ho esperienza di progettazione, se poteste dirmi secondo voi come dovrei strutturare la cosa, senza troppi termini tecnici, una cosa del tipo
    1) superclasse veicolo avente attributi comuni a tutti i mezzi
    2) sottoclassi auto e moto aventi attributi specifici per i mezzi
    ecc ecc
    giusto per fare chiarezza
    voi parlavate di collezioni di oggetto giusto? una classe specifica per ogni file, e poi ci butto i costruttori dentro una list e li uso all'occorrenza, è questo che intendevate?
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    1) superclasse veicolo avente attributi comuni a tutti i mezzi
    2) sottoclassi auto e moto aventi attributi specifici per i mezzi
    E questo, l'ho già detto in precedenza, è corretto, è "object oriented" e non fa una piega.

    KuroKami69 ha scritto:


    voi parlavate di collezioni di oggetto giusto? una classe specifica per ogni file, e poi ci butto i costruttori dentro una list e li uso all'occorrenza, è questo che intendevate?
    Beh, alt un attimo. Vedendo tutti quei file di testo che hai, ora la questione è come rappresentarli a livello di classi e/o strutture dati. Quello è un "problema" (nel senso che è da valutare e studiare bene).
  • Re: Superclasse/sottoclasse

    @andbin te cosa faresti?
    io per esempio dopo 2 pagine di thread sarei propenso a dire "si bhe effettivamente ha senso avere una classe il cui unico scopo sia crearmi i vettori di dati all'avvio del programma., in questo modo non mi pesa durante l'esecuzione"
    e la chiamata a questi metodi la metterei nel frame oppure nella jtable, fastidio non danno tanto
  • Re: Superclasse/sottoclasse

    Cioè io un db onn son sicuro di volerlo fare, è argomento di quinta e implicherebbe incasinarmi completamente il cervello, quindi le soluzioni mi sembrano davvero poche, ossia una lettura continua del file (che abbiamo escluso in quanto potrebbe dare problemi), una lettura iniziale dei file con successiva creazione dei vettori con i valori, o liste che dir si voglia, anche se mi sembra stupido fare una lista per 80 nomi, oppure semplicemente farmi tante classi quanti file, e dentro ognuna metterci un mega vettore con tutti gli elementi che mi servono, solo che mi sembra, forse a prova di errori, ma estenderebbe troppo il codice e non mi va. per quanto la mia classe automobili era zeppa di roba, ho sempre cercato di avere meno roba possibile, per questo mi son fatto i file (oltre che per esercitarmi con la lettura da file)
  • Re: Superclasse/sottoclasse

    Scusa ma non capisco. Parli di prof quindi stai studiando queste cose, giusto?

    E come siete arrivati alle chiamate ai metodi delle superclassi senza studiare il polimorfismo?

    Scusa l'ironia ma per capire queste cose bastano un paio di giorni di studio serio...
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    Cioè io un db onn son sicuro di volerlo fare, è argomento di quinta e implicherebbe incasinarmi completamente il cervello
    No, non è affatto necessario arrivare ai DB relazionali. Questa tua "esercitazione" la stai già complicando parecchio tu mettendo un sacco di "carne al fuoco".

    Come si dice "con il senno di poi", se avessi potuto indirizzarti fin dall'inizio di questa tua esercitazione, ti avrei suggerito una esercitazione molto più semplice ed anche sensata: una tabella di veicoli, magari filtrabile/ordinabile, con dati letti da un bel singolo file di testo che conteneva tutti i veicoli ben strutturati e leggibili. Questa sì che sarebbe stata una bella esercitazione, utile ed anche fattibile in tempi ragionevoli (oltre che sensata, piuttosto che generare veicoli a caso con combinazioni insensate ..).
  • Re: Superclasse/sottoclasse

    Bhe a questo punto sarebbe stato bello generare dei veicoli, in maniera sensata, trascriverli su file e poi leggere tale file per popolare la tabella
    comunque, farò qualche cambiamento, voglio finirla e basta ahahaha
    superclasse, 2 sottoclassi, e una classe che mi gestisce la lettura da file e una che mi gestisce i set vari, così veicolo avrà solo i get, e le variabili comuni, mentre le 2 sottoclassi avranno le loro variabili specifiche, i costruttori i get rimanenti. e dopo finisco con la tabella e amen! e poi il prossimo progetto parto da un bello schema uml e poi mi dedico al codice ahahahah
  • Re: Superclasse/sottoclasse

    @mauro le gerarchie le abbiamo iniziate questa settimana, il mio progetto iniziale difatti comprendeva un unica classe automobili ahahaha
Devi accedere o registrarti per scrivere nel forum
70 risposte