Introduccion a las clases en JAVA

Introducción
Las clases son una parte muy importante de los lenguaje de programación orientado a objetos (POO), estas estructuras nos sirven para crear plantillas de elementos del mundo real, que utilizaremos posteriormente al crear ejemplares a partir de esta plantilla. Por ejemplo, el elemento del mundo real "Persona" podría ser una clase para una aplicación que gestione clientes.


Java es un lenguaje orientado a objetos, así que exceptuando los tipos de datos básicos para el manejo de números enteros, caracteres, etcétera, todo en java es un objeto. De esta manera en java existen dos grandes tipos de datos: tipos de datos primitivos (int, char, float), y tipos de datos referencia.

Definición de una clase
Imagine que quiere crear una aplicación de agenda telefónica, así que necesita gestionar una serie de contactos. Cada uno de estos contactos representa a una Persona. De este modo podemos llegar a la conclusión que nuestra plantilla para gestionar estos contactos puede ser Persona.

Persona sería nuestra clase, la cual contendrá una serie de valores que tienen en común todas las personas como el nombre, apellidos y el número de teléfono. Así que cuando creemos un ejemplar (objeto) de esta clase, este contendrá una serie de valores que lo identifican, determinando estos el estado actual del objeto.

Los valores definidos en la clase se denominan sus atributos, y el conjunto de operaciones que define una clase, métodos.

La creación de una clase en java se realiza de la siguiente manera:
class Persona {
    //Declaracion de atributos
    //Definicion de metodos
}

Atributos de una clase
Ahora que ya tenemos nuestra clase Persona, esta necesita definir una serie de atributos que tendrán en común todos los objetos que creemos a partir de esta clase, como por ejemplo el nombre, los apellidos y el teléfono.

Para definir los atributos se deben especificar sus tipos, por ejemplo el nombre será un tipo cadena de caracteres (String) y el teléfono será un número entero (int). Esto se realiza de la siguiente manera:
class Persona {
    String nombre;
    String apellidos;
    int telefono;
    //Definicion de metodos
}
Como vemos, siempre los nombres de las clases deben empezar por una letra mayúscula, y el nombre de los atributos y métodos por minúscula. Si el nombre tiene espacios se pondrá de la siguiente manera: numeroTeléfono.

Métodos de una clase
Una vez que hemos instanciado la clase Persona, y hemos creado un objeto, la manera de poder realizar acciones con este objeto es mediante los métodos que define la clase.

Por ejemplo, si queremos recuperar el nombre de nuestro objeto de tipo Persona, podemos acceder al nombre mediante su atributo, pero es algo desaconsejado, así que cuando necesitemos obtener o modificar el valor de algún atributo, utilizaremos métodos de la siguiente manera:
class Persona {
    String nombre;
    String apellidos;
    int telefono;
    
    String getNombre(){
        return nombre;
    }

    void setNombre(String nuevoNombre) {
        nombre = nuevoNombre;
    }
}
Como vemos, un método se define con el valor devuelto (String), el nombre (getNombre), una lista de argumentos que podrán ser utilizados en su interior (en este caso ninguno), y entre llaves, se coloca el código que ejecutará nuestro método al ser llamado. Además si nuestro método devuelve algún valor, en el método se deberá utilizar la palabra reservada return.

La regla es que los métodos que devuelven valores de atributos empiezan por get, y los métodos que modifican estos valores empiezan por set, ambos seguidos del nombre del atributo que devuelven.

También podemos hacer métodos que no devuelvan ningún valor, utilizando la palabra reservada void de la siguiente manera:
void nombreMetodo(int argumento1, String argumento2) {
    //Codigo del metodo
}
Como podemos observar este método no devuelve ningún valor, así que no necesita usar la palabra return, pero en cambio si recibe dos parámetros, que se utilizarán como una variable normal dentro de este método.
Dichos argumentos se pasarán al hacer la llamada al método.

Constructores
Ahora ya podemos crear una clase, declarar sus atributos y definir algunos métodos para ver y modificar dichos atributos, tan solo necesitamos crear ejemplares de esta clase para empezar a utilizarla. Para poder crear objetos de tipo Persona, se hace uso de un método especial denominado constructor de la clase, este método se sitúa dentro de la misma clase, y sirva para que podamos crear ejemplares de la clase Persona.

Normalmente se utiliza también para configurar los valores de los atributos inicialmente, por ejemplo, siguiendo con nuestra clase Persona, su constructor seria algo como esto:
Persona(String nombre, String apellidos, int telefono) {
    this.nombre = nombre;
    this.apellidos = apellidos;
    this.telefono = telefono;
}
Las peculiaridades de este método son:
  • No tiene valor devuelto.
  • El nombre del método es el mismo que el de la clase.
  • Suele recibir los valores iniciales utilizados para configurar los atributos del objeto.
  • Para diferenciar el nombre de los atributos del nombre de los parámetros, se utiliza this. delante del nombre de los atributos de la clase.
A parte del constructor normal, todas nuestras clases deben tener un denominado constructor por defecto, que no es más que un constructor sin parámetros y sin código en su interior. Si el compilador no encuentra constructor en una clase, este lo creará automáticamente, de cualquier forma, es aconsejable que nosotros lo creemos.

Y hasta aquí, ya podríamos hacer una clase Persona totalmente acabada:
class Persona {
    //Atributos
    String nombre;
    String apellidos;
    int telefono;
    //Constructor
    Persona() {} //Constructor por defecto
    Persona(String nombre, String apellidos, int telefono) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.telefono = telefono;
    }
    //Metodos get y set
    void setNombre(String nombre) {
        this.nombre = nombre;
    }
    String getNombre() {
        return this.nombre;
    }
    void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }
    String getApellidos() {
        return this.apellidos;
    }
    void setTelefono(int telefono) {
        this.telefono = telefono;
    }
    int getTelefono() {
        return this.telefono;
    }
}
Como ya sabemos, el nombre del archivo que contendrá la clase se deberá llamar Persona.java.

Ahora, ya podemos crear instancias de nuestra clase Persona utilizando el operador new seguido de la llamada al constructor pasándole a este los parámetros necesarios. Esto devolverá la referencia a un objeto que deberemos almacenar para su posterior uso, así que el proceso de instanciar la clase Persona se hará de la siguiente manera:
class Main {
    public static void main(String[] args) {
        Persona contacto = new Persona("Alejandro", "Santiago Nieto", 555555555);
    }
}
De esta manera lo que devuelve el operador new, lo guardamos en una variable de tipo referencia Persona llamada contacto. Y ahora ya podemos comprobar que nuestro programita funciona correctamente haciendo llamadas a los métodos de la clase Persona y mostrando lo que devuelvan en pantalla de la siguiente manera, todo esto irá justo después de la línea anterior:
    //Mediante el (.) accedemos a metodos y atributos del objeto
    String nombre = contacto.getNombre();
    //Mostramos en pantalla el contenido de nombre
    System.out.println(nombre);
    contacto.setNombre("Antonio");
    nombre = contacto.getNombre();
    System.out.println(nombre);

Comentarios

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA

Calcular factorial de un numero en JAVA