реклама на сайте
подробности

 
 
> Разложение на классы
hadrov
сообщение Dec 3 2008, 18:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 11-11-08
Пользователь №: 41 540



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


Например:
Код
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. Вот только правильно ли это будет с точки зрения ООП?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Dec 4 2008, 08:40
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(hadrov @ Dec 4 2008, 00:57) *
Начинаю изучать ООП и пробую представить нижеследующую таблицу в виде классов/класса.


А может, вообще, не морочить голову и просто описать вместо классов структуры и запихать их в класс Table. Вот только правильно ли это будет с точки зрения ООП?

ООП'а тут вас нет. Есть просто объекты. ООП'ом оно станет, когда будет построена иерархия классов во главе с абстрактным базовым классом. Например:

Код
class TElement
{
public:
    virtual void draw() = 0; // отрисовка элемента таблицы
    ... // еще какие-то методы, общие для элементов таблицы
}

class TCell : public TElement
{
   ...
}

class TGroup : public TElement
{
    ...

private:
    TCell cells[N];
    ....
}

class THeader : public TGroup // группа ячеек, выполняющая функцию заголовка в таблице
{
}


И так далее. Конкретная реализация зависит о того, что хотите. Но путь такой. В итоге должна получиться иерархия классов, которая предоставит простую и прозрачную управляемость, что и является целью применения ООП.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016