Re: Проектирование классов, интерфейсы
От: Stgl  
Дата: 15.01.14 19:26
Оценка:
Есть класс A() в программе foo и класс B() в программе bar. Сейчас классы — это просто обертка над кучей функций. Часть данных у этих двух классов совпадают, но есть и отличия. Аналогично с функциями — часть полностью одинакова, часть выполняют похожие действия с некоторыми отличиями. Хочу написать единую программу, так как действия обоих классов схожи и было бы логично иметь все в одном месте и для последующей поддержки будет проще менять что-то в коде одной программы.

class A()
{
public:
    int arr[1000]; // это поле полностью совпадает с полем в классе B
    int foo; // это уникальное поле данных для данного класса

    // код этой функции полностью совпадает с кодом в классе B
    void calc()
    {
        for (int i = 0; i < 1000; i++) arr[i] = i;
    } 

    // У этой функции есть небольшие отличия от аналогичной в классе B
    void calc_2()    
    {
        std::cout << arr[0];
        foo = 123 + arr[1];
        std::cout << foo;
    }

    // Уникальная функция для класса А     
    void calc_3()
    {
        arr[3] = 0xFF;
    } 
}

class B()
{
public:
    int arr[1000];
    char bar;

    void calc()
    {
        for (int i = 0; i < 1000; i++) arr[i] = i;
    } 

    void calc_2()
    {
        std::cout << arr[0];
        bar = 'A';
        std::cout << bar;
    }

    // Уникальная функция для класса B   
    void calc_4()
    {
        arr[100] = 0xAA;
    } 
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.