2 Tipos de Clases

11
TIPOS DE CLASES EN JAVA - 1 -

description

Clases en Java.Visiten mi blog en:http://dragons-rise.blogspot.com/

Transcript of 2 Tipos de Clases

Page 1: 2 Tipos de Clases

TIPOS DE CLASES EN JAVA

- 1 -

Page 2: 2 Tipos de Clases

UNIVERSIDAD PRIVADA ANTENOR ORREGO

ESCUELA DE INGENIERIA DE COMPUTACIÓN Y SISTEMAS TIPOS DE CLASES EN LA P.O.O. (JAVA)

TIPOS DE CLASES EN JAVA

APELLIDOS Y NOMBRES:

CUEVA CHAMORRO, Diego DIAZ MAZABEL, Jorge MONTOYA MORENO, Johan

TRUJILLO, AGOSTO 2007

- 2 -

Page 3: 2 Tipos de Clases

CONTENIDOS

I. RESUMEN…………………………………….……... pag 04 II. TIPOS DE CLASES……………………………........ pag 05

1. CLASES PUBLIC……….……………………….. pag05 2. CLASES ABSTRACT………………….………… pag 06

3. CLASES FINAL……….……………….…………. pag 07

4. CLASES SYNCHRONIZABLE ………….……… pag 08

III. CONCLUSIONES……………………………………. pag 10

IV. REFERENCIAS BIBLIOGRÁFICAS………………... pag 11

- 3 -

Page 4: 2 Tipos de Clases

RESUMEN

Una parte muy importante de la programación orientada a objetos son las

clases, si no fuera por ellas ni siquiera habría objetos. Al momento de crear una

clase, java nos da la oportunidad de elegir entre distintos tipos de clase que

queramos para la nuestra. Cada una con sus propias características y ventajas.

Un programador que conoce estas características sabe cuando debe usar una

y no otra, de manera que su desarrolla un buen software. Los tipos de clases

son:

C. Public : Son muy comunes, accesibles desde cualquier otra clase en

la misma librería (de otro modo hay que importarlas).

C. Abstract : Aquellas que tienen por lo menos un método abstracto. No

implementan sus métodos, sino que dan las bases para que sean

implementados en la herencia.

C. Final : Son las que terminan la cadena de herencia. Útiles por motivos

de seguridad y eficiencia de un programa, ya que no permiten crear más

sub-divisiones por debajo de esta clase.

C. Synchronizable :Especifica que sus métodos son sincronizados,

evitando problemas con los thread, de forma que estos no pueden

empezar a correr un método si no a acabado el otro.

- 4 -

Page 5: 2 Tipos de Clases

Tipos de Clase

El conocimiento de las clases en Java es fundamental, ya que todo gira en

torno a ellas. Un buen conocimiento de ellas nos permitirá realizar programas

que cumplan con lo que deseamos. Crear una clase es sencillo, se hace lo

siguiente:

[modificador] class [nombre]

{

//atributos y metodos

}

El modificador es el tipo de clase que se está creando. De acuerdo a este

modificador, nuestra clase puede tener diferentes características. Según cómo

necesitamos que funcione nuestra clase podemos elegir entre un tipo u otro.

En java existen 4 tipos de clases:

Public

Abstract

Final

Synchronizable

1) Clases Public

Un tipo muy común de clases es el tipo público o “public”. Tiene la

característica de ser accesible desde cualquier otra clase, lo que nos permite

trabajar con ella fácilmente. Sin embargo, para acceder a ella se debe tener

acceso al “package” al que pertenece. (1)

Se puede acceder a ellas directamente o por herencia, estando en el mismo

paquete, para acceder desde otros paquetes, primero hay que importarlos con

la sentencia “import”. Esto es útil ya que por defecto las clases solamente son

accesibles por otras clases declaradas dentro del mismo paquete en el que se

han declarado.(2)

- 5 -

Page 6: 2 Tipos de Clases

