Comunidad de diseño web y desarrollo en internet online

Pregunta: Clases Abstract en JAVA

Citar            
MensajeEscrito el 15 Feb 2010 01:51 am
Hola gente cristalera

Estoy haciendo un curso de java y me va muy bien pero tengo una duda que me rompe la cabeza... Es sobre clases abstract y superclases

Dice la definición que una clase abstract permite agrupar metodos comunes de varias clases y asi mantener esos metodos comunes organizados.

Pero si eso ya se puede hacer con las superclases cual es el chiste de las clases abstract?????????

gracias por su tiempo gente

Por Enav

180 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Feb 2010 02:32 am
Tu respuesta es el Polimorfismo.

Recuerda que es una de las caracteristícas de la POO (Programación Orientada a Objetos)
una superclase no existiria sin una clase abstracta y este es un ejemplo básico:


Felidae

Gato Tigre Pantera León etc...

Veremos que cada especie (Nombre común para ser exacto) Gato, Tigre, Pantera, etc... tienen atributos diferentes y atributos similares, esto es por que corresponden a la misma familia

Ej, Atributos Comunes.
Felidae, ojos, almohadillas, garras, cola, etc.

Ej. Metodos.
modo nocturno (=P), corren, cazan, etc...

Sin embargo hay atributos que no serían comunes:

Ej Atributos No Comunes.
Domesticos (gato si un leon no), comen croquetas, etc...

Entonces es mas facil referirnos a la familia cuando se trata con diferentes especies
¿porque? porque un Gato es un felino pero no un León, y un León es un felino mas no un Gato, pero ambos pueden ser tratados como Felinos y esta es la utilidad del polimorfismo, porque no tienes que construir una clase completa si no simplemente abstraerla (o sea abstraes la idea del objeto plasmas sus atributos y métodos comunes)
y simplemente "Heredas" de ella para crear a los Gaots, Leones, Panteras.

Este es el concepto de Polimorfismo, espero te haya servido cualquier cosa puedes preguntarme o dejarme un post.

Por CrASh_

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Feb 2010 01:35 pm
Basicamente la lista de metodos y atributos los puedes "extender" desde una clase madre "Felinos" o tambien desde una clase abstracta "Felinos"

La diferencia es que en la clase Madre heredas los metodos con cuerpo y los atributos

Pero observe en un video tuto que la abstracta es más como una plantilla algo parecido a una "interfaz" que te dice cuales metodos y campos llevará la clase a hija, de hecho observe que el compilador te obliga a decalrar todas los nombres de metodos y campos cuando extiendes desde una abstracta.

Entonces si seria como pienso... es mas una plantilla para formalizar la escencia que debe llevar los hijos, es decir esos metodos y campos comues por ejemplo lo que hacen todos los felinos,

En contra posición con los la herencia entre clase madre y clase hija que se heredas metodos y campos implicitamentamente

Esto me confunde por que el el propio tuto de la pagina de Sun Microsystems dice que la clases abstractas son parte escencial del polimorfismo y sirven para reutilizar codigo... pero yo no observo que reutilizen codigo solo funcionan como plantilla... las que si reutilizan codigo es la herencia entre clases normales

Pero en conclusión podriamos decir que la clase abstracta es una plantilla que obliga a declarar ciertos metodos y campos???

Por Enav

180 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Feb 2010 01:36 am
Asi es podrías verlo así, pero ten cuidado la parte del Polimorfismo es muy delicada y no es muy fácil de entender hasta que no lo aplicas. Y te repito toda Clase Madre tiene ciertos métodos y características que sus hijas poseeran y podrán reescribir, pero no es necesario tener una clase Madre si así como leíste solo necesitaras una Interfaz es decir una clase abstracta con puras declaraciones "Heredar" o "Extender" de ella para poder tratar a todos los demas Clases Hijas como la Madre y poder regresarlas a su estado natural de Clases Hijas.

Por CrASh_

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Feb 2010 02:01 am
Hum bueno muchas gracias amigo...

Yo fui programador de visual basic por muchos años, hasta que sacan el nuevo visual basic y deciden inventar cambiar casi toda la sintaxis y la forma de programar de una manera disparatada, depaso el sistema esta incompleto, le faltan opciones, ayuda y otras cosas muy importantes que tenia antes.

Es decepcionante invertir tantos años en un tipo de codigo para que en cada version les de la gana de cambiarde esa manera y lo que sabias antes no sirva casi, bueno esto es muy aprecido a lo que hace flash, cada cierto tiempo cambia totalmente la forma de hacer las cosas...

Es decir no evolucionan sino que hacen reingenieria y todo el tiempo que invertiste entendiendo como llevar el ritmo a esos codigos se esfuma.

Por eso me paso a Java por que es multiplataforma y hasta el momento me parece muy potente... Pero te cuento que es un lenguaje un poco rudo, dificil de digerir en cierta forma pienso que no es para novatos, o por lo menos el tutorial de java de la pagina de Sun miccrosystems, mas que un tuto parece un manual para migrar a java, cosa que me conviene. Sin embargo ya veo que me abre muchas mas puertas que las que tenia con el VisualBasic...

Gracias por tu atencion amigo

Por Enav

180 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Feb 2010 04:12 am
Lo que dices es correcto, pero a lo que te refieres es al Paradigma de Orientado a Objetos y esto se aplica a varios tipos de lenguajes tanto de bajo, medio y alto nivel, como pueden ser C++, Java, Python, TCL, etc., este sin lugar a dudas es un paradigma muy estable a comparación del Visual llamese Visual Basic, Fox Pro, etc., porque no son muy estables, ahora te diré Java es un lenguaje con un potencial enorme pero si en efecto es rudo si no estas acostumbrado a la manufactura cuando todo te lo puede dar un IDE sobre todo al momento de programar de manera visual con componentes, pero la ventaja es que tienes un perfecto control sobre ellos. El tutorial de sun te ayudara mucho pero te aconsejo por si eres nuevo en el Paradigma Orientado a Objetos que leas algo sobre esto:

Clases y Objetos y sus propiedades de la Programación Orientada a Objetos:

1) Reusabilidad
2) Herencia
3) Polimorfismo
4) Encapsulamiento

Suerte!! si tienes duda puedes escribrirme tengo una gran vasta experiencia en Java.

Por CrASh_

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Feb 2010 05:21 pm
Bueno gracias si estoy familiarizado con esos terminos solo debo practicar mas ya voy por el 30% del curso...

Si necesitas ayuda con agun programa en Flash o animaciones avisame que yo te podre ayudar

Tambien sobre redes y equipos de redes

Por Enav

180 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.