Interface (informatique)
Un article de Wikipédia, l'encyclopédie libre.
Vous venez d'apposer le bandeau {{Demande de traduction}}
du Projet:Traduction/*/Demandes.
Veuillez créer (exemple détaillé) la sous-page qui assurera le suivi du processus de traduction en cliquant sur Projet:Traduction/Interface (informatique).
Puis suivez les instructions fournies sur la page ainsi créée.
Une interface définit la frontière de communication entre deux entités, comme des éléments de logiciel, des composants de matériel informatique, ou un utilisateur. Elle se réfère généralement à une image abstraite qu'une entité fournit d'elle-même à l'extérieur. Cela permet de distinguer les méthodes de communication avec l'extérieur et les opérations internes, et autorise de modifier les opérations internes sans affecter la façon dont les entités externes interagissent avec elle, en même temps qu'elle en fournit des abstractions multiples. Elle peut aussi fournir un moyen de traduction entre des entités qui ne parlent pas le même langage, comme entre un être humain et un ordinateur. Étant donné que les interfaces permettent de référencer des objets externes, elles entraînent des coûts de développement supplémentaires par rapport à des communications directes.
L'interface entre un être humain et un ordinateur est appelée interface utilisateur. Les interfaces entre des composants de matériel informatique sont des interfaces physiques. Cet article traite des interfaces logicielles qui existent entre différents composants logiciels et fournissent un mode de programmation par lequel ces composants peuvent communiquer.
Sommaire |
[modifier] Interfaces en pratique
Un élément de logiciel fournit l'accès aux ressources informatiques (comme la mémoire, le CPU, le stockage, etc.) par son système informatique sous-jacent ; la disponibilité de ces ressources à d'autres logiciels peut avoir des ramifications majeures - quelquefois désastreuses -- pour ses fonctionnalités et sa stabilité. Un principe clé de conception est d'interdire l'accés à toutes les ressources par défaut, en autorisant l'accès seulement à travers des points d'entrée bien définis, i.e. les interfaces (voir encapsulation).
Les types d'accés que les interfaces fournissent entre les composants logiciels peuvent inclure : des constantes, des types de données, des types de procédures, exception specifications et des signatures de méthodes. Dans certains cas, il peut être utile de définir des variables comme des parties de l'interface. Cela spécifie souvent aussi la fonctionnalité de ces procédures et des méthodes, soit par des commentaires ou (dans certains langages expérimentaux) par des assertions formelles logiques.
L'interface d'un module logiciel A est délibérément gardée séparée de l'implémentation de ce module. Ce dernier contient le code réel des procédures et méthodes décrites dans l'interface, ainsi que d'autres variables "privées", procédures, etc.. Tout autre module logiciel B (which can be referred to as a client to A) qui interagit avec A est forcé de faire ainsi seulement à travers l'interface. Un avantage pratique de cette méthode est que le remplacement de l'implémentation de A par un autre qui répond aux mêmes spécifications de l'interface ne peut pas causer une défaillance de B — aussi longtemps que son utilisation de A se conforme aux spécifications de l'interface (voir aussi principe de substitution de Liskov).
[modifier] Utilisation des interfaces
Le concept d'interface est la pierre angulaire de la programmation modulaire, un précurseur et un élément standard de la programmation orientée objet. Dans la programmation orientée objet, l'interface d'un objet consiste en un ensemble de méthodes que l'objet doit suivre. Note that the object does not make its instance variables a part of its interface - these are typically accessed by means of accessor methods.
Some object-oriented programming languages mandate that the interface to the object be specified to the compiler separately from the implementation of that object, whilst others relax the requirement. For example, a class in a programming languages such as Objective-C consists of its interface, specified in a header file, and the implementation in the source file. Because of the dynamically typed nature of Objective-C, one can send messages to any object, and the interface to the class becomes important as it specifies the methods the class responds to.
Interfaces were historically derived from the header files of the C programming language by restricting their syntactic context and contents, and making them a part of the language semantics (as opposed to a mere preprocessor feature).
Le langage Java adopte une approche différente du concept d'interface qui existe normalement dans d'autres langages orientés objet (ie., que l'interface spécifiée est l'interface avec la classe), en ce qu'une interface spécifie un ensemble de méthodes qui implémente des fonctionnalités spécifiques, communes à un ensemble de classes. Voir protocole (programmation orientée objet).
Certains langages de programmation (e.g. D, Java, Logtalk) autorisent la définition de hiérarchies d'interface. Ceci autorise une définition de, par exemple, à la fois les versions minimale et étendue d'une interface.
Certains langages de programmation (e.g. Logtalk) supportent une implémentation privée et protégée d'une interface. Ainsi, les méthodes (publiques) déclarées dans une interface peuvent facilement devenir des méthodes privées ou protégées d'une classe qui implémente l'interface.
Le langage Eiffel inclut dans l'interface d'une classe son invariant et la pré- et postconditions des méthodes de la classe. Ceci est essentiel à la méthodologie de conception par contrat, et peut être considéré comme une extension des conditions imposées par les types d'arguments. Ces règles peuvent être spécifiées dans l'implémentation d'une classe ou dans un ancêtre qui peut quitter les méthodes non implémentées. They are extracted by language processors to provide an interface view in the development environment and to generate run-time assertions (checks) in debug versions. Le langage assure aussi que les classes derivées obéissent aux contrats de leurs ancêtres.
[modifier] Langages qui fournissent des facilités d'interfaçage
Certains langages de programmation ont différentes méthodologies pour permettre la réalisation d'interfaces. En général, tout langage de programmation peut implémenter une interface, mais les langages de programmation suivants offrent des facilités d'interfaçage spécifique d'une façon ou d'une autre :
- ActionScript in Flash
- Ada
- C#
- D
- Delphi
- Eiffel
- Java
- Logtalk
- Mesa
- ML
- Modula
- Modula-2
- Modula-3
- Oberon
- Objective-C
- PHP
- Python
- REALbasic
- Unified Modeling Language
- Visual Basic
[modifier] Interfaces de programmation
Une interface de programmation (Application Programming Interface ou API) définit l'interface entre le programmeur d'une application et une bibliothèque logicielle.
[modifier] Voir aussi
- Abstraction inversion
- Implementation inheritance
- Inheritance semantics
- Interface utilisateur
- Software componentry
- Modularité
- Application programming interface
- Application binary interface
- Héritage (informatique)
- Bus informatique
- Interface réseau
- Interface (Programmation orientée objet)