sujet Test 5 : classes et objets (le retour)

Auteur :
  • François Brucker

1

On utilise les deux classes de la figure suivante :

store state

Les attributs sont considérés comme privés

1.1

Explicitez le lien de dépendance entre Store et StateObject

1.2

Trois Propositions de code sont données :

proposition 1 :

state = StateObject()
state.set_state(1)
store = Store(state)
store.saved_state = state.get_state()

proposition 2 :

state = StateObject()
state.set_state(1)
store = Store(state)

proposition 3 :

state = StateObject(1)
store = Store(state)

1.2.1

Une proposition est incorrecte en python. Laquelle et pourquoi ?

1.2.2

Parmi les deux propositions correctes, laquelle privilégierez vous ? Et pourquoi ?

question 2

La figure suivante montre le diagramme UML du design pattern Observer. Les objets de la classe Observer (ou ceux héritant d'elle) s'inscrivent à un objet de la classe Subject (via la méthode add) pour être prévenus de chaque changement d'état (via la méthode notify).

observer

On vous demande d'écrire le code en python.

2.1

Quel est la fonction de ce couple de classe (choisissez la bonne réponse parmi les 3 possibilités ci-après) ?

2.2

Écrivez la méthode add de la classe Subject, qui ajoute l'objet passé en paramètre à la liste des éléments observant le sujet.

2.3

Écrivez la méthode update de la classe Observer qui place dans subject_state l'état courant d'objet de la classe Subject passé en paramètre.

2.4

Écrivez la méthode notify de Subject qui permet la mise à jour des éléments observant le Subject

2.5

décrivez un cas d'utilisation possible de ce pattern bien étrange.