Bonsoir à tous,
Je suis fasse à un cas un peu limite ou on me demande de justifier si la classe Compteur2
est bien un sous-type légitime de Compteur0
au sens du principe de substitution de Liskov, sachant que1
class Compteur0 {
Compteur0() { ... }
// post-condition: this_post > this
public void incr() { ... }
}
class Compteur2 extends Compteur0 {
Compteur2() {...}
// pre-condition: val > 0
// post-condition: this_post = this + val
public void incr(int val) { ... }
}
En fait, la question est très simple: est ce que, vu que incr(int val)
est une fonction qui n’a rien à voir avec incr()
(c’est pas une re-définition), le LSP ne s’applique pas (auquel cas tout ce passe bien), ou est ce que le LSP s’applique malgré tout (auquel cas il y a renforcement de la pré-condition, donc violation du LSP).
Si il y a des motivés de la preuve de programme qui passent par ici, merci d’avance
-
C’est bien entendu une question de révision pour un examen, sinon c’est pas drôle
↩
+0
-0