SoloCodigo
Programación Específica => Ingeniería del Software => UML => Mensaje iniciado por: cris_maco en Miércoles 20 de Junio de 2007, 10:43
-
hola!!
soy nueva y este es mi primer post. :P
Me gustaria que alguien me pudiera decir cuando es mejor usasr clases abstractas que clases 'normales', o en que situaciones se suelen usar calses abstractas, a parte de en polimorfismo. Es que yo he estudiado el concepto, pero no sus posibles aplicaciones.
gracais
-
Hola cris_maco.
Bienvenida al foro :beer:
En primer lugar, no son clases normales sino concretas :rolleyes:
Las clases concretas son las que se utilizan para instanciar los objetos mientras que las abstractas se utilizan solamente para heredar de ellas una estructura y/o comportamiento que seguramente van a compartir un conjunto de objetos (Que heredan de ella). Formando así una jerarquía de clases en donde en las cima se encuentran las clases abstractas (Las más genéricas) y a medida que se va bajando de nivel se va ganando en especificaciones/especialización.
¿Se entiende? :think:
-
se entiende perfecto, pero me podrias poner un ejemplo concreto? del mundo real :P
-
Clase genérica: Persona
Clases concretas que heredan de Persona: Cliente, Proveedor, Empleado, etc.
Tu pregunta es ¿cuándo utilizar un tipo de clase u otro?, pero la respuesta tiene que ver con el diseño de tu sistema y no es que existan reglas que sí o sí tengas que cumplir (Existen algunos patrones pero vos decidís si aplicarlos o no), por ejemplo, si tu sistema solamente va a tener la clase Cliente, no tendría mucho sentido crear la clase Persona, simplemente creas la clase Cliente con todos los atributos y métodos de la clase Persona mas los particulares de la clase Cliente. En resumen, cuando existen dos o mas clases que comparten una estructura o comportamiento en común, se extrae esa parte y se define una superclase con ella de la cual heredarán todas esas clases.
PD: Existen algunos patrones de diseño que muchas veces simplifican las cosas pero no los tengo en formato digital.
Un saludo.