Clases abstractas y concretas

(Imagen: Diapostitivas del curso de IBM)

Una clase que existe sólamente para que sea heredada por otras clases se denomina clase abstracta. Las clases que pueden usarse para instanciar objetos se denominan clases concretas.

Una operación puede marcarse también como abstracta. Esto significa que no puede haber una implementación para la operación en la clase donde se especificó. Una clase que contiene al menos una operación abstracta debe ser una clase abstracta. Las clases que heredan de clases abstractas deben proveer implementaciones para sus operaciones abstractas. De otro modo, las operaciones serían consideradas abstractas dentro de la subclase, por lo que la subclase debería considerarse abstracta también. Las clases concretas tienen implementaciones para todas sus operaciones.

En UML, se designa una clase como abstracte al poner el nombre de la clase en cursiva. Para operaciones abstractas, se coloca la firma de la operación en cursiva. El nombre de un item abstracto puede colocarse también en cursiva.

Basado en el material del curso DEV475: Mastering Object-Oriented Analysis and Design with UML 2.0

2 comments

Hola no me queda muy claro lo que es la clase concreta, podrias poner codigo como ejemplo, para ver como se declara cada una y saber diferenciarlas mas facilmente, saludos!! excelente informacion...

Reply

Una clase abstracta es una clase que no piensas -ni puedes- instanciar. Una clase concreta es todo lo contrario, ya que se puede instanciar a placer.

Por ejemplo, imaginemos que estamos haciendo un software de gestión de personal. Podemos valernos de la clase abstracta Persona para almacenar información común a todos los empleados (nombres, apellidos, dirección, etc). Esta clase nunca será instanciada, porque a nuestro software no le importan las Personas, sino los empleados. Para esto, extendemos Persona a clases particulares según empleado. Podríamos definir la clase Gerente que extienda Persona, y podríamos instanciar Gerente las veces que sea necesario. Podríamos hacer lo mismo con Jefe, u Operario; siendo clases concretas que extiendan de Persona.

Espero quede claro.

Reply

Publicar un comentario