Interfacce

di il
14 risposte

Interfacce

Salve ragazzi ho creato una interfaccia "Tassabile" e voglio implementarla in tre classi: Persona, Studente, Lavoratore. Dove le ultime due sono figlie della prima cioè Persona è abstract. Poi voglio creare un metodo statico "StampaTasse" che stampa a video le tasse di ogni Persona, Studente, Lavoratore usando ovviamente l'interfaccia Tassabile definita ogni volta opportunamente. Java mi da errore nel programma stampa tasse. Adesso vi allego il tutto. GRAZIE!!!
package J10;

public abstract class Persona implements Tassabile {
	private String nome;
	private int eta;
	
	public String getNome() {
		return nome; }
	public String setNome(String nome) {
		return this.nome = nome; }
	public int getEta() {
		return eta;	}
	public void setEta(int eta) {
		this.eta = eta;	}
	public String toString() { //override perchè riscrivo toString che è gia definito
							   //nella classe padre Object	
		return "Persona [nome=" + nome + ", eta=" + eta + "]"; }
	public Persona(String nome, int eta) {
		super(); // perchè è astratta e quindi eredita dalla classe object
		this.nome = nome;
		this.eta = eta;	}
	
		public String codiceFiscale() {
			return getNome()+getEta();
		}
		public double aliquotaFiscale() {
			return 0.5;
		}
		public double detrazioni() {
			return 0.2;
		}
		
}
package J10;

public class Studente extends Persona { 
	private String matricola;

	public Studente(String nome, int eta, String matricola) {
		super(nome,eta);
		this.matricola = matricola;	}
	public String getMatricola() {
		return matricola; }
	public void setMatricola(String matricola) {
		this.matricola = matricola;	}
	public String toString() {
		return super.toString()+"Studente [matricola=" + matricola + "]"; }
	
		public String codiceFiscale() {return super.getNome()+super.getEta();}
		public double aliquotaFiscale() {return 0.05;}
		public double detrazioni() {return 0.02;}
}
package J10;

public class Lavoratore extends Persona { 
	private String professione;

	public Lavoratore(String nome, int eta, String professione) {
		super(nome,eta);
		this.professione = professione;	}
	public String getProfessione() {
		return professione; }
	public void setProfessione(String professione) {
		this.professione = professione;	}
	public String toString() {
		return super.toString()+"Lavoratore [professione=" + professione + "]"; }
	
		public String codiceFiscale() {return super.getNome()+super.getEta();}
		public double aliquotaFiscale() {return 0.005;}
		public double detrazioni() {return 0.002;}
}
package J10;

public interface Tassabile {

	String codiceFiscale();
	double aliquotaFiscale();
	double detrazioni();
}
package J10;

public class StampaTasse {

	public static void main(String[] args) {
	Persona[] arrayPersona;
	Studente[] arrayStudente;
	int i;
	
	i=0;
	arrayPersona=new Persona[2];
	arrayStudente=new Studente[2];
		
	arrayPersona[0].setNome("Antonio");
	arrayPersona[0].setEta(27);
	arrayPersona[1].setNome("Luca");
	arrayPersona[1].setEta(40);
	arrayStudente[0].setNome("Michele");
	arrayStudente[0].setEta(20);
	arrayStudente[0].setMatricola("123456");
	arrayStudente[1].setNome("Andrea");
	arrayStudente[1].setEta(25);
	arrayStudente[1].setMatricola("987654");	
	
		for(i=1;i<3;i++){
		System.out.println(arrayPersona[i].codiceFiscale());
		System.out.println(arrayPersona[i].aliquotaFiscale());
		System.out.println(arrayPersona[i].detrazioni());
		}
    }
}

