LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

Расскажи, какой контракт здесь нарушается.

Вопрос упирается в вопрос «каков контракт QWidget»

Ты так уверенно говорил о нарушении, что я было подумал - ты знаешь этот контракт.

Если мы считаем контрактом документацию, то ничего, кроме сигнатуры и виртуальности, не определено.

Итак, этот контракт не нарушен...

Если мы говорим о поведении программ, то реальное поведение у QWidget есть, программу, которая его использует, составить можно и принцип будет нарушен.

...но ты можешь придумать такой контракт, который невозможно не нарушить. Окей. Ты из этого пришел к ненужности принципа Лисков?

В реальной жизни программы обычно проверяются не формальными доказательствами, а тестами, поэтому с практической точки зрения, если класс QWidget можно воплотить в экземпляр, то принцип Лисков здесь нарушен.

Нет. Если контракт - это тест, а тест успешно выполняется и на QWidget, и на его потомке, то контракт не нарушен.

Исходная версия tailgunner, :

Расскажи, какой контракт здесь нарушается.

Вопрос упирается в вопрос «каков контракт QWidget»

Ты так уверенно говорил о нарушении, что я было подумал - ты знаешь этот контракт.

Если мы считаем контрактом документацию, то ничего, кроме сигнатуры и виртуальности, не определено.

Итак, этот контракт не нарушен...

Если мы говорим о поведении программ, то реальное поведение у QWidget есть, программу, которая его использует, составить можно и принцип будет нарушен.

...но ты можешь придумать такой контракт, который невозможно не нарушить. Окей. Ты из этого пришел к ненужности принципа Лисков?

В реальной жизни программы обычно проверяются не формальными доказательствами, а тестами, поэтому с практической точки зрения, если класс QWidget можно воплотить в экземпляр, то принцип Лисков здесь нарушен.

Нет. Если контракт - это успешное выполнение теста, а тест успешно выполняется на QWidget и его потомке, то контракт не нарушен.