Oppure

Loading
03/02/09 20:08
Sventrip
L'esercizio si riferisce all uso delle collezioni eterogenee e di istanceof poterste dirmi dove sbaglio?? grazie

public class Dipendente { /*esercizio sul polimorfismo NON COMPLETATO*/
    
    public String nome;
    public int stipendio;
    public int matricola;
    public String dataDiNascita;
    public String dataDiAssunzione;
    
public static void main (String args[]){
        
    Dipendente [] arr=new Dipendente [3];
    arr[0] = new Dirigente();
    arr[1] = new Programmatore();
    arr[2] = new AgenteDiVendita();
    
    public void pagaDipendente(Dipendente dip) {
    
    if (dip instanceof Programmatore) {
        dip.stipendio = 1200;
    }
    else if (dip instanceof Dirigente){
    dip.stipendio = 3000;
    }
    else if (dip instanceof AgenteDiVendita) {
    dip.stipendio = 1000;
    }
}
}
}
public class Programmatore extends Dipendente{
    public String linguaggiConosciuti;
    public int anniDiEsperienza;
}
public class Dirigente extends Dipendente {
    public String orarioDiLavoro;
}
public class AgenteDiVendita extends Dipendente {
    public String [] portafoglioClienti;
    public int provvigioni;
}

errori riscontrati tutti sulla riga del metodo void
illegal start of expression
";" expected

ps il programma e' solo all inizio ,ma gia dal primo metodo che applico trovo errore..grazie anticipatamente

aaa
04/02/09 14:19
fabi3194
Ho riscontrato un errore nel seguente codice che hai messo:
public static void main (String args []){

Prova a sostituirlo con
public static void main (String [] args){
Dimmi se funziona ;)
aaa
04/02/09 19:27
netarrow
Qui sotto c'è il tuo codice corretto.
Le graffe erano messe male, usi un IDE per scrivere codice o no?.
Non ho capito cosa vorresti fare alla fine ma ora compila:

public abstract class Dipendente { /*esercizio sul polimorfismo NON COMPLETATO*/ 

protected String nome; 
protected int stipendio; 
protected int matricola; 
protected String dataDiNascita; 
protected String dataDiAssunzione; 

public static void main (String args[]) { 
	Dipendente [] arr=new Dipendente [3];
	arr[0] = new Dirigente(); 	
	arr[1] = new Programmatore(); 
	arr[2] = new AgenteDiVendita();
}

public void pagaDipendente(Dipendente dip) { 

	if (dip instanceof Programmatore) { 
		dip.stipendio = 1200; 
	} 

	else if (dip instanceof Dirigente){ 
		dip.stipendio = 3000; 
	} 

	else if (dip instanceof AgenteDiVendita) { 
		dip.stipendio = 1000; 
	} 
  } 
}

class Programmatore extends Dipendente{ 
	public String linguaggiConosciuti; 
	public int anniDiEsperienza; 
} 

class Dirigente extends Dipendente { 
	public String orarioDiLavoro; 
} 

class AgenteDiVendita extends Dipendente { 
	public String [] portafoglioClienti; 
	public int provvigioni; 
} 


Ad ogni modo questo non è un buon esercizio sul polimorfismo proprio per il fatto che usi instanceof e una serie di if else if.
Il polimorfismo è quel meccanismo che fa quello che fai tu in automatico.

Osserva questo esempio qui:

public class Programma {
	
	public static void main(String args[]) {
		Dipendente [] arr = new Dipendente [3];
		arr[0] = new Dirigente(); 	
		arr[1] = new Programmatore(); 
		arr[2] = new AgenteDiVendita();
		
		for(int i = 0; i < arr.length; i++) {
			System.out.println(arr[i].pagaDipendente());
		}
		
	}
	
}

abstract class Dipendente {

	protected String nome; 
	protected int stipendio; 
	protected int matricola; 
	protected String dataDiNascita; 
	protected String dataDiAssunzione;
	
	protected abstract int pagaDipendente();

}

class Programmatore extends Dipendente {  
	public String linguaggiConosciuti; 
	public int anniDiEsperienza;
	
	protected int pagaDipendente() {
		return 1200;
	}
	
} 

class Dirigente extends Dipendente { 
	public String orarioDiLavoro; 
	
	protected int pagaDipendente() {
		return 3000;
	}
} 

class AgenteDiVendita extends Dipendente { 
	public String [] portafoglioClienti; 
	public int provvigioni;
	
	protected int pagaDipendente() {
		return 1000 + provvigioni;
	}
	
} 


Ogni classe derivata ha la sua ridefinizione del metodo astratto pagaDipendente, e il nome è lo stesso.
Il polimorfismo è quel meccanismo che, nono stante il nome sia uguale, richiama l'esatta versione del metodo per ogni classe.

@fabi3194: gli array possono essere dichiarati sia con le quadre dopo il tipo sia dopo il nome.
aaa
05/02/09 19:49
Sventrip
capisco...riguardo al tuo esempio non ho ancora appreso a pieno l uso del modificatore abstract,ma quello che fai ,al di fuori dei modificatori ,mi sembra molto piu intuitivo e sopratutto ridotto di codice.Comunnque sia, l esercizio era si riferito al polimorfismo ma sopratutto sulle collezioni eterogenee..sto studiando dal libro di claudio de Sio mi sembra un buon libro riferito all esame che devo dare e in generele sulle basi del java,l ' esame e'certificazione java SCJP se avete qualcosa di meglio ditemi...grazie per i consigli comunque :k: ah uso Jcreator come editor
aaa
06/02/09 14:10
fabi3194
Postato originariamente da netarrow:
@fabi3194: gli array possono essere dichiarati sia con le quadre dopo il tipo sia dopo il nome.

Sisi lo sapevo,è che era l'unico possibile errore,anche perchè senza il tag non si capiva niente :rotfl:
:D
aaa