Software Developer Engineer in Test, Toolsmith в Unity Technologies
  • Что учить: Python или JS?

    Прастити, а можно пример «нетипизированного» языка?

  • Принцип подстановки Барбары Лисков

    Но так он никогда не прочтет Библии или Корана!

  • Принцип подстановки Барбары Лисков

    А можно ещё посмотреть на проблему так: интерфейс сущности это не только набор допустимых с ней *операций* (в терминах примера — список методов бойлера, которые вызывает клиент), но еще и множество *допустимых комбинаций* этих операций (в терминах примера, у старых бойлеров допустима последовательность вызовов (setDesirableTemperature, initializeDevice, heatWater), а у BoilerC — нет.
    Очень может быть, что для какой-нибудь экваториальной местности в эту систему добавят покрашенные черной краской бочки, греть которые будет вообще солнце без всяких там драйверов. То есть поведение ну совсем заменят. Вызов метода setDesirableTemperature будет, скажем, приносить в жертву пропорциональное число девственниц, а initializeDevice будет поливать их кровью бочки. И если это не противоречит местным ритуалам, система по-прежнему будет замечательно работать, вода будет греться.