Comment utiliser la POO dans vos applications ? (private, public, protected)

fermer la fenetre

Des Applications Performantes Sans Vous Prendre La Tête !

Recevez la formation "Développement Facilte" GRATUITEMENT
Avec tous les Codes Sources Commentés
 
(Les événements, la programmation orientée objets, les modèles de conception, Les éditeurs, les outils, 
l'efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)

Renseignez votre prénom et votre adresse email ci-dessous :

Ce cours est la suite du précédent sur le thème “Commencez avec la Programmation Orientée Objet“. Vous allez entrer dans le concret en découvrant les différences entre public, private, protected pour les classes, les méthodes, les propriétés. Comme d’habitude, ces concepts s’appliquent dans la majorité des langages de programmation nouvelles technologie. [ppmaccordion][ppmtoggle title=”Afficher la version texte de la vidéo”]

Comment utiliser la POO dans vos applications ? (private, public, protected)
Bonjour, et bienvenu sur Développement Facile.
Dans ce nouveau tutoriel, vous allez apprendre à utiliser la programmation orientée objet, dans vos applications.

Utiliser la POO quotidiennement !
Vous allez apprendre à connaître les différences entre public, private, protected et static, pour vos classes, les méthodes, les variables. L’utilité des variables globales, des constantes. Dès maintenant vous allez mettre en place les bonnes pratiques dans votre développement, toujours dans le but de créer des applications performantes.

Les différents accès à une classe
Il existe différentes possibilités pour accéder à une classe.
– Une classe peut être public, elle est visible par tous, accessible partout, tout le monde peut l’instanciée.
– Une classe private n’est accessible qu’à partir du fichier où elle est définie, valable pour seulement certains langages, dans d’autres langages, toutes les classes sont public. Ca dépend des langages. Dans votre langage de programmation que vous utilisez vous avez peut être des classes que vous pouvez définir en private, auquel cas vous pouvez accéder, les instancier, uniquement à partir du fichier ou elles sont définies.
– Une classe protected, elle est visible par la même classe ET celles qui en héritent et seulement celles qui en héritent, pas de l’exterieur.
– Une classe final avec la propriété final, uniquement valable dans certains langages, de programmation. Elle ne peut pas être étendue, c’est à dire qu’il n’est pas possible de faire de l’héritage avec une classe de ce type là.

Les propriétés (ou attributs) d’une classe
C’est comme une classe, vous avez les mêmes paramètres.
– Une propriété public, ça veux dire qu’elle est accessible depuis n’importe quelle partie du code, donc vous avez créé une instance de votre classe, un objet, donc l’objet voiture1.nom, nom est une propriété public, une variable public de votre classe.
– Une propriété private, est accessible que depuis la même classe, donc c’est à dire que de l’extérieur, si vous créez une instance voiture, voiture.couleur, si couleur est définie en private, vous ne pourrez pas accéder à la propriété couleur directement. Il vous faudra passer par une méthode qui le permet. Il faut savoir que les classes qui héritent d’une autre classe, n’ont pas accès aux attributs ou aux propriétés private.
– Une propriété peut être protected, elle est accessible depuis la même classe ET également depuis les classes qui en héritent. Ce type de propriété vous permet, pour l’héritage, private, la propriété reste uniquement cantonné à la même classe et pas celle qui en hérite, et protected ça permet de transférer les propriétés, elles peuvent être modifiées par les classes qui en héritent.
– Vous avez également des propriétés static, qui sont uniquement accessibles depuis la classe elle-même, et pas depuis les instances, donc depuis la classe, qu’est ce que ça veux dire ? Globalement on les appelle par le nom de la classe, voiture.color, par exemple, pour accéder à la couleur, une propriété static.

Les méthodes d’une classe
Tout ce qui est méthode, permet de manipuler votre objet, par exemple, une instance de voiture, voiture1.getdetail, voiture1.getcolor. Ça vous renverra la couleur de la voiture, les détails de la voiture, vous pouvez également avoir des propriétés .setdétail.
En public, ce sont des propriétés public, quand vous accédez à partir de l’objet lui-même, une méthode public est accessible depuis n’importe quelle partie du code.
Vous avez également des méthodes private, qui ne sont accessible que depuis la classe elle-même. C’est le principe des fonctions que vous déclarées dans les classes, les classes qui héritent n’ont pas accès aux méthodes private, les méthodes private c’est uniquement pour l’algorithme, le cœur de votre classe.
– Une méthode protected, est, elle, accessible depuis la même classe et toutes celles qui en héritent. C’est exactement le même principe que les propriétés. Si vous avez compris les attributs public, private, protected, static pour les propriétés, et également pour les classes, pour les méthodes, c’est le même principe de fonctionnement.
– Vous avez également des méthodes static, qui sont accessibles uniquement depuis la classe, pas depuis les instances. C’est à dire, nom de la classe voiture.getdetails, par exemple.

Les constantes d’une classe
Vous avez également des constantes. Suivant le langage de programmation, le mot clé peut-être différent.
– private const est une constante accessible uniquement depuis la classe.
– public const est une constante accessible depuis n’importe quelle partie du code.
– Une variable déclarée comme constante ne peut pas être modifiée pendant l’exécution de votre application. Souvent on utilise des constantes pour définir des choses, des paramètres de configurations bien fixes dans votre application, qui ne seront pas amenés à être modifiés pendant l’exécution de votre application.
Si vous souhaitez modifier des paramètres de configuration pendant votre application, utilisez plutôt le modèle singleton que vous allez apprendre, d’ailleurs, dans un prochain cours.

Les Getters/Setters
Je vais vous montrer un petit peu les getters/setters également qui vous permettent d’accéder en lecture et écriture à des propriétés private d’une classe. Par exemple, vous avez une propriété couleur de la voiture, elle s’appelle couleur de la voiture, c’est un peu long, vous l’avez mis en private, et vous souhaitez que les développeurs, les objets puissent accéder à cette propriété rapidement, mais toujours en conservant cette propriété private. Vous avez les getters/setters, qui vous permettent d’accéder à cette propriété directement en simplifiant son accès. Au lieu de faire voiture1.couleurdelavoiture, vous pouvez appeler voiture1.c qui va automatiquement renvoyer, donc soit vous renvoyer en lecture la propriété couleur, soit vous pouvez la modifier en écriture.
C’est vraiment très pratique les getters/setters pour encapsuler l’information.
Avant de jouer à ca, je vais vous montrer un petit peu, des exemples de classes, en pratique vous avez sur la classe voiture en PHP, des propriétés private, c’est à dire qu’elles ne sont pas accessibles par l’extérieur, donc si vous créez une instance de la classe voiture, vous ne pouvez pas accéder à la couleur, ni à la marque. Par contre, vous pouvez accéder à la propriété public nom, vous pouvez faire, voiture1.nom, pour accéder directement au nom, donc le constructeur, vous pouvez manipuler les propriétés comme vous le souhaitez. Là, vous avez une méthode private, qui n’est pas accessible de l’extérieur, donc elle sers uniquement à l’intérieur de la classe, elle à des méthodes public, par exemple, pour changer la couleur, rajouter des options à votre voiture, récupérer les détails, et les getters/setters, donc .type au lieu d’appeler voiture1.type pour accéder à la propriété type de la voiture, pour la modifier avec un setter ou un getter, pour la récupérer vous faites voiture.type, ça permet de modifier directement la propriété.
En action Script, vous remarquez que c’est à peu près la même syntaxe, il y a quelques petites choses qui changes, mais le principe de fonctionnement comme je vous l’ai dis, de la programmation orientée objet, des stratégies que vous apprenez sur Développement Facile, restent valables quelque soit le langage de développement, les propriétés private, une classe public, qui est instanciable depuis n’importe où, accessible depuis n’importe où. Des méthodes privées et des méthodes publiques. Et là je vous montre un petit peu comment utiliser la classe voiture en PHP, vous instanciez la voiture, ici, en faisant une nouvelle instance de la voiture, et avec Clio, vous pouvez modifier son nom qui est une propriété public comme vous l’avez vu, le type qui a un getter/setter, qui va modifier cette variable-ci, le type, Stype, mais vous remarquez que vous accédez directement au .type, la méthode couleur qui est public, ajoutOption qui est une méthode public. En action Script c’est à peu près le même principe de fonctionnement, je me mets en FlashactionScript, pour créer une nouvelle instance de voiture, accéder à sa propriété public, à son getter/setter, à ses méthodes.

A vous de jouer !
Donc maintenant c’est à vous de jouer ! Sous cette vidéo, comme d’habitude vous trouverez un exemple de code source, et mettez-le en pratique dès maintenant. Tout les conseils de ce cours dans vos applications, créer des classes, définissez bien les méthodes de vos classes, soit en public, soit en private ou en protected, en fonction de l’utilisation de votre classe, est-ce qu’elle va être étendue, est ce que c’est une classe qui doit être instanciée de l’extérieur, et posez moi toutes vos questions sous ce cours.
Je vous dis à bientôt pour un prochain cours de Développement Facile.

 

[/ppmtoggle][/ppmaccordion]

Mise en pratique

En fonction du comportement, des actions de la classe, de la méthode, de la propriété, choisissez l’attribut adéquate (public, private ou protected).

Downloads

Comment déterminez-vous l’attribut à utiliser ?

Partagez vos astuces pratiques pour déterminer le type d’attribut (public, private ou protected) que vous utilisez et selon quels critères (pour une classe, méthodes et propriétés).

Créez des Applications Performantes avec la Formation Gratuite Développement Facile !

Recevez des Cours Vidéos avec les codes sources 
(Les événements, la POO, les modèles de conception, Les éditeurs, 
efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)

5 Comments

  • Franck-df

    9 juin

    Bonjour Matthieu et à ses étudiants!

    Félicitations pour ce travail magnifique et efficace.

    En tant que passionné de la programmation, je suis surtout admiratif de votre travail, et croyez bien que c’est parce que j’y attache de l’importance que je souhaite faire part des demandes suivantes.

    Puis-je faire les suggestions d’améliorations suivantes:

    1. Plus de cohérence dans le vocabulaire/langue: Si on dit “private, protected” alors il est cohérent de le prononcer en anglais (“praille-vète” plutôt que “prie-vatteu” 🙂 (“Pro-teck-tide” plutôt que “pro-tèque-tède”)
    Comme parfois vous utilisez tantôt du français (privé, protégé) tantôt de l’anglais, c’est moins cohérent. Je préférerais qu’on utilise tout le temps le français (publique, privé, protégé, statique) commme cela pas de problème de prononciation et une meilleure cohérence sur l’ensemble des supports de formation.

    2. Pourrions-nous avoir l’ensemble des sources présentés dans la vidéo ? Pas seulement l’actionScrip, mais aussi le PHP et les autres?

    3. Dans l’exemple fourni, pourrions-nous savoir l’intérêt d’avoir définit une variable publique (type) pour ensuite avoir définit une fonction pour la modifier? Ceci semble incohérent, mais je n’ai peut-être pas compris l’exemple fourni. Si vous êtes d’accord avec ma remarque, merci d’amender votre source, car vous tenez certainement à présenter des sources qui servent d’exemple

    4. Pour Notepad++ et la coloration syntaxique, a priori, je ne suis pas un expert mais on doit pouvoir configurer automatiquement la coloration en fonction du type de fichier (l’extension). Sinon c’est perturbant pour un débutant qui ne comprend pas forcément pourquoi vous faites une action particulière, surout que vous ne l’expliquez pas vraiment. Autant régler cela une fois pour toute, ça fait plus professionnel.
    D’ailleurs vous pourriez sautez sur l’occasion pour faire un petit module sur l’utilisation basique de vos éditeurs de source favoris, cela me semble très important.

    KUTGW

    ++Franck

    • Matthieu

      26 juin

      Bonjour Franck,

      Merci pour votre retour détaillé.
      Désolé votre commentaire était classé en spam, je viens juste de le voir…

      1- Bien vu votre remarque sur l’anglais, moi aussi, j’essaye de toujours présenter au maximum tous les mots techniques en français.
      Il arrive encore sans m’en rendre compte que j’utilise des termes anglais avec un accent “français”…

      2- J’ai seulement mis le code source ActionScript, car c’est exactement le même principe de fonctionnement avec les autres langages. Seule la syntaxe change.
      Il y a plusieurs de code source dans les autres langages, sur les autres cours, en PHP par exemple…

      https://www.programmation-facile.com/syntaxe/php/

      3- Effectivement, cela est incohérent. Dans ce cours, je souhaite surtout expliqué de façon pratique le fonctionnement des différents terme. Et par simple hasard (je fais les cours en direct), j’ai utilisé ce cas incohérent…

      4- Merci pour votre suggestion, justement, j’ai prévu un pack spécial “environnement de travail et logiciels pour les développeurs”, le temps de préparer tout cela cette été. Les cours dédiés arrivent bientôt.

      A bientôt,

      Matthieu

  • mindster

    27 juin

    Bjr
    Bien je suis très intéressé par ce que vous faites, et comment vous le faites.
    Le hic, c’est que la j’ai l’impression d’avoir deux pages superposé et je n’arrive pas a voir l’écran en totalité.

    J’avais déjà eu un souci technique auparavant.

    Comme tout le monde, je fuis les soucis.