Busqueda local

Loading

sábado, 15 de enero de 2011

Interfaces

Cuando hablamos de crear código de fácil mantenimiento, que pueda ser reutilizado y flexible, podemos emplear los lenguajes de .NET. Sin embargo por muy escalable que sea nuestro diseño, por mucho que nos esforcemos en hacerlo no cohesivo, solo podremos lograrlo al 100% si usamos Interfaces.
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ísticaInterfaceClase abstracta
Herencia MúltipleUna clase puede heredar tantas interfaces requiera.Una clase sólo puede heredar una clase abstracta.
Implementación por defectoUna 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 accesoUna 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 PeriferiaLas interfaces son usadas para definir las habilidades periféricas de una clase. Un Humano y un Vehiculo pueden implementar una interface IMovibleUna clase abstracta define el núcleo de una clase y es usada para objetos del mismo tipo.
Campos y ConstantesNo pueden ser definidas en una interfaceUna 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:
nivel
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