an oop question

Julieta Shem jshem at yaxenu.org
Thu Nov 3 14:51:12 EDT 2022


ram at zedat.fu-berlin.de (Stefan Ram) writes:

> Julieta Shem <jshem at yaxenu.org> writes:
>>                                    I'll definitely look up the Liskov
>>substitution principle and try to understand it.
>
>   I found the LSP to be very confusing:
>
>   First, it's was hard for me to actually get a clear source
>   (citation) for it. What exactly are the words of Barbara
>   Liskov that are called "LSP"?
>
>   Then, I found some words that that might possibly be the LSP
>   in the words of Barbara Liskov:
>
> |If for each object o1 of type S there is an object o2 of
> |type T such that for all programs P defined in terms of T,
> |the behavior of P is unchanged when o1 is substituted for o2
> |then S is a subtype of T.
>
>   This uses nested quantifiers, somewhat like
>
> ( ∀(o1∈S) ∃(o2∈T) ∀(P∈P(T)) B(P(o2))=(P(o1)) )==> S < T
>
>   . And such a proposition is hard for me to understand!

For me too.

>   Later, I looked at a book in a bookstore; it was a book
>   about programming by Barbara Liskov that came out after the
>   LSP was already mentioned often, and as far as I could see, 
>   that book did not mention the LSP at all, although it
>   actually had a chapter about subtypes!

Do you remember the book's title?

>   So, here's my personal principle, that I use instead of the LSP:
>
> An object-oriented program is not complete without proper
> documentation, i.e., contracts. The documentation of a class
> must be true for all objects of this class and for all objects
> of all direct and indirect subclasses.

That's much easier to ``parse'' indeed.  Thanks for the contribution.
(<joke>The empty documentation seems to satisfy the principle.</joke>)

>   . If this was too long, one could abbreviate this to just:
>
> Class contracts must hold for subclasses.
>
>   . I think the original LSP unfortunately tried to avoid
>   references to contracts and just talks about code.


More information about the Python-list mailing list