| Artículos | 01 SEP 1998

Clases, objetos y paquetes. Excepciones

Tags: Histórico
Curso de Java para Internet (4)
Jaime Peña.

En el presente artículo abordaremos ya los entresijos de la programación en Java . Su metodología orientada a objetos, es similar a la que encontramos en el lenguaje C++, aunque hay diferencias de cierta importancia, como la ausencia de la herencia múltiple . Esto, que en principio puede ser considerado como una carencia, es uno de los temas más controvertidos de la POO ( Programación Orientada a Objetos ) , ya que lleva en ocasiones a situaciones algo complejas de codificar . Hablaremos de las clases, que no son más que maquetas de objetos; un objeto es la implementación funcional de una clase y una clase no es más que una definición de los tipos de objetos que manejaremos .

También aprovecharemos para hablar del método más avanzado de gestión de errores ?el tratamiento de excepciones? . Con todo ello, ya estaremos en condiciones de programar aplicaciones Java realmente prácticas y a ello nos encaminaremos en los siguientes artículos .

Clases y objetos . Métodos y variables miembro

La clase es el concepto básico de la programación en Java . Dentro de ella se encuentran declarados los métodos y la variables miembro, que sólo se pueden manejar con los métodos de la clase ?desde una perspectiva de programación no orientada a objetos, un método es lo más similar a una función o procedimiento, salvo que sólo trata con datos pertenecientes a la misma clase a la que pertenece? . Por ejemplo:

class miClase{

static int i,j;

static int suma ( int a,int b ) {

i=a;

j=b;

int s;

s=i+j;

return s;

}

public static void main ( String [ ] args ) {

System . out . println ( suma ( 7,5 ) ) ;

}

}

Se definen las variables miembro i y j y el método que devuelve su suma . Aquí observamos varias características a tener presente . Por una parte, observe el modificador static, que permite que las variables y métodos sean accesibles desde el método main ?o desde cualquier otro que asigne valores y tome resultados con esas variables miembro y método? . Otra segunda cuestión es el pase de parámetros a un método, que se realiza al estilo del lenguaje C/C++ y note que se usa return para devolver el resultado de la ejecución del método, en este caso devuelve un valor entero, pero si se declara void es que no devuelve un valor . Por ejemplo:

class miClase2{

static int i,j,s;

static void suma ( int a,int b ) {

i=a;

j=b;

s=i+j;

}

public static void main ( String [ ] args ) {

suma ( 7,5 )

System . out . println ( s ) ;

}

}

Realizaría las mismas funciones que el código anterior . Pero no todo el código tiene porque ser así de simple; dentro de un archivo Java podremos tener varias clases definidas . Una de ellas será la principal y la ( s ) otra ( s ) realizarán funciones particulares; en esta ocasión, la clase principal utilizará la ( s ) otra ( s ) después de crear un objeto, que es una instancia a una clase concreta y podríamos asimilarlos ?de forma muy simplificada? a un tipo de datos, pero que va más allá, dado que contiene datos y métodos que los manejan . Observe lo que sigue:

class operaciones{

int i,j,s;

void suma ( ) {

s=i+j;

}

operaciones ( int x, int y ) {

i=x;

j=y;

suma ( ) ;

}

}

class miClase3{

public static void main ( String [ ] args ) {

operaciones op=new operaciones ( 7,5 ) ;

System . out . println ( op . s ) ;

}

}

Aquí hemos implementado una clase operaciones que, por simplicidad, sólo realiza la suma, como antes . La diferencia estriba en que ahora hay dos clases definidas: operaciones y miClase3 . En la segunda se crea un objeto mediante la instrucción operaciones op=new operaciones ( 7,5 ) ; . El objeto se inicializa con parámetros y luego se llama para recuperar el cálculo deseado ?el valor contenido el op . s, que es la suma? . Podríamos fácilmente crear métodos de cálculo de diferencia, producto, etc . , en la clase operaciones y recuperar el valor deseado . Por tanto, un objeto ( op ) es una instancia a una clase, que se utiliza para encapsular métodos y variables miembro . Importante es detenerse en el modo de inicializar un objeto . Aquí hemos usado el modo más flexible, mediante un constructor, que tiene el mismo nombre que la clase ?algo obligado? y es el que procesa todos los datos de entrada que se pasan en la creación del objeto . Alternativamente, podría utilizarse el método estándar init, pero no lo comentamos, dado que nos parece sensiblemente menos potente e interesante en casi todas las ocasiones .

Herencia de clases

La herencia es una de las características más interesantes de un lenguaje orientado a objetos, y Java lo es . Una vez definida una clase de objetos, podremos derivar de ella otra ( s ) clase ( s ) que, heredando sus métodos y variables miembro, extiendan sus capacidades con nuevos métodos y/o variables miembro . Para ello, no hay más que definir una nueva clase, con la adición de la palabra reservada extends seguida del nombre de la clase padre; es decir, de la clase de la que se quieren heredar las funcionalidades base de la nueva . Por ejemplo:

class operaciones2

extends operaciones{

int p;

void producto ( ) {

p=i*j;

}

operaciones2 ( int x, int y ) {

super ( x,y ) ;

producto ( ) ;

}

}

La nueva clase operaciones2 heredará las características y potencialidades de la clase operaciones ( véase más arriba ) y además las extiende con un nuevo método que calcula el producto de dos enteros . La palabra reservada super, que se incluye en el constructor de la nueva clase, llama al constructor de la clase padre ?operaciones ( int x, int y ) ? . Para utilizar la nueva clase operaciones2, cambiaríamos el código con algo similar a lo siguiente:

class miClase4{

public static void main ( String [ ] args ) {

operaciones2 op=new operaciones2 ( 7,5 ) ;

System . out . println ( op . s ) ;

System . out . println ( op . p ) ;

}

}

Si se pretende importar una clase Java que se encuentre ya compilada en un archivo de clase ( . class ) , debe utilizarse la palabra reservada import, que importa el archivo . class durante la compilación, por ejemplo, import operaciones; . Este es el modo correcto de importar la clase operaciones, caso de haber sido guardada en un archivo operaciones . java y compilada en uno operaciones . class . Naturalmente, deberíamos en este caso retirar el código de la clase operaciones del archivo miClase4 . java y poner en su lugar la referencia a import . Si la clase a importar se encuentra en un subdirectorio, la ruta de acceso debe estar recogida en la variable de entorno CLASSPATH . El código podría ser similar :

import operaciones2;

class miClase6{

public static void main ( String [ ] args ) {

operaciones2 op=new operaciones2 ( 7,5 ) ;

System . out . println ( op . s ) ;

System . out . println ( op . p ) ;

}

}

En este caso, la clase operaciones2 está definida más abajo, se trata de una clase que deriva de operaciones, cuando se define en forma de un paquete ( véase el apartado que sigue ) .

Paquetes

La reutilización de código se resuelve en Java mediante la dec

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información