theme 10

21
THEME 10 LES CLASSES 2011-04-14 1

Upload: salmazen

Post on 09-Jun-2015

282 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Theme 10

1

THEME 10

LES CLASSES2011-04-14

Page 2: Theme 10

2

LA PROGRAMMATION ORIENTÉE OBJET (POO)

Un paradigme de programmation informatique

Rendre un code source Plus facilement réutilisable Plus facile à modifier

Peut être utilisée sous plusieurs langages de programmation (C++, Java, Python,…)

Mots clés: Classes Objets /Instances Constructeur Héritage/Polymorphisme …

Page 3: Theme 10

3

CLASSES: EXEMPLE INTRODUCTIF 1

Êtres vivants

Végétaux

Animaux Champignons

Bactéries

Caractéristiques des végétauxComportement des végétaux

Caractéristiques des animauxComportement des animaux

Caractéristiques des champignonsComportement des champignons

Caractéristiques des champignonsComportement des champignons

Page 4: Theme 10

CLASSES: EXEMPLE INTRODUCTIF 2

4

Fichiers

Fichier texte

Fichier image Fichier son

Fichier vidéo

Page 5: Theme 10

5

CLASSES: DEFINITION

Une classe est une structure particulière dans le langage objet

Décrit la structure interne de données ayant comme type cette classe

Définit les méthodes qui s’appliquent aux objets de la même famille

Contiennent une méthode qui crée les objets de cette classe.

Une classe est équivalente à un type défini par le programmeur

Page 6: Theme 10

6

AVANTAGES DES CLASSES

Permettent de créer des logiciels complexes: interaction entre différents objets et avec le monde extérieur.

Encapsulation: les fonctionnalités propres au comportement de l’objet sont encapsulées dans la classe.

Dérivation: construire de nouveaux objets à partir d’objets préexistants

Page 7: Theme 10

7

DÉFINITION D’UNE CLASSE

Exemple: un point est défini par ses coordonnées: Abscisse X Ordonnée Y

Définition de classe N’importe ou dans un programme: en général, au début Ou dans un module à importer

Une convention très répandue veut que l’on donne aux classes des noms qui commencent par une majuscule.

class MonPoint:"definition d'un point geometrique"

Page 8: Theme 10

8

ATTRIBUTS D’UNE CLASSE

Attributs(variables): propriétés des objets d’une classe

# definition de la classeclass MonPoint:

"definition d'un point geometrique " x=0 #assignation de valeur a l’attribut xy=0 #assignation de valeur a l’attribut y

…point1 = MonPoint()print point1.x, point1.y

point1.x=3.0point1.y=4.0

print point1.x, point1.y

0X

Y 0

point1

Page 9: Theme 10

9

MÉTHODES Les méthodes définissent le comportement des objets

de la classe

La définition d'une méthode est toujours placée à l'intérieur de la définition d'une classe

Le premier paramètre utilisé par une méthode doit toujours être une référence d'instance.

self est la référence vers l’instance courante de la classe,

Page 10: Theme 10

10

class MonPoint:

"definition d'un point geometrique "

x=0 #assignation de valeur a l’attribut x

y=0 #assignation de valeur a l’attribut y

def afficherCoordonnees(self):

print " x="self.x," y="self.y

def changerCoordonnees(self,pX,pY):

self.x= pX

self.y= pY

def getX(self):

return self.X

def getY(self):

return self.Y

Page 11: Theme 10

INSTANCIATION: CRÉATION D’UN OBJET

11

point1• X=10• Y=15

point2• X=1• Y=12

pt3• X=2• Y=3

Point

Page 12: Theme 10

12

INSTANCIATION: CRÉATION D’UN OBJET

point1 contient la référence (adresse en mémoire) d’un nouvel objet de type MonPoint.

point1 est une instance de la classe MonPoint.

# definition de la classe

class MonPoint: "definition d'un point geometrique " … 

# fin definition de la classe

…point1 = MonPoint()

print point1

point1

Page 13: Theme 10

13

class MonPoint:

"definition d'un point geometrique "

x=0 #assignation de valeur a l’attribut x