Un detalle de las clases del tipo “public” es que el archivo con el que se

guardan debe tener el mismo nombre de la clase, de otra forma se presentará

un error de compilación. Uno puede llamar a una clase public desde otra, si se

encuentran en la misma carpeta, de otra forma tendrá dificultades para

interactuar con esta.

Un ejemplo de uso de una clase public sería:

public class banco{

// cuerpo de la clase

}

Y al momento de grabar el programa, tendríamos que ponerle al archivo el

nombre de “banco.java”.

Uno podría encontrar muy útil el uso de las clases “public” cuando necesita

usar constantemente elementos de esa clase en el desarrollo de su programa

en general. Evita problemas cuando se encuentran en paquetes diferentes, ya

que se aplica una reutilización de ese cófigo.

2) Clases Abstract

Este tipo de clases son muy útiles la programación orientada a objetos que al

declarar estas clases solo se definen como se utiliza, sin la necesidad de

implementar métodos, es decir se dejan incompletos para después ser

refinados mediante el mecanismo de la herencia, se puede fijar un conjunto de

métodos y atributos, que serán especializados más adelante. Las clases

abstractas trabajan junto con los métodos abstractos, los cuales están vacíos.

Esto es muy útil cuando la implementación es específica pero cada usuario,

cada uno puede implementarlos como le parezca, pero sus métodos deben

tener los mismos nombres que se dieron antes. (3)

Por ejemplo al ver una declaración de métodos en una clase abstracta solo

podemos observar algunas líneas que solamente tienen los datos que van a

recibir los métodos, pero el código que ejecutara el método no está, eso quiere

- 6 -

Page 7: 2 Tipos de Clases

decir que podría estar en otro sitio. Se puede decir que es una base para la

herencia, algo así como indicando qué es lo que se tendrá que hacer más

adelante. Una clase abstracta tiene que derivarse obligatoriamente.

Pueden ser a la vez clases “public”. Aquí un ejemplo de una clase:

public abstract class Triangulo {

public abstract void Area_Triangulo(int b,int h);

public abstract void Perímetro( int x,int y,int z);

. . .

}

Nótese que los métodos sólo contienen los parámetros que reciben, mas no

tienen implementadas las acciones que deberían realizar.

Cuando una clase contiene un método abstracto tiene que declararse

abstracta. Pero esto no quiere decir que todos los métodos de una clase

abstracta tienen que ser abstractos.

Las clases abstractas no pueden tener métodos privados ya que no se podrían

implementar, ni tampoco estáticos.

3) Clases Final

Una clase final es la que acaba con una cadena de herencia. (4) De la clase

final no se puede heredar nada. Al decir que termina la cadena de herencia

significa que ya no se sub-divide en más clases, pues indica que es el final de

las divisiones.

Las organizaciones de clases en java suelen ser de la siguiente forma:

class A{ }

class B extends A { }

Con lo que se indica que de la clase A sale una sub-clase o clase hija que es B.

Esta es la idea estándar de la programación orientada a objetos en java. Pero

- 7 -

Page 8: 2 Tipos de Clases

se puede modificar este tipo de organizaciones al usar “final”. Sería de la

siguiente forma:

final class A { }

Con lo que se está indicando que de la clase A no van a salir otras clases.

Según esto no podría existir la clase “B”. Es lo contrario a declarar una clase

abstracta. Es posible mezclar final con public, es decir, se puede tener algo

como esto:

public final class A{ }

Uno puede declarar su clase como “final” por algunos motivos. Primero está el

motivo de seguridad. Cuando no se quiere que otra persona haga sub-clases

en base a la clase que has creado y haga nuevas instancias de ésta. Te da un

control sobre la clase evitando que le introduzcan funcionamientos anormales.

(5) Por ejemplo, la clase java.lang.String está declarada como “final”, por lo

tanto no permite crear una sub-clase String y darle un método length() que yo

haya creado y que haga algo diferente a devolverme la longitud de una cadena.

El otro motivo para usar “final” es la eficiencia. Se trabaja solo con instancias

de la clase sin tener que ir a las sub-clases, así puedes optimizar esa clase. Si

la clase es “final”, entonces implícitamente todos sus métodos son “final”

también y no hay sobrecarga de métodos. Además los programas pueden

correr hasta dos veces más rápido si la clase es “final”

Las librerías de java usan mucho el “final”, como las clases Math, InetAddress

and Socket. Es una forma de seguridad de java para que no las alteremos.

4) Clases Synchronizable

Al poner “Synchronizable” se especifica que todos los métodos que estén

definidos dentro de esta clase serán sincronizados. Para esto debemos saber

que la computadora puede llevar a cabo varios threads a la vez; un thread es

un flujo de control para controlar la ejecución de un programa. Esto es porque

- 8 -

Page 9: 2 Tipos de Clases

al ejecutar un programa, diversas partes del mismo se pueden estar llevando a

cabo al mismo tiempo.

El problema es que un thread puede interrumpir a otro en cualquier momento.

Por ejemplo, si tuviera un thread que está escribiendo en un arreglo, y al mismo

tiempo otro lo interrumpe y empieza a escribir sobre el mismo arreglo; esto

llevaría a un problema en nuestra aplicación o applet porque se están

perdiendo datos.

Lo que se debe hacer es evitar estas situaciones, bloqueando ciertas partes del

programa mientras otras se están llevando a cabo, es decir “sincronizarlas”. Al

estar sincronizados los métodos dentro de esta clase, mientras uno se lleva a

cabo, el otro tiene que esperar a que acabe el primero antes de comenzar a

ejecutarse. En otras palabras, no se puede acceder a ellos al mismo tiempo

desde distintos threads. (6)

Nota: Si no se utiliza alguno de los modificadores al momento de crear una clase, por

defecto, Java asume que la clase es: (7)

No final

No abstracta

Subclase de la clase Object

No implementa interfaz alguno

- 9 -

Page 10: 2 Tipos de Clases

CONCLUSIONES

Una clase vendría a ser una pieza de código en la que podemos definir

una serie de datos y al mismo tiempo unos métodos (funciones o

procedimientos) que nos permitirán acceder a esos datos.

De acuerdo a los requerimientos del programador, se puede elegir entre

usar un tipo de clase u otra. Con la experiencia se puede saber qué

clase es más útil en qué momento, en especial para el trabajo en

programas con muchas líneas de código.

Factores como la accesibilidad, la seguridad y la eficiencia determinan si

se elije una clase u otra. Cada una con sus ventajas y limitaciones

propias. La forma en la que estas partes se encuentren implementadas,

o para qué rango de uso estén hechas determina su tipo.

- 10 -

Page 11: 2 Tipos de Clases

- 11 -

REFERENCIAS

(1) Victorino Blanco González, Forma parte del equipo

DesarrolloWeb.com y MercadoProfesional.com

http://www.desarrolloweb.com/articulos/1776.php Leído 22.08.2007

(2) Agustín Froufe, Tutorial de Java

http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte5/cap5-

3.html#Cap5_3_1 Leído 23.08.2007

(3) Agustín Froufe, Tutorial de Java

http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte5/cap5-

11.html Leído 24.08.2007

(4) Agustín Froufe, Tutorial de Java

http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte5/cap5-

3.html#Cap5_3_1 Leído 23.08.2007

(5) Glen McCluskey & Associates LLC, firma especializándose en los

lenguajes de programación de C++ y de Java (tm).

http://www.glenmccl.com/perfj_025.htm Leído 23.08.2007

(6) Agustín Froufe, Tutorial de Java

http://www.ulpgc.es/otros/tutoriales/java/Cap7/demonio.html Leído

24.08.2007

(7) Agustín Froufe, Tutorial de Java

http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte5/cap5-

3.html#Cap5_3_1 Leído 23.08.2007