86 votes

Polymorphisme - Définir en deux phrases seulement

J'ai examiné d'autres définitions et explications, mais aucune ne me satisfait. Je veux voir si quelqu'un peut définir le polymorphisme en deux phrases maximum, sans utiliser de code ou d'exemples. Je ne veux pas entendre "Vous avez donc un ouvreur de personne/voiture/canette..." ou comment le mot est dérivé (personne n'est impressionné que vous sachiez ce que poly et morph signifient). Si vous avez une très bonne compréhension de ce qu'est le polymorphisme et une bonne maîtrise de l'anglais, vous devriez être en mesure de répondre à cette question par une définition courte, bien que dense. Si votre définition définit précisément le polymorphisme, mais qu'elle est si dense qu'elle nécessite quelques relectures, alors c'est exactement ce que je recherche.

Pourquoi seulement deux phrases ? Parce qu'une définition est courte et intelligente. Une explication est longue et contient des exemples et du code. Regardez ici pour des explications (les réponses sur ces pages ne sont pas satisfaisantes pour ma question) :

Polymorphisme vs surcharge vs surcharge
Essayez de décrire le polymorphisme aussi simplement que possible.

Pourquoi est-ce que je pose cette question ? Parce qu'on m'a posé la même question et que j'ai été incapable de trouver une définition satisfaisante (selon mes critères, qui sont assez élevés). Je veux voir si l'un des grands esprits de ce site peut y parvenir.

Si vous ne pouvez vraiment pas respecter l'exigence des deux phrases (c'est un sujet difficile à définir), il n'y a pas de problème si vous dépassez cette limite. L'idée est d'avoir une définition qui définit réellement ce qu'est le polymorphisme et qui n'explique pas ce qu'il fait ou comment l'utiliser (vous voyez la différence ?).

0 votes

Un nom, une mise en œuvre multiple.

2 votes

On m'a posé cette question lors d'un entretien d'embauche. J'avais l'impression que la poser lors d'un entretien d'embauche était un acte de snobisme élitiste, le genre de chose qu'un employé de Google poserait avec suffisance en supposant que personne ne pourrait y répondre efficacement. Si vous n'avez pas obtenu le poste parce que vous ne pouviez pas y répondre, il est probablement préférable que vous travailliez pour des personnes qui s'intéressent davantage à ce que vous pouvez faire qu'à qui vous pouvez être plus malin.

0 votes

Le polymorphisme est un concept très important à comprendre dans le développement. Je recommande vivement de comprendre au moins sa valeur, sinon sa définition formelle. Je suggère d'être capable d'expliquer au moins le fonctionnement et la valeur du modèle Stratégie.

6voto

S.Lott Points 207588

Polymorphisme == classes multiples + signatures de méthodes identiques + comportement spécifique à la classe.

6voto

siamak Points 188

Il semble que les meilleures définitions soient fournies ici, alors permettez-moi d'ajouter mes deux cents s'il vous plaît, juste pour les autres observateurs. J'espère que cela pourra aider davantage.

Il existe deux types de polymorphisme :

1. Compile-time (static) polymorphism or (ad hoc) polymorphism.

Il s'agit simplement de la surcharge des méthodes et de la surcharge des opérateurs.

2.  Run time or (dynamic) polymorphism.

Le premier terme est hérité de la terminologie Java et C++.

Mais dans le .NET terminologie uniquement la le deuxième ( Je veux dire polymorphisme en temps réel ) est en réalité supposé être du polymorphisme et simplement appelé polymorphisme .

Et pour autant que je sache, il existe trois méthodes pour mettre en œuvre ( temps de fonctionnement ) polymorphisme .

 1. Parametric polymorphism or simply the use of generics (templates in C++).

 2. Inheritance-based polymorphism or subtyping.

 3. Interface-based polymorphism.

Un exemple simple de polymorphisme basé sur l'interface :

interface Imobile
{
    void Move();
}

class Person :Imobile
{
    public void Move() { Console.WriteLine("I am a person and am moving in my way."); }
}

class Bird :Imobile
{
    public void Move() { Console.WriteLine("I am a bird and am moving in my way."); }
}

class Car :Imobile
{
    public void Move() { Console.WriteLine("I am a car and am moving in my way."); }
}

class Program
{

    static void Main(string[] args)
    {
        // Preparing a list of objects
        List<Imobile> mobileList = new List<Imobile>();

        mobileList.Add(new Person());
        mobileList.Add(new Bird());
        mobileList.Add(new Car());

        foreach (Imobile mobile in mobileList)
        {
            mobile.Move();
        }

        // Keep the console open
        Console.WriteLine("Press any key to exit the program:");
        Console.ReadKey();
    }
}

Sortie :

 I am a person and am moving in my way.
 I am a bird and am moving in my way.
 I am a car and am moving in my way.
 Press any key to exit the program:

5voto

Paul W Homer Points 2044

Le polymorphisme est une abstraction de codage logiciel dans laquelle plusieurs entités sous-jacentes différentes (généralement des données, mais pas toujours) partagent toutes une interface commune qui leur permet d'avoir une apparence et un comportement identiques au moment de l'exécution. Nous utilisons cette technique de développement pour imposer un comportement cohérent sur un large éventail d'instances similaires, mais non identiques, avec une mise en œuvre minimale absolue, réduisant ainsi les risques de bogues et d'incohérences.

Paul.

2voto

milot Points 859

Les formes multiples d'un même objet sont appelées polymorphisme.

2voto

Polymorphisme

Différents objets peuvent répondre au même message de différentes manières, ce qui permet aux objets d'interagir les uns avec les autres sans connaître leur type exact.

Via : http://www.agiledata.org/essays/objectOrientation101.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X