
Программирование — это борьба со сложностью. В процессе развития инженерной дисциплины были предложены различные подходы для решения задачи увеличивающейся сложности программ: процедурное программирование, функциональное программирование, объектно-ориентированное программирование и другие. Современные языки часто мультипарадигменные: например, в функциональном языке встречаются объекты, а в объектно-ориентированном языке — лямбды.
В объектно-ориентированном языке использование объектов и их свойств как инкапсуляция, наследование и полиморфизм являются самым органичным способом борьбы со сложностью. Также и в функциональных языках есть свои подходы и конструкции. Но если выбран объектно-ориентированный язык, то написать поддерживаемую, расширяемую и тестируемую программу легче всего применяя подходы и архитектуру, основанную на использовании объектов и их свойств (странно, да?
