Implémenter des propriétés d’interface
En tant que développeur chargé de créer les interfaces de votre projet, vous démarrez le processus en concevant une interface avec des propriétés. Ensuite, vous développez une classe qui implémente ces propriétés.
Une interface en C# est semblable à un blueprint. Il décrit les fonctionnalités (propriétés ou méthodes) dont les classes doivent avoir si elles souhaitent utiliser cette interface. Pour ce projet, vous définissez une interface qui définit uniquement les propriétés (sans méthodes).
- Utilisez le
interfacemot clé pour créer une interface. - Définissez des propriétés dans l’interface sans corps.
- Les interfaces peuvent éventuellement fournir des implémentations par défaut pour les membres, y compris les propriétés, mais elles se produisent rarement.
Le code suivant crée une IVehicle interface avec les propriétés Speed et Color :
public interface IVehicle
{
int Speed { get; set; }
string Color { get; set; }
}
Les propriétés de l’interface ne contiennent généralement pas de code, elles spécifient simplement le type de données (comme int ou string) et indiquent si vous pouvez les lire, les écrire ou les deux. Lorsque vous implémentez ces propriétés dans une classe, vous allez écrire le code réel pour obtenir (lire) et définir (écrire) les valeurs. Par exemple, si une interface a une Speed propriété, vous allez décider comment stocker et récupérer la valeur de vitesse dans votre classe.
Développer une classe qui implémente l’interface
Quand une classe, comme Car, décide d’implémenter une interface, par IVehicleexemple, c’est comme dire « Je vais construire un véhicule ». Il Car doit inclure toutes les fonctionnalités (propriétés ou méthodes) décrites dans le IVehicle blueprint.
- La syntaxe
Car : IVehicleest utilisée pour indiquer queCarimplémente l'interfaceIVehicle. Vous utilisez la syntaxe familière, identique à celle utilisée pour l’héritage. - Les
Carimplémentations publiques et non statiques doivent être fournies pour toutes les fonctionnalités répertoriées dans leIVehicleblueprint. - Si
Cardécide d’implémenter plusieurs blueprints (interfaces), qui possèdent des caractéristiques similaires, il est nécessaire de préciser quelle caractéristique provient de quel blueprint.
Voici comment Car implémente l'interface IVehicle dans le code :
public class Car : IVehicle
{
private int _speed;
private string _color;
public int Speed
{
get { return _speed; }
set { _speed = value; }
}
public string Color
{
get { return _color; }
set { _color = value; }
}
}
Remarque
Le symbole : est utilisé pour indiquer que Car implémente IVehicle, de la même manière que : est utilisé pour indiquer l'héritage.
Dans cet exemple, Car est une classe qui implémente l’interface IVehicle et fournit ses propres versions de Speed et Color. C’est comme construire un véhicule basé sur le IVehicle blueprint, mais en ajoutant ses propres touches uniques à la vitesse et à la couleur.