Saltar al contenido principal

Resumen y ejemplo

Pasos para crear una clase:

  1. Definir la clase, generalmente como pública. Si está dentro de un paquete, indicar antes el paquete en el que se encuentra.
  2. Definir los atributos de la clase como privados.
  3. 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.
  4. Modificar los setters para incluir validación de datos.
  5. Implantar los constructores. Utilizar los setters para incluir la validación. Intentar utilizar this() cuando sea posible.
  6. 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");
}
}