Documentos de Académico
Documentos de Profesional
Documentos de Cultura
uso.
Por Victorino Blanco Gonzlez
En si, y como he comentado anteriormente en el Manual de Java, las clases
marcan la estructura bsica de un programa tanto en Java como en la
programacin orientada a objetos en general.
Las clases "package" ( que podemos entender como las que no son "public" )
son accesibles solo desde su propio package.
Lo normal es que cada clase vaya incluida en un nico fichero pero claro est,
nos puede interesar por algn motivo meter varias clases en un nico fichero.
En este caso solo puede haber una clase public que es la que dar el nombre a
dicho fichero. En caso de que no hubiese una clase public el compilador
entender que la clase "principal" de ese fichero es la que concuerda con el
nombre del mismo, por lo que evidentemente dos clases con un mismo nombre
no son permitidas en un mismo fichero.
Por ltimo para explicar la estructura de una clase explicar los elementos
habituales en la definicin de su cuerpo.
/*tenemos dos mtodos que pueden por ejemplo obtener el rea de una figura
geomtrica en concreto, podran ser:*/
/*en Java esto se puede abreviar teniendo dos mtodos sobrecargados, por
ejemplo: */
Comentarios
Identificadores
Palabras claves
Expresiones y operadores
Variables y tipos de datos
Sentencias
Los cometarios son asignados en el programa cuando se est implementando
el cdigo se agrega comentarios para saber cul es la funcin de ese programa
existen tres tipo de comentarios
Comentarios de varias lneas que son:
/*
*/
Comentarios de una sola lnea se utiliza el doble diagonal:
//
Mi opinin personal es que todos estos aspectos son importantes tanto como la
escritura como en los mtodos ya que si llegamos estar mal en el cdigo por
razn lgica este programa no correr y si no tenemos bien definido la
escritura no encontraremos con muchos errores en el momento de estar
realizando cdigo a si tambin con la orientacin de objetos (POO) teniendo en
cuenta sus reglas.
Declaracin de atributos
Los atributos son las caractersticas propias de cada clase. Cada objeto creado de
una determinada clase tendr una serie de valores asignados en dichos atributos, por
tanto, permiten guardar informacin de cada objeto. Se declaran de la misma manera
que las variables.
Ejemplo para la clase Alumno:
01.class Alumno {
02.String nombre;
03.String apellidos;
04.int aoDeNacimiento;
05.int nmeroPersonal;
06.String grupo;
07.String turnoHorario = "Maana";
08.
09.//Declaracin de los mtodos
10....
11.}
Declaracin de mtodos
Los mtodos de una clase definen el comportamiento y los valores de los atributos de
un determinado objeto de esa clase.
El formato bsico de declaracin de los mtodos es:
tipoDatoRetorno nombreMtodo(tipoDato parmetro1, tipoDato parmetro2, ...)
{
//Declaracin de variables propias del mtodo
//Sentencias con las acciones que debe realizar el mtodo
return valorQueDebeRetornar;
}
Los mtodos pueden retornar un valor tras ejecutar las sentencias que contiene, o
bien no retornar nada. Dicho valor de retorno es entregado a la lnea de cdigo que
realiza la ejecucin del mtodo, como se ver ms adelante.
Si va a retornar un valor, se debe especificar el tipo de dato en la declaracin delante
del nombre. El valor que vaya a ser devuelto se indica con la sentencia return, y
debe ser del mismo tipo que el indicado en la declaracin del mtodo. Por ejemplo,
para retornar unString:
1.String nombreMtodo() {
2.//Sentencias del mtodo
3.return valorQueDebeRetornar;
4.}
Hay que tener en cuenta que la sentencia return termina la ejecucin del mtodo,
por lo que debe escribirse en el lugar donde no deba ejecutarse posteriormente
ninguna otra sentencia.
Siguiendo el ejemplo de la clase Alumno, se puede declarar un
mtodo dameGrupo que obtenga el grupo en el que se encuentra un determinado
alumno:
1.String dameGrupo() {
2.return grupo;
3.}
El valor retornado puede ser un atributo de la misma clase o cualquier otro dato, por
ejemplo, un valor booleano que indique si el alumno es mayor de edad:
1.boolean esMayorEdad() {
2.int aoActual = 2011;
3.
4.if(aoActual - aoDeNacimiento >= 18)
5.return true;
6.else
7.return false;
8.}
Por ejemplo, se puede declarar un mtodo que nicamente muestre por pantalla el
grupo al que pertenece un alumno, sin que retorne ningn otro valor.
1.void muestraGrupo() {
2.System.out.println("El alumno: " + nombre + " " + apellidos);
3.System.out.println("Pertenece al grupo: " + grupo);
4.}
En la declaracin del mtodo se debe informar de los parmetros que puede aceptar
el mtodo, indicando el tipo de dato y un nombre para dicho parmetro que se
utilizar como una variable dentro del mismo. Se escriben despus del nombre del
mtodo, entre parntesis y separados por comas. En los parmetros se indicarn los
datos que el mtodo puede necesitar para realizar las operaciones que tiene
encargadas.
Por ejemplo, un mtodo que asigne a un objeto de la clase Alumno sus datos, debe
conocer cul es el nombre del alumno, sus apellidos, ao de nacimiento, nmero
personal, grupo y turno. Por tanto, el mtodo debe tener los parmetros necesarios
para indicarle esos datos:
01.void asignaValores(String nom, String ape, int aoNac, int num,
02.String gru, String turno) {
03.//En este ejemplo, los valores recibidos en los parmetros se
04.//
asignan directamente a los atributos de la clase
correspondientes.
05.nombre = nom;
06.apellidos = ape;
07.aoDeNacimiento = aoNac;
08.nmeroPersonal = num;
09.grupo = gru;
10.turnoHorario = turno;
11.//Mostrar mensaje informativo
12.System.out.println("Valores asignados correctamente");
13.}
Dentro de un mismo archivo ".java" se pueden crear varias clases, aunque suele ser
ms claro y cmodo crear un nuevo archivo para cada clase.
Desde NetBeans se puede crear fcilmente una nueva clase Java desde el men
contextual del paquete de fuentes, o desde el men "Archivo > Archivo Nuevo",
seleccionado la opcin "Clase Java".
Palabra Reservada
Cardinalidad
1 Declaracin de
package
0..1
2 Importacin de
import
0..*
[public|package] classNombre
Clase {...}
4 Declaracin de
[public|private|protected]
[Dato Primitivo|
Referencia]nombreVariable
0..*
5 Definicin de
0..*
6 Definicin de
[public|private|protected]
[void|DatoPrimitivo|
Referencia]nombreMetodo
1..*
paquete
3 Definicin de clase
variables de
instancia
constructores
mtodos
Herencia en Java
La idea de la herencia es permitir la creacin de nuevas clases basadas en clases
existentes.
Cuando heredamos de una clase existente, reusamos (o heredamos) mtodos y
campos, y agregamos nuevos campos y mtodos para cumplir con la situacin
nueva.
Cada vez que encontremos la relacin "es-un" entre dos clases, estamos ante la
presencia de herencia.
La clase ya existente es llamada superclass, o clase base, o clase padre.
La clase nueva es llamada subclase, clase derivada, o clase hija.
A travs de la herencia podemos agregar nuevos campos, y podemos agregar o sobre
montar mtodos (override). Sobre montar un mtodo es redefinirlo en la case heredada.
Estudio de ejemplos: ManagerTest.java
Destacar uso de super para invocar al constructor de la clase base y para invocar a mtodos
sobremontados.
Jerarqua de Herencia
Polimorfismo
En Java una variable o nombre usado para referirse a un objeto de una clase X
puede usarse para referirse a cualquier objeto de cualquier subclase de la clase X.
Por ejemplo: Si tenemos Employee e;
e= new Employee(...); o
e= new Manager(...);
Esto tambin aplica a arreglos de Employee, cuyas entradas podran referirse a
instancias de cualquier subclase de Employee.
El inverso no es vlido. No se puede asignar una instancia de la superclase a un
nombre para la subclase.
Esta es una forma de polimorfismo por que e puede referirse a un Employee o a
un Manager.
Ligado Dinmico
Casting
Cmo podemos acceder a los mtodos definido en una clase derivada pero no en
la base? Se debe hacer un cambio de tipo forzado.
Por ejemplo:
Employee e= new Manager(..);
Usando e no podemos acceder a los mtodos slo presentes en Manager.
Si queremos hacerlo, usamos:
Manager m = (Manager) e;
Ahora s podemos invocar todos los mtodos de Manager sobre m. Cmo
sabemos que e aloja una instancia de Manager? Lo podemos preguntar con el
operador instanceof.
if (e instance of Manager) {
m = (Manager) e;
.....
}
ver PersonTest.java
Perros y gatos
Superclase Object
Toda clase en Java hereda de la clase Object. sta no requiere ser indicada en
forma explcita. Esto permite que podamos agrupar en forma genrica elementos
de cualquier clase. En esta clase hay mtodos como equals() y toString() que en
la mayora de loa casos conviene sobremontar. ver documentacin de clase
Object.
Ver (alumnos) EqualsTest.java