Начинаю изучать ООП и пробую представить нижеследующую таблицу в виде классов/класса.

Например:
Код
const int N = 3;
// описание одной ячейки
class Cell
{
protected:
int value;
};
// описание группы из максимумов и минимумов
class Group
{
protected:
Cell max[N];
Cell min[N];
};
// описание строки
class Row
{
protected:
float y[N];
Group group;
};
// описание таблицы
class Table
{
protected:
Row rows[N];
};
Для упрощения описал только поля данных. Вопрос состоит в следующем: когда в конкретном случае нужно остановится при разложении классов? ИМХО, уж слишком громоздко вышло. Возможно, класс Group стоит исключить и описывать Cell max[N] и Cell min[N] сразу в классе Row.
А может, вообще, не морочить голову и просто описать вместо классов структуры и запихать их в класс Table. Вот только правильно ли это будет с точки зрения ООП?