17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Programmation</strong> orientée objet<br />

CHAPITRE 14<br />

La classe observée instancie ces événements en attributs pour les rendre accessibles<br />

aux observateurs.<br />

Enfin, les événements peuvent ensuite être déclenchés en fonction des besoins dans le<br />

code de la classe, par la biais de la méthode __call__(), avec les paramètres souhaités.<br />

Pattern Observer<br />

class Fenetre(object):<br />

def __init__(self, name):<br />

self.name = name<br />

self.titre = 'titre de la fenêtre'<br />

self.contenu = 'contenu de la fenêtre'<br />

self.titreEvent = Event('titre')<br />

self.contenuEvent = Event('contenu')<br />

globalTitreEvent = Event('titre global')<br />

def changeTitre(self, titre):<br />

self.titre = titre<br />

self.titreEvent(titre)<br />

Fenetre.globalTitreEvent(self.name, titre)<br />

def changeContenu(self, contenu):<br />

self.titre = contenu<br />

self.contenuEvent(contenu)<br />

class ObservateurTitre(object):<br />

def __init__(self, fenetre):<br />

fenetre.titreEvent += self<br />

def __call__(self, titre):<br />

print ('le titre a été changé en "%s" !' % titre)<br />

class ObservateurContenu(object):<br />

def __init__(self, fenetre):<br />

fenetre.contenuEvent += self.contenuChange<br />

def contenuChange(self, contenu):<br />

print('le contenu a été changé en "%s" !' % contenu)<br />

class ObservateurGlobal(object):<br />

def __init__(self, fenetre):<br />

fenetre.globalTitreEvent += self<br />

def __call__(self, name, titre):<br />

print('le titre de "%s" a été changé en "%s" !' \<br />

% (name, titre))<br />

509

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!