Ir al contenido principal

Semana 1: Evidencia: Clases y objetos - Parte II

Escriba las clases padre, hijo, y si hay necesidades abstractas, definiendo las variables y métodos necesarios de acuerdo al siguiente caso: 

En un banco las cuentas pueden ser de dos tipos: cuentas de ahorro y de inversión. 

Un cliente puede depositar o retirar de una cuenta de ahorro, y el primer depósito que haga debe ser de $1,000 invariablemente. Para cada retiro el cliente puede sacar lo que desee, pero la cuenta nunca puede quedar en ceros, al menos debe haber $500, dependiendo de la cuenta. 

Se maneja un porcentaje de ahorro anual, aspecto que es definido al momento de crearse la cuenta de ahorro; cada mes se deben calcular los intereses para incrementar el saldo en la cuenta. 

Para una cuenta de inversión, el monto inicial debe ser de $25,000, y en caso de retiro, no se puede dejar la cuenta en ceros, al menos tiene que haber $10,000 en la cuenta a menos que se cancele y se quiera retirar todo.

Los empleados del banco al igual que cualquier cliente poseen un número y un nombre, el número ayuda a diferenciarlos de los demás, cada funcionario tiene un puesto específico por el que recibe un salario, y de acuerdo a la antigüedad, días de vacaciones al año 

Escriba una aplicación que muestre el uso de las clases anteriores, enseñando el uso
de los objetos de clase que tienen herencia, polimorfismo y abstracción.




