Aller au contenu

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

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). [file_download style= »2″][download title= »Exemple private, public avec ActionScript » icon= »style1-Zip-64×64.png » file= »https://etnbyixar3c.exactdn.com/wp-content/uploads/2013/10/exemple-flash-public-private.zip » package= » » level= » »]Exemple de création de classes avec ActionScript. Découvrez la syntaxe pour les getter / setter, des méthodes et des propriétés public et private.[/download][/file_download]

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).