Vous êtes sur la page 1sur 17

14/09/2011

La Programmation Oriente Objet (POO)


Par Imed Bennour (A.U. 2011-2012)

Programme
Partie I: Les concepts de base de la POO
o Classes et objets o Hritage o Polymorphisme

Partie II: Le langage Java


o Introduction au langage Java o Les exceptions o Les interfaces et les paquetages o Les threads

14/09/2011

Rfrences
1. Claude Delannoy, Programmer en Java, Java 5 et 6; Editeur : Eyrolles, Code:PT 372 2. H.M. Fourati, I. M. Kessentini, Les bases du langage Java, Centre de publication universitaire, code: PT173 3. Souheib Baarir, Introduction Java, 4. http://pagesperso systeme.lip6.fr/Souheib.Baarir/Cjava/cours/02-Bases_java/02Bases_java.pdf 5. Mickal BARON, Programmation Oriente Objet application au langage Java, http://mbaron.ftp-developpez.com/javase/java.pdf 6. Irne Charon, Apprendre Java, http://www.infres.enst.fr/~charon/coursJava/

Les concepts de base de la POO


Classes et objets Hritage Polymorphisme

14/09/2011

Quest-ce-que la modlisation objet? - Pour un problme rsoudre cest chercher quels objets pourraient nous aider dans notre tche.

Qu'est ce quun Programme Oriente Objet ? Ensemble d'objets autonomes et responsables qui s'entraident pour rsoudre un problme final en s'envoyant des messages
Objet 1
Message

Objet 3 Objet 2

14/09/2011

Quest ce quun objet ? Objet = Donnes ( attributs membres) + Mthodes (Fonctions Membres)
Fonction 1 Fonction 2

Fonction 6

DONNEES

Fonction 3

Fonction 5

Fonction 4

En programmtion oriente objets, programmer c'est dfinir des classes.

14/09/2011

En programmation oriente objets, programmer c'est dfinir des classes.

Activit: dfinir les objets formant une sance de cours. Dfinir dautres exemples

Les classes et les objets


La Classe Gnralisation du type structure ou record des langages non OO (classe = dfinition de donnes + dfinition de mthodes) Possibilit de fixer la visibilit externe des diffrents constituants de la classe

14/09/2011

Dfinition dune Classe


class nom_classe { private: Dclaration des donnes prives et des fonctions membres prives public: Dclaration des donnes publiques et des fonctions membres publiques }; // pas de ; en Java

Exemple de dfinition dune classe


class Point { private int x; private int y;
public Point (int x, int y) { this.x = x; this.y = y; } public int getX() { return x; // quivalent return this.x } public int getY() { return y; } public int setX(int x) { return this.x = x; } }

14/09/2011

Autre dfinition
class Point { public: //partie publique de la classe void SetX(const unsigned x); // les mthodes void SetY(const unsigned y); void SetXY(const unsigned x,const unsigned y); unsigned GetX() const; unsigned GetY() const; float Distance(const Point & p) const; void Translate(const unsigned x,const unsigned y); void Display(std::ostream & flot) const; private: // partie prive (encapsule) unsigned _x; // les attributs unsigned _y;

};

Dfinition des mthodes

void Point::SetY(const unsigned int y) { _y=y; } void Point::SetXY(const unsigned int x,const unsigned int y) { _x=x; _y=y; } unsigned Point::GetX() const{ return _x; }

14/09/2011

Les instances dune classe (les objets) Une classe est un moule (ou presque) On peut crer autant dobjets que ncessaire partir du moule Toute classe permet den crer une ou des instance(s)

Cas du C++
void main() { Point p1,p2; // p1 et p2 sont deux objets de la classe Point p1.SetXY(10,10); // donne ltat (10,10) lobjet p1 p2.SetXY(20,20); // donne ltat (20,20) lobjet p2 cout << "Distance p1 - p2 :" ; cout << p1.Distance(p2) << endl; //affiche la distance p1-p2 // p1._x=12 ; est interdit par le compilateur, les donnes sont prives }

14/09/2011

Les membres dun objet Ce sont ses attributs et ses mthodes. Les attributs peuvent tre des variables ou des objets dautres classes

Il existe 4 catgories de mthodes: Les Constructeurs Le Destructeur Les Accesseurs/slecteurs Les Modificateurs

14/09/2011

Les Constructeurs
Permettent dinitialiser lobjets lors de sa cration
copie des arguments vers les donnes membres initialisation de variables dynamiques la cration de lobjet

Sont appels de manire automatique la cration de lobjet Peuvent tre surchargsOn peut en dfinir plusieurs de mme nom mais acceptant des arguments diffrents Possdent le mme nom que la classe n'indiquent pas de type de retour, ne contiennent pas d'instruction return.

class Point { public:


Point(int a, int b) { validation de a et b x = a; y = b; } Point(int a) { validation de a x = a; y = 0; } Point() { x = y = 0; }

... private: int x, y; }

10

14/09/2011

Le Destructeur
Il est unique Est appel automatiquement lors de la destruction de lobjet Sert gnralement liminer les variables dynamiques de lobjet (cres en gnral par le constructeur) Il a pour nom le nom de la classe prcd du symbole ~

class PointNomme { ...


PointNomme(PointNomme &p) { x = p.x; y = p.y; label = new char[strlen(p.label) + 1]; strcpy(label, p.label); } ~PointNomme() { delete [] label; }

... };

11

14/09/2011

Les Accesseur/Slecteurs Les slecteurs : celles qui retournent ltat de lobjet Les accesseurs : celles qui utilisent ltat (les donnes) en lecture Les Modificateurs Permettent de modifier ltat des donnes internes de lobjet

Identifier les catgories des mthodes ?

void Point::SetY(const unsigned int y) { _y=y; } void Point::SetXY(const unsigned int x,const unsigned int y) { _x=x; _y=y; } unsigned Point::GetX() const{ return _x; }

12

14/09/2011

Construction des objets membres


Lorsque des membres d'une classe sont leur tour d'un type classe on dit que la classe a des objets membres.
class Segment { Point origine, extremite; int epaisseur; public: Segment(int ox, int oy, int ex, int ey, int ep) : origine(ox, oy), extremite(ex, ey) { epaisseur = ep; } ... };

Accs aux fonctions membres dun objet


- Si lobjet est reprsent par une variable:
Nom_Variable.Nom fonction;

Mabouteille.GetContenance();

- Si lobjet est reprsent par un pointeur (cas de C++):


Nom_pointeurNom fonction;

MabouteilleGetContenance();

13

14/09/2011

La visibilit des membres et des mthodes

Qui peut lire/utiliser ou modifier les donnes dun objets? Qui peut appeler les mthodes dun objet?
Ces options sont fixes au moment de la dfinition de la classe. Cest la notion de daccessibilit (ou visibilit).

Il y a trois niveaux de visibilit: Private, Public and Protected.


Private: The members are accessible only by the member functions or friend functions(!). Protected: These members are accessible by the member functions of the class and the classes which are derived from this class. Public: Accessible by any external member.

14

14/09/2011

Lhritage
Permet de dfinir les bases dun nouvel objet partir dun objet existant Le nouvel objet hrite des proprits de lanctre et peut recevoir de nouvelles fonctionnalits

Avantages
Meilleures rutilisations des ralisations antrieures parfaitement au point

15

14/09/2011

Les classes filles


Reprend certaines particularits de la classe dont elle est drive (la classe mre) Ce lien Mre/Fille sappelle lhritage (une classe fille tend sa classe mre) Hritage des donnes et des fonctions membres sauf:
Les constructeurs et destructeurs de l'anctre

La drivation des classes est sans limites

16

14/09/2011

Type d'hritage
Rgles de drivation de classe

mode de drivation private

statut du membre dans la classe anctre


private protected public private protected public private protected public

statut du membre dans la classe drive


inaccessible private private inaccessible protected protected inaccessible protected public

protected

public

Le polymorphisme
Un langage est dit polymorphique, sil offre la possibilit de pouvoir percevoir un objet en tant quinstance de classes varies, selon les besoins
Permet de manipuler des objets sans vraiment connatre leur type

17

Vous aimerez peut-être aussi