2010-11-08 8 views
1

J'étudie actuellement le chapitre Héritage d'un livre C#. Je suis incapable de comprendre la ligne suivante.Présentation de la définition de l'interface du livre C#

Interfaces vous permettent de séparer la définition des objets de leur mise en œuvre afin que les objets peuvent évoluer sans risque d'introduire une incompatibilité dans les applications existantes.

Quelqu'un pourrait-il m'aider à comprendre ce que cette ligne de texte dit avec un exemple?

+0

cette question pourrait vous aider à éclaircir les choses un peu: http://stackoverflow.com/q/1335586/13198 – TheVillageIdiot

+0

Puis-je aussi savoir ce que fait la "définition d'objets" dans la ligne ci-dessus? – Soja

+0

Merci à tous pour votre temps et votre aide. – Soja

Répondre

0
Interfaces enable you to separate the definition of objects from 
their implementation 

La définition des objets dans ce cas fait référence à la partie publiquement exposée d'un objet. Dans l'exemple ci-dessous, il fait référence aux propriétés publiques Name/Age et aux méthodes publiques Insert et Update. Dans la classe ci-dessous, la définition de Person et son implémentation (code utilisé pour implémenter les propriétés et méthodes) est la même que la classe Person.

Class Person 
{ 
    private string _name; //private fields 
    private string _age; //private fields 

    public Name {get {....} set {.....}} //public properties 
    public Age {get {....} set {.....}} //public properties 

    public void Insert() {.......} //public methods 
    public void Update() {.......} //public methods 
} 

NOTE: « ........ » représente le code réel qui sera appelée lorsque ces propriétés/méthodes sont invoquées i.e. leur mise en œuvre.

Maintenant, si je devais faire créer une interface pour cette appelé

Interface IPerson 
{ 
    public Name get; set; //public properties 
    public Age get; set; //public properties 
    public void Insert(); //public methods 
    public void Update(); //public methods 
} 

puis faire Class Person : IPerson alors ce que je l'ai fait est que je suis maintenant séparé la définition à savoir IPerson du i.e. de mise en œuvre Person.

NOTE: Pourquoi est-ce utile est déjà couvert par Aamir et Gravell dans leurs réponses ci-dessus pour que je répète la même coutume

0

Eh bien, je ne suis pas sûr que je serais entièrement d'accord avec la ligne - après tout, vous pouvez toujours mettre un bug dans la mise en œuvre - mais le point est l'abstraction; Si tout ce que vous savez est que IAnimal a une méthode Speak(), vous n'avez pas besoin de connaître Dog, Cat, etc; et vous n'avez pas besoin de savoir quand quelqu'un échange Dog pour DogFacade, LazyLoadedDog, etc .. Tant que la chose qu'ils vous donnent est un IAnimal, vous serez heureux - et n'aura pas besoin de changer le code en aval.

(et si la classe Dog veut exposer une méthode Bark() à la place, c'est très bien, il peut avoir Speak comme mise en œuvre explicite de IAnimal.Speak)

0

Cela signifie que les interfaces vous permettent de définir la base fonctions d'un ensemble de choses. Comment ils vont effectuer ces fonctions est laissé aux choses elles-mêmes. Par exemple, un humain peut marcher mais comment un homme, une femme, une personne âgée, un enfant, etc. se promène est différent mais on peut dire qu'ils marchent tous. Ainsi, une interface est un groupe de fonctions assemblées qui peuvent être implémentées différemment par différentes classes.