Examen de Programmation Orientée Objet - IUP 3 (02/99)

Exercice

Un « client » vous fait parvenir la spécification informelle suivante :
Nous souhaiterions  simuler le  fonctionnement d'un système  d'ascenseurs pour
notre projet d'hôtel. Nous voudrions utiliser un logiciel permettant de tester
le fonctionnement  de n ascenseurs desservant  m étages en  faisant varier ces
nombres  afin   de  réduire  raisonnablement  le  temps   d'attente  pour  les
usagers. Nous vous  rappelons que l'ascenseur peut être  appelé à chaque étage
afin de descendre ou de  monter (deux boutons différents). Nous souhaitons que
chaque ascenseur puisse desservir chaque  étage.  Les usagers se serviront des
boutons situés à  l'intérieur de la cabine pour  réaliser leurs demandes.  Les
boutons devront s'allumer et rester illuminés à chaque requête puis s'éteindre
lorsque  la requête  aura été  satisfaite (boutons  d'étage ou  de  cabine). À
chaque étage nous  souhaitons gérer une file d'attente  de demandes « usagers
». La  capacité des cabines  devra être variable  afin de pouvoir  tester les
possibilités.
Votre choix se porte sur une modélisation objet.
  1. Identifiez :
  2. Identifiez :
  3. Quel(s) aspect(s) du problème apparaî(ssen)t dans la spécification et que le modèle ne reflète pas ?

Exercice

La figure 1 est un modèle UML représentant un arbre binaire contenant des « entiers » dans ses feuilles.
Figure 1: Diagramme UML
\includegraphics[]{modele_fev.eps}
  1. parmi les méthodes de la classe abstraite Arbre quelles sont celles qui sont des méthodes de classe (static) et celles qui sont des méthodes d'instance et parmi ces dernières celles qui sont abstraites (abstract) ?
  2. pour les méthodes d'instance indiquez celles qui lèvent naturellement des exceptions.
  3. donnez le code Java correspondant à toutes ces classes (Arbre, Entier, ArbreSimple, ArbreCompose, exceptions diverses) sans oublier d'indiquer la visibilité (public, private).
  4. si l'on désire modéliser des arbres binaires de recherche qu'est ce que cela change dans le diagramme ?
  5. et un arbre de syntaxe abstraite (pouvant représenter 3+4*5) ?


Jean-Baptiste Yunès