Les interfícies són una part fonamental de la programació orientada a objectes en C#. Proporcionen una manera de definir un contracte que les classes poden implementar. Aquest contracte especifica els mètodes, propietats, esdeveniments i indexadors que una classe ha de proporcionar.
Conceptes Clau
- Definició d'Interfície: Una interfície és una col·lecció de definicions de membres sense implementació.
- Implementació d'Interfície: Una classe o estructura que implementa una interfície ha de proporcionar una implementació per a tots els membres de la interfície.
- Polimorfisme: Les interfícies permeten el polimorfisme, ja que una classe pot ser tractada com una instància de qualsevol interfície que implementi.
- Herència Múltiple: A diferència de les classes, una classe pot implementar múltiples interfícies.
Definició d'una Interfície
Una interfície es defineix utilitzant la paraula clau interface. Aquí tens un exemple bàsic:
En aquest exemple, IVehicle és una interfície que defineix tres membres: dos mètodes (Start i Stop) i una propietat (Speed).
Implementació d'una Interfície
Una classe que implementa una interfície ha de proporcionar una implementació per a tots els membres de la interfície. Aquí tens un exemple:
public class Car : IVehicle
{
public int Speed { get; set; }
public void Start()
{
Console.WriteLine("Car started.");
}
public void Stop()
{
Console.WriteLine("Car stopped.");
}
}En aquest exemple, la classe Car implementa la interfície IVehicle i proporciona implementacions per als mètodes Start i Stop, així com per a la propietat Speed.
Polimorfisme amb Interfícies
Les interfícies permeten el polimorfisme, ja que una instància d'una classe que implementa una interfície pot ser tractada com una instància d'aquesta interfície. Aquí tens un exemple:
IVehicle myCar = new Car();
myCar.Start();
Console.WriteLine($"Speed: {myCar.Speed}");
myCar.Stop();En aquest exemple, myCar és una instància de Car però es tracta com una instància de IVehicle.
Herència Múltiple amb Interfícies
Una classe pot implementar múltiples interfícies. Aquí tens un exemple:
public interface IEngine
{
void StartEngine();
void StopEngine();
}
public class Motorcycle : IVehicle, IEngine
{
public int Speed { get; set; }
public void Start()
{
Console.WriteLine("Motorcycle started.");
}
public void Stop()
{
Console.WriteLine("Motorcycle stopped.");
}
public void StartEngine()
{
Console.WriteLine("Engine started.");
}
public void StopEngine()
{
Console.WriteLine("Engine stopped.");
}
}En aquest exemple, la classe Motorcycle implementa tant IVehicle com IEngine.
Exercicis Pràctics
Exercici 1: Definir i Implementar una Interfície
-
Defineix una interfície
IShapeamb els següents membres:- Un mètode
double Area(). - Un mètode
double Perimeter().
- Un mètode
-
Implementa la interfície
IShapeen una classeRectangleamb les següents propietats:double Width.double Height.
-
Proporciona implementacions per als mètodes
AreaiPerimeteren la classeRectangle.
Solució
public interface IShape
{
double Area();
double Perimeter();
}
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }
public double Area()
{
return Width * Height;
}
public double Perimeter()
{
return 2 * (Width + Height);
}
}Exercici 2: Polimorfisme amb Interfícies
-
Defineix una interfície
IAnimalamb els següents membres:- Un mètode
void MakeSound().
- Un mètode
-
Implementa la interfície
IAnimalen dues classes:DogiCat. -
Crea una llista d'objectes
IAnimalque continguin instàncies deDogiCat. Itera sobre la llista i crida al mètodeMakeSoundper a cada objecte.
Solució
public interface IAnimal
{
void MakeSound();
}
public class Dog : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Woof!");
}
}
public class Cat : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Meow!");
}
}
public class Program
{
public static void Main()
{
List<IAnimal> animals = new List<IAnimal>
{
new Dog(),
new Cat()
};
foreach (IAnimal animal in animals)
{
animal.MakeSound();
}
}
}Resum
En aquesta secció, hem après què són les interfícies, com es defineixen i implementen, i com permeten el polimorfisme i la implementació múltiple. Les interfícies són una eina poderosa en C# que permeten definir contractes clars i reutilitzables per a les classes. En el següent tema, explorarem els delegats i els esdeveniments, que són fonamentals per a la programació orientada a esdeveniments en C#.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització
