Ejercicio con herencia en java
Un banco permite a sus clientes contratar depósitos. Un depósito permite a los clientes obtener una rentabilidad por su dinero.
Un depósito se caracteriza por:
- Estructura: titular, capital, plazo en días, tipo de interés.
- Comportamiento:
- liquidar el depósito una vez cumplido el plazo con lo que se devuelve al cliente el capital invertido más los intereses.
- consultar los intereses producidos al final del periodo.
Existe un tipo de depósito que se denomina depósito estructurado. Un depósito estructurado es un tipo de depósito que se caracteriza por tener un tramo del capital a un determinado interés y otra el otro restante a otro distinto. Para éste también se podrán consultar los intereses producidos y liquidar, teniendo en cuenta que esto supone la suma la parte fija y la variable.
Escribir ambas clases utilizando herencia, añadir los constructores adecuados, getters, setters, atributos y métodos especificados.
Crear una clase principal que cree con datos introducidos por teclado un objeto Deposito y otro DepositoEstructurado y que obtenga la liquidación de ambos.
SOLUCIÓN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
public class Deposito { private String titular; private double capital; private int plazoDias; private double tipoInteres; public Deposito (String titular, double capital,int plazoDias, double tipoInteres) { this.titular = titular; this.capital = capital; this.plazoDias = plazoDias; this.tipoInteres = tipoInteres; } public double obtenIntereses() { return (plazoDias * tipoInteres * capital)/365; } protected double liquidar() { return getCapital() + obtenIntereses(); } // getters and setters public double getCapital() { return capital; } public void setCapital(double capital){ this.capital = capital; } public int getPlazoDias() { return plazoDias; } public void setPlazoDias(int plazoDias){ this.plazoDias = plazoDias; } public double getTipoInteres() { return tipoInteres; } public void setTipoInteres(double tipoInteres){ this.tipoInteres = tipoInteres; } public String getTitular() { return titular; } public void setTitular(String titular){ this.titular = titular; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public class DepositoEstructurado extends Deposito { private double tipoInteresAmpliado; private double capitalAmpliado; public DepositoEstructurado(String titular, double capital, int plazoDias, double tipoInteres, double tipoInteresAmpliado, double capitalAmpliado){ //Llamada explícita al constructor del padre super (titular, capital, plazoDias, tipoInteres); this.tipoInteresAmpliado = tipoInteresAmpliado; this.capitalAmpliado = capitalAmpliado; } public double obtenInteresesAmpliado() { return (getPlazoDias() * tipoInteresAmpliado * capitalAmpliado )/365; } public double liquidar(){ return super.liquidar() + capitalAmpliado + obtenInteresesAmpliado(); } // getters and setters public double getTipoInteresAmpliado() { return tipoInteresAmpliado; } public void setTipoInteresAmpliado(double tipoInteresAmpliado){ this.tipoInteresAmpliado = tipoInteresAmpliado; } public double getCapitalAmpliado() { return capitalAmpliado; } public void setCapitalAmpliado(double capitalAmpliado){ this.capitalAmpliado = capitalAmpliado; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import java.util.Scanner; class GestorDeposito{ public static void main(String[] args){ String titular; double capital; int plazoDias; double tipoInteres; double tipoInteresAmpliado; double capitalAmpliado; Scanner scan = new Scanner(System.in); // Datos para el depóstio básico System.out.println("Introduce datos para el depósito básico"); System.out.println("Introduce nombre y apellidos del titular"); titular = scan.nextLine(); System.out.println("Introduce capital a invertir"); capital = scan.nextDouble(); System.out.println("Introduce el número de días"); plazoDias = scan.nextInt(); System.out.println("Introduce el tipo de interés"); tipoInteres = scan.nextDouble(); Deposito deposito1 = new Deposito(titular, capital, plazoDias, tipoInteres); // Datos para el depóstio estructurado System.out.println("Introduce datos para el depósito básico"); System.out.println("Introduce nombre y apellidos del titular"); titular = scan.nextLine(); System.out.println("Introduce capital básico a invertir"); capital = scan.nextDouble(); System.out.println("Introduce el número de días"); plazoDias = scan.nextInt(); System.out.println("Introduce el tipo de interés básico"); tipoInteres = scan.nextDouble(); System.out.println("Introduce el tipo de interés ampliado"); tipoInteresAmpliado = scan.nextDouble(); System.out.println("Introduce el capital ampliado"); capitalAmpliado = scan.nextDouble(); DepositoEstructurado deposito2 = new DepositoEstructurado(titular, capital, plazoDias, tipoInteres, tipoInteresAmpliado, capitalAmpliado); System.out.println("El resultado del depósito básico es: " + deposito1.liquidar()); System.out.println("El resultado del depósito estructurado es: " + deposito2.liquidar()); } } |
Deja un comentario