sábado, 22 de junio de 2013

Programando en Java ... no. 2


Uso de clases abstractas e interfaces
  • Clase principal: Ejemplos
  • Interface: Servicio
  • Clase asbtracta: Persona
  • Clase "hija": Obrero
El programa obtiene 6 parámetros: nombre, apellido paterno, apellido materno, edad, tasa y horas

Calcula el salario neto y el salario bruto de una persona.


public class Ejemplos{
    public static void main(String[] args)throws Exception {
       if(args.length!=0){
Persona obrero=new Obrero(args[0],args[1],args[2],Integer.parseInt(args[3]), Double.parseDouble(args[4]),Integer.parseInt(args[4]));
        obrero.ver();
        }else{
            System.out.println("No hay argumentos:\n"+uso());
        }
    }
    static String uso(){
        return "java Ejemplos <nombre> <apellidoPaterno> <apellidoMaterno> <edad> <tasa> <horas>";
    }
}

interface Servicio{
    public abstract void ver();
}
abstract class Persona implements Servicio{
    protected String nombre;
    protected String apellidoPaterno;
    protected String apellidoMaterno;
    protected int edad;
    public abstract String obtenerDatos();
    public abstract double obtenerSalarioNeto();
    public abstract double obtenerSalarioBruto();

    public Persona(){}

    public Persona(String nombre,String apellidoPaterno,String apellidoMaterno, int edad){
        this.nombre=nombre;
        this.apellidoPaterno=apellidoPaterno;
        this.apellidoMaterno=apellidoMaterno;
        this.edad=edad;
    }

    public String getNombre(){
        return nombre;
    }
    public String getApellidoPaterno(){
        return apellidoPaterno;
    }

    public String getApellidoMaterno(){
        return apellidoMaterno;
    }

    public int getEdad(){
        return edad;
    }

}

class Obrero extends Persona{
    public double tasa;
    public int horas;


    public static final double VALOR1=1.5;
    public static final double VALOR2=0.9;

    public Obrero(){
    }

    public Obrero(String nombre,String apellidoPaterno,String apellidoMaterno,int edad,double tasa,int horas){
        super(nombre,apellidoPaterno,apellidoMaterno,edad);
        this.tasa=tasa;
        this.horas=horas;
    }

    @Override
    public double obtenerSalarioBruto(){
        double salarioB=0.0;
        int extras=0;
        if(horas<=38){
            extras=0;
        }else{
            extras=horas-38;
            horas=38;
        }
        salarioB=horas*tasa+extras*tasa*VALOR1;
        return salarioB;
    }

    @Override
    public double obtenerSalarioNeto(){
        double salarioN=0.0;
        if(obtenerSalarioBruto()<=300){
            salarioN=obtenerSalarioBruto();
        }else{
            salarioN=obtenerSalarioBruto()*VALOR2;
        }
        return salarioN;
    }

    @Override
    public void ver(){
        System.out.println(obtenerDatos());
    }

    @Override
    public String obtenerDatos(){
        return "Obrero(nombre: "+nombre+" , apellido paterno: "+apellidoPaterno+" , apellido materno: "+apellidoMaterno+" , edad: "+edad+" , tasa: "+tasa+" , horas: "+horas+" , salario bruto: "+obtenerSalarioBruto()+" , salario neto: "+obtenerSalarioNeto();
    }
}


No hay comentarios:

Publicar un comentario

Vibe Coding (la programación vía IA): ¿el futuro de la programación?

Vibe Coding es un nuevo paradigma de programación, una nueva forma de crear código. Es un enfoque emergente en el desarrollo de sof...

Etiquetas

Archivo del blog