Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class Comparator {
public:
virtual int compare(Object* obj1, Object* obj2) = 0;
};
Другой пример. Предположим в программе требуется динамическая загрузка модулей. Есть состояние — набор уже загруженных модулей. И поведение легко просматривается — «загрузить модуль», «выгрузить модуль». К чему этот пример? К тому, что никакой связи с объектами в реальном мире здесь и в помине нет.
С++ очень прост в том смысле, что классы С++ повторяют описание объектов реального мира.— согласен что утверждение неполное ( или неверное — как кому нравится). Исходя из своего опыта скажу так, может кому пригодится: классы должны отражать свойства и поведение объектов и (или) понятий предметной области с которой мы работаем. И да — это архитектурный подход. Более того в каждом языке разный. В JavaScript вообще нет классов как таковых и ООП там прекрасно живет.
У сущности есть поведение— не факт, те же DAO зачастую не содержат поведения; или же поведение ваших объектов настолько сложно, что вы выносите его (поведение) в отдельный класс или классы, и ваш объект становиться «Value Object».
Более развернуто, класс объектов (в понимании ООП) используют, если…
… у некоторой сущности есть поведение, зависящее от внутреннего состояния этой сущности.
Мысли об ООП