Una clase abstracta es una clase de la cual no se pueden definir instancias (u objetos). Por ejemplo:
Una clase abstracta, al no poder ser instanciada, no tiene sentido hasta que una serie de clases la implementan completamente y le dan un significado a todos sus métodos.
Llamaremos concretas a las clases que se pueden instanciar, a las cuales se les puede definir atributos y métodos, para diferenciarlas de las clases abstractas.
A las clases abstractas puras, es decir, a las clases que no contienen ninguna implementación, se les llama interfaces.
Cuando deseemos contar con algún medio para capturar todas las operaciones reutilizables del modelo, debemos usar una interfaz.
Una interfaz es un conjunto de operaciones que especifica cierto aspecto de la funcionalidad de una clase y es un conjunto de operaciones que una clase presenta a otras.
La interfaz puede establecer un subconjunto de las operaciones de una clase y no necesariamente todas ellas. Podemos modelar la interfaz igual que una clase, con un símbolo rectangular. La diferencia es que la interfaz no tiene atributos.
Las maneras de distinguir una interfaz de una clase que no muestra sus atributos son usando un estereotipo y especificando la palabra << interfaz >> en el rectángulo, o colocar la letra “I” al principio del nombre de una interfaz.
Gráficamente una interfaz se puede representar de forma expandida como una clase estereotipada con la etiqueta <
La relación entre una clase y una interfaz se conoce como realización. Esta relación se representa con una línea discontinua con una punta de flecha en forma de triángulo sin rellenar que adjunte y apunte a la interfaz.
En los diagramas de clases se suele utilizar la forma expandida para representar las interfaces.
En UML una interfaz es una colección de operaciones que sirven para especificar los servicios de una clase o un componente.
Dependencias
Un estereotipo representa el principal mecanismo de extensión de UML.
Un estereotipo extiende el
vocabulario de UML.
Se representa con
un nombre entre dos pares de mayor y menor (<< >>).
Estereotipos en Diagrama de Clases
El estereotipo sirve para dar una particularidad a la clase, es como declararle un tipo, por tanto, puede
haber unas clases de un estereotipo, otras de otro, etc. Podríamos escribir un
diagrama de cualquier tipo con un diagrama de clases usando estereotipos.
Si la lista de atributos y métodos es larga, se pueden usar estereotipos para organizarla de
de manera que sea más comprensible:
En los diagramas de clases se suele utilizar la forma expandida para representar las interfaces. La forma abreviada generalmente se usa en los diagramas de componentes.
Hay dos relaciones que pueden existir entre una clase y una interfaz: la dependencia y la realización.
La dependencia entre una clase y una interfaz tiene el mismo significado y representación que entre dos clases, indica que la clase usa la interfaz.
Para que una interfaz se pueda usar hace falta que otra clase implemente las operaciones que la interfaz especifica. A esta relación entre la interfaz y la clase que la implementa se le llama realización. La realización indica que la clase implementa todas las operaciones de la interfaz. Gráficamente la realización se representa como una generalización con la línea discontinua.
Diferencia
entre Clase Abstracta e Interfaz
Las clases abstractas obligan la
herencia. No
se pueden instanciar, es decir, no se puede crear objetos de ellas.
Las clases abstractas pueden
definir métodos y propiedades abstractos.
Las interfaces contienen las
declaraciones de los métodos, pero no su implementación. Al igual que las clases
abstractas, son plantillas de comportamiento que deben ser implementados por otras clases.