POURQUOI CE BLOG, POUR QUI ?


POURQUOI CE BLOG, POUR QUI ?
Ce Blog s'adresse à tous ceux qui sont passionnés par les sciences informatiques , Professionnels,Etudiants,Amateurs ...
Les sujets exposés dans la suite se rapporteront essentiellement sur l'analyse informatique,la programmation,le développement ainsi que à l'architecture IT.
QUI SUIS JE ?
Je suis Kangulungu Lubilanji, Consultant-Freelance sur les technologies .NET,C#,ASP.NET ... Contactez moi pour plus d'informations.

La Programmation OO: Chapitre 1. Principe de Base

Chapitre 1. Principe de Base : Quel genre d'objet pour l'informatique ?
Ce chapitre a pour but une introduction aux briques de base de la conception et de la programmation orientée objet (OO). Il s'agit pour l’essentiel des notions d'objet, de classe,  de message et d'héritage.

On  peux souligner cette notion de trio: < entité , attribut , valeur >
Il est possible dans tous les langages informatiques de stocker et de manipuler des objets en mémoire, comme autant d'ensemble de couples attribut/valeur.

Les objets sont structurellement  décrit par un premier ensemble d'attributs de type primitif (tel qu'entier, réel ou caractère) qui permet de déterminer l'espace qu'ils occupent en mémoire.

Le Référent d'un objet,c'est à dire le nom  de l’objet (ex : Object 1,Object 2, .. Object n),contient l'adresse physique de l'objet en memoire,cette adresse peut être codée sur 32 bits,64 bits ou autre en fonction du processeur et du système d'exploitation.Il est dès lors important de souligner que ce référent doit être unique à chaque objet.

Cela dit on peut se poser une  question à savoir si plusieurs référents peuvent pointer sur un même objet  ou si un même objet peut  avoir plusieurs noms ? La réponse est "OUI".
Grâce au mécanisme  puissant et souple de référence informatique ,à savoir l'adressage indirect
C'est la possibilité pour une variable d'être associée à une adresse physique d'un emplacement contenant lui, cette donnée.Il devient même possible de différer le choix de cette adresse pendant l’exécution du programme, tout en gardant la même variable.






On acceptera à ce stade-ci qu'il est utile qu'un objet séjourne en mémoire tant qu'il est possible de le référer.Sans référent un objet est bon pour la casse puisque inaccessible.

L'objet et ses constituants : Il faut séparer physiquement ce que les autres objets doivent savoir d'un objet   donné, afin de solliciter ses services, de ce que ce dernier requiert pour son fonctionnent, a savoir la mise oeuvre de ces même services.Il y a des relations de type composition, où certains se trouvent contenus dans d'autres et ne sont accessibles qu'à partir de ces autres.Leur existence  dépend entièrement de celle des objets qui les contiennent, on parle alors d'objet composite.
Exemple : Le moteur d'une voiture. (si on détruit l'objet voiture on détruit implicitement l'objet moteur). 


D'autres Modes de mise en relation entre objets devront être considérés, qui permettent à un premier de se connecter facilement à un deuxième, mais sans que l'existence de celui-ci ne soit entièrement conditionnée par l'existence du premier.
Exemple : Le  passager d'une voiture. (si on détruit l'objet voiture on ne détruit pas l'objet passager, car l'objet passager ne dépend pas de l’objet voiture).

Les différents états d'un objet : Les objets changent donc d'état, continûment, mais tout en préservant leur identité, en restant ces mêmes objets qu'ils ont toujours été. Les objets sont dynamiques, la valeur de leurs attributs change dans le temps soit par des mécanismes qui leur sont propre,soit en raison d'une interaction avec un autre objet.
Le cycle de vie d'un objet lors de l'exécution d'un programme orienté objet, se limite à une succession de changements d'états, jusqu'à sa disparition de la mémoire centrale.

Dans la mémoire dite centrale RAM ou vive d'un ordinateur, ne se trouve toujours installés que deux types d'informations, les données (ou valeurs des attributs) stockées sur une partie leur est propre et les instructions sur une autre partie également propre aux instructions  qui utilisent et modifient les données rien d'autre, le tout lié dans ce que l'on appelle Classe.

