Проектирование классов, интерфейсы
От: Аноним  
Дата: 15.01.14 13:52
Оценка:
Здравствуйте.
Есть вот такие классы

class A()
{
public:
    int arr[1000];
    int foo;
    void calc();
    void calc_2();
    void calc_3();    
}

class B()
{
public:
    int arr[1000];
    char bar;
    void calc();
    void calc_2();
    void calc_4();    
}


Хочу объединить эти классы. Начитавшись статей в Интернете вижу вот такое решение:
class ISomeGeneralClass()
{
public:
    virtual void calc();
    virtual void calc_2();
}

class A(): public ISomeGeneralClass
{
public:
    int arr[1000];
    int foo;
    virtual void calc() { /* Описание поведения А */ };    
}

class B(): public ISomeGeneralClass
{
public:
    int arr[1000];
    char bar;
    virtual void calc() { /* Описание поведения B */ };    
}

Но меня смущает, что у обоих классов есть одинаковые поля данных int arr[1000]. Не нужно ли это поле вынести в отдельный класс от который будут использовать A и B? Вот что-то такое:

class ISomeGeneralClass()
{
public:
    virtual void calc();
    virtual void calc_2();
}

class Data
{
public:
    int arr[1000];
}

class A(): public ISomeGeneralClass
{
public:
    Data data;
    int foo;
    virtual void calc() { /* Описание поведения А */ };    
}

class B(): public ISomeGeneralClass
{
public:
    Data data;
    char bar;
    virtual void calc() { /* Описание поведения B */ };    
}


Помогите, пожалуйста, решить этот вопрос.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.