Les interfaces - utilités ?

Les interfaces - utilités ? - C#/.NET managed - Programmation

Marsh Posté le 21-03-2020 à 14:08:20    

Bonjour ,  
 
je profite du confinement pour 'avancer' dans les bases de C-Sharp , je suis plutôt du genre à relire plusieurs fois avant de comprendre  :cry:  
 
Concernant les interfaces :  
 
Je comprends comment utiliser une ou des interfaces, mais à mon stade je n'en comprends pas l'utilité.
 
Sur les 2 exemples suivant  
 
https://www.tutorialspoint.com/csha [...] rfaces.htm
et  
https://openclassrooms.com/fr/cours [...] interfaces
 
On peut tout simplement lancer les méthodes même sans interfaces !  
 
Avez vous d'autres exemples à me proposer, qui puissent me faire comprendre l'utilité des interfaces ?  
 
merci d'avance.  


---------------
Contribuables associés - Arretons les dérives
Reply

Marsh Posté le 21-03-2020 à 14:08:20   

Reply

Marsh Posté le 21-03-2020 à 14:35:39    

dans cette autre exemple  
 
https://www.geeksforgeeks.org/c-sharp-interface/
deux class héritent la même interfaces , c'est un peu plus parlant pour moi.  
sauf que j'aurais  nommé les méthodes différemment  :heink:  


---------------
Contribuables associés - Arretons les dérives
Reply

Marsh Posté le 21-03-2020 à 23:11:26    

Par exemple :

 

Une interface c'est pour introduire une idée d'abstraction. Tu désignes ce que va faire ta classe, par la signature de la méthode, mais sans dire comment elle va le faire. C'est une sorte de contrat.

 

Comme ça, si tu veux qu'une même chose puisse être faite de différentes façons, tu changes juste la classe qui réalise l'interface, alors que le code qui appelle cette interface n'aura pas du tout besoin d'être modifié.

 

C'est le cas le plus trivial à comprendre.

 

Si tu regardes les classes abstraites et le polymorphisme, l'utilité des interfaces te paraitra plus évidente.

Message cité 1 fois
Message édité par TotalRecall le 21-03-2020 à 23:12:07

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 22-03-2020 à 13:17:28    

merci pour ta réponse, je vais voir dans cette direction

TotalRecall a écrit :


 
Si tu regardes les classes abstraites et le polymorphisme, l'utilité des interfaces te paraitra plus évidente.


 


---------------
Contribuables associés - Arretons les dérives
Reply

Marsh Posté le 23-03-2020 à 11:48:27    

Regarde le livre "Head First Design Patterns", c'est un livre très didactique grâce auquel tu percuteras de suite grâce à des exemples concrets et très parlants.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-04-2020 à 20:34:56    

bonsoir,  
j'avais laché le forum , merci pour ton retour, entre temps je me suis payé  
Pro C# 7' by Andrew Troelsen and Philip Japikse et j'arrive à peu près à comprendre l'utilité  :)


---------------
Contribuables associés - Arretons les dérives
Reply

Marsh Posté le 12-01-2021 à 15:05:28    

Le gros intérêt, c'est quand tu vas avoir besoin depuis un code "global" d'exécuter des méthodes sur des classes spécialisées très différentes.
 
Un très bon exemple, c'est IComparable
 
N'importe quelle classe peut (devrait ?) implémenter cette interface, qui permet par exemple d'ordonner une liste d'objet en appelant simplement la méthode du List<T>.Sort()

Reply

Marsh Posté le 15-01-2021 à 10:59:26    

Harkonnen a écrit :

Regarde le livre "Head First Design Patterns", c'est un livre très didactique grâce auquel tu percuteras de suite grâce à des exemples concrets et très parlants.


 
 
oui il est excellent pour démarrer :)trouvable sans grande difficulté en français sur la toile ;)

Reply

Marsh Posté le 05-06-2021 à 12:05:32    

Le design de code c'est des choix.
 
L'utilisation des interfaces, est justifié par :
- un code en gros volume. ( 1 milliers de lignes ... 10 milliers )
- des Types communs dans les traitements à réaliser. ( des objets partout , des tableaux partout , des integers partout , par exemple ).
 
 
Et c'est pour ça que les interfaces existent, et proposent des méthodes intégrées, des standards d'utilisation.
 
C'est des 'outils' "ready to fire", c'est garanti sans erreur lors de l'utilisation.
Bien qu'une bonne gestion de tableaux Array<Type T>, avec un 'tri à bulle' dans une copie de ce tableau, pour 1 ou N colonnes. ça se codes trankilou à un moment.
 
 
Mais le principal est le 0 bug vers la fin du dev,
c'est toujours pratique, et bienvenu.
 
 
Les mots-clés, dans tout les languages, sont trés florissants.
Et c'est vraiment les "méthodes" de ces abstractions ( que ce soit 'interface' / await / async ) qui font que ce sera utile. ou pas.
 
Il faut éviter les confusions et usages à la va vite,
et placer les interfaces au bon endroit de son code.
Une interface peut faire tellement de chose dans un code..
Cherchez le 'ground' de votre code, plutot que d'écrire 'interface' juste une fois parceque vous n'avez pas pu faire autrement.


---------------
Nom : Prénom : Age : Adresse : Ville : Code Postal : Num Trois Tel
Reply

Marsh Posté le 05-06-2021 à 13:26:57    

je sais pas ce que tu fumes mais ça a l'air pas mal

Reply

Marsh Posté le 05-06-2021 à 13:26:57   

Reply

Marsh Posté le 05-06-2021 à 14:05:00    

Globalement ca sonne assez juste mais il y a des phrases bien obscures et plein de trucs mélangés :lol:


Message édité par TotalRecall le 05-06-2021 à 14:05:32

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-06-2021 à 17:23:18    

"Cherchez le 'ground' de votre code, plutot que d'écrire 'interface' juste une fois parceque vous n'avez pas pu faire autrement."
Qui a compris cette phrase ?  :pt1cable:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 23-06-2021 à 17:58:35    

Tu suggères dire que tout ce qui précède était clair ? :o


Message édité par TotalRecall le 23-06-2021 à 17:58:43

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-06-2021 à 18:25:22    

Avec le décodeur "jovalise", ça se comprend à peu près.  :whistle:  
Par contre, sur la dernière phrase, le décodeur a boggué.


Message édité par rufo le 23-06-2021 à 18:25:34

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-07-2021 à 19:07:11    

Désolé pour le déterrage, mais je pige pas de quoi parle djinto.
 
Outre le cannabinol qui suinte de son message, il ne confond pas un peu les interfaces... avec des méthodes privées/scelées ?
 
Parce que dire qu'une interface "peut faire tellement de choses" et "c'est des outils ready to fire" je pige pas.
 
C'est l'inverse d'une interface... qui à la base est une coquille vide, qui ne fait rien d'autre qu'imposer un certain nombre de signatures de méthodes dans les classes dérivées... Ou alors j'ai raté un truc :pt1cable:

Reply

Marsh Posté le 16-07-2021 à 20:55:01    

Je crois que c'est ce qu'il sous-entendait par "ready to fire" (coquille vide mais signature prête à être utilisée).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed