Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 19-nov-2007, 08:52   #1 (permalink)
jair20x ha deshabilitado el karma
 
Avatar de jair20x
 
Fecha de Ingreso: noviembre-2005
Ubicación: Lima - Perú
Mensajes: 522
Pregunta Que es una clase astracta??

Hola a todos estoy estudiando java pero no llego a enteder bien lo que es una clase astracta y cual seria su uso practico
alguien me podria ayudar con algun ejemplo practico
se lo agradeceria mucho.
Saludos
jair20x está desconectado   Responder Citando
Antiguo 19-nov-2007, 14:20   #2 (permalink)
CheBoy ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2007
Mensajes: 14
Re: Que es una clase astracta??

Hola! Voy a ponerte el ejemplo que me pusieron a mi cuando me explicaron esto. Espero que te sirva de ayuda.

Antes que nada debes saber que no se pueden instanciar objetos de una clase abstracta, es decir, no puedes hacer
Código PHP:
Figura fig = new Figura(); 
Aunque si puedes definir variables, osea,
Código PHP:
Figura fig
Otra cosa que debes saber es que las clases abstractas tienen que ver con el Polimorfismo asi que deberias informarte sobre esto. Yo no lo tengo muy claro pero te comento lo que se.

Tenemos la clase abstracta Figura que tiene un metodo llamado pintar(). Y tambien tenemos las clases Cuadrado, Triangulo y Circulo que heredan de la clase abstracta Figura y que tiene que implementar el metodo pintar(). Cada una implementara el metodo para que dibuje la figura correspondiente. La idea es que con la clase abstracta podemos hacer lo siguiente:

Código PHP:
Fugra fig;
fig = new Cuadrado;
fig.pintar();
fig = new Triangulo;
fig.pintar();
fig = new Circulo;
fig.pintar(); 
Dado que las 3 clases heredan de Figura la variable fig puede apuntar a un Cuadrado, a un Triangulo o a un Circulo. Y lo mas importante es que sin saber la figura a la que apunta, al hacer la llamada al metodo pintar() dibuja la figura adecuada. Nosotros tenemos una figura y sabemos que se puede pintar pero no tenemos orque saber que se trata de un Cuadro o un Triangulo para poder dibujarlo. Esta es la ventaja de las clases abstractas. El ejemplo es un poco tonto pero puedes aplicar la idea a muchas otras cosas.

Espero que te sirva y tengas una idea mas clara de lo que son las clases abstractas.

Un saludo!
CheBoy está desconectado   Responder Citando
Antiguo 20-nov-2007, 00:50   #3 (permalink)
Faur ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2005
Mensajes: 53
Re: Que es una clase astracta??

Aunque CheBoy lo ha dejado bastante claro, me sumo a su respuesta y te digo que las clases abstractas sirven como una plantilla, es decir, siguiendo el ejemplo de CheBoy, tu sabes que sólo vas a trabajar con figuras, pero no puedes pintar una figura sin saber de que tipo es, por esto no puedes instanciar objetos de tipo figura. Pero en la clase figura puedes defirnir una serie de métodos que Circulo, Cuadrado y Triangulo heredaran y podrán implementar cada uno de una forma distinta (de ahí lo de polimrfismo, un método implementado de varias formas).

De esta forma te abstraes de como se pinta un Circulo, o un Cuadrado te basta con saber que son un tipo de figura y que tienen un metodo pintar() que los pinta.

Espero no haberte liado más.
Faur está desconectado   Responder Citando
Antiguo 20-nov-2007, 06:11   #4 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.519
Re: Que es una clase astracta??

Con lo que habeis explicado, lo mismo da una clase abstracta que una interfaz, falta el detalle que diferencia una de otra, y es que una clase abstracta, aparte de servir de plantilla puede definir variables y código que son heredados por las clases que la extienden.

Más que nada por que la gente suele encontrarse despues con el concepto de Interfaz y piensa "¿pero no es lo mismo?"

S!
GreenEyed está desconectado   Responder Citando
Antiguo 17-abr-2008, 20:47   #5 (permalink)
-zidboy- ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Alegría Re: Que es una clase astracta??

Cita:
Iniciado por jair20x Ver Mensaje
no llego a enteder bien lo que es una clase astracta
Primero que todo, hola a todos! los segundo, GreenEyed tienes que o aprender a leer o aprender a escribir, por que es Clase ABSTRACTA y no astracta.

CheBoy tiene razon en cuanto que una clase abstracta no puede o no tiene la capacidad de poder instanciarse, por el echo de que es abstracta.

CheBoy no se si este codigo esta bien en php, por lo menos en java no se lleba

Fugra fig;
fig = new Cuadrado;
fig.pintar();
fig = new Triangulo;
fig.pintar();
fig = new Circulo;
fig.pintar();

Lo que sé es que en java eso esta malo, no puede instanciar distintos objetos con el mismo nombre, en este caso seria de esta forma, se instancia o un Cuadrado o un Triangulo o un Circulo y al momento de instanciarse ellos toman al instante los metodos y atributos de la clase padre, el problema se ocaciona cuando tienes que crear una instacia de un objeto pero no sabes cual es, ese problema lo solucionas con patron de diseño que se llama factory.

EJ:

Cuadrado cuadrado = new Cuadrado();
cuadrado.pintar();

Abstracta viene de ABSTRACCION, abstraerse, llegar los mas arriba posible, escalabilidad, todos esos conceptos tienen que estar claros al momento de estudiar JAVA.

Saludos a todos y espero que les ayude.


OJO, la clase abstracta no tiene nada, pero nada que ver con la interface, asi que no confundir abstraccion con interface.....ok.
-zidboy- está desconectado   Responder Citando
Antiguo 17-abr-2008, 21:09   #6 (permalink)
Payin ha deshabilitado el karma
 
Avatar de Payin
 
Fecha de Ingreso: mayo-2007
Mensajes: 51
Re: Que es una clase astracta??

No está bien decir que la clase abstracta y la interfaz no tienen NADA que ver. Las dos se usan para dar herencia y comportamiento a clases subordinadas. Solo que las clases Abstractas poseen métodos y variables que serán parte de la herencia que reciba cada clase que la implemente. En cambio las Interfaces proveen un comportamiento, solo dan los nombres de los métodos (o no) que tienen. Esos métodos serán implementados por las clases que implementen a la interfase.
Payin está desconectado   Responder Citando
Antiguo 18-abr-2008, 00:38   #7 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.519
Re: Que es una clase astracta??

Cita:
Iniciado por -zidboy- Ver Mensaje
Primero que todo, hola a todos! los segundo, GreenEyed tienes que o aprender a leer o aprender a escribir, por que es Clase ABSTRACTA y no astracta.
Tu no solo tienes que aprender educación, de la que careces, si no que además tienes que aprender a leer, ya que el título del mensaje no lo escribí yo.
Así que quien escribió "astracta" no fui yo.

Y por cierto, ya puestos:
.- Las frases se empiezan con mayúscula
.- "los segundo" no concuerda en numero, supongo que sería "Lo segundo".
.- El verbo "llevar" se escribe con "v", y no con "b".
.- "Hecho" se escribe con h, ya que viene del verbo "hacer"
...

Empezar insultando y presumiendo de lo que careces no creo que sea una buena forma de participar en un foro, pero cada uno es libre.

S!

PD: Ah, y como ya han mencionado, decir que el concepto de clase abstracta y de interfaz no tienen nada que ver es bastante desacertado.
__________________
TAANSTAFL - Para obtener respuestas inteligentes, lo mejor es empezar por preguntar de forma inteligente.
GreenEyed está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 2 votos, 4,50 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 09:33.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93