Clases en Java

Vemos lo que son las clases, cómo crearlas y algunos detalles adicionales de su uso.
En si, y como he comentado anteriormente en el Manual de Java, las clases marcan la estructura básica de un programa tanto en Java como en la programación orientada a objetos en general.

Una clase es el producto de enfocar la programación a los datos más que a las funciones. Por tanto una clase es una colección de datos y además para operar con ellos una serie de funciones propias de la clase. Veamos por ejemplo la clase "Fichas" definida anteriormente, su único dato es "el color" y la única operación que permite es saber el color de la ficha en cualquier momento. Eso permite un acceso restrictivo a los datos según la función de los mismos. En este caso la clase es así basándose en la vida misma: No creo que nadie haya cambiado el color de una ficha jugando a las "cuatro en raya" y en caso positivo no tendría muy buenas intenciones al hacerlo.

Además de este método básico de protección de los datos, Java permite algunos más que vemos ahora mismo.

Cuando declaramos una clase lo primero que ponemos es la cabecera:

public class Fichas { (cuerpo de la clase) }

La primera palabra nos proporciona la posibilidad de dar permisos de accesos a nuestra clase, los permisos son los siguientes:
  • "Public": Una clase "public" es accesible desde cualquier otra clase, no obstante para que esto suceda debe ser primero accesible el "package" de esa clase "public". Para que un "package" sea accesible debe de estar en el directorio que señala la variable "CLASSPATH" que definimos al instalar nuestro entorno Java y, claro está, tener permiso de lectura en ese directorio.
  • "Package": Usar este identificador en la cabecera de la clase es opcional, pues es la opción por defecto en java, es decir, si escribimos:
class Fichas {(Cuerpo de la clase)}

Es lo mismo que si escribimos:

package class Fichas {(Cuerpo de la clase)}

Las clases "package" ( que podemos entender como las que no son "public" ) son accesibles solo desde su propio package.

Esto es relativo a la accesibilidad de las clases. Más conceptos relativos a la accesibilidad hacen referencia a las variables internas de una clase que ya comentamos en un capítulo anterior, y a sus métodos.

En cuanto al nombre de la clase consideraremos varias cosas. Debe de obedecer al convenio de nombres de Java y coincidir con el nombre del fichero ".java" en el que se guardará la clase.

Lo normal es que cada clase vaya incluida en un único fichero pero claro está, nos puede interesar por algún 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 definición de su cuerpo.

Primero se suelen declarar, al menos, las variables internas de esa clase y posteriormente se definen los constructores y los métodos que dispondrá la clase. Lo entenderemos mejor más adelante

En la definición de constructores y métodos tenemos que tener en cuenta un nuevo concepto de la programación orientada a objetos. La sobrecarga. La sobrecarga consiste en poder tener varios métodos o constructores con el mismo nombre dentro de una misma clase y que no hagan las mismas cosas.

Esto se consigue de una manera muy sencilla, se diferencian entre ellos mediante el número y tipo de parámetros que reciben. Veamos un ejemplo:

/*tenemos dos métodos que pueden por ejemplo obtener el área de una figura geométrica en concreto, podrían ser:*/

float obtenerAreaCirculo(Circulo ci){
   /* ... */
}

float obtenerAreaCuadrado(Cuadrado cu){
   /* ... */
}

/*en Java esto se puede abreviar teniendo dos métodos sobrecargados, por ejemplo: */

float obtenerArea(Circulo ci){
   /* ... */
}

float obtenerArea(Cuadrado cu){
   /* ... */
}

/*A la hora de ejecutar el método obtenerArea se utilizará el que corresponda al parámetro que se le pase por cabecera*/

Autor

Victorino Blanco González

Forma parte del equipo DesarrolloWeb.com y MercadoProfesional.com

Compartir

Comentarios

Jorge

12/1/2005
Muy bien explicado los pocos temas que te vienen.

Diana Chavez

01/6/2009
DESARROLLADORES JAVA
Buenos dias me doy cuenta que es dificil encontar este perfil si saben de quien quiera trabajar enviar hoja de vida.

(4) Ingenieros de Desarrollo. Título profesional en ingeniería de sistemas

Certificados en Plataforma de desarrollo Java o metodología RUP. Todos los ingenieros ofrecidos deben demostrar experiencia en desarrollo en JEE y/o Java mínimo de 3 años, deben tener mínimo (3) tres años de experiencia certificada en desarrollos bajo JEE, o J2EE
LA EXPERIENCIA CERTIFICADA DEBE SER A PARTIR DE LA TARJETA PROFESIONAL.

xchavez@bekesantos.com tel 2561533

Jorge

11/10/2009
Comentario
No dices nada, estas como la mayoría de libros bla bla bla ... pero aplica a algo da un ejemplo más práctico

java_me_odia

21/4/2010
no continua?
Hola a todos...me ha encantado este manual y me ha ayudado bastante..pero no continua ??

Se que hace mucho tiempo pero me gustaria saber si en algun lugar continua este magnifico manual.

Muchas gracias

JORGE EDUARDO

18/5/2010
AYUDA
Estoy programando en JCreator version 4.50.010.

Empece con el tema aplicaciones en entornos graficos, este es el siguiente codigo que realice.

Me diriji a nuevo, seleccione proyecto y elegi el icono Basic Java Application.

Capture el siguiente codigo:

import java.awt.Frame;
public class creaVetana42
{
public static void main(String[] args)
{
Ventana v=new Ventana("Nueva Ventana",30,80,400,250);
}
}


depues archivo, nuevo y despues seleccione class y capture el siguiente codigo, todo sin compilar y sin cerrar el archivo del primer codigo para que se guardara el la carpeta src.

class Ventana extends Frame
{
public Ventana(String titulo,int x,int y,int ancho, int alto)
{
super(titulo);//Invoca al constructor de Frame
this.setBounds(x,y,ancho,alto);
//visualiza la ventana
this.setVisible(true);
}
}


cuando regreso al primer codigo y guardo todos los cambios para compilar y correr la aplicacion, me aparecen los siguientes errores:


--------------------Configuration: creaVentana42 - JDK version 1.6.0_07 <Default> - <Default>--------------------
C:Programasapplets3creaVentana42srccreaVentan a42.java:11: class creaVetana42 is public, should be declared in a file named creaVetana42.java
public class creaVetana42
^
C:Programasapplets3creaVentana42srcVentana.ja va:1: cannot find symbol
symbol: class Frame
public class Ventana extends Frame
^
C:Programasapplets3creaVentana42srcVentana.ja va:6: cannot find symbol
symbol : method setBounds(int,int,int,int)
location: class Ventana
this.setBounds(x,y,ancho,alto);
^
C:Programasapplets3creaVentana42srcVentana.ja va:8: cannot find symbol
symbol : method setVisible(boolean)
location: class Ventana
this.setVisible(true);
^
4 errors
Process completed.




alguien podria decirme en que estoy mal con el codigo que hice?


lo agradeceria mucho, soy nuevo en este tema.

NXSRLS

29/3/2011
Ibamos bien y ahora vamos mal
Despues de estructuras de control creo que nadie ha entendido mucho de este manual. Yo en lo personal quisiera ver algun ejemplo sencillo de clases y constructores

zidboy

05/11/2012
Correccion
Las clases siempre se nombran en Singular y no en plural.