Les interfaces améliorées–Les nouveautés de C# 8–dotnet core

interface avec code implemente dans methode c# 8

Après avoir vu les switch Expression, découvrons une autre nouveauté, qui va faire écrire beaucoup d’encre (façon de parler hein Open-mouthed smile). Il existait depuis toujours en .net les Interface … sans corps de méthode.
Découvrez les .. interfaces avec corps de méthode (une classe abstraire en somme non ?)

 

Les Interfaces – Le meilleur moyen de découpler votre code

Quand on fait de la POO, on sait que l’héritage est une première piste pour créer du code propre, et découplé.

 

Au début, il existait les classes abstraites

On découvre alors les classes abstraites et la puissance d’imposer une méthode à être implémenter dans une classe fille.

De plus, on peut avoir des méthodes dans cette classe abstraite qui sont génériques pour toutes les classes filles.

 

OK, mais petit à petit on arrive aux limites de l’héritage … Et dans plein de cas, continuer avec l’héritage va amener des dérives ou alors du code bien tordu.

 

C’est pourquoi nous allons chercher à utiliser les Interfaces.

Du plaisir de l’interface à ses limites

A quel bonheur d’utiliser les interfaces en C# ! Elles permettent :

  1. Un code découplé de son implémentation, respectant les principes SOLID
  2. Un code facilité pour utiliser l’injection de dépendance, et encore plus découpler son code
  3. A tout architecte d’imposer des contrats et donc des méthodes à être présentes dans des classes

 

Oui, mais, il y a un mais !

Imaginez des centaines de classes qui implémentent une Interface donnée.
Vous souhaitez ajouter une méthode à cette interface ….

Bonjour le temps de refactoring !

 

Et tiens, soyons fou, imaginez que vous souhaitez écrire du code dans cette méthode, sans devoir l’écrire dans les classes filles.

Ca donne envie, n’est-ce pas ! Smile

 

Du code dans nos méthodes de notre Interface

Prenons l’interface IVolant

image

 

La classe Wookie implémente cette interface :

image

Et maintenant on souhaite ajouter une méthode Atterrir, sans devoir écrire du code dans Wookie. Open-mouthed smile

Ca nous donne cette amélioration :

image

Et elle est bien utilisable telle quelle quand j’instancie mon Wookie ! Open-mouthed smile

 

image

Amazing, n’est ce pas ?!

 

Redéfinir la méthode

Peut-on alors redéfinir cette méthode ? Ou bien la compléter, comme on ferait dans l’héritage ?

On peut par exemple “casser” le code prévu par défaut dans l’interface :

image

Il suffit d’implémenter la méthode dans la classe Wookie.

 


Retrouvez tout le code via notre Github

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639