theme 10

Post on 09-Jun-2015

282 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

THEME 10

LES CLASSES2011-04-14

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 …

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

CLASSES: EXEMPLE INTRODUCTIF 2

4

Fichiers

Fichier texte

Fichier image Fichier son

Fichier vidéo

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

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

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"

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

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,

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

INSTANCIATION: CRÉATION D’UN OBJET

11

point1• X=10• Y=15

point2• X=1• Y=12

pt3• X=2• Y=3

Point

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

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()

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()

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

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()

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.

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.

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

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

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

top related