import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        boolean eleccionCorrecta = true;
        int operacion;
        Scanner reader = new Scanner(System.in);
        double inicial;
        double totalCuenta;

        while (eleccionCorrecta) {
            eleccionCorrecta = false;
            System.out.print("Que operacion desea realizar \n");
            System.out.print("Elija \n 1. Cuenta de Ahorros. \n 2. Cuenta de Inversión \n 3. Calcular vacaciones empleado \n");
            operacion = reader.nextInt();

            //Operacion
            switch (operacion) {
                case 1 -> {
                    // Crear la cuenta
                    eleccionCorrecta = true;
                    Cuenta Cuenta1;
                    Cuenta1 = new Cuenta(0, "", "", 0, 0, 0);
                    System.out.print("Cedula cliente: ");
                    int cedula = reader.nextInt();
                    Cuenta1.setCedula(cedula);
                    System.out.print("Nombres cliente: ");
                    String nombres = reader.next();
                    Cuenta1.setNombres(nombres);
                    System.out.print("Nombres Apellidos: ");
                    String apellidos = reader.next();
                    Cuenta1.setNombres(apellidos);
                    System.out.print("Numero de cuenta: ");
                    int numero = reader.nextInt();
                    Cuenta1.setNumeroCliente(numero);
                    boolean valor = true;
                    while (valor) {
                        System.out.print("Cantidad inicial: ");
                        inicial = reader.nextInt();
                        Cuenta1.setInicial(inicial);
                        if (Cuenta1.verificarInicial(inicial)) {
                            valor = false;
                        } else {
                            System.out.println("El primer deposito debe ser igual a 1000");
                        }
                    }
                    System.out.print("Porcentaje de Ahorro Anual: ");
                    double porcentaje = reader.nextDouble();
                    Cuenta1.setPorcentajeAhorroAnual(porcentaje);

                    while (eleccionCorrecta) {
                        eleccionCorrecta = false;
                        System.out.print("Que operacion desea realizar \n");
                        System.out.print("Elija \n 1. Para deposito. \n 2. Para retiro \n");
                        operacion = reader.nextInt();

                        //Operacion
                        switch (operacion) {
                            case 1 -> {
                                // hacemos un ingreso en la cuenta
                                System.out.print("Cantidad depositar: ");
                                double deposito = reader.nextDouble();
                                Cuenta1.deposito(deposito);
                                // break es opcional
                            }
                            case 2 -> {
                                // hacemos un ingreso en la cuenta
                                System.out.print("Cantidad a retirar: ");
                                double retiro = reader.nextDouble();
                                System.out.print("Ingrese su cedula: ");
                                int c = reader.nextInt();
                                Cuenta1.retiro(retiro, c);
                                // break es opcional
                            }
                            default -> {
                                System.out.print("Elija una opcion valida \n");
                                eleccionCorrecta = true;
                            }
                        }
                        // declaracion case
                        // los valores deben ser del mismo tipo de la expresion

                        System.out.println("-------------------------------------------------");
                        // Consultamos el saldo de nuevo
                        totalCuenta = Cuenta1.getSaldo();
                        System.out.println("Total actual en la cuenta: " + totalCuenta + " pesos");
                    }
                }

                case 2 -> {
                    // Crear la cuenta
                    eleccionCorrecta = true;
                    CuentaInversion CuentaInversion1;
                    CuentaInversion1 = new CuentaInversion(0, "", "", 0, 0, 0);
                    System.out.print("Cedula cliente: ");
                    int cedula = reader.nextInt();
                    CuentaInversion1.setCedula(cedula);
                    System.out.print("Nombres cliente: ");
                    String nombres = reader.next();
                    CuentaInversion1.setNombres(nombres);
                    System.out.print("Nombres Apellidos: ");
                    String apellidos = reader.next();
                    CuentaInversion1.setNombres(apellidos);
                    System.out.print("Numero de cuenta: ");
                    int numero = reader.nextInt();
                    CuentaInversion1.setNumeroCliente(numero);
                    boolean valor = true;
                    while (valor) {
                        System.out.print("Cantidad inicial: ");
                        inicial = reader.nextInt();
                        CuentaInversion1.setInicial(inicial);
                        if (CuentaInversion1.verificarInicial(inicial)) {
                            valor = false;
                        } else {
                            System.out.println("El primer deposito debe ser igual a 25000");
                        }
                    }
                    while (eleccionCorrecta) {
                        eleccionCorrecta = false;
                        System.out.print("Que operacion desea realizar \n");
                        System.out.print("Elija \n 1. Para deposito. \n 2. Para retiro \n 3. Cancelar cuenta (Retirar todo)\n");
                        operacion = reader.nextInt();

                        //Operacion
                        switch (operacion) {
                            case 1 -> {
                                // hacemos un ingreso en la cuenta
                                System.out.print("Cantidad depositar: ");
                                double deposito = reader.nextDouble();
                                CuentaInversion1.deposito(deposito);
                                // break es opcional
                            }
                            case 2 -> {
                                // hacemos un ingreso en la cuenta
                                System.out.print("Cantidad a retirar: ");
                                double retiro = reader.nextDouble();
                                System.out.print("Ingrese su cedula: ");
                                int c = reader.nextInt();
                                CuentaInversion1.retiro(retiro, c);
                                // break es opcional
                            }
                            case 3 -> {
                                double cantidad = CuentaInversion1.getSaldo();
                                System.out.print("Cantidad a retirar: \n" + cantidad + "\n");
                                System.out.print("Ingrese su cedula: ");
                                int c = reader.nextInt();
                                CuentaInversion1.cancelarCuenta(cantidad, c);
                                // break es opcional
                            }
                            default -> {
                                System.out.print("Elija una opcion valida \n");
                                eleccionCorrecta = true;
                            }
                        }
                        // declaracion case
                        // los valores deben ser del mismo tipo de la expresion

                        System.out.println("-------------------------------------------------");
                        // Consultamos el saldo de nuevo
                        totalCuenta = CuentaInversion1.getSaldo();
                        System.out.println("Total actual en la cuenta: " + totalCuenta + " pesos");
                    }
                }
                case 3 -> {
                    //Crear el empleado
                    Empleado Empleado1;
                    Empleado1 = new Empleado(0, "0", "0", 0, "");
                    System.out.print("Nombres empleado: ");
                    String nombres = reader.next();
                    Empleado1.setNombres(nombres);
                    System.out.print("Apellidos empleado: ");
                    String apellidos = reader.next();
                    Empleado1.setApellidos(apellidos);
                    System.out.print("Cedula del empleado: ");
                    int cedula = reader.nextInt();
                    Empleado1.setCedula(cedula);
                    System.out.print("Cargo: ");
                    String cargo = reader.next();
                    Empleado1.setCargo(cargo);
                    System.out.print("Años de antigüedad: ");
                    int antiguedad = reader.nextInt();
                    Empleado1.setAniosAntiguedadEmpleado(antiguedad);
                    Empleado1.diasVacaciones(Empleado1.getAniosAntiguedadEmpleado());
                }
                default -> {
                    System.out.print("Elija una opcion valida \n");
                    eleccionCorrecta = true;
                }
            }

        }
        reader.close();
    }
}

public class Persona {

    String nombres;
    String apellidos;
    int cedula;

    public Persona(String n, String a, int c) {
        nombres = n;
        apellidos = a;
        cedula = c;
    }

    public void setNombres(String n) {
        nombres = n;
    }

    public void setApellidos(String a) {
        apellidos = a;
    }

    public void setCedula(int c) {
        cedula = c;
    }

    public String getNombres() {
        return nombres;
    }

    public String getApellidos() {
        return apellidos;
    }

    public int getCedula() {
        return cedula;
    }
    
    
}
public class Cliente extends Persona {

    private int numeroCliente;

    public Cliente(int cedula, String nombres, String apellidos, int numero) {
        super(nombres, apellidos, cedula);
        numeroCliente = numero;
    }

    public boolean Identificacion(int c) {
        return cedula == c;
    }

    public void setNumeroCliente(int n) {
        numeroCliente = n;
    }

