Sunteți pe pagina 1din 7

Principes de la Programmation Objets

1. La programmation procdurale

La programmation procdurale (C, Pascal, Basic, ) est constitue dune suite dinstructions (souvent runies en fonctions) excutes par une machine. Ces instructions ont pour but dagir sur des donnes pour produire une effet quelconque.

Fonction 1

Fonction 1

Donnes

Fonction 1

Fonction 1
Les fonctions, procdures et autres suites dinstructions accdent une zone o sont stockes les donnes. Il y a donc une dissociation entre les donnes et les fonctions ce qui pose des difficults lorsque lon dsire changer les structures de donnes. Dans les langages procduraux, les procdures sappellent entre elles et peuvent donc agir sur les mme donnes provoquant ainsi des effets de bord. De ces problmes sont issus une autre manire de programmer : la programmation par objet.

2. Les objets

Un programme est vu comme un ensemble dentits, une socit dentits. Au cours de son excution, ces entits collaborent en senvoient des messages dans un but commun.

Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

Donnes
Fonctions d'accs aux donnes

m1

m2

3 m

Donnes
m4

Donnes
Fonctions d'accs aux donnes

Fonctions d'accs aux donnes

Nous avons dans ce schma un lien fort entre les donnes et les fonctions qui y accdent (tant pour les consulter que pour les crer).

Mais quappelle-t-on un objet ? Que reprsente un objet ?

Dfinition Un objet reprsente une entit du monde rel, ou de monde virtuel dans le cas dobjets immatriels, qui se caractrisent pas une identit, des tats significatifs et par un comportement.

Lidentit dun objet permet de distinguer les objets les uns par rapport aux autres. Son tat correspond aux valeurs de tous les attributs un instant donn. Ces proprits sont dfinies dans la classe dappartenance de lobjet. Enfin, le comportement dun objet se dfini par lensemble des oprations quil peut excuter en raction aux messages envoys (un message = demande dexcution dune opration) par les autres objets. Ces oprations sont dfinies dans la classe dappartenance de lobjet.

Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

Prenons un exemple :

Dans une entreprise, un employ TOTO (son numro de scu 1 05 73 123 456 permet son identification unique dans lentreprise), est employ sur un poste de technicien dans la socit X situe Biarritz. Son tat est caractris par lensemble des valeurs de ses attributs. num scu : 1 05 73 123 456 nom : TOTO qualification : Technicien Lieu de travail : Biarritz

Son comportement est caractris par les oprations quil peut raliser : entrer/sortir de la socit changer de qualification changer de lieu de travail

Bref, lensemble des oprations pouvant affecter ses attributs.

Un peu de vocabulaire Une classe est labstraction dun ensemble dobjets qui possdent une structure identique (liste des attributs) et un mme comportement (liste des oprations). Cest un modle dcrivant le contenu et le comportement des futurs objets de la classe. Un objet est une instance dune et une seule classe.

Si lon reprend lexemple prcdent, la classe est lemploy, linstance de classe (lobjet) est lemploy 1 05 73 123 456, TOTO,

Par rapport une approche classique que lon peut observer dans la programmation procdurale, lapproche objet se caractrise par le regroupement dans une mme classe de la description des attributs et des oprations (mthodes). Ce regroupement sappelle lencapsulation. On masque linformation au monde extrieur. Ce principe dencapsulation amliore lautonomie et lindpendance de chaque classe et augmente le potentiel de rutilisation de chacune delles. La visibilit des attributs et des oprations dune classe vis vis dautres porte le nom dinterface.

Un objet est donc compos de donnes et doprations (appeles mthodes) sur ces donnes. Cest une variable de type abstrait reprsentant une entit du domaine du problme.

Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

Il se compose de deux parties : une partie interface compose doprations que lon peut faire dessus (partie publique) cest cette partie qui est visible par les utilisateurs de lobjet. une partie interne composes des donnes sensibles de lobjet (partie prive).

Programmation Procdurale Programmation Oriente-Objet

VARIABLE OBJET

TYPE CLASSE

Les avantages des proprits ci-dessus sont multiples : meilleure modularit. Les communications entre objets sont ralises par le biais doprations dinterface. meilleure scurit. Le code de chaque mthode ne sapplique que sur les donnes de lobjet. Certaines parties de lobjet ne sont pas accessibles pour certains (et nont pas dailleurs tre connues). meilleure conception. Les donnes et les mthodes sont spcifies en mme temps. meilleure lisibilit. Les donnes et les mthodes sont dcrites au mme endroit. meilleure portabilit. Les parties masques pourront tre modifies sans que lutilisateur nai changer son code puisquil na pas directement accs celles-ci. Cest ici que lon pourra mettre des points dpendant des machines.

