Examen de Programmation Orientée Objet - IUP 3 (02/99)
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.
- Identifiez :
- les objets pertinents du problème.
- pour chaque objet ses attributs.
- pour chaque objet les opérations que l'on peut lui demander
de réaliser.
- Identifiez :
- les relations de ces objets entre eux en donnant le schéma «
UML » correspondant (précisez les arités, les liens de
généralisation/spécialisation et les agrégations).
- Quel(s) aspect(s) du problème apparaî(ssen)t dans la spécification
et que le modèle ne reflète pas ?
La figure 1 est un modèle UML représentant un arbre binaire
contenant des « entiers » dans ses feuilles.
Figure 1:
Diagramme UML
|
- 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) ?
- pour les méthodes d'instance indiquez celles qui lèvent naturellement des
exceptions.
- donnez le code Java correspondant à toutes ces classes (Arbre, Entier,
ArbreSimple, ArbreCompose, exceptions diverses) sans oublier d'indiquer
la visibilité (public, private).
- si l'on désire modéliser des arbres binaires de recherche
qu'est ce que cela change dans le diagramme ?
- et un arbre de syntaxe abstraite (pouvant représenter 3+4*5) ?
Jean-Baptiste Yunès