M>Расскажи, как ложится на ООП-парадигму такое банальное описание, как «открыть дверь». С нетерпением жду
создать объект "дверь". у двери могут быть состояния: открыта, закрыта, закрыта-и-замкнута, на-обслуживании. у двери есть методы...
да, все это круто, но только в данном случае метод "открыть", вероятно, придется наследовать от абстрактного объекта от которого наследуется еще и окна, т.к. они открываются по аналогичной схеме. ящики в столе, как ни странно, тоже.
возникает вопрос -- что общего между окном и ящиком? в процедурном программировании можно создать функцию open(obj) и абстрагироваться от объекта (в частности, у окна может быть свойство прозрачности/матовости).
в случае ооп мы пишем obj->open(). поскольку obj приходится наследовать от абстрактного класса, которому трудно дать осмысленное имя, то добавление новых объектов затруднено и реально только в рамках одного компилятора.
на процедурных языках можно писать реализацию "дверь" на си, а "окно" на асме. главное -- это обеспечить единый и унифицированный интерфейс. если obj это структура, то все процедурные языки позволят реализовать ее какой бы язык мы ни выбрали. а вот писать дверь на си++, а окно на жабе -- увы и ах. будет либо дикий оверхид, либо фактически мы откажемся от вкусняшек ооп и откатимся на процедурный уровень.
взять питон. наличие утиной типизации позволяет писать в процедурной стиле то, что на плюсах пишут в объективном и то, что называется громким словом полиморфизм.
не знаю как думаете вы, а я уверен, что в плюсах неправильный ооп и все беды идут от него. у меня в резюме заявлен пятнадцатилетный опыт. щас получит лет пять опыта в большом проекте. и только-только начал робко пробовать ооп с удивлением обнаружив, что я знаю как его готовить (местами). или я даун или одно из двух. а чего вы хотите от тех, кто сразу начал с ооп, других языков не видел, асм не курил и не под капот компилятора не заглядывал? причем, наблюдая за плюсами, я обнаруживаю как они героически решают проблемы, которые сами же и создают, в результате чего и без того переусложненный язык превращается в монстра.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.