Contenido del curso
Tipos de Datos y Variables
Control de Flujo
- 9

Sentencia if y operadores lógicos en C#
05:38 min - 10

for y while en C# sin errores
05:50 min - 11

Ciclo foreach en C# para iterar caracteres y cadenas
05:10 min - 12

Diferencia entre arreglos y listas en C#
05:53 min - 13

Sentencia switch en C# con arreglos y listas
04:29 min - 14

Métodos en C# con void y return
05:50 min
Programación Orientada a Objetos
Interfaces y Arquitectura
Herramientas y Entorno de Desarrollo
Qué son las interfaces en C#
Resumen
Las interfaces en C# son uno de esos conceptos que suelen explicarse con frases vagas como "es un contrato", pero en la práctica funcionan como un conector que permite que tu código se acople con piezas creadas por otros desarrolladores. Si estás aprendiendo programación orientada a objetos, dominar este concepto te abre la puerta a escribir aplicaciones más flexibles y mantenibles.
Piensa en las interfaces como las uniones de las piezas de Lego: definen cómo se conectan los bloques, pero cada bloque puede tener su propia forma y color. Esa flexibilidad es justo lo que las hace tan poderosas en el ecosistema .NET.
¿Qué es una interfaz en C# y para qué sirve?
Una interfaz es una estructura que define métodos y propiedades sin implementarlos. Solo declara qué debe existir, no cómo debe funcionar. Cualquier clase que la herede está obligada a implementar esos métodos, pero con la libertad de hacerlo a su manera.
¿Qué es una interfaz en C#? Es un contrato que declara métodos y propiedades que las clases deben implementar, sin definir su comportamiento interno. Permite que distintas clases compartan una misma estructura adaptándola a sus necesidades.
Esta característica es la gran bondad del concepto: dos programadores pueden implementar la misma interfaz con cuatro métodos completamente distintos, y ambas implementaciones serán válidas. [01:45]
¿Cómo crear una interfaz paso a paso en un proyecto .NET?
Para crear una interfaz necesitas iniciar un proyecto de consola con dotnet new console y nombrarlo, en este caso, Interfaces. Una vez dentro, agregas un nuevo archivo .cs siguiendo una convención clave en C#.
¿Por qué las interfaces empiezan con la letra I?
La convención en C# indica que el nombre de una interfaz debe iniciar con una I mayúscula. Por ejemplo, ICalculatorService deja claro a simple vista que se trata de una interfaz y no de una clase.
El archivo se estructura así:
csharp namespace Operations;
public interface ICalculatorService { int Sumar(int a, int b); int Restar(int a, int b); int Multiplicar(int a, int b); int Dividir(int a, int b); }
Nota que se usa la palabra reservada interface en lugar de class. Los métodos solo se declaran, sin cuerpo. [02:30]
¿Cómo implementa una clase a una interfaz?
Después de crear la interfaz, generas otro archivo, por ejemplo CalculatorService.cs, que será la clase encargada de darle vida a esos métodos. La sintaxis con dos puntos : representa la herencia en C#.
csharp using Operations;
public class CalculatorService : ICalculatorService { public int Sumar(int a, int b) => a + b;
public int Restar(int a, int b) { Console.WriteLine("Restando valores..."); return a - b; } public int Multiplicar(int a, int b) { int resultado = a * b; return resultado; } public int Dividir(int a, int b) { if (b == 0) return 0; return a / b; }
}
Fíjate en el detalle: cada método se implementa de forma distinta. La suma devuelve directo el resultado, la resta imprime un mensaje en consola con Console.WriteLine, la multiplicación usa una variable intermedia y la división incluye una condición para evitar dividir entre cero. [04:20]
¿Cómo usar la clase y la interfaz desde Program.cs?
Un punto clave que muchos confunden: el objeto se instancia desde la clase, no desde la interfaz. La interfaz es el elemento agnóstico que define el contrato; la clase es la que ejecuta.
csharp using Operations;
CalculatorService calculator = new CalculatorService();
Console.WriteLine($"Suma: {calculator.Sumar(5, 3)}"); Console.WriteLine($"Resta: {calculator.Restar(10, 4)}"); Console.WriteLine($"Multiplicación: {calculator.Multiplicar(5, 3)}"); Console.WriteLine($"División: {calculator.Dividir(10, 2)}");
Al correr dotnet run desde la carpeta del proyecto, obtienes los cuatro resultados en consola. La suma devuelve 8, la multiplicación 15, y la resta muestra primero el mensaje personalizado antes del resultado.
¿La interfaz se puede instanciar directamente? No. Las interfaces no se instancian. Solo las clases que las implementan pueden crear objetos. La interfaz define el contrato, la clase ejecuta el comportamiento.
¿Cuál es la verdadera ventaja de usar interfaces?
La flexibilidad. Si tú creas ICalculatorService con cuatro métodos, otro programador puede crear ScientificCalculatorService que implemente esa misma interfaz con lógica completamente distinta, y tu aplicación seguirá funcionando porque ambas respetan el contrato.
Esto se conoce como polimorfismo basado en interfaces y es la base de patrones como inyección de dependencias, pruebas unitarias con mocks y arquitecturas desacopladas. [06:10]
Algunos beneficios concretos:
- Permiten intercambiar implementaciones sin modificar el código que las consume.
- Facilitan el trabajo en equipo porque cada quien implementa su parte respetando el contrato.
- Hacen que tu aplicación sea adaptable a múltiples escenarios sin reescribir lógica.
- Son la base para principios SOLID como inversión de dependencias.
Con esta base ya puedes empezar a pensar tus aplicaciones como bloques que se conectan entre sí. ¿Qué pieza vas a construir tú primero?