3. Hritage Lhritage permet de construire une classe partir dune ou de plusieurs autres. Exemple :
Classe Vhicule Genre Immatriculation Propritaire S_arrter( ) Avancer( ) Fin Classe

Classe automobile NbPlaces liste_passagers( ) fin Classe

Classe camion tonnage typeChargement fin Classe

Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

Une classe dont on drive est appele classe de base, celle qui lutilisent est appel classe drive. Les classes automobile et camion sont donc des classes drives, la classe de base est vhicule.
Classe automobile NbPlaces liste_passagers( ) fin Classe Classe camion tonnage typeChargement fin Classe

Classe camionnette type_d_utilisation fin Classe

Lhritage multiple offre la possibilit de pouvoir reprendre intgralement des travaux dj raliss. Il offre la possibilit de regrouper en un seul endroit ce qui est commun plusieurs.

4. Polymorphisme
classe FormeGomtrique polymorphe dessiner ( ) polymorphe effacer ( ) fin classe

classe Cercle dessiner ( ) effacer ( ) fin classe

classe Carr dessiner ( ) effacer ( ) fin classe

classe Triangle dessiner ( ) effacer ( ) fin classe

Les mthodes dessiner( ) et effacer( ) sont polymorphes. Leur nom est similaire dans les trois classes drives, mais dessiner un cercle est diffrent de dessiner un carr ou un triangle. Ainsi le polymorphisme se rsume par : un mme nom, plusieurs implmentations. A chaque fois que lon appelle une des deux mthodes dessiner ou effacer, il est ncessaire que lon appelle celle qui est associe la forme gomtrique correspondante. Ce choix ne peut se faire qu lexcution, on a donc une liaison dynamique. La dtermination du choix de la bonne fonction se fait de manire automatique. On ne sen soccupe pas au moment du codage.

Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

En programmation procdurale, on aurait : dessiner(type_dessin) { switch (type_dessin) case CARRE : break ; case CERCLE : break ; case TRIANGLE : break ; }

En POO (Programmation Oriente Objet), on crit : Classe CARRE { Dessiner ( ) ; }

Classe CERCLE { Dessiner ( ) ; } Classe TRIANGLE { Dessiner ( ) ; }

Selon les langages, il est ncessaire de prciser si une mthode doit tre polymorphe ou pas. Cest le cas en C++, a ne lest pas en Java ou en SmallTalk.

Les avantages du polymorphisme sont les suivants : Les fonctions ayant la mme smantique ont le mme nom, Le programmation est plus souple. Si on veut ajouter une classe Rectangleya qu ! Il suffit dajouter les mthodes dessiner et effacer dans cette classe. Dans le cas de la programmation procdurale, il aurait fallu reprendre le code et lenrichir.

5. Les Langages Orients Objets Un langage est orient objet sil possde les mcanismes supportant le style de programmation orient objet, cest dire, sil autorise les facilits inhrentes ce type de programmation.
Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

Le C++ est sans contexte le langage objet le plus utilis. Cest nanmoins un langage hybride autorisant la fois la programmation procdurale dite classique mais aussi et surtout la programmation oriente objet. Ses avantages sont sans contexte sont efficacit et sa portabilit. Il possde un typage fort et est support par nombres dateliers de gnie logiciel. Nanmoins, tout nest pas rose dans ce bas monde, il possde quelques dfauts comme labsence de gestion automatique de la mmoire (le fameux ramasse-miette que lon retrouve en Lisp et en Java par exemple). Il est galement complexe et rserv aux expert. Ces critiques peuvent se discuter.

Le C++ a t conu par Bjarne Stroustrup aux laboratoires ATT & Bell. Cest une extension (dou loprateur ++ dincrmentation de C) du langage C. Il vise trois objectif : efficacit, vrification de types, programmation oriente objet.

Points de repres historiques : 1978 : La langage C de Kernighan et Ritchie, ATT & Bell Laboratory 1980 : SmallTalk 80 de Goldberg du Xerox Palo Alto Research Center. 1983 : C++ de Stroustrup de ATT & Bell cest aussi le C ANSI qui est cre cette poque. 1985 : Commercialisation C++ Version 1 liaison dynamique, surcharge des oprateurs, rfrences. 1987 : Dbut des efforts de normalisation 1989 : C++ Version 2 hritage multiple 1991 : C++ Version 3 classes paramtres (templates), exceptions milieu 1990 : Normalisation ANSI su C++ 1995 : JAVA

Philippe ROOSE 2000, 2001 IUT Informatique/LIUPPA Philippe.Roose@iutbayonne.univ-pau.fr

24/01/03

S-ar putea să vă placă și