Techniques d'intégration multimédia
La programmation orientée-objet est un concept qui effraie la plupart des programmeurs en herbe. Cela semble mystérieux et complexe. En fait, la plupart des langages de programmation modernes vous permettent d'utiliser les principes de la POO, souvent sans vous en rendre compte.
Identité
Chaque objet (instance) issu d'une classe a une identité qui lui est propre. Chaque objet est doté des mêmes caractéristiques que les autres objets issus de la même classe que lui (nom, rotation, age, etc...), mais les valeurs de ces caractéristiques lui sont propres. Exemple: toutes les automobiles ont une propriété couleur mais la valeur de cette propriété est distincte d'une instance à l'autre...
Abstraction
Lorsqu'on regarde un objet de l'extérieur, seulement certaines propriétés et/ou fonctions sont disponibles pour lui faire réaliser des tâches. Le reste du code est "caché" à l'usager de l'objet. Autrement dit, la personne qui utilise une classe n'a pas à savoir tous les détails du code de cette classe: seules les méthodes et propriétés essentielles lui seront offertes.
Encapsulation
C'est le principe selon lequel les constituants du code décrivant un objet sont regroupés dans une classe, où les accès extérieurs et internes aux méthodes et propriétés sont contrôllés de façon à protéger l'intégrité de fonctionnement de l'objet. En gros, l'encapsulation consiste à se soucier de l'intégrité des objets.
Héritage
Construction d'une classe à partir d'une autre, en lui ajoutant quelque chose (en la spécialisant). L'héritage permet de structurer, organiser et hiérarchiser le code. Ce dernier devient modulaire et plus réutilisable, donc mieux adapté au développement de gros projets.
Polymorphisme
Le polymorphisme représente la capacité des objets d'être utilisés comme des objets issus d'autres classes dans des situations similaires.
On distingue 3 types de polymorphisme:
Réutilisation
La programmation orientée-objet permet d'écrire des séries d'instructions spécialisées (classes) permettant de définir des objets et de le réutiliser dans différentes situations. Le programmeur expérimenté peut se constituer s'il le désire des banques de classes facilement réutilisables dans divers projets.
Lisibilité
La POO minimise le nombre de scripts et de lignes de codes requis puisque les mêmes objets sont souvent réutilisés plutôt que réécrits. De plus, la POO est souvent réalisée en faisant usage de règles de rédaction de code qui favorisent le développement de code clair, concis et facilement éditable.
Organisation
Les objets sontissu de classes organisées de façon hiérarchique, ce qui en facilite l'agencement et rends les liens entre divers objets plus clairs, de la même façon que notre diagramme décrivant l'objet "Georges" (voir plus base) facilite la compréhension de cet objet. L'organisation hiérarchique des objets et des codes grâce aux classes rends toute la programmation plus efficace et cohérente.
Imaginez que nous voulions décrire de façon hiérarchisée un individu nommé Georges. Le diagramme pourrait ressembler à ceci:
En effet, Georges fait parti de la superclasse des animaux; comme tous les animaux, il possède des fonctions de base pour respirer, voir, entendre etc. Avec tous les animaux de la classe des omnivores il partage la fonction de pouvoir s'alimenter de végétaux et de protéines animales. Mais il hérite en plus de son appartenance à la classe humain des fonctions reliées à cette classe; imaginer, réfléchir, marcher debout, parler etc.
Voici un exemple d'objet et de ses propriétés et méthodes:
Propriétés et méthodes | Provient de... | |
---|---|---|
Attributs (propriétés) |
|
Héritage de la classe "Animal" |
|
Dans la classe "Humain" | |
Méthodes |
|
Héritage de la superclasse "Animal" |
|
Héritage de la classe "Omnivore" | |
|
Dans la classe "Humain" |
Quand le langage de programmation utilisé le permet, on peut organiser différemment notre exemple.
Puisque après tout, être omnivore, c'est être à la fois carnivore et herbivore, on pourrait dire que la classe Omnivore hérite des méthodes des classes Carnivore et Herbivore.
En théorie, les classes peuvent donc hériter de méthodes venant de plusieurs classes apparentées à la même superclasse.
ATTENTION!
L'héritage multiple est interdit en C#: une classe fille ne peut hériter que d'une seule classe mère.
Mais bien entendu, cette classe mère pourrait elle aussi avoir une classe mère, qui aurait aussi une classe mère, etc...
Les langages C++ et Python, pour ne nommer que ceux-là, autorisent quand à eux l'héritage multiple.
Remarque: Le présent document a été élaboré d'après quelques articles sur la programmation orientée-objet du site www.commentcamarche.net. Malheureusement, ces articles ne semblent plus être disponibles.