Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2014, 17:42   #1
XuMuK
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 11
По умолчанию Проектирование класса

Есть программа, которая неким образом изменяет изображение.

Данные в изображении ( пиксели ) могут храниться в массиве float / double. В зависимости от того, включен ли соответствующий check box.
Соответственно нужно придумать класс/несколько классов хранящих изображения ( class Image ) и осуществляющие простейшие дейтвия : инициализация, созданине копии, "извлечение" строки из изображения.
Обработку изображения ( class Processor ) хотелось бы реализовать в отдельном классе.
Подскажите , плиз, как организовать эту полиморфность по типу для класса изображения и организовать, если возможно единый интерфейс между классами Image - Processor.

Последний раз редактировалось XuMuK; 28.05.2014 в 18:07. Причина: уточнение
XuMuK вне форума Ответить с цитированием
Старый 28.05.2014, 22:00   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Код:
class Image
{
public:
    virtual ~Image(){}
    ...
    virtual size_t GetWidth()const;
    ...
};

class Proccessor
{
public:
    virtual ~Proccessor(){}

    virtual void Work(Image& image);
    ...
};

...


class ConcreteImage: public Image
{
public:
    virtual ~ConcreteImage(){}
    ...
    virtual size_t GetWidth()const {  ... }
    ...

};

class ConcreteProccessor: public Proccessor
{
public:
    virtual ~ConcreteProccessor(){}

    virtual void Work(Image& image) { ... }
    ...
};

...

Последний раз редактировалось _Bers; 29.05.2014 в 00:30.
_Bers вне форума Ответить с цитированием
Старый 29.05.2014, 12:05   #3
XuMuK
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 11
По умолчанию

_Bers, я так понял, нужно будет создавать 2 потомка : ConcreteImageFloat и ConcreteImageDouble ? И соответственно 2 Processor ... по одному на каждый тип
XuMuK вне форума Ответить с цитированием
Старый 29.05.2014, 23:14   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от XuMuK Посмотреть сообщение
_Bers, я так понял, нужно будет создавать 2 потомка : ConcreteImageFloat и ConcreteImageDouble ? И соответственно 2 Processor ... по одному на каждый тип
Нужно общий функционал выносить в базовый класс.
Например: независимо от внутреннего строения картинки, у всех у них есть ширина и высота.

Соответственно, методы получения высоты и ширины можно сделать одинаковым для всех картинок. Соответственно, этот общий функционал можно перетащить в базу.

----

Процессоров может быть несколько штук при условии, если нужно по разному обрабатывать картинки.
Если же принцип обработки один и тот же - достаточно одного процессора, который работает с "базовой" картинкой.
_Bers вне форума Ответить с цитированием
Старый 30.05.2014, 09:01   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Еще можно сделать родительский double GetPixel(col, row) и тогда процессор будет только один.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понятная проблема, адрес переменной класса у 2 объектов класса одинаков Soeth Общие вопросы C/C++ 8 06.11.2013 05:10
Как создать метод класса, возвращающий объекты (поля класса) разных типов frosich Общие вопросы Delphi 3 01.03.2013 19:29
Функция базового класса вызывает критическую ошибку при вызове для класса-потомка Archet Общие вопросы C/C++ 7 17.01.2012 20:17
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса Jugger Помощь студентам 3 05.01.2012 04:10
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11