miércoles, 18 de abril de 2012

POO: El problema del empleado

En esta entrada trataremos sobre la resolución de un problema de programación orientado a objetos: "Defina una clase empleado con todos sus atributos y un arreglo con los puestos que ocupa en la empresa. Use get y set." La razón de ser de este problema es darnos cuenta del uso de arreglos cuando programamos la clase Empleado.

La clase Empleado
package Principal;

public final class Empleado {

    private String nombre;
    private String apPaterno;
    private String apMaterno;
    private double sueldo;
    private String[] puestos;
    private int indice;

    public Empleado(String nombre, String apPaterno, String apMaterno, double sueldo, String[] puestos) {
        this.setNombre(nombre);
        this.setApMaterno(apMaterno);
        this.setApPaterno(apPaterno);
        this.setSueldo(sueldo);
        this.puestos = new String[5];
        indice = 0;
        if(puestos.length<= this.getPuestos().length)//Arreglo de menor tamaño del esperado
        {
            for (int i = 0; i < puestos.length; i++) {
                this.setPuesto(puestos[i]);
            }
        }else{//Arreglo de mayor tamaño del esperado
            for (int i = 0; i < this.getPuestos().length; i++) {
                this.setPuesto(puestos[i]);
            }
        }
    }

    public void setPuesto(String puesto) {
        if (indice < this.getPuestos().length) {
            this.puestos[indice] = puesto;
            indice++;
        }
    }
    public String[] getPuestos() {
        return puestos;
    }
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApPaterno() {
        return apPaterno;
    }

    public void setApPaterno(String apPaterno) {
        this.apPaterno = apPaterno;
    }

    public String getApMaterno() {
        return apMaterno;
    }

    public void setApMaterno(String apMaterno) {
        this.apMaterno = apMaterno;
    }

    public double getSueldo() {
        return sueldo;
    }

    public void setSueldo(double Sueldo) {
        this.sueldo = Sueldo;
    }
}

Lo más resaltante de la clase es la línea 9 en la que declaramos el arreglo puestos y la línea 17 en la que inicializamos el arreglo dentro del constructor. Las líneas 19 a 28 y las líneas 31 a 36 muestran la forma de realizar operaciones con nuestro arreglo dentro de la clase empleado.

Programación en la clase Main
package Principal;

import java.util.Random;
import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        
        String[] puestos = new String[3];
        puestos[0] = "Administrador";
        puestos[1] = "Jefe de Area";
        puestos[2] = "Subgerente";
        
        Empleado emp = new Empleado("Juan", "Perez", "Perez", 1500, puestos);
        System.out.println("Datos del empleado");
        System.out.println("Nombre: " + emp.getNombre());
        System.out.println("Apellidos: " + emp.getApPaterno() + " " + emp.getApMaterno());
        System.out.println("Sueldo: " + emp.getSueldo());
        System.out.println("Puestos: ");
        for (int i = 0; i < emp.getPuestos().length; i++) {
            if (emp.getPuestos()[i] != null) {
                System.out.println((i+1) + ") " + emp.getPuestos()[i]);
            }
        }
        
        emp.setPuesto("Jefe Comercial");
        
        System.out.println("\n" + "Nuevos Puestos: ");
        for (int i = 0; i < emp.getPuestos().length; i++) {
            if (emp.getPuestos()[i] != null) {
                System.out.println((i+1) + ") " + emp.getPuestos()[i]);
            }
        }         
    }
}

De manera análoga, en nuestro Main definimos un arreglo en la línea 11 y le asignamos valores en las líneas 12 a 14. Luego, manipulamos arreglos en las líneas 22 a 26 y en las líneas 31 a 35.

Si bien es cierto que el ejercicio está orientado a familiarizarnos con el uso de arreglos, también pudimos haber implementado una lista en vez de usar un arreglo. Para usar listas en Java, podemos programar nuestra propia clase Lista o podemos hacer uso de la clase ArrayList de Java que se encuentra en java.util.

Además, cabe resaltar que nuestra clase empleado tiene un campo Sueldo, que representa el sueldo fijo que gana el empleado en su organización. En la vida real, tenemos este tipo de empleados que ganan un sueldo fijo y se les denomina "empleados a tiempo completo". Pero también tenemos "empleados a tiempo parcial" los cuales se les paga por el número de horas que trabajan. Si quisiéramos modelar estos dos tipos de empleado, deberíamos crear una clase para empleados a tiempo completo y otra para empleados a tiempo parcial.

Resultado de la ejecución


No hay comentarios:

Publicar un comentario