La Classe : C'est la structure de données en POO qui unit en son sein tous les attributs de l'objet et toutes opérations, opérations que l'on désigne couramment par méthode.Les méthodes s'occupent de la partie active de la "classe" 
La classe est ce contrat qui lie à vie les attributs de l'objet et les méthodes qui utilisent ces attributs.Tout devra impérativement respecter ce qui est dit par classe,sinon gare au compilateur.
S'agissant d'une variable manipulée, on parle de l'objet comme d'une instance de sa classe et de la classe comme du type de cet objet.Chacun des attributs de l'objet seront uniquement ceux prévus dans leur classe. D'où l'intérêt, bien sûr de garder la définition de la classe séparée mais partagée par toutes les instances de celles-ci.Non seulement c'est la classe qui détermine les attributs (leur type) sur lesquels les méthodes pourront opérer mais, seules les méthodes déclarées dans la classe peuvent de facto manipuler les attributs les objets typés par cette classe comme suit : 
class MaClasse1 
       int attribut1;
       int attribut2;
            .....
       int attributn;
       méthode1() {
             attribut1 = attribut2 + 1 ;
             .....
       }
}
Lier la méthode à  l'objet : On lie une méthode f ( x ) à l'objet  "a" , sur lequel elle doit s'appliquer, au moyen d'une instruction comme : a . f ( x ). Par cette écriture, la méthode f ( x ) saura comment accéder aux seuls attributs de l'objet, ici les attributs de l'objet "a" qu'elle peut manipuler, et dont l'adresse est en effet renseignée par "a".
Les interactions entre objets : Les interactions entre objets se font grâce aux méthodes  qui par ailleurs sont prévus dans certains cas pour recevoir des arguments d'un quelconque type,cela afin de leur permettre d'affiner leur effet en fonction de la valeur de l'argument.
Méthode : C'est un regroupement d’instructions qui ne s'exécute toujours que sur un objet précis.
Envoi de message : Le seule mode de communication entre deux objets revient à la possibilité pour le premier de déclencher une méthode sur le second, méthode déclarée et définie dans la classe de celui-ci. On appellera ce mécanisme de communication "envoi de message" du premier objet vers le second.

Les objets entre eux sont soumis à une hiérarchie, on parle alors de "Héritage et taxonomie".C'est une pratique de l'orienté objet que d'organiser des classes entre elles de manière hiérarchique ou taxonomique, des plus générales aux plus spécifiques. On parle de mécanisme "d'héritage" entre classes. Un objet, instance d'une classe, sera à la fois instance de cette classe mais également de toutes celles qui la généralisent et dont elle hérite.Tout autre objet ayant besoin de ses services choisira de le traiter selon le niveau hiérarchique le plus approprié.
Héritage : Le rôle premier de l'héritage est de favoriser une économie de représentation et de traitement. La factorisation de ce qui est commun à plusieurs sous-classes dans une même superclasse offre des avantages capitaux.Vous pouvez omettre d'écrire dans la définition de toutes les sous-classes ce qu'elles héritent des superclasse. Il est de bon sens que, moins on écrit d'instructions, plus fiable et plus facile à maintenir sera le code.
Par l'héritage et généralisation ainsi faite nous retrouvons la même dénomination pour des activités partagées par un ensemble d'objets, mais dont l'exécution se particularise en fonction de la vrai nature de ces objets. Cela permet à un premier objet, interagissant avec cet ensemble d'objets, dont il sait qu'ils sont à même d'exécuter ce message, de le leur adresser sans se préoccuper de cette nature intime. Une grande économie de conception et un gage de stabilité sont permis par ce mécanisme : Polymorphisme.
Polymorphisme : Conséquence directe de l'héritage,permet à un même message, dont l'existence est prévue dans une superclasse, de s'exécuter différemment, selon que l'objet qui le reçoit est d'une sous-classe ou d'une autre.Cela permet à l'objet responsable de l'envoie du message de ne pas avoir à se préoccuper dans son code de la nature ultime de l'objet qui le reçoit et donc de la façon dont il l'exécutera.


Conclusion : Cette structuration cognitive reflète, en partie, la réalité qui nous entoure, mais surtout notre manière de la percevoir et de la communiquer, tout en se soumettant à des principes universaux d'économie, de simplicité et de stabilité.