    public int getNumeroCliente() {
        return numeroCliente;
    }
}
public class Cuenta extends Cliente {

    private int numeroCuenta;
    protected double saldo;
    private double porcentajeAhorroAnual;

    public Cuenta(int cedula, String nombres, String apellidos, int numero, double inicial, double porcentaje) {
        super(cedula, nombres, apellidos, numero);
        saldo = inicial;
        porcentajeAhorroAnual = porcentaje;
    }

    public void deposito(double cantidad) {
        saldo = saldo + cantidad;
        System.out.println("Se depositan en la cuenta: " + cantidad + " pesos");
    }

    public void retiro(double cantidad, int c) {
        if (Identificacion(c)) {
            if (puedoSacar(cantidad)) {
                saldo = saldo - cantidad;
                System.out.println("Se retiran de la cuenta " + cantidad + " pesos");
            } else {
                System.out.println("Saldo"+saldo+"retiro"+cantidad);
                System.out.println("Su saldo es insuficiente para ese retiro");
            }
        } else {
            System.out.println("Usted no es cliente, no puede hacer el retiro");
        }
    }

    public boolean puedoSacar(double cantidad) {
        return (saldo >= 500) & (saldo - cantidad >= 500);
    }

    public double getSaldo() {
        return saldo;
    }

    public int getNumeroCuenta() {
        return numeroCuenta;
    }

    public void setNumeroCuenta(int numero) {
        numeroCuenta = numero;
    }

    public void setInicial(double inicial) {
        if (verificarInicial(inicial)) {
            saldo = inicial;
        }
    }

    public boolean verificarInicial(double inicial) {
        return inicial == 1000;
    }

    public void setPorcentajeAhorroAnual(double porcentaje) {
        porcentajeAhorroAnual = porcentaje;
    }

    public double incrementarSaldo() {
        return saldo = saldo + porcentajeAhorroAnual * saldo;
    }
}

public class CuentaInversion extends Cuenta {

    //private double saldo;
    //private double porcentajeAhorroAnual;
    public CuentaInversion(int cedula, String nombres, String apellidos, int numero, double inicial, double porcentaje) {
        super(cedula, nombres, apellidos, numero, inicial, porcentaje);
    }

    @Override
    public boolean puedoSacar(double cantidad) {
        return (saldo >= 10000) & (saldo - cantidad >= 10000);
    }

    @Override
    public boolean verificarInicial(double inicial) {
        return inicial == 25000;
    }

    public void cancelarCuenta(double cantidad, int c) {
        System.out.println("Cantidad" + cantidad + " Saldo" + saldo);
        if (Identificacion(c)) {
            saldo = saldo - cantidad;
            System.out.println("Se retiran de la cuenta " + cantidad + " pesos");
        }
    }
}
import java.util.Arrays;

public class Empleado extends Persona {

    // instance variables - replace the example below with your own
    private int aniosAntiguedadEmpleado;
    public String cargoEmpleado;
    private int diasVacacionesEmpleado;
    private double salario;
    private String[] arrayCargos = {"cajero", "supervisor", "recepcionista"};

    public Empleado(int cedula, String nombres, String apellidos, int antiguedad, String cargo) {
        super(nombres, apellidos, cedula);
        aniosAntiguedadEmpleado = antiguedad;
        cargoEmpleado = cargo;
    }

    public int getAniosAntiguedadEmpleado() {
        return aniosAntiguedadEmpleado;
    }

    public void diasVacaciones(int antiguedad) {
        diasVacacionesEmpleado = 0;
        aniosAntiguedadEmpleado = antiguedad;
        if (aniosAntiguedadEmpleado <= 1) {
            diasVacacionesEmpleado = 0;
        } else if (aniosAntiguedadEmpleado == 1) {
            diasVacacionesEmpleado = 5;
        } else if (aniosAntiguedadEmpleado <= 8) {
            diasVacacionesEmpleado = (aniosAntiguedadEmpleado - 1) * 2 + 5;
        } else {
            diasVacacionesEmpleado = 20;
        }
        //return diasVacacionesEmpleado;
        System.out.println("El empleado " + nombres + " " + apellidos + " tiene " + diasVacacionesEmpleado + " dias de vacaciones");
    }

    public void setCargo(String cargo) {
        if (validarCargo(cargo)) {
            cargoEmpleado = cargo;
        } else {
            System.out.println("Ese no es un cargo valido");
        }
    }

    public String getCargo() {
        return cargoEmpleado;
    }

    public void setAniosAntiguedadEmpleado(int antiguedad) {
        aniosAntiguedadEmpleado = antiguedad;
    }

    public boolean validarCargo(String cargo) {
        return Arrays.asList(arrayCargos).contains(cargo);
    }
    
    public void Salario(double s){
        salario=s;
    }
}

Comentarios

Entradas más populares de este blog

5 preguntas sobre el Disco Duro