INTERFACES EN CSHARP | C# .NET

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.

¿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

DELEGADOS EN C# .NET | PUNTEROS A METODOS

Delegados Tal como hemos comentado, los eventos y los delegados están muy unidos en C#. De hecho no se pueden definir eventos si no def...