Foros del Web » Programación para mayores de 30 ;) » Java »

Que es una clase astracta??

Estas en el tema de Que es una clase astracta?? en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/11/2007, 09:52
Avatar de jair20x  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid - España
Mensajes: 532
Antigüedad: 18 años, 5 meses
Puntos: 1
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
  #2 (permalink)  
Antiguo 19/11/2007, 15:20
 
Fecha de Ingreso: octubre-2007
Mensajes: 13
Antigüedad: 16 años, 7 meses
Puntos: 1
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!
  #3 (permalink)  
Antiguo 20/11/2007, 01:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 58
Antigüedad: 19 años, 1 mes
Puntos: 0
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.
  #4 (permalink)  
Antiguo 20/11/2007, 07:11
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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!
  #5 (permalink)  
Antiguo 17/04/2008, 20:47
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
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.
  #6 (permalink)  
Antiguo 17/04/2008, 21:09
Avatar de Payin  
Fecha de Ingreso: mayo-2007
Mensajes: 92
Antigüedad: 17 años
Puntos: 0
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.
  #7 (permalink)  
Antiguo 18/04/2008, 00:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 19/06/2009, 13:36
 
Fecha de Ingreso: abril-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 0
Respuesta: Que es una clase astracta??

jajajaj baboso hablando de ortografía y no sabe ni escribir llevar que tristeza!! jajajajaja
  #9 (permalink)  
Antiguo 19/06/2009, 16:43
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Que es una clase astracta??

La verdad, zidboy, que te cubriste de gloria con tu primer mensaje en el foro. A parte de no fijarte quien escribe que, tener varias faltas graves de ortografia, y decir que una interface no tiene nada que ver con una clase abstracta, dices que un bloque de codigo esta mal, cuando no lo esta.

En el codigo
Código:
Fugra fig;
fig = new Cuadrado;
fig.pintar();
fig = new Triangulo;
fig.pintar();
fig = new Circulo;
fig.pintar();
no hay nada mal, excepto que falten los parentesis despues de la llamada a los constructores. No se estan instanciando distintas variables con el mismo nombre, se esta inicializando una variable varias veces, y eso si esta permitido, aunque he de reconocer que lo que tu dices de que no se puede poner el mismo nombre a distintas variables no se puede (aunque nadie lo haya dicho ni intentado).
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 04:08.