• [^] # Re: sealed ?

    Posté par . En réponse au journal La plus belle ligne de code. Évalué à 4.

    Pas tellement d’accord, j’ai l’impression que c’est plutôt une utilisation du principe de liskov pour implémenter un pseudo type somme en java.

    Le sous-typage est utilisé transférer une propriété de la classe mère : "une de mes instance est instance est instance d’exactement un de ces types", à ses classes filles. Le respect du principe de substitution de Liskov implique que ce qui doit être vrai pour toute instance de la classe mère soit également vrai de toute instance de ses sous-types. Propriété qui est vérifié par le compilo et la jvm, ce qui ne sera pas forcément le cas dans le cas de Java pour d’autres types d’invariants ou de précondition qu’on pourrait attacher aux méthodes.

    Après en lisant Wikipédia en anglais il peut effectivement y avoir un hiatus avec le terme ''substitution'', il semblerait que Liskov elle même plutôt récemment évite de l’utiliser et qu’une terminologie plus moderne soit :en:behavioral subtyping, plus précis et qui met l’accent sur les propriétés associées, et qui prend en compte les classes abstraites, on peut pas instancier ces classes et donc substituer des objets strictement de ce type ... Elles voulaient définir ce qu’est un sous typage correct, en fait.

    When applying subtyping, generally we are not substituting subtype objects for supertype objects, we are simply using subtype objects as supertype objects. That is, it is the same objects, the subtype objects, that are also supertype objects.

    In an interview in 2016, Liskov herself explains that what she presented in her keynote address was an "informal rule", that Jeannette Wing later proposed that they "try to figure out precisely what this means", which led to their joint publication[1] on behavioral subtyping, and indeed that "technically, it's called behavioral subtyping".[3] During the interview, she does not use substitution terminology to discuss the concepts.