Resumen y ejemplo
Pasos para crear una clase:
- Definir la clase, generalmente como pública. Si está dentro de un paquete, indicar antes el paquete en el que se encuentra.
- Definir los atributos de la clase como privados.
- Definir los getters y setters. No tiene por qué ser necesario que por cada atributo haya un getter y un setter, depende del problema puede haber más o menos. Estos tendrán todos visibilidad pública. Se pueden crear de manera automática con el IDE.
- Modificar los setters para incluir validación de datos.
- Implantar los constructores. Utilizar los setters para incluir la validación. Intentar utilizar
this()cuando sea posible. - Definir e implantar los métodos.
Ten en cuenta también que:
- Cuando te refieras a atributos dentro de una clase utiliza
this. - Cuando te refieras a atributos o métodos estáticos refiérete a ellos utilizando el nombre de la clase.
A continuación se muestra un ejemplo completo de la implementación de la clase Persona junto a un pequeño programa principal:
Persona.java
public class Persona {
// Enumeración pública
public enum Sexo {MUJER, HOMBRE}
// Atributo estático
public static String hoy = "lunes";
// Atributos: siempre tienen que ser privados
private String nombre;
private int edad;
private double estatura;
private Sexo sexo;
/**
* Constructor de Persona
* @param nombre de la persona
* @param edad de la persona
* @param estatura de la persona
* @param sexo de la persona
*/
public Persona(String nombre, int edad, double estatura, Sexo sexo){
this.setNombre(nombre);
this.setEdad(edad);
this.setEstatura(estatura);
this.setSexo(sexo);
}
/**
* Constructor
* @param nombre de la persona
*/
public Persona(String nombre){
this(nombre, 0, 1.75, Sexo.MUJER);
}
/**
* Asigna el día que es hoy
* @param dia entero que para lunes es 1 y para domingo es 7
*/
public static void asignaHoy(int dia){
switch(dia){
case 1: Persona.hoy = "lunes"; break;
case 2: Persona.hoy = "martes"; break;
case 3: Persona.hoy = "miércoles"; break;
case 4: Persona.hoy = "jueves"; break;
case 5: Persona.hoy = "viernes"; break;
case 6: Persona.hoy = "sábado"; break;
case 7: Persona.hoy = "domingo"; break;
}
}
/**
* Añade un año más a la persona
*/
public void cumplirAños(){
this.edad++;
}
/**
* Indica un cambio de altura positivo de la persona
* @param incremento metros que crece la persona
*/
public void crecer(double incremento){
this.estatura += incremento;
}
/**
* Método sobrecargado que aumenta un centímetro la altura
*/
void crecer(){
this.estatura = this.estatura + 0.01;
}
/**
* Devuelve el saludo de la persona
* @return Saludo de la persona
*/
public String saludar(){
return "Hola";
}
/**
* Devuelve el nombre de la persona
* @return nombre de la persona
*/
public String getNombre() {
return nombre;
}
/**
* Asigna un nombre a la persona
* @param nombre de la persona
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* Devuelve la edad de la persona
* @return edad de la persona
*/
public int getEdad() {
return edad;
}
/**
* Asigna la edad a la persona
* @param edad de la persona, tiene que ser mayor a 0
*/
public void setEdad(int edad) {
if(edad > 0){
this.edad = edad;
}
}
/**
* Devuelve la estatura de la persona en metros
* @return estatura de la persona en metros
*/
public double getEstatura() {
return estatura;
}
/**
* Asigna la estatura de la persona en metros
* @param estatura debe ser mayor a 0
*/
public void setEstatura(double estatura) {
if(estatura > 0){
this.estatura = estatura;
}
}
/**
* Devuelve el sexo de la persona
* @return enumeración
*/
public Sexo getSexo() {
return sexo;
}
/**
* Asigna el sexo a la persona
* @param sexo enumeración
*/
public void setSexo(Sexo sexo) {
this.sexo = sexo;
}
}
App.java
public class App {
// Programa principal
public static void main(String[] args) {
Persona p = new Persona("Manuel");
}
}