Одной из целей ООП было облегчить повторное использование, однако это не единственная цель. Ключ к обучению эффективному использованию объектов - это шаблоны проектирования.
Мы все привыкли к идее алгоритмов, которые говорят нам, как комбинировать различные процедуры и структуры данных для выполнения общих задач. Обратно посмотрите на «Шаблоны проектирования» от «Банды четырех», чтобы узнать, как комбинировать объекты для выполнения общих задач.
До того, как я узнал о шаблонах проектирования, я был в неведении относительно того, как эффективно использовать объекты, отличные от структуры супертипа.
Помните, что реализация интерфейсов так же важна, если не важнее, чем наследование. В свое время C ++ был ведущим примером объектно-ориентированного программирования, и использование интерфейсов скрыто по сравнению с наследованием (виртуальные функции и т. Д.). C ++ Legacy означало, что гораздо больше внимания было уделено повторному использованию поведения в различных руководствах и общих обзорах. С тех пор Java, C # и другие языки сделали интерфейс более привлекательным.
То, для чего хороши интерфейсы, точно определяет, как два объекта взаимодействуют с каждым. Это не о повторном использовании поведения. Как оказалось, большая часть нашего программного обеспечения посвящена взаимодействию различных частей. Таким образом, использование интерфейса дает гораздо больший прирост производительности, чем создание многократно используемых компонентов.
Помните, что, как и многие другие идеи программирования, объекты - это инструмент. Вы должны будете высказать свое мнение о том, насколько хорошо они работают для вашего проекта. Для моего программного обеспечения CAD / CAM для металлорежущих станков существуют важные математические функции, которые не помещаются в объекты, потому что для них нет причин быть в объектах. Вместо этого они выставляются из библиотеки и используются объектом, который нуждается в них. Тогда есть некоторые математические функции, которые были сделаны объектно-ориентированными, поскольку их структура естественным образом приводит к этой установке. (Взятие списка точек и преобразование его в несколько различных типов траекторий). Снова используйте ваше лучшее суждение.