andbin ha scritto:
paloppa ha scritto:
Qui vi posto il metodo importoRata (l'ultimo passo dell'esercizio)
Mi spiace ma continui a postare solo pezzetti di codice (che dicono relativamente poco, senza vedere l'architettura delle classi) e oltretutto continuiamo a vedere che usi un po' campi (v.nomeContraente) e un po' metodi (v.importoAnnualePolizza()) per accedere alle informazioni. E già questo è discutibile.
Ok allora ti posto tutto il codice e vediamo di migliorare un po la sintassi dell'esercizio.
Sovraclasse
package gerarchia20settembre201;
public abstract class Polizza {
String nomeContraente;
int annoRiferimento;
public Polizza (String nomeContraente , int annoRiferimento){
this.nomeContraente=nomeContraente;
this.annoRiferimento=annoRiferimento;
}
public abstract double importoAnnualePolizza();
}
Sottoclasse Vita
package gerarchia20settembre201;
public class Vita extends Polizza {
int anniDurataPolizza;
public Vita(String nomeContraente , int annoRiferimento , int anniDurataPolizza){
super(nomeContraente , annoRiferimento);
this.anniDurataPolizza=anniDurataPolizza;
}
public double importoAnnualePolizza(){
return 200+ 20*anniDurataPolizza;
}
}
Sottoclasse Automobilista
package gerarchia20settembre201;
public class Automobilistica extends Polizza {
int potenzaAuto;
public Automobilistica(String nomeContraente , int annoRiferimento , int potenzaAuto){
super(nomeContraente , annoRiferimento);
this.potenzaAuto=potenzaAuto;
}
public double importoAnnualePolizza(){
return 100 + 10*potenzaAuto;
}
}
Classe Archivio
package gerarchia20settembre201;
public class Archivio {
Polizza v[];
public Archivio(int n , int m){
v= new Polizza[n+m];
for(int i= 0 ; i<n ; i++)
v[i]=new Automobilistica ("Contraente" + (int)(Math.random()*10) ,(int)(Math.random()*10) , (int)(Math.random()*10) );
for(int i=n ; i<v.length ; i++)
v[i]=new Vita ("Contraente" + (int)(Math.random()*10) ,(int)(Math.random()*10) , (int)(Math.random()*10) );
}
public double importoRata(String n , int a){
double media=0;
// n="Contraente"+(int)(Math.random()*50);
// a=(int)(Math.random()*200);
for (int i=0 ; i<v.length; i++){
if ( n.equals(v[i].nomeContraente) && a!=v[i].annoRiferimento)
return v[i].importoAnnualePolizza();
else
return media;
}
return media;
}
public void stampa(){
for (int i=0 ; i<v.length; i++){
System.out.println("Nome Persona " + v[i].nomeContraente);
System.out.println("Anno riferimento " + v[i].annoRiferimento);
}
}
}
Main
package gerarchia20settembre201;
public class Gerarchia20Settembre201 {
public static void main(String[] args) {
Archivio oggetto= new Archivio(10,0);
oggetto.stampa();
System.out.println("\n" + oggetto.importoRata("Contraente4",2 ));
}
}