JavaRush /Blog Java /Random-FR /Pratique de l'utilisation du polymorphisme

Pratique de l'utilisation du polymorphisme

Publié dans le groupe Random-FR
Bonjour! Aujourd'hui, nous terminons une série de conférences sur les principes de la POO . Dans cette leçon, nous parlerons du polymorphisme. Pratique de l'utilisation du polymorphisme - 1Le polymorphisme est la capacité de traiter plusieurs types comme s'il s'agissait du même type. Dans ce cas, le comportement des objets sera différent selon le type auquel ils appartiennent. Examinons cette déclaration plus en détail. Commençons par la première partie : "la possibilité de travailler avec plusieurs types comme s'il s'agissait du même type". Comment différents types peuvent-ils être une seule et même chose ? Cela semble un peu étrange :/ C'est en fait simple. Par exemple, cette situation se présente avec l’utilisation normale de l’héritage. Voyons voir comment ça fonctionne. Disons que nous avons une classe parent simple Catavec une seule méthode run()- « run » :
public class Cat {

   public void run() {
       System.out.println("Бег!");
   }
}
Créons maintenant trois classes qui héritent de Cat: Lion, Tigeret Cheetah, désignant le lion, le tigre et le guépard.
public class Lion extends Cat {

   @Override
   public void run() {
       System.out.println("Лев бежит со speedю 80 км/ч");
   }
}

public class Tiger extends Cat {

   @Override
   public void run() {
       System.out.println("Тигр бежит со speedю 60 км/ч");
   }
}

public class Cheetah extends Cat {

   @Override
   public void run() {
       System.out.println("Гепард бежит со speedю до 120 км/ч");
   }
}
Nous avons donc 3 classes. Simulons une situation dans laquelle nous pouvons travailler avec eux comme s'il s'agissait de la même classe. Imaginons qu'un de nos chats soit malade et ait besoin de l'aide du Dr Aibolit. Essayons de créer une classe Aibolitcapable de soigner les lions, les tigres et les guépards.
public class Aibolit {

   public void healLion(Lion lion) {

       System.out.println("Лев здоров!");
   }

   public void healTiger(Tiger tiger) {

       System.out.println("Тигр здоров!");
   }

   public void healCheetah(Cheetah cheetah) {

       System.out.println("Гепард здоров!");
   }
}
Il semblerait que le problème soit résolu : la classe est écrite et prête à être utilisée. Mais que ferons-nous si nous voulons élargir notre programme ? Aujourd’hui, nous n’avons que 3 espèces : les lions, les tigres et les guépards. Mais il existe plus de 40 espèces de chats dans le monde. Imaginez ce qui se passerait si nous ajoutions au programme des cours séparés pour les chats de Pallas, les jaguars, les Maine coons, les chats domestiques et tous les autres. Pratique de l'utilisation du polymorphisme - 2Le programme lui-même, bien sûr, fonctionnera, mais la classe Aibolitdevra constamment ajouter de nouvelles méthodes pour traiter chaque type de chat, ce qui lui permettra d'atteindre des tailles sans précédent. C'est là qu'entre en jeu la propriété du polymorphisme : « la capacité de travailler avec plusieurs types comme s'il s'agissait du même type ». Nous n'avons pas besoin de créer d'innombrables méthodes qui feront la même chose : soigner le chat. Une seule méthode suffira pour tous les cas à la fois :
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
   }
}
healCat()Nous pouvons passer à la fois des objets Lionet Tigerdes objets à la méthode Cheetah- ils sont tousCat :
public class Main {

   public static void main(String[] args) {

       Aibolit aibolit = new Aibolit();

       Lion simba = new Lion();
       Tiger sherekhan = new Tiger();
       Cheetah chester = new Cheetah();

       aibolit.healCat(simba);
       aibolit.healCat(sherekhan);
       aibolit.healCat(chester);
   }
}
Sortie de la console :

Пациент здоров!
Пациент здоров!
Пациент здоров!
C'est ainsi que notre classe Айболитpeut travailler avec différents types comme s'il s'agissait du même type. Passons maintenant à la deuxième partie : "dans ce cas, le comportement des objets sera différent selon le type auquel ils appartiennent". Ici aussi, tout est simple. Dans la nature, tous les chats courent différemment. Au minimum, leur vitesse de course diffère. Parmi nos trois animaux de compagnie, le guépard est le plus rapide, tandis que le tigre et le lion courent plus lentement. Autrement dit, leur comportement est différent. Le polymorphisme ne nous donne pas seulement la possibilité d’utiliser différents types comme un seul. En même temps, cela permet de ne pas oublier leurs différences et de préserver les comportements propres à chacun d’eux. Cela peut être compris avec cet exemple. Disons qu’après une guérison réussie, nos chats ont décidé de courir un peu pour fêter ça. Ajoutons ceci à notre classeAibolit :
public class Aibolit {

   public void healCat(Cat cat) {

       System.out.println("Пациент здоров!");
       cat.run();
   }
}
Essayons d'exécuter le même code pour traiter trois animaux :
public static void main(String[] args) {

   Aibolit aibolit = new Aibolit();

   Lion simba = new Lion();
   Tiger sherekhan = new Tiger();
   Cheetah chester = new Cheetah();

   aibolit.healCat(simba);
   aibolit.healCat(sherekhan);
   aibolit.healCat(chester);
}
Et voici à quoi ressemblera le résultat :

Пациент здоров!
Лев бежит со speedю 80 км/ч
Пациент здоров!
Тигр бежит со speedю 60 км/ч
Пациент здоров!
Гепард бежит со speedю до 120 км/ч
Ici, nous voyons clairement que le comportement spécifique de nos objets a été préservé, même si nous avons passé les trois animaux dans une méthode, « généralisant » chacun d'eux à Cat. Grâce au polymorphisme, Java se souvient parfaitement qu'il ne s'agit pas seulement de trois chats, mais bien d'un lion, d'un tigre et d'un guépard, qui courent différemment. C'est le principal avantage de l'utilisation du polymorphisme-flexibilité . Lorsque nous devons créer des fonctionnalités communes à de nombreux types, les lions, les tigres et les guépards se transforment simplement en « chats ». Tous les animaux sont différents, mais dans certaines situations, un chat est un chat, quelle que soit l'espèce à laquelle il appartient :) Voici une confirmation vidéo pour vous.
Lorsque cette « généralisation » n’est pas requise, et qu’au contraire nous avons besoin que le comportement des espèces soit différent, chaque type se comporte différemment. Grâce au polymorphisme, vous créez une interface unique (ensemble de méthodes) pour un large éventail de classes. De ce fait, la complexité des programmes est réduite. Même si nous étendions le programme à 40 types de chats, nous aurions toujours l'interface la plus simple possible : une méthode run()pour les 40 chats.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION