esempio ereditarieta

ulteriori dettagli sul risparmio vincolato

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;
   }
}