El concepto de clases abstractas e interfaces puede ser un poco confuso para los principiantes en la programación orientada a objetos ya que una clase abstracta sin ninguna implementación se ve cómo una interface, sin embargo existen muchas diferencias y similitudes entre ellas.
¿Qué es una clase abstracta?
Una clase abstracta es una clase que no puede ser instanciada y que debe ser heredada. Una clase puede implementarse en su totalidad, pero lo más habitual es que se implemente parcialmente o no se implemente en absoluto, encapsulando funcionalidad común para clases heredadas.¿Qué es una Interface?
Una interface describe un grupo de comportamientos relacionados que pueden pertenecer a cualquier clase o estructura. Las interfaces contienen las firmas de métodos, propiedades, eventos o indizadores. La implementación de los miembros se hace en la clase o la estructura que implementa la interfaz .Diferencias y Similitudes
Característica | Interface | Clase abstracta |
Herencia Múltiple | Una clase puede heredar tantas interfaces requiera. | Una clase sólo puede heredar una clase abstracta. |
Implementación por defecto | Una interface no puede proporcionar ningún código de implementación, solo la firma. | Una clase abstracta puede proporcionar la implementación completa o parcial. |
Modificadores de acceso | Una interface no puede tener modificadores de acceso, todas sus firmas son públicas. | Los miembros de una clase abstracta pueden tener modificadores de acceso. |
Núcleo vs Periferia | Las interfaces son usadas para definir las habilidades periféricas de una clase. Un Humano y un Vehiculo pueden implementar una interface IMovible | Una clase abstracta define el núcleo de una clase y es usada para objetos del mismo tipo. |
Campos y Constantes | No pueden ser definidas en una interface | Una clase abstracta puede contener campos y constantes. |
Que métodos y propiedades debe tener?
Este tema puede ser variable, según lo que tratemos de controlar, en nuestro caso he detectado que al menos se requiere lo siguiente:1. Un método que nos permita obtener todos los elementos de la entidad.
2. Un método que nos permita agregar entidades al modelo.
3. Un método que nos permita actualizar una entidad ya existente en el modelo.
4. Un método para obtener una instancia de una entidad por medio de su identificador.
5. Un método que nos permita crear una entidad nueva.
6. Y por ultimo un método para que los cambios realizados al modelo se hagan persistentes.
Donde crear la interface?
Dentro de la carpeta Model, se creara una sub carpeta llamada Interfaces. Dentro de esta carpeta agregamos un nuevo elemento de tipo Interface. Si queremos que sea empleado desde fuera de la biblioteca debemos hacerla pública, de lo contrario debe ser Interna.Y agregamos el siguiente código:
Como pueden ver en el código de ejemplo, es posible crear una interface y al mismo tiempo establecer que debe implementarse otra. Eso es lo que nos indica el uso de los dos puntos y la palabra IDisposable al final de la primera línea.
Suerte
No hay comentarios:
Publicar un comentario