Class abstraites et interfaces, à quoi ça sert ?

Petit nouveau ! | 9 Messages

22 mars 2010, 23:32

Bonjour,

J'apprends la POO et j'ai bien du mal à comprendre certaines choses, mais plus particulièrement les choses abstraites.
Les methodes abstraites d'une class abstraite Parrent sont détruites et recrées dans une class Enfant qui à des methodes du même nom, et une class interface est identique à une class abstraite à la différence pret que tout sont contenu est abstrait sans qu'on ai besoin de le préciser. C'est ce que j'ai compris, mais j'espère m'être trompé, car sinon je n'en vois pas l'utilité !

Voici un exemple pris sur un autre site :
<?php
    interface iMaClasse
    {
        public function methode1();
        public function methode2();
    }
    
    class MaClasse implements iMaClasse
    {
        protected $attribut;
        
        public function methode()
        {
        
        }
        
        // Ne pas oublier d'implémenter les méthodes de l'interface !
        
        public function methode1()
        {
        
        }
        
        public function methode2()
        {
        
        }
    }
?>

Si les methodes iMaClass sont de toute manière détruite et recrée, pourquoi créer cette class ? Avez-vous des exemples (simples) qui montrent l'utilité de créer des méthodes abstraites s'il vous plait ?

J'espère que vous saurez m'expliquer ça, merci ! :D

ViPHP
ViPHP | 2287 Messages

22 mars 2010, 23:52

Bonjour,

Un bon post de zeus sur le sujet : php-oriente-objet/concept-interface-t250936.html
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 9 Messages

23 mars 2010, 00:38

Sa réponse est très clair, merci à lui. :D

Donc j'ai saisi pour les class abstraites et je comprend leurs utilités (super exemple avec les véhicule), et les implements je comprend aussi, mais je n'en aurait pas l'utilité je pense (c'est peut-être pour une meilleur organisation, pour le travail en groupe par exemple ?).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 mars 2010, 00:46

En complément des explications de zeus, j'ajouterais que l'intérêt des interfaces et des méthodes abstraites prend également plus de sens lorsque tu travailles en équipe sur un projet.

Pour reprendre l'exemple de zeus, je peux créer une classe Véhicule en spécifiant une méthode abstraite faitLePlein(). Je peux alors te laisser le soin de développer la classe Voiture ou Moto, dans laquelle je serais sur de retrouver ma méthode implémentée.
N'importe quel développeur peut ensuite utiliser ta classe, et sachant qu'il s'agit d'un Vehicule, il pourra faire le plein les yeux fermés, sans avoir besoin de savoir où se trouve le réservoir du véhicule ni de connaitre le type d'essence à utiliser :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

23 mars 2010, 02:26

Merci pour le complément d'explication Ryle.

J'ai cherché un peu sur les sites les plus connus mais je ne trouve pas, je cherche des tutoriels (pour débutants^^) qui me permettraient de m'exercer en POO sur des choses concrètes comme un livre d'or par exemple. Il y a beaucoup de tutoriels pour débutants sur un site pour les zero dont je ne citerai pas le nom ( #-o ), mais par exemple, il y a un tutoriel pour créer un espace membre et ils nous donnent des class toutes faites sans explication (donc inutile), j'aimerai bien savoir comment créer une class pour gérer des formulaires plutôt que d'apprendre à en utiliser une par exemple. ^^

Ce n'est pas le but du sujet mais pouvez-vous me donner quelques liens si vous connaissez de bons tutoriels ? :D