Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ereditarietà

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    Ereditarietà

    Salve

    devo svolgere questo esercizio che mi chiede:

    Implementare in Java i seguenti concetti:

    a. Targa: un codice fatto da tre campi c1,c2 e c3 corrispondenti rispettivamente alleprime due lettere, alle tre cifre centrali, e alle ultime due lettere (ad es. per la targaAZ 375 JZ si ha che c1=AZ, c2=375 e c3=JZ);

    b. Veicolo: ha un nome di modello e una codice identificativo (numerico);

    c. VeicoloImmatricolato: è un Veicolo con una Targa e un intestatario.

    Sovrascrivere i metodi toString, equals e clone in modo appropriato. In particolare, ilformato di toString deve essere quello standard, equals deve trattare correttamente tutti icasi e clone deve realizzare una clonazione totale degli oggetti. Scrivere il codice inmodo da favorirne il riutilizzo.

    DOMANDA:
    Siccome la classe VeicoloImmatricolato eredita i metodi delle classi veicolo e Targa mi chiedo come faccio ad implementare VeicoloImmatricolato ?

    GRAZIE.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    DOMANDA:
    Siccome la classe VeicoloImmatricolato eredita i metodi delle classi veicolo e Targa mi chiedo come faccio ad implementare VeicoloImmatricolato ?
    Veicolo avrà 2 campi: per il nome modello e per il codice identificativo. VeicoloImmatricolato (che estende Veicolo) avrà 2 campi: per la targa e per l'intestatario. Ciascun campo preferibilmente 'private' e poi i getter/setter 'public'.

    Se in un metodo es. equals() o toString() di VeicoloImmatricolato vuoi usare il corrispettivo metodo in Veicolo semplicemente invochi la versione "super".
    Ultima modifica di andbin; 10-06-2015 a 12:24
    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
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Veicolo avrà 2 campi: per il nome modello e per il codice identificativo. VeicoloImmatricolato (che estende Veicolo) avrà 2 campi: per la targa e per l'intestatario. Ciascun campo preferibilmente 'private' e poi i getter/setter 'public'.

    Se in un metodo es. equals() o toString() di VeicoloImmatricolato vuoi usare il corrispettivo metodo in Veicolo semplicemente invochi la versione "super".
    Ho creato la classe Targa e Veicolo e poi ho creata una terza classe (VeicoloImmatricolato) che estende la classe Veicolo.

    Ho implementato la classe VeicoloImmatricolato con toString, equals e clone in questo modo:

    codice:
    
    public class VeicoloImmatricolato extends Veicolo{
    	
    	String intest;
    	String t;
    	
    	public VeicoloImmatricolato()
    	{
    		
    	}
    	
    	public void setTarga(String t)
    	{
    		this.t = t;
    	}
    	
    	public void setIntestatario(String intest)
    	{
    		this.intest = intest;
    	}
    	
    	public String getTarga()
    	{
    		return this.t;
    	}
    	
    	public String getIntestatario()
    	{
    		return this.intest;
    	}
    	
    	public String toString()
    	{
    		return super.toString() + "[targa =" + this.t + "; intestatario =" + this.intest + "]";
    	}
    	
    	public boolean equals(Object altro)
    	{
    		if(!super.equals(altro)) return false;
    		
    		VeicoloImmatricolato al = (VeicoloImmatricolato) altro;
    		
    		return( t.equals(al.t) && intest.equals(al.intest));
    	}
    	
    	public VeicoloImmatricolato clone()
    	{
    		
    		return (VeicoloImmatricolato) super.clone();
    	}
    
    
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    Ho implementato la classe VeicoloImmatricolato con toString, equals e clone in questo modo:
    Innanzitutto se hai fatto una classe Targa, allora VeicoloImmatricolato dovrebbe usare questa ... non un String. Altrimenti che senso avrebbe la richiesta di una classe Targa?

    Poi il equals sarebbe da fare un pochino meglio (per dirne una, solo il cast non va bene, dovresti comunque testare la classe).

    E per finire, per il clone() ci sono comunque dei dubbi: innanzitutto bisognerebbe vedere come l'hai implementato in Veicolo (se l'hai implementato).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto se hai fatto una classe Targa, allora VeicoloImmatricolato dovrebbe usare questa ... non un String. Altrimenti che senso avrebbe la richiesta di una classe Targa?

    Poi il equals sarebbe da fare un pochino meglio (per dirne una, solo il cast non va bene, dovresti comunque testare la classe).

    E per finire, per il clone() ci sono comunque dei dubbi: innanzitutto bisognerebbe vedere come l'hai implementato in Veicolo (se l'hai implementato).
    codice:
    public class Veicolo implements Cloneable {
         
        String mod;
        int cod;
        public Veicolo()
        {};
        
        public void setModello(String mod)
        {
            this.mod = mod;
        }
        
        public void setCodice(int cod)
        {
            this.cod = cod;
        }
        
        public String getModello()
        {
            return this.mod;
        }
        
        public int getCodice()
        {
            return this.cod;
        }
        
        public String toString()
        {
            return "Veicolo[modello =" + this.mod + ";codice" + this.cod +"]";
        }
        
        public boolean equals(Object altro)
        {
            if( getClass() != altro.getClass())
                return false;
            
            Veicolo al = (Veicolo) altro;
            
            return( mod.equals(al.mod) && cod == al.cod);
        }
        
        public Veicolo clone()
        {
            
            try
            {
                return (Veicolo) super.clone();
            }
            
            catch(CloneNotSupportedException e)
            {
                return null;
            }
        }
    }
    la classe VeicoloImmatricolato estende Veicolo. Come faccio a dirgli di estendere pure Targa ?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    Come faccio a dirgli di estendere pure Targa ?
    Non deve estendere Targa .... deve avere un campo Targa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non deve estendere Targa .... deve avere un campo Targa.
    grazie Prof.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    grazie Prof.
    Per mia sfortuna (o forse meglio fortuna ...) non sono un "prof".
    Comunque, 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.