ООП не важен не из-за себя, а из-за того, что с ним связано. Нечто, имеющее отношение к способности абстрагироваться и изолировать, группировать вещи и заканчивать, раскрывает только те части, которые необходимы для взаимодействия друг с другом.
Это общий технический метод, называемый «модульность», который позволяет создавать сложные системы как совокупность более простых, не заботясь о каждой детали на высоком уровне, и требует, чтобы компоненты были заменяемыми, даже без того, чтобы они были точно такой же.
Эти «инженерные концепции» пытались сохранить в разработке программного обеспечения с того момента, как сами программные продукты стали больше, чем «возможность единого разработчика», поэтому требовался способ заставить разработчиков работать над независимыми частями и позволить этим частям взаимодействовать вместе.
Тем не менее, эти принципы не обязательно могут быть найдены только в ООП (если теория вычислений верна, существует бесконечное множество возможных способов достижения этих результатов).
ООП - это просто успешная попытка соединить эти вещи, давая этим общим терминам (таким как модули, инкапсуляция, замещение) более точные определения и детальную концептуализацию тех определений (шаблонов), которые могут вписаться в языки программирования.
Сначала думайте, что ООП - это не « языковая функция », а « общая лексика », которая заставляет разработчиков программного обеспечения подходить к разработке программного обеспечения.
Тот факт, что данный язык имеет или не имеет примитивы, которые непосредственно применяют эту лексику, гарантирующую, например, что «капсула» не открыта непреднамеренно тем, кто не должен это делать, является вторичным аспектом разработки ООП. Вот почему даже большой C-проект часто «управляется как» ООП, даже если сам язык не оказывает прямой поддержки этому.
Преимущество всего того, что не распознается, пока размер проекта не останется в способности единого разработчика понимать и отслеживать все, что он делает (на самом деле, в этих ситуациях это может даже рассматриваться как «накладные расходы»), или в небольшой группе, разрабатывающей что-то в короткий период. И это основная причина, по которой юниоры, изучающие ООП в терминах «языковой функции», часто неправильно интерпретируют ее, создавая плохо разработанный код.
То, как ООП вписывается в языки, зависит от того, как разработчики языка интерпретируют принцип ООП в своей собственной конструкции.
Таким образом, «инкапсуляция» в C ++ становится «закрытыми членами» (а «капсула» становится классом), «подстановка» становится переопределением виртуальных функций или параметризацией / специализацией шаблона и т. Д., Тогда как в D «капсула» является «модулем» (и подстановка идет через классы и т. д.), таким образом, делая определенную парадигму или шаблон непосредственно доступными на данном языке, а не на другом и так далее.
Вербовщики, задавая вопрос ООП, просто проверяют вашу способность абстрагироваться и разрабатывать дизайн программного обеспечения для будущих крупных проектов и разработок. ООП, для них это просто «словарь», который, как они и вы, и они знают, так что вы можете говорить о других более общих вещах или конкретизировать в конкретную реализацию.