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
IShape
amb els següents membres:- Un mètode
double Area()
. - Un mètode
double Perimeter()
.
- Un mètode
-
Implementa la interfície
IShape
en una classeRectangle
amb les següents propietats:double Width
.double Height
.
-
Proporciona implementacions per als mètodes
Area
iPerimeter
en 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
IAnimal
amb els següents membres:- Un mètode
void MakeSound()
.
- Un mètode
-
Implementa la interfície
IAnimal
en dues classes:Dog
iCat
. -
Crea una llista d'objectes
IAnimal
que continguin instàncies deDog
iCat
. Itera sobre la llista i crida al mètodeMakeSound
per 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ó