Объектно-ориентированный дизайн (OOD) объединяет данные и его методы. Это, насколько я вижу, достигает двух великих вещей: он обеспечивает инкапсуляцию (поэтому мне все равно, какие данные есть, только то, как я получаю нужные значения) и семантику (она связывает данные вместе с именами и ее методы последовательно используют данные, как изначально предназначалось).
Итак, где же сила ООД? В принципе, функциональное программирование связывает богатство с глаголами, а не с существительными, и поэтому инкапсуляция и семантика предоставляются методами, а не структурами данных.
Я работаю с системой, которая находится на функциональном конце спектра и постоянно длинна для семантики и инкапсуляции OO. Но я вижу, что инкапсуляция OO может быть препятствием для гибкого расширения объекта. Поэтому на данный момент я вижу семантику как большую силу.
Или инкапсулирует ключ ко всему полезному коду?
Изменить: я имею в виду конкретно тип инкапсуляции OO. changeColor(door,blue)
становится door.changeColor(blue)
.