Question

Je suis actuellement en train de parcourir Code Complete et le mot "interface". continue à apparaître! J'essaie de comprendre ce qu'est une interface. Pouvez-vous définir le terme? De plus, qu'est-ce qui constitue réellement une "interface de classe"?

Était-ce utile?

La solution

Je pense qu'un bon moyen de définir une interface est le suivant

  

Une interface est un contrat spécifiant un ensemble de méthodes, de champs et de propriétés qui seront disponibles sur tout objet mettant en œuvre.

L’implémentation réelle d’un langage à l’autre peut présenter de petites différences amusantes, mais le principe est valable.

J'ai envisagé d'ajouter des interfaces implémentées à la liste ci-dessus, mais je l'ai laissée de côté car elle semblait être un peu trop spécifique à la langue. Je pense que ça va parce que l’effet final est presque le même. S'attaquer à plus d'interfaces ne fait qu'ajouter plus de méthodes, de champs et de propriétés au contrat.

Autres conseils

En général, une interface est simplement "à quoi ressemble la classe pour le reste du monde".

Par exemple, cette classe en Java:

class MyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}
On pourrait dire que

n’a que la fonction Bar dans son interface. En interne, il compte quelques autres membres, mais ils sont privés, ils ne sont donc pas visibles du monde extérieur.

Plus généralement, les interfaces sont également des types spécifiques dans le langage. Par exemple, MyClass implémente l'interface IMyClass:

interface IMyClass {
  public void Bar(string s);
}

class MyClass implements IMyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}

L’interface est maintenant exprimée en code. Ainsi, chaque fois qu’une variable de type IMyClass est attendue, un objet de type MyClass peut être utilisé car il implémente l’interface correcte.

C'est un visage extérieur au monde. Habituellement, l'ensemble des méthodes publiques (membres) qu'il expose.

Techniquement, ce serait 2 choses différentes

Une interface serait un contrat public. par exemple

interface ILogger
{
  void Log(String str);
}

Une classe "implémenterait" alors cette interface - en disant qu'elle fournit cette fonctionnalité

class ConsoleLogger : ILogger
{
  public ConsoleLogger() { ... }
  public void Log(String str)
  {
    Console.WriteLine("Console Logger " + str);
  }
  // private stuff
}

Les utilisateurs de ce service / interface ne doivent pas se préoccuper de la façon dont il est implémenté ou de son implémentation. En fonction d’une interface, l’implémentation peut être modifiée à volonté.

L’interface avec une classe est sa "face publique". que d'autres classes peuvent voir. Cela sépare l'implémentation de la classe de la manière dont elle interagit avec les autres classes. De cette façon, différentes implémentations peuvent être permutées et les autres classes n'ont pas besoin de savoir ce qu'il y a derrière l'interface.

Une interface peut inclure des données et des membres de fonction.

L'interface est la définition d'un ensemble de méthodes que la classe peut implémenter. Il est principalement utilisé pour le polymorphisme d'interface.

Une interface est comme une classe mais pas tout à fait. Il a des traits similaires à ceux d'une classe mais ce n'est pas une interface. Une interface a des variables et des méthodes, "tout comme la classe, mais les méthodes déclarées dans interface sont par défaut abstraites (seule la signature de la méthode, pas de corps)".

http://beginnersbook.com/2013/05/java-interface/

Les interfaces ont deux définitions. Cela dépend dans quel contexte le terme Interface est utilisé.

  1. Une interface de classes fait référence à toutes les méthodes publiques implémentées d'une classe.
  2. Une interface en tant que type. En utilisant le mot clé interface pour déclarer une interface.

    interface Movable{ 
        moveStraight();
        moveLeft();
        moveRight();
        stop();
    }
    

    Alors maintenant, une classe, disons, Car peut implémenter l’interface Movable. C'est ce que l'on appelle le contrat. Si la classe Car implémente l'interface Movable, Car garantit de fournir des implémentations pour toutes les méthodes déclarées dans Movables. déclaration.

Pour conclure, une interface est généralement adressée en tant que type (définition 2) dans un contexte de programmation spécifique à un langage. Vous trouverez la première définition moins souvent, généralement dans un contexte théorique ou de conception.

L’exemple classique d’une interface est la commande d’une voiture.

La pause, le gaz et la roue seraient l'interface. Le moteur et autres aspects mécaniques seraient la mise en œuvre. Ces aspects mécaniques peuvent changer, nous ne le saurions pas car notre interface reste la même.

C’est la puissance d’une interface, elle masque les détails de la mise en oeuvre afin que nous puissions travailler à un niveau d’abstraction plus élevé. Nous pouvons généralement utiliser directement les fonctionnalités de l'interface sans nous soucier de la manière dont le code situé en dessous est implémenté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top