Errata du tome 5

On trouvera ci-après les errata de l'ouvrage Exercices corrigés d'UML ; passeport pour une maîtrise de la notation, co-écrit avec Pascal ANDRE, paru en septembre 2003 aux Editions Ellipses, dans la collection TECHNOSUP.


ATTENTION : Cette page est appelée à être modifiée régulièrement. Consultez-la souvent. N'hésitez pas à en demander le rechargement.

La dernière modification de la page a été effectuée le 2 juillet 2006.


Les erreurs suivantes se sont malencontreusement glissées dans l'ouvrage ;
elles sont présentées chapitre par chapitre, page par page :

Pour atteindre plus vite les errata d'un chapitre donné,
utilisez le tableau de liens ci-dessous.

01
02
03
04
A


Chapitre I- La notation UML

Page 16, figure 11
Le message 11 de la figure 10 peut être simplifié, surtout quand l'on regarde le message 12. Il est prévu dans 11 une variable stat pour le retour de la valeur. Or, le message 12 retourne une autre fois (en trop, donc !) stat. Il faut donc modifier la figure, la simplifier. En voici une version plus exacte, dans laquelle le message 11 ne comporte plus de référence à stat :

Page 25, figure 12
Le rectangle rect1 a un sommet en 7-5/2 et non pas 8-5/2.

Page 44, figure 25
Cette figure 25 contient deux erreurs :

  • la classe de gauche se nomme Joueur et non Ligne ;
  • il n'y a pas de rôle louées

La figure correcte est la suivante :

Les cardinalités ont été fixées à la Merise, car la notation nous semble plus lisible et expressive qu'UML. Les cardinalités "à la UML" se notent comme suit :

Pour un couple (Ligne, Colonne) il y a au maximum une pièce donc :

  • pour un triplet (Ligne, Colonne, Joueur) il y a au maximum un type de pièce
  • pour un triplet (Ligne, Colonne, TypePièce) il y a au maximum un joueur

Pour un triplet (Joueur, Ligne, TypePièce) il y a (au maximum) huit colonnes possibles simultanément : par exemple, au départ sur la ligne 1, on trouve huit pions blancs (colonnes A à H).
Pour un triplet (Joueur, Colonne, TypePièce) il y a (au maximum) huit lignes possibles simultanément : par exemple, sur la colonne 1, on peut (théoriquement et approximativement) trouver huit pions blancs.

Les contraintes représentées dans la solution "à la Merise" doivent être décrites par des expressions OCL dans l'invariant pour être prises en compte :

Context TypePièce inv:
  self.position->size() <= 16
  -- à affiner selon le type de pièce
  -- il y a au plus 16 pions

Context Joueur inv:
  self.position->size() <= 16
  -- un joueur a au plus 16 pièces sur l'échiquier

Context Colonne inv:
  self.position->size() <= 8
  -- attention cette contrainte est obligatoire car elle n'exprime pas la même chose que 0..8
    dans la seconde figure (lecture UML)
  -- pas plus de 8 pièces par colonne

Context Ligne inv:
  self.position->size() <= 8
  -- attention cette contrainte est obligatoire car elle n'exprime pas la même chose que 0..8
    dans la seconde figure (lecture UML)
  -- pas plus de 8 pièces par ligne

Chapitre II- La spécification avec UML

Pas encore de coquilles détectées ou signalées !

Chapitre III- Des compléments pour la modélisation avec UML

Page 189, question b, 4e ligne
Remplacer "physiquesment" par "physiquement".

Page 190, exercice 1.4 (6.4), questions a et b
- Le libellé de la question a peut prêter à confusion. Il doit être remplacé par la phrase suivante : "Une cassette disponible n'est pas empruntée." La même rectification peut être faite sur l'énoncé de la question b. Un texte plus clair (à notre avis) est "Une cassette empruntée n'est pas disponible."

- Les réponses des questions a et b sont entâchées d'une erreur qui existe en plusieurs exemplaires. "notEmpty" et "isEmpty" sont des opérateurs. Ils doivent donc être précédés d'un "->" et non pas d'un point. La réponse à la question a, par exemple, est la suivante :
self.disponible->notEmpty implies self.emprunt->isEmpty

Page 191, opération emprunter
Ajouter dans la postcondition de l'opération les éléments suivants :
b.Cassettes = b.Cassettes@pre->excluding(cass)
cass.boutique->IsEmpty

Page 194, opération est_inscrit_dans (c:Cercle)
Remplacer self.extrémités par self.sommet

Page 195, opération est_inscrit_dans (c:Carré)
Remplacer self.y = (p1.x + p2.x) par self.y = (p1.y + p2.y)

Page 225, figure 195
Il manque une opération attendre () dans la classe Véhicule.

Page 227, diagramme états-transitions complet
- Dans la transition qui va des états un_véhicule aux états deux_véhicules, remplacer l'opération autoriser () par autorise ().
- Dans les transitions supportant sortie, dans les états deux_véhicules, remplacer v_eo par vv_eo et v_oe par vv_oe, ces deux gardes étant définies comme suit :
context Tunnel
-- garde vv_eo : aucun véhicule supplémentaire n'est en attente dans le sens Est-Ouest
self.demande_eo = self.engagé
-- garde vv_oe : aucun véhicule supplémentaire n'est en attente dans le sens Ouest-Est
self.demande_oe = self.engagé

Chapitre IV- Des compléments sur la vérification avec UML

Pas encore de coquilles détectées ou signalées !

Annexe A- Compléments d'énoncés

Page 297, Etat du système, item 4
Nous calculons de façon étrange : 24h30 + 3h59 font 28h29 et non pas 28h28 !

Page 297, Etat du système, item 5)
- Il manque un mot dans l'item 5, entre "pourraient" et "identifiés". Il s'agit du verbe "être". La phrase correcte est "Les films pourraient être identifiés par leur ...".


Vous en avez trouvé d'autres. Communiquez-les nous, en nous envoyant un message. Nous pourrons les répercuter à tous. Par avance, Merci !