Я должен признаться, что я немного скептик ООП. Плохие педагогические и трудовые переживания с объектной ориентацией не помогли. Поэтому я превратился в горячего верующего в Visual Basic (классический!).
Затем однажды я узнал, что С++ изменился, и теперь у него есть STL и шаблоны. Мне это очень понравилось! Сделал язык полезным. Затем в другой день MS решила применить лицевую хирургию к VB, и я действительно ненавидел конечный результат за безвозмездные изменения (использование "end while" вместо "wend" превратит меня в лучшего разработчика? Почему бы не отказаться от "следующего" для "end for", а также так много факторов Java, которые я нашел бесполезными (например, наследование, а также концепция иерархической структуры).
И теперь, спустя несколько лет, я задаюсь этим философским вопросом: нужно ли наследование действительно?
Банды из четырех говорят, что мы должны поддерживать композицию объекта над наследованием. И, подумав об этом, я не могу найти что-то, что вы можете сделать с наследованием, которое вы не можете сделать с агрегацией объектов и интерфейсами. Поэтому мне интересно, почему у нас даже есть это в первую очередь?
Любые идеи? Мне бы хотелось увидеть пример того, где наследование будет обязательно необходимо, или где использование наследования вместо компоновки + интерфейсов может привести к упрощению и упрощению модификации дизайна. В прежних работах, которые я нашел, если вам нужно изменить базовый класс, вам нужно также изменить почти все производные классы, поскольку они зависят от поведения родителя. И если вы создадите виртуальные методы базового класса... тогда не происходит обмена кодами: (
Иначе, когда я, наконец, создаю свой собственный язык программирования (длинное невыполненное желание, которое я нашел, большинство разработчиков разделяет), я не вижу смысла добавлять наследование к нему...