Interfaces en CSharp
Las interfaces son un elemento bastante importante en .NET Framework, ya que de hecho se utiliza con bastante frecuencia, en esta lección veremos que son las interfaces y como utilizarlas en nuestros proyectos, también veremos qué papel juegan en .NET y cómo aplicar algunas de las definidas en la biblioteca base.¿Qué es una interfaz?
Las interfaces son una forma especial de una clase, aunque la diferencia principal con las clases es que las interfaces no contienen código ejecutable, solo definen los miembros y, en el caso de los métodos, si reciben parámetros y de qué tipo son.
Las
interfaces se utilizan para indicar el "comportamiento" que tendrá
una clase, o al menos qué miembros debe definir esa clase.
Para
definir una interfaz en C# tenemos que usar la instrucción interface seguida
del nombre y encerrado entre un par de llaves los miembros que define:
public interface ICamara
{
//...
}
Tal como comentamos en el apartado de la accesibilidad, los miembros de una interfaz siempre son públicos, pero no debemos indicarlo, ya que se sobreentiende que es así y el compilador produciría un error indicándonos que el modificador de accesibilidad no se puede aplicar a ese tipo de elementos.
Como
los miembros de las interfaces no
contienen código ejecutable, solo debemos definir la "firma" del método,
propiedad o evento que queremos definir. En el caso de las propiedades,
tendremos que indicar los bloques get y/o set que
la clase o tipo que la implemente debe definir.
public interface ICamara
{
void Mostrar();
void TomarFotografia();
string NombreDeFoto { get; set;}
int CantidadDeFotos { get;}
}
Nota:
Según las indicaciones de nomenclatura de .NET Framework, se recomienda que todas las interfaces empiecen con una I mayúscula seguida del nombre al que hacer referencia la interfaz.
Según las indicaciones de nomenclatura de .NET Framework, se recomienda que todas las interfaces empiecen con una I mayúscula seguida del nombre al que hacer referencia la interfaz.
¿Qué puede contener una interfaz?
Tal
como hemos visto anteriormente, una interfaz pude contener cualquiera de los
miembros que una clase puede contener, salvo los campos; por tanto, también
puede contener eventos, sin embargo para poder definir un evento en una
interfaz, antes debemos definir el delegado que se usará con ese evento.
En el siguiente ejemplo tenemos una interfaz que define todos los tipos de miembros posibles, también debemos implementar tanto el bloque get como el set y en el otro, que devuelve un valor del mismo tipo que la interfaz, solo define el bloque get:
// Declaración del delegado para el evento de la
interfaz
public delegate void EjecutantoAppCamara();
public interface ICamara
{
void Mostrar();
void TomarFotografia();
string NombreDeFoto { get; set;}
int CantidadDeFotos { get;}
event EjecutandoAppCamara AbrirCamara;
}
Una interfaz es un contrato
Siempre
que leemos sobre las interfaces, lo primero con lo que nos solemos encontrar es
que una interfaz es un contrato.
Veamos que nos quieren decir con esa frase.
Tal
como acabamos de ver, las interfaces solo definen los miembros, pero no el
código a usar en cada uno de ellos, esto es así precisamente porque el papel
que juegan las interfaces es el de solo indicar que es lo que una clase o
estructura puede, o mejor dicho, debe implementar.
Si
en una clase indicamos que queremos "implementar" una interfaz, esa
clase debe definir cada uno de los miembros que la interfaz expone. De esta
forma nos aseguramos de que, si una clase implementa una interfaz, también
implementa todos los miembros definidos en dicha interfaz.
Cuando una clase implementa una
interfaz está firmando un contrato
con el que se compromete a definir todos los miembros que la clase define, de hecho,
el propio compilador nos obliga a hacerlo.
Usar una interfaz en una clase
Para
poder utilizar una interfaz en una clase, o dicho de otra forma: para "implementar" los miembros
expuestos por una interfaz en una clase debemos hacerlo a continuación del
nombre de la clase, separándola con dos puntos y a continuación el nombre de la
interfaz:
public class Celulares : ICamara
{
}
Para implementar la Interface solo seleccionamos ICamara y
nos aparecerán las opciones de implementación, seleccionamos “Implementar
Interfaz:”:
Y como Resultado tendremos la implementación de la interfaz
ICamara en nuestra clase Celulares
EJEMPLOS DEL VÍDEO:
EJEMPLO 1
EJEMPLO 2
EJEMPLO 3
No hay comentarios:
Publicar un comentario