14 Risposte

  • Re: Interfacce

    L'errore?
  • Re: Interfacce

    Ok, l'errore sara` in indexOutOfBound Exception....che banalmente avviene perche` nel for fai scansioni da 1 a 3 quando il vettore e` di 2 elementi (quindi 0 e 1)
  • Re: Interfacce

    Nono
  • Re: Interfacce

    Ecco l'errore
  • Re: Interfacce

    Scusami...ancora piu` stupido l'errore....gli elementi del vettore (essendo oggetti) devono essere inizializzati.
    per esempio
    
       arrayStudente[0] = new Studente();
    
  • Re: Interfacce

    Fatto come dici ma nulla
  • Re: Interfacce

    Bhe mi sa che il problema non era quello... Qualcuno ha qualche idea? Grazie
  • Re: Interfacce

    Scusa ma hai studiato programmazione o stai andando a casaccio? c'è un problema di compilazione....esistono quei costruttori?
  • Re: Interfacce

    Ascolta io sono agli inizi e ci sto provando. Quindi se vuoi darmi una mano spiegandomi passo-passo te ne sono grato. Se vuoi continuare a fare il superuomo i stu c... fai pure.
  • Re: Interfacce

    antoniodna87 ha scritto:


    Ascolta io sono agli inizi e ci sto provando. Quindi se vuoi darmi una mano spiegandomi passo-passo te ne sono grato. Se vuoi continuare a fare il superuomo i stu c... fai pure.
    ottimo modo di approcciarsi a chi cerca di darti una mano

    Se non sai i fondamenti, quindi cos'è un costruttore, cos'è una classe e cose del genere, non posso nemmeno aiutarti.

    lì stai richiamando i costruttori di default, tu li hai nelle tue classi? no, perchè (giustamente aggiungo io) hai creato un costruttore che riceve i parametri che ti servono.

    in particolare:
    
       public Lavoratore(String nome, int eta, String professione) 
       public Studente(String nome, int eta, String matricola) 
       public Persona(String nome, int eta) 
    
    questi sono 3 costruttori.

    ora se tu scrivi codice perchè copi da altre parti, ti anticipo che stai sbagliando tuttonella vita...perchè il codice devi CAPIRLO.

    Sai a cosa servono i costruttori? se si, perchè non li usi?

    io ci metto 3 secondi a scriverti il codice correto, ma sarebbe gradito uno sforzo da parte tua nel capire e correggere i tuoi errori.

    aggiungo un brutta testa di c.... che non fa mai male....
  • Re: Interfacce

    Grazie a te testa di c...
    Ora e gia piu chiaro. P.s. il codice nn lo prendo da nessuna parte ho solo iniziato adesso l'esame di java per me che sono un ingegnere elettronico. Cmq grazie per il tempo che hai perso e mi hai fatto perdere. Saluti
  • Re: Interfacce

    antoniodna87 ha scritto:


    Grazie a te testa di c...
    Ora e gia piu chiaro. P.s. il codice nn lo prendo da nessuna parte ho solo iniziato adesso l'esame di java per me che sono un ingegnere elettronico. Cmq grazie per il tempo che hai perso e mi hai fatto perdere. Saluti
    Uno cerca di aiutarti... Invece di ringraziarlo ed essere grato che lui ti aiuta.. visto che fai questi esercizi senza sapere cos'è un costruttore, lo insulti. Mah...

    Non penso che farai molta strada =) Cerca di essere un po' più riconoscente nei confronti di chi ti aiuta.
  • Re: Interfacce

    Assolutamente d'accordo.
    Non c'è più riconoscenza...
  • Re: Interfacce

    @antonio87
    devi LEGGERE le segnalazioni di errore, e CAPIRLE, perche se a fronte di ogni errore chiedi al forum, scriverai 1 riga di codice al mese!

    Il primo era un NullPointerException
    Il secondo un java.lan.Error dovuto al fatto che non trova il costruttore Studente().

    Due errori distinti legati a due problemi distinti.

    Ora, il fatto che in Java gli oggetti sono dei reference e che cosa sia un costruttore e' un'informazione che trovi nei primi capitoli di qualunque libro su Java!

    E, si, ti sembrera' pure strano, ma per imparare a programmare, si deve studiare e pure sui LIBRI.

    E un forum non e' un'alternativa al libro, perche' chi ti risponde, per sapere quello che sa, ha studiato sui libri! E mortificare i suoi studi infastidisce alquanto!!

    E se voi offendere dicendo di non fare il superuomo del c..., ebbene, sappi che io, in realta', sono moooolto peggio, sono una superdonna del c..., e coi contro c....
Devi accedere o registrarti per scrivere nel forum
14 risposte