> Faqs > ¿Toda clase de POO debe iniciarse en una clase abstracta?

¿Toda clase de POO debe iniciarse en una clase abstracta?

De acuerdo a todo lo leido en el artículo respecto a estas clase en particular, y a los fines de poder como retrolimentación, concluir si entendí o no bien el tema, pregunto:

¿Es correcto afirmar que toda clase de objetos en la POO debe imperiosa y necesariamente iniciarse en una clase abstracta basamental, sin desde la cual no podria existir? ¿Algo asi como su "Razon y origen?"

Muchas gracias por tan buenas explicaciones y por los conocimientos que nos comparten. Mis mas cordiales saludos.

Respuestas

Nunca he escuchado el concepto señalado en tu pregunta de "clase abstracta basamental". Diría que no se usa en Programación Orientada a Objetos.

Ya respondiendo a tu pregunta, las clases concretas (no abstractas) no necesariamente deben heredar o basarse en una clase abstracta.

En realidad las clases abstractas son un recurso que hay que usar cuando se necesita, no de manera necesaria para que toda clase tenga una base abstracta.

El típico ejemplo es el del "mamífero". No existe el "mamífero" como tal y por tanto debería ser una clase abstracta. Puede tener características como tiempo de gestación, número de mamas, etc., que son heredadas por todos los mamíferos. En ese caso puede ser útil crear la clase "Mamifero" como abstracta, para evitar que nadie instancie objetos "Mamifero".

Pero que en una aplicación tengas una clase abstracta como "Mamífero" no quiere decir que la necesites siempre. Igual tienes una aplicación donde esa clase es concreta, o igual tienes una aplicación en la que no necesitas tener esa clase abstracta para nada. Puedes tener "Perro" y "Gato" y ser clases totalmente independientes que no tienen una clase abstracta en común. Si no te aporta nada, podrías perfectamente no basarte en esa clase "Mamifero".

Otro ejemplo cualquiera... La clase "Potencia", que sirva para calcular valores de una base elevado a un exponente. Esa clase no necesita basarse en ninguna clase abstracta como "OperaciónMatematica". No hay motivo para que "Potencia" requiera tener un padre o abuelo que sea una clase abstracta.

Santiago
556 18 43 21
Seguro q jamas hubo algo como Clase abstracta basamental.Lo q intentaba preguntar es si era algo c/UN ORIGEN FUNDAMENTAL (la constitucion de un pais)d donde necesariamente debe desprenderse toda construccion o concepto. Perdon por el vocablo usado.Por tu explicacion creo haber entendido:Son un recurso mas a usarse o no,y nada tienen q ver c/el ORIGEN FUNCIONAL Y OPERACIONAL d c/ se estructura POO. Estupendo, me alegro que, aunque no entendiese bien la pregunta, se haya podido deducir la respuesta. Muchas Gracias. Si, son buenas las respuestas y permiten hacer eso. Muchas Gracias por contestar.

Para nada! no hay limitación de ese estilo en la programación orientada a objetos.

Una clase no requiere en realidad heredar de ninguna clase. Puede ser perfectamente una clase sin padre alguno, sin hacer herencia. Ya solamente por ese motivo es incorrecto decir que haya una necesidad de tener una clase abstracta como padre siempre.

Además, en el caso que tengas herencia, puedes heredar tanto de una clase abstracta como una concreta, así que tampoco en herencia tienes esa restricción.

Agustín
233 5 15 13
Muchas Gracias. Es bueno ir aclarando estas dudas, tanto más cuando son conceptos al principio tan abstractos. Una vez terminado este manual, con cual es más conveniente seguir?

No, asi de simple.********************************************************************

Edward
15 3