LINUX.ORG.RU

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

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

Т.е. если ты можешь реализовывать интерфейсы, у тебя уже нет отношения is-a?

Ни интерфейсы, ни отношение «is-a» не имеет ничего общего с ООП. К счастью, большинство ООП языков эти концепты реализуют.

ООП - это про объекты (не интерфейсы) и их наследование (не про реализацию интерфейса) - то есть про неявное, глобальное, не переиспользуемое переопределение части программы.

По сути, ООП - это коряво сделанный, неявный dependency injection реализованный на уровне языка.

Именно по этому, в современных подходах к написанию программ на «ООП» языках используются только

  • Реализации интерфейсов
  • Композиция/делегирование через реализацию интерфейса или даже без интерфейса, через явный DI

Само наследование не/крайне редко используется и полно всяких классов без состояний - по сути просто функций объединенных в модули за неимением нормальной поддержки вторых.

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

Т.е. если ты можешь реализовывать интерфейсы, у тебя уже нет отношения is-a?

Ни интерфейсы, ни отношение «is-a» не имеет ничего общего с ООП. К счастью, большинство ООП языков эти концепты реализуют.

ООП - это про объекты (не интерфейсы) и их наследование (не про реализацию интерфейса) - то есть про неявное, глобальное, не переиспользуемое переопределение части программы.

По сути, ООП - это коряво сделанный, неявный dependency injection реализованный на уровне языка.

Именно по этому, в современных подходах к написанию программ на «ООП» языках используются только

  • Реализации интерфейсов
  • Композиция/делегирование через реализацию интерфейса

Само наследование не/крайне редко используется и полно всяких классов без состояний - по сути просто функций объединенных в модули за неимением нормальной поддержки вторых.