Superclasse/sottoclasse

di il
70 risposte

70 Risposte - Pagina 4

  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    			this.targa = setTarga();
    		
    		this.cambio = setCambio();
    		this.marce = setMarce();
    		this.motore = setMotore();
    		this.colore = setColore();
    
    No, cose come queste, un setQualcosa che non riceve nulla e restituisce qualcosa sono proprio BRUTTE. Evitale!!!

    KuroKami69 ha scritto:


    però quando compilo mi genera diversi errori
    Senza vedere bene il tutto, non riesco di certo a capire cosa non va. Ma "ad occhio" credo che stai solo complicando (forse inutilmente) le cose ...
  • Re: Superclasse/sottoclasse

    Bhe un metodo che imposta un valore, per me è un metodo di set, poi non so come lo chiameresti te ma a me non vengono nomi più intelligenti...
    ad ogni modo bhe ho semplicemente fatto quello che mi avevate suggerito, ho creato la classe DataFile in cui ho tutti i vettori, leggo i file e popolo i vettori, e poi ho appunto la classe veicolo con gli attributi comuni, e la classe automobili con gli attributi specifici.
    mha uppo su lo zip con i file, così ci puoi dare un'occhiata approfondita se vuoi, ma comunque è giusto quello che ho ipotizzato io?
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    uppo su lo zip con i file
    Mancano basi ....

    Serve una cosa: studio
  • Re: Superclasse/sottoclasse

    L'ho capitooooo ma apparte la mia ormai nota carenza di conoscenze, il motivo per cui mi da quegli errori è quello che ho supposto io?
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    il motivo per cui mi da quegli errori è quello che ho supposto io?
    Se in Veicolo hai un costruttore

    public Veicolo(String marca, String modello, String tipologia, int prezzo, int cavalli, int massaVuoto, int cilindrata, int consumo)

    NOTA bene i parametri (sono 8 ).

    Mi spieghi come potresti passargli dei dati dalla sottoclasse Automobili con una invocazione:

    super (stato, marca, modello, tipologia, km, annoImmatricolazione, scadenzaBollo, prezzo, targa, rapportoPesoPotenza, cavalli, massaVuoto, cambio, marce, motore, colore, cilindrata, cilindri, consumo);

    ??
    sono 19 argomenti (!!) e oltretutto alcuni come annoImmatricolazione non li hai lì in Automobili da nessuna parte!!! Quindi da dove pensi possano saltare fuori?? Nota che nella invocazione super() NON PUOI passare dei campi che sono nella super-classe. Anche se sono protected!


    E comunque tutte quelle logiche di test e di numeri casuali NON VANNO messe in queste classi.

    In Automobili:
    int tmp = rnd.nextInt(5);
    if (tipologia.equals("supersport")) nPortiere = 2;
    while (tmp < 2 || tmp == 4) tmp = rnd.nextInt(6);
    nPortiere = tmp;

    NO!!!


    In Veicolo:
    if (marca.equals("tesla") || marca.equals("brammo") || marca.equals("E-Tropolis") || marca.equals("Vectrix")) motore = "elettrico";
    int tmp = rnd.nextInt(6);
    String[] crb = {"Diesel", "Benzina", "GPL", "Metano", "Ibrida", "Elettrica"};
    motore = crb[tmp];
    return motore;

    NO!!!


    Stai completamente "ravanando" queste classi! E questo perché, lo ripeto, NON hai sufficienti basi su Java.

    Una soluzione c'è, per fortuna. Si chiama: studiare
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    il motivo per cui mi da quegli errori è quello che ho supposto io?
    Ma quando ottieni un errore in compilazione non provi prima a copiare/incollare il messaggio su google? Non sarai certo il primo a riceverlo
    
    .\Automobili.java:99: error: cannot reference cilindri before supertype construc
    tor has been called
                    super (stato, marca,  [....] cilindri, consumo);
                                                  ^
    .\Automobili.java:99: error: constructor Veicolo in class Veicolo cannot be appl
    ied to given types;
                    super (stato, marca, modello, tipologia, [...]);
                    ^
      required: no arguments
      found: String,String,String, [...]
    
    Il primo tipo di errore, che si ripete per parecchie volte, è dovuto al fatto che le variabili d'istanza come cilindri non possono essere richiamate prima della creazione dell'oggetto, in quel momento non possono assumere alcun valore. Nella chiamata a super () non puoi utilizzare alcuna variabile o metodo di istanza, o passi dei valori (stringhe, interi e quant'altro) che ricevi nel costruttore o che crei direttamente nella chiamata, o volendo puoi anche passare il risultato di un metodo statico (non si fa quasi mai).

    Oltretutto stai passando argomenti a un costruttore della superclasse che non ne prevede, ed è quello che dice il secondo messaggio: il costruttore di Veicolo non si aspetta alcun argomento (required: no arguments) ma trova invece quella serie di valori String, String, ... che stai passando tu.
  • Re: Superclasse/sottoclasse

    @andbin, prima o poi mi vieni a prendere a badilate in faccia a casa, me lo sento ahahaha
    (annoImmatricolazione è in veicolo)
    in effetti mi pareva strana la cosa, ma a scuola hanno fatto vedere solo esempi semplici, non ci ho pensato a fondo sulla cosa mmh
    scusa quei metodi la allora dove dovrei metterli? in un'alta classe ancora? a sto punto veicolo cos'ha? variabili, costruttore, e dei set che prendono in ingresso i valori di quei metodi, e dei get?
    @ansharja si ma spesso mi porta in pagine inglesi dove capisco la metà di quello che dicono
    quindi, sostanzialmente, dovrei fare un costruttore in veicolo con tutti valori di default, passarli poi a auto e moto, e nei costruttori di auto e moto passare come argomento i vari valori (ben 19)? questo è quello che mi sembra di aver capito dai vostri ultimi messaggi. (ora piovono botte)
  • Re: Superclasse/sottoclasse

    andbin ha scritto:


    KuroKami69 ha scritto:


    il motivo per cui mi da quegli errori è quello che ho supposto io?
    Se in Veicolo hai un costruttore

    public Veicolo(String marca, String modello, String tipologia, int prezzo, int cavalli, int massaVuoto, int cilindrata, int consumo)

    NOTA bene i parametri (sono 8 ).

    Mi spieghi come potresti passargli dei dati dalla sottoclasse Automobili con una invocazione:

    super (stato, marca, modello, tipologia, km, annoImmatricolazione, scadenzaBollo, prezzo, targa, rapportoPesoPotenza, cavalli, massaVuoto, cambio, marce, motore, colore, cilindrata, cilindri, consumo);

    ??
    sono 19 argomenti (!!) e oltretutto alcuni come annoImmatricolazione non li hai lì in Automobili da nessuna parte!!! Quindi da dove pensi possano saltare fuori?? Nota che nella invocazione super() NON PUOI passare dei campi che sono nella super-classe. Anche se sono protected!

    aspetta non ho capito bene.
    quando io scrivo
    automobili(String marca, String modello ecc)
    { super(marca, modello, ecc)
    }
    io sto dicendo di passare al costruttore della superclasse quei valori che poi verranno usati su automobili, oppure ho capito male io?
  • Re: Superclasse/sottoclasse

    Mi domando ancora cosa mi stia così fortemente impedendo di togliere il costruttore di veicolo e di buttare tutte le variabili direttamente nel costruttore di automobili, almeno taglio la testa al toro e mi funziona tutto senza pensarci troppo. ma ciò avrebbe poco senso vista la recente modellazione quindi.....
  • Re: Superclasse/sottoclasse

    Quando io scrivo
    automobili(String marca, String modello ecc)
    { super(marca, modello, ecc)
    }
    io sto dicendo di passare al costruttore della superclasse quei valori che poi verranno usati su automobili, oppure ho capito male io?
    Quando passi quegli argomenti al costruttore di Veicolo con super, il tuo oggetto automobile, che è un veicolo, avrà quei valori settati.

    Quindi nel costruttore in veicolo puoi inizializzare tutte le variabili "comuni" ad auto e moto, e nei costruttori delle sottoclassi passi a super tutti quei parametri comuni, e usi i set solo per il resto dei parametri (quelli che veicolo non ha).

    Puoi anche prevedere meno argomenti per il costruttore di veicolo, non fa tutta questa differenza. Basta che usi i set in maniera sensata per il resto dei valori che ricevi nel costruttore (lo dicevo già nella discussione vecchia) seza inventarti nulla di casuale in questo punto.
  • Re: Superclasse/sottoclasse

    Ma tipo 8 valori che ha il costruttore di veicolo sono settati in auto e moto.
    quindi sostanzialmente, a me basta aggiungere nella firma del costruttore di veicolo tutti i valori che passo e funziona giusto?
  • Re: Superclasse/sottoclasse

    Okok, ci ho aggiunto "static" alle variabili di veicolo e me lo compila! festone megagalattico ora! peccato solo che si blocchi, vuol dire che qualcosa non va proprio bene ahahahahha *depresso*
  • Re: Superclasse/sottoclasse

    KuroKami69 ha scritto:


    ci ho aggiunto "static" alle variabili di veicolo
    NOOOOO
  • Re: Superclasse/sottoclasse

    Ebbe non funzionava senno, mi dava quegli errori in compilazione
    però in questo modo tutti i miei oggetti avranno uguali valori :/
  • Re: Superclasse/sottoclasse

    Però a questo punto scusa, se non posso referenziare alcune variabili nel costruttore di veicolo, vuol dire che gli devo passare tutti i valori da automobile...
Devi accedere o registrarti per scrivere nel forum
70 risposte