import java.util.*; class Employee { /* los metodos con igual nombre que la clase son los contructores. Son usados para crear objetos (instancias de la clase). Son apropiados para definir el estado inicial del objeto. Constructores no retornan valores. Constructores son llamados con new. */ public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); // GregorianCalendar uses 0 for January hireDay = calendar.getTime(); } // metodo accesor // esta funcion solo da acceso a un atributo // read-only public String getName() { return name; } public double getSalary() { return salary; } /* OJO se retorna una referencia a un valor privado. Externamente se podria modificar el datos. La solucion es clonar el objeto y retornar el clono. */ public Date getHireDay() { return hireDay; // mejor return (Date) hireDay.clone(); } // metodo mutador public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; /* Alternativamente: double raise = this.salary * byPercent / 100; this.salary += raise; */ } // Miembros dato: Atributos para almacenar el estado. // aqui son privados => solo visibles dentro de las funciones // de la clase. private final String name; private double salary; private Date hireDay; }