Показать сообщение отдельно
  #3 (permalink)  
Старый 28.04.2013, 01:53
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Мне вот от безделия тоже захотелось пооффтопить, так что поведаю про понимание ООП.
ООП - один из паттернов программирования решающий следующие задачи:
* увеличить эфективнось разработки крупных и огромных проектов.
* изолировать отдельных разработчиков и команды друг от друга.
* избежать копипасты при повторном использовании кода.
* упростить использование уже существующего и скмпилированого, но требующего модификаций кода.
* ускорить подключение к процессу разработки новых людей.
Все эти задачи были сформулированы через следующие понятия: инкапсуляция, наследование, полиморфизм и абстракция.
Абстракция хоть и является важнейшим понятием, однако на столько тесно связана с тремя другими, что её можно игнорировать дабы не плодить сущности.
Однако это не ООП, всё перечисленное свойственно и ФП и не только.
Для ООП нужно понятие объекта, иначе откуда название. Само это понятие по сути бесполезно как средство решения задачь стоящих перед управленцами. Это всего лишь паттерн под них подогнаный.
Так как определения объекта сильно разняться, его иногда игнорируют, но тогда остаются 3 изначальных понятия и тогда выходит что ФП - один из способов реализовать ООП.
Упомянутые в википедии понятия класса и прототипа вообще сложились исторически и так же являются более узкими паттернами.
Идеальным ООП языком является Haskell, там объекты - типы, у типов могут быть классы, классы связаны множественным наследованием. Типы так же параметриризуются, что есть полиморфизм. Инкапсуляция там тоже есть, но не относится непосредственно к типам, она реализована на уровне функций и модулей.
С чем же мы имеем дело на самом деле? А это Славарно-Ориентированое Программирование. У нас основа - словарь с ключами строкового типа. Даже простейшие типы данных как числа и троки ведут себя как словари. Так что если это и будет ООП, то будет основано на словарях. Однако то что принято считать ООП не раскрывает всех возможностей словарей и иногда даже вредит. Прототипы и метатаблици(lua) полезны, но чаще стоит отдавать преймущество миксинам.
Существует много паттернов которые хорошо ложаться на словари, ООП только один из многих.
Ответить с цитированием