Méthode B/Différence avec Z
nota : nous avons utilisé aussi bien pour Z que pour B la notation ASCII B.
[NOM, ADRESSE]
_____CarnetDAdresses___________________ NomConnu : F NOM APourAdresse : NOM -+> ADRESSE __________ dom (APourAdresse) = NomConnu ____________________________________
_____AjoutDAdresse_______________________ Δ CarnetDAdresses nom? : NOM adr? : ADRESSE ___________ nom? : NomConnu ? APourAdresse' = APourAdresse <+ {(nom? |-> adr?)} _________________________________________
A-t-on besoin, en Z, de spécifier que : NomConnu' = NomConnu \/ {nom?}
Réfléchissez bien à cette question.
Et lisez ensuite ce qui suit :
MACHINE CarnetDAdresses
SETS NOM; ADRESSE
VARIABLES NomConnu, APourAdresse
INVARIANT NomConnu <: NOM & ApourAdresse: NomConnu +->ADRESSE
INITIALISATION NomConnu := {} || APour Adresse := {}
OPERATIONS AjoutDAdresse(nom, adr) = PRE nom : NOM - NomConnu & adr : ADRESSE THEN APourAdresse := APourAdresse <+ {nom |-> adr} || NomConnu := NomConnu \/{nom} END
END
- En B n'est modifié que ce que l'on spécifie explicitement être modifié.
- En Z, la spécification est un prédicat. Notez que le := n'est pas utilisé en Z.