Risparmio vincolato pluriennale
Riprendiamo l'esempio del risparmio vincolato. In quel caso la somma che si otteneva era data alla fine dell'anno di investimento. Ipotizziamo però che riusciamo a
trattenerci dallo spendere quei soldi e li manteniamo vincolati per un certo numero di anni, diciamo da 1 a 7. Quale sarà la somma totale alla fine?
Di certo ci appoggeremo al codice già scritto nella classe RisparmioVincolato
e quindi creeremo una classe estesa che eredita quanto fatto in
RisparmioVincolato
. Osserviamo che non c'è bisogno di accedere direttamente alle proprietà della superclasse perché basta usare i getter per prenderne i valori
ed i setter per impostarli:
public class RisparmioVincolatoPluriennale extends RisparmioVincolato {
private byte durataAnni; //facendola privata eventuali classi che estenderanno questa non avranno accesso alla proprietà. Una scelta.
public RisparmioVincolatoPluriennale() {
super();
durataAnni = 1;
}
public RisparmioVincolatoPluriennale(String nome, String cognome, float importo, short anno, double interessiPercentuale, byte durataAnni) {
super(nome, cognome, importo, anno, interessiPercentuale);
if(durataAnni >=1 && durataAnni <=7) {
this.durataAnni = durataAnni;
} else {
this.durataAnni = 1;
}
}
public double fornisciCapitale() {
if(durataAnni == 0) {
return 0;
}
// La percentuale di interessi che viene pubblicizzata è riferita ad un periodo di un anno.
// Invochiamo il metodo della superclasse che calcola il nuovo capitale a fine periodo, per il numero di periodi indicato
double importo = getImporto();
for(int i = 0; i < durataAnni; i++) {
setImporto(super.fornisciCapitale()); // viene invocato il metodo della superclasse setImporto() aggiornando il capitale sul quale si fa il calcolo
// deve essere invocato fornisciCapitale() della classe padre, per indicare questo fatto si usa super
}
double capitale = getImporto(); // metodo della classe padre
setImporto(importo); // si rimette l'importo al valore iniziale, come se nulla fosse cambiato
return capitale;
}
}