Re[14]: Как мало людей понимает ООП...
От: мыщъх США http://nezumi-lab.org
Дата: 28.07.12 04:13
Оценка: +2
Здравствуйте, Mamut, Вы писали:


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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.