y=0 #assignation de valeur a l’attribut y

def afficherCoordonnees(self):

print " x="self.x," y="self.y

def changerCoordonnees(self,pX,pY):

self.x= pX

self.y= pY

def getX(self):

return self.X

def getY(self):

return self.Y

#propgramme principal

point1 = MonPoint()

point1.afficherCoordonnees()

point1.changerCoordonnes(5,3)

point1.afficherCoordonnes()

Page 14: Theme 10

14

MÉTHODE SPÉCIALE: LE CONSTRUCTEUR

Exécutée automatiquement lors de l’instanciation des objets

Sert a initialiser les attributs d’un objetclass MonPoint:

"definition d'un point geometrique "

def _init_(self):

self.x=10

self.y=10

point1 = MonPoint()

point1.afficherCoordonnees()

Page 15: Theme 10

15

TYPAGE DES ATTRIBUTS

Les types prédéfinis dans Python: booléen, entier, réel, String, liste, tuple, dictionnaire,…

Classes prdéfinies dans Pyhton ou définies par l’utilsateur

class Personne:

def _init_(self):

self.prenom=" "

self.nom=" "

self.age=""

self.conjoint=Personne()

def setConjoint(self,prs):

self.conjoint=prs

def getConjoint(self):

return self.conjoint.nom

class Enfant:

def _init_(self):

self.prenom=" "

self.nom=" "

self.age=""

self.pere=Personne()

self.mere=Personne()

enfant1=Enfant()

prenom

enfant1

nom

age

Prenom

Nom

Age

conjoint

pere

Prenom

Nom

Age

conjointmere

Page 16: Theme 10

16

SIMILITUDE ET UNICITÉDeux objets (instances) d’une même classe

Même attributsMêmes méthodes

Chaque objet a des valeurs particulières pour leurs attributsclass MonPoint:

"definition d'un point geometrique "

def _init_(self):

self.x=10

self.y=10

point1 = MonPoint()

point1.x=15

point1.y=18

point1.afficherCoordonnees()

point2 = MonPoint()

point2.x=5

point2.y=3

point2.afficherCoordonnees()

Page 17: Theme 10

17

EXERCICE 10.1

Définissez une classe Cercle(). Les objets construits à partir de cette classe seront des cercles de tailles variées.

En plus de la méthode constructeur, vous définirez une méthode surface(), qui devra renvoyer la surface du cercle.

Page 18: Theme 10

18

EXERCICE 10.2

Écrire un script Python qui permet de représenter une liste d’individus Chaque individu a un nom, prénom, âge et fonction

Le script doit permettre d’initialiser une liste de dix individus avec des valeurs par défaut.

Page 19: Theme 10

19

HÉRITAGE ENTRE LES CLASSES

Dériver à partir d’une classe mère, des classes filles

Les classes filles héritent des propriétés de la classe mère Attributs Méthodes

Les classes filles ont des propriétés spécifiques

Page 20: Theme 10

20

EXEMPLE

Personne

Étudiant

Employé

Artiste

NomPrenomAgeConjoint

NomPrenomAgeConjoint

Relevé de notesListe de coursNiveau d’études

NomPrenomAgeConjoint

MatriculeNASNuméro de posteNuméro de bureau

NomPrenomAgeConjoint

Domaine d’artListe d’oeuvres

Page 21: Theme 10

21

SYNTAXE POUR L’HÉRITAGE

#

class Etudiant(Personne):

def _init_(self):

Personne._init_(self)

self.ReleveCotes=[]

self.ListeCours=[]

self.NiveauEtudes="Non defini"

def changerDeNiveauEtudes(niveau):

self.NiveauEtudes=niveau

class Artiste(Personne):

def _init_(self):

Personne._init_(self)

self.domaineArt= " Non defini"

self.ListeOeuvres=[]

def produireOeuvre(nouvelleOeuvre):

self.ListeOeuvres.append(nouvellesOeuvre)

class Employe(Personne):

def _init_(self):

Personne._init_(self) self.Matricule=0 self.NAS=0 self.poste=0 self.Numéro de bureau=0