Definición de constructores de una clase (II)  

Posted by Danny in

Para modifVisibilidad se aplica las mismas normas que para atributos y métodos:

public: indica que es un método accesible a través de una instancia del objeto.

private: indica que a través de una instancia no es accesible el método. Al heredar el método se convierte en inaccesible.

protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede usar desde la clase derivada.

Sin especificar: indica visibilidad de paquete, se puede acceder a través de una instancia, pero sólo de clases que se encuentren en el mismo paquete.

nombreConstructor debe de coincidir con el nombre de la clase.

listaParámetros es la lista de los parámetros que tomará la función separados por comas y definidos cada uno de ellos como:

tipo nombreParámetro

La cláusula opcional throws es empleada para indicar que, dentro del método, se pueden generar errores en su ejecución, y que debemos estar preparados para tratarlos.

listaExcepciones es el nombre de todos esos posibles errores, su utilización la veremos en el punto dedicado a la gestión de errores mediante try y catch.

El constructor posee un par de llaves, dentro de las cuales estará el código que se ejecutará al ser llamada la función. Dicho código estará formado por instrucciones válidas en el lenguaje, finalizadas generalmente por punto y coma.

Definición de constructores de una clase  

Posted by Danny in

Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes, imaginemos un objeto de la clase Persona cuyo atributo color de pelo al nacer sea verde, un estado incorrecto tras construir el objeto persona. La solución en los lenguajes orientados a objetos es emplear los constructores. Un constructor es un método perteneciente a la clase que posee unas características especiales:

Se llama igual que la clase.

No devuelve nada, ni siquiera void.

Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones.

De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase.

Dentro del código de un constructor generalmente suele existir inicializaciones de variables y objetos, para conseguir que el objeto sea creado con dichos valores iniciales.

Para definir los constructores se emplea la siguiente sintaxis:

[modifVisibilidad] nombreConstructor (listaParámetros) [throws listaExcepciones]

{

}

Práctica con definición de métodos de una clase II  

Posted by Danny in ,

Regresemos a la clase Arranque, y localicemos dentro del método main la línea comentada

//per1.nombre = "Luis"

Vamos a sustituirla (como está comentada no es necesario borrarla) por:

per1.setNombre("Luis");

Lo mismo vamos realizar en la segunda línea comentada, sustituyamosla por:

System.out.println(per1.getNombre());

Compilamos y ejecutamos la clase Arranque.

Ahora estaremos pensando que para que necesitamos métodos públicos para acceder a variables privadas cuando es más sencillo tener variables públicas y acceder a ellas libremente sin tener que emplear funciones. Vamos a modificar algunas cosas para entender porque es más interesante emplear funciones de acceso a atributos privados.

Modificar el código de la función setEdad para que sea:

if(laEdad<0){>

System.out.println("Una persona no puede tener una edad negativa.");

}

else

{

edad = laEdad;

}

Volvamos a la clase Arranque, en el método main, y además del código que ya hay en su interior agregaremos:

per1.setEdad(4);

System.out.println(per1.getEdad());

per1.setEdad(-35);

Compilar y ejecutar la clase Arranque.

Práctica con Definición de métodos de una clase  

Posted by Danny in ,

Continuamos con la clase Persona:

Vamos a crear 4 métodos que permitan acceder a los atributos privados de la clase persona. Los agregamos dentro de la clase:

public int getEdad()

{

return edad;

}

public void setEdad(int laEdad)

{

edad = laEdad;

}

public String getNombre()

{

return nombre;

}

public void setNombre(String elNombre)

{

nombre = elNombre;

}

Definición de métodos de una clase II  

Posted by Danny in

listaParámetros es la lista de los parámetros que tomará la función separados por comas y definidos cada uno de ellos como:

tipo nombreParámetro

modifFunción puede tener los siguientes valores:

static: el método pertenece a la clase, no a los objetos creados a partir de la clase.

final: el método no puede ser sobrescrito en una clase derivada.

abstract: En esta clase no se proporciona el código para la función, se debe de proporcionar en alguna clase derivada. En el caso de poseer un método abstracto la clase debe de llevar a su vez el modificador abstract. En caso de ser abstracto un método, se debe de sustituir las llaves que contienen el código por un punto y coma.

native: Es un método no escrito en java, sino en código nativo, que será usado en java como un método propio de java.

synchronized: Es un método que sólo puede ser ejecutado por un hilo, y hasta que ese hilo no acabe la llamada al método, no puede comenzar la llamada al método otro hilo. Lo emplearemos al trabajar con hilos.

La cláusula opcional throws es empleada para indicar que dentro del método se pueden generar errores en su ejecución, y que debemos estar preparados para tratarlos.

listaExcepciones es el nombre de todos esos posibles errores, su utilización la veremos en el punto dedicado a la gestión de errores mediante try y catch.

El método posee un par de llaves, dentro de las cuales estará el código que se ejecutará al ser llamada la función. Dicho código estará formado por instrucciones válidas en el lenguaje, finalizadas generalmente por punto y coma.

Definición de métodos de una clase I  

Posted by Danny in

Para definir los métodos se emplea la siguiente sintaxis:

[modifVisibilidad] [modifFunción] tipo nombreFunción (listaParámetros) [throws listaExcepciones]

{

}

Para modifVisibilidad se aplica las mismas normas que para atributos:

public: indica que es un método accesible a través de una instancia del objeto.

private: indica que a través de una instancia no es accesible el método. Al heredar el método se convierte en inaccesible.

protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede usar desde la clase derivada.

Sin especificar: indica visibilidad de paquete, se puede acceder a través de una instancia, pero sólo de clases que se encuentren en el mismo paquete.

nombreFunc debe de ser un identificador válido en el lenguaje.

tipo es el tipo del valor devuelto por la función, pudiendo ser:

Un tipo básico.

Un objeto de una clase o interfaz. En este tipo de objetos se incluyen las matrices o vectores.

void, en el caso de no devolver ningún valor.

Práctica con definición de atributos de una clase  

Posted by Danny in ,

Vamos a construir la clase Persona, pero no estará completa hasta que no la completemos con características que iremos viendo en capítulos posteriores. Fabricaremos la clase Persona poco a poco, para ello:

Construir el fichero Persona.java

Agreguemos la clase dentro del fichero:

public class Persona

{

}

Agreguemos a la clase los atributos de persona (en este caso seleccionaremos dos atributos):

private String nombre = null;

private int edad;

Como resultado final obtendremos:

public class Persona

{

private String nombre = null;

private int edad;

}

Ahora vamos a crear una clase que emplearemos única y exclusivamente para que tenga la función main, y así poder escribir código que queremos ejecutar. Llamaremos a dicha clase Arranque, por tanto:

Creamos el fichero Arranque.java

Agreguemos la clase y el método main en su interior:

public class Arranque {

public static void main (String arg[]){

}

}

Ahora agregaremos dentro de la función main el siguiente código:

Persona per1 = new Persona();

//per1.nombre = "Luis";

//System.out.println( per1.nombre);

en el que declaramos una variable de tipo Persona y le damos el valor de un nuevo objeto de la clase Persona, en la segunda línea asignamos al atributo nombre del objeto per1 el valor Luis, y en la tercera línea mostramos por pantalla (gracias al método System.out.println) el valor de dicha variable.

La segunda y tercera líneas están comentadas, debido a que el atributo nombre está definido como privado en la clase Persona.

Ejercicio: Descomentar la segunda y tercera línea y compilar las clases, leer el error de compilación provocado. Cambiar el tipo del atributo nombre de private a public y compilar y ejecutar. Volver a dejar todo como al comienzo (Comentada la línea y con nombre como variable privada).