DEV Community

Cover image for Interfaz | Explicación Completa (Definición, uso, estructura y ejemplo con C#)
Daniela "Ingeniela" Barazarte
Daniela "Ingeniela" Barazarte

Posted on

Interfaz | Explicación Completa (Definición, uso, estructura y ejemplo con C#)

Interfaz | Explicación Completa (Definición, uso, estructura y ejemplo con C#)

Introducción

Hola buenas, mi nombre es Daniela Barazarte y te quiero dar la bienvenida a esta explicación completa sobre la interfaz. Esta explicación será intuitiva y simple así como todas las explicaciones que forman parte de #DetectaLaLogica.

Si prefieres los videos, aquí tienes un tutorial completo hecho por mí en YouTube, está en español pero también tiene subtítulos: https://www.youtube.com/watch?v=UbZORJzMQec

Teoría

Definición de cada palabra

"Patrón de diseño"

  • Patrón: es un tipo de sucesos u objetos repetitivos Patrón de diseño
  • Diseño: actividad creativa que tiene por fin proyectar objetos que sean útiles y estéticos

"Interfaz"

  • Interfaz: zona de comunicación o acción de un sistema sobre otro Lapiz y papel representando la Interfaz

Definición completa

El patrón de diseño de interfaz es una especificación de métodos y propiedades que una clase debe proporcionar, y cualquier clase que implemente esa interfaz se compromete a proporcionar esos métodos y propiedades.

#DetectaLaLógica

La palabra "Interfaz" se define como "zona de comunicación o acción de un sistema sobre otro". Al patrón de diseño de Interfaz se le llama así porque una interfaz se está comunicando con una clase para comunicarle que parámetros debe tener esa clase. Es como un contrato donde la interfaz declara que componentes tiene y la clase debe tener esos componentes también.

Uso

Para qué

La interfaz se utiliza para definir una interfaz común que puede ser implementada por varias clases diferentes. Este patrón permite a estas clases tener diferentes comportamientos mientras cumplen con una misma interfaz, lo que proporciona flexibilidad y modularidad a la aplicación.

Cuando y cómo

  • Al tener múltiples clases que deben cumplir con un conjunto específico de comportamientos
  • Al tener una estructura común para plugins o módulos externos que deben cumplir con un conjunto específico de comportamientos
  • Al crear una aplicación que debe ser compatible con diferentes arquitecturas de sistemas distribuidos
  • Al crear una aplicación que debe ser fácilmente extensible y modular

Práctica

Ejercicio

Tienes que crear un proyecto de consola donde tengas varios animales y puedas escribir en consola el sonido que hacen cada uno de ellos

Método: Interfaz

Interfaz

La parte naranja (arriba): es una interfaz de Animal
La parte azul (abajo): son implementaciones de esa interfaz, en este caso, 3 animales (gato, perro, pájaro)

public interface IAnimal
{
    void HacerSonido();
    void LlamarAmigo();
}

public class Perro : IAnimal
{
    public void HacerSonido()
    {
        Console.WriteLine("¡Guau! Woof!");
    }
    public void LlamarAmigo()
    {
        Console.WriteLine("¡Ven amigo perro!");
    }
}

public class Gato : IAnimal
{
    public void HacerSonido()
    {
        Console.WriteLine("¡Miau! Meow!");
    }
    public void LlamarAmigo()
    {
        Console.WriteLine("¡Ven amigo gato!");
    }
}
public class Pajaro : IAnimal
{
    public void HacerSonido()
    {
        Console.WriteLine("¡Pío Pío! Quququ!");
    }

    public void LlamarAmigo()
    {
        Console.WriteLine("¡Ven amigo pájaro!");
    }
}
public class Program
{
    public static void Main()
    {
        IAnimal miGato = new Gato();
        IAnimal miPerro = new Perro();
        IAnimal miPajaro = new Pajaro();

        miGato.HacerSonido();
        miGato.LlamarAmigo();

        miPerro.HacerSonido();
        miPerro.LlamarAmigo();

        miPajaro.HacerSonido();
        miPajaro.LlamarAmigo();
    }
}
Enter fullscreen mode Exit fullscreen mode

Tener una interfaz "Animal" que implementa a "Pajaro", "Perro" y "Gato" es beneficioso porque proporciona una abstracción útil que permite un alto nivel de flexibilidad y extensibilidad en el diseño de software. Al definir una interfaz "Animal", se establecen ciertos comportamientos y características que todos los animales deben tener, como por ejemplo, la capacidad de moverse y respirar.

Al implementar esta interfaz en "Pájaro", "Perro" y "Gato", se garantiza que todos ellos tengan estas características comunes y se puedan utilizar de manera intercambiable en el código que requiere un objeto "Animal". Esto permite que el código sea más modular y escalable, ya que se pueden agregar fácilmente nuevos tipos de animales que cumplan con la interfaz "Animal" sin tener que cambiar el código existente.

Importancia

El patrón de diseño interfaz tiene varios beneficios:

  • Abstracción: Las interfaces permiten definir un conjunto de métodos y propiedades que deben ser implementados por una clase que las implemente. Esto permite abstraer la implementación de una clase detrás de una interfaz, lo que facilita la comprensión y el mantenimiento del código.
  • Separación de preocupaciones: Al definir interfaces, se puede separar claramente la interfaz de usuario de la lógica de negocio. Esto permite que las diferentes partes de una aplicación se comuniquen entre sí a través de interfaces bien definidas.
  • Polimorfismo: Las interfaces permiten el polimorfismo, lo que significa que una clase que implementa una interfaz puede ser tratada como si fuera de ese tipo de interfaz. Esto permite que las clases que implementan la misma interfaz se utilicen de manera intercambiable en diferentes partes del código, lo que facilita la reutilización y el mantenimiento del código.

Despedida

(Recuerda) #DetectaLaLógica: La palabra "Interfaz" se define como "zona de comunicación o acción de un sistema sobre otro". Al patrón de diseño de Interfaz se le llama así porque una interfaz se está comunicando con una clase para comunicarle que parámetros debe tener esa clase. Es como un contrato donde la interfaz declara que componentes tiene y la clase debe tener esos componentes también.

Puedes practicar este tema en mi repositorio de GitHub (Código en lenguaje C#): https://github.com/danielabarazarte/DetectaLaLogica

Muchas gracias por leer, si tienes alguna duda puedes comentarla y también puedes seguirme para ver mas posts de este estilo, gracias <3.

Top comments (0)