> You're right in saying that a class shouldn't expose its internals, even to subclasses.
Я этого не говорил. Соответственно, и дальнейшие объяснения про итераторы излишни. :-)
Речь была о другом - в С++ публичное наследование предполагает сразу две разные вещи: методы базового класса становятся публичными методами производного класса и, второе, указатель на производный класс свободно кастируется в указатель на базовый. Так вот, при использовании mix-техник, второе свойство видится практически абсолютно излишним. Реальный mix - это приватный базовый класс с, тем не менее, публичным интерфейсом (в С++ такое реализуемо, но не без малооправданных усилий). По сути, наследование тут, в mix-классах, играет чисто синтаксическую роль, позволяя изящным образом добавить какие-то фичи в имплементацию. Семантически же "базовый" и "производный" класс вовсе не связаны отношением "isA".
> Regarding entities and objects: no offense intended, but numbers and shapes are textbook examples and not really useful.
Не вижу связи между критерием употребимости, который рассматриваете Вы, и возможностью выстроить вменяемую иерархию для довольно простой системы объектов.
> You just shouldn't go OO with rectangles and squares,
Огласите, пожалуйста, весь список. (с)
> it's not the point of OO.
Да ну? А в чем тогда "the point of OO", который препятствует тому, чтобы числа и геометрические фигуры рассматривались как объекты?
частичный ответ
Я этого не говорил. Соответственно, и дальнейшие объяснения про итераторы излишни. :-)
Речь была о другом - в С++ публичное наследование предполагает сразу две разные вещи: методы базового класса становятся публичными методами производного класса и, второе, указатель на производный класс свободно кастируется в указатель на базовый. Так вот, при использовании mix-техник, второе свойство видится практически абсолютно излишним. Реальный mix - это приватный базовый класс с, тем не менее, публичным интерфейсом (в С++ такое реализуемо, но не без малооправданных усилий). По сути, наследование тут, в mix-классах, играет чисто синтаксическую роль, позволяя изящным образом добавить какие-то фичи в имплементацию. Семантически же "базовый" и "производный" класс вовсе не связаны отношением "isA".
> Regarding entities and objects: no offense intended, but numbers and shapes are textbook examples and not really useful.
Не вижу связи между критерием употребимости, который рассматриваете Вы, и возможностью выстроить вменяемую иерархию для довольно простой системы объектов.
> You just shouldn't go OO with rectangles and squares,
Огласите, пожалуйста, весь список. (с)
> it's not the point of OO.
Да ну? А в чем тогда "the point of OO", который препятствует тому, чтобы числа и геометрические фигуры рассматривались как объекты?