La programmation orientée objet a simplement pour but de faire correspondre un peu plus encore les techniques de programmation à ce que l'on rencontre dans la vie de tous les jours.
En effet, nous sommes en permanence entourés d'objets, de choses, dont les caractéristiques, les valeurs propres, sont intimement liées avec l'utilisation même de l'objet.
Ainsi, quand on regarde une porte, elle peut etre ouverte ou fermée, verouillée ou non, et toutes les actions que nous pouvons entreprendre dessus n'auront en effet pour seul but que de modifier l'état de cette porte.
De même, il ne viendrait sans doute à l'idée de personne d'essayer d'enfoncer un clou dans un mur à l'aide d'une tasse ou d'un verre.
La programmation Orientée Objet n'a été créé que dans le but de permettre de lier intimement les données avec l'utilisation qui en est faite, ce qui présente de certains avantages, entre autres, en termes de réutilisabilité du code et de sécurisation des données.
La programmation séquentielle classique présente en effet des inconvéniants majeurs liés au fait que les fonctions et procédures créées pour utiliser les données sont tout à fait indépendantes des données qu'elles doivent utiliser:
Si vous avez pris la peine de lire la section «principe de programmation», vous êtes sans doute convaincu de la nécessité de définir clairement les besoins de l'application que vous voulez créer.
Cependant, si vous avez la possiblité de parler avec des développeurs de ce qu'ils considèrent comme vrai en ce qui concerne les besoins identifiés au départ de leur discussion avec les utilisateurs, ils vous diront sans doute que
- Les besoins sont incomplets
- Les besoins sont souvent faux
- Les besoins sont trompeurs
- Les utilisateurs ne disent pas tout
Vous obtiendrez même souvent une réponse proche de
Les besoins changent tout le temps
Mais vous n'entendrez jamais une développeurs vous dire que
L'utilisateur m'a tout de suite indiqué tout ce qu'il fallait pour créer l'application qu'il attendait
Les raisons de ces réponses dans l'ensemble si négatives sont multiples, et tournent généralement autour des thèmes:
Tout cela fait que les besoins déterminés d'une application sont en perpétuelle évolution. Même le fait que vous soyez l'utilisateur de l'application que vous voulez développer ne changera rien à cette évolution.
Je vous expliquais, dans la section principe de programmation, qu'un problème complexe peut toujours être subdivisé en plusieurs problèmes plus simple à résoudre, et cela restera vrai quoi qu'il arrive.
Cependant, la constante évolution des besoins fait apparaitre l'une des principales limites de cette approche.
Imaginons, simplement, que vous vouliez créer une application qui affiche des formes géométriques à l'écran.
Vous commencerez, vraissemblablement, par " découper" l'affichage des formes avec celles qui vous viendront rapidement à l'esprit: rectangle, cercle, etc.
Mais, plus ou moins rapidement, vous vous rendrez compte que vous avez oublié de prendre en compte les triangles, les élipses, l'oval, le paralélograme, voire volumes…
Et les modifications à apporter à ce que vous avez déjà fait seront d'autant plus importantes que les données permettant le tracé de chacune de ces formes seront différentes de celles que vous avez déjà envisagées.
C'est tout le but recherché par le paradigme de programmation orientée objet.
Copyright (©) 2005 (Philippe Dunski)
Ce cours est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).
Ce cours est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
Cependant, l'auteur apprécierait grandement que vous lui fassiez part de toute modification apportée à son contnu
Vous pouvez le contacter par mail à l'adresse koala01@free.fr
Vous pouvez trouver une adaptation française de la licence GNU/GPL à l'URL http://www.linux-france.org/article/these/gpl.html