Помогите с проектированием классов
От: nk19  
Дата: 12.04.07 01:26
Оценка:
класс image содержит объекты шалбонного класса matrix, реализующего динамический двухмерный массив
matrix<double> image_source;
matrix<int> image_scaled;

нужно написать 3 алгоритма обработки изображения
пока реализовал так, но мне не нравится
class image_proc: public image

и все методы обработки к этом классе
была идея сделать для каждого алгоритма обработки сделать своего наследника image, только image_source у всех должен быть один, а простое копирование не нравится
Re: Помогите с проектированием классов
От: pvnic  
Дата: 12.04.07 06:14
Оценка:
Здравствуйте, nk19, Вы писали:

N>class image_proc: public image[/ccode]

N>и все методы обработки к этом классе

зачем обработчику наследоваться то от image?

схематично так:

1. создай какой-нить интерфейс

public interface IImageProcessor {

  SomeResult processImage(Image image); 
}


2. Реализуй обработчики

public class FirstVariant  implements IImageProcessor {

   public SomeResult processImage(Image image) {
     // processing
   }
}

public class SecondVariant  implements IImageProcessor {

   public SomeResult processImage(Image image) {
     // processing
   }
}

etc..


3. Сделай какую-нить фабрику по получению обработчиков и вызывай как нужно

public class SomeFactory {
   
.....
  public static List<IImageProcessor> getAllProcessors() {

     List<IImageProcessor> res = new ArrayList<IImageProcessor>();
     res.add(new FirstVariant());
     res.add(new SeconddVariant());
     return res;
  }
}

.... SomeClass  ... {

 ... someMethod() {
    List<IImageProcessor> list = SomeFactory.getAllProcessors();
    list.get(0).processImage(image);
  }
}
Re: Помогите с проектированием классов
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 12.04.07 10:54
Оценка:
Здравствуйте, nk19, Вы писали:

N>нужно написать 3 алгоритма обработки изображения


  1. Какие преобразования над изображением выполняют эти три алгоритма?
  2. В каком порядке они вызываются? Существует ли предопределенная последовательность вызова этих операций?
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re: Помогите с проектированием классов
От: KolanT  
Дата: 12.04.07 11:23
Оценка:
Здравствуйте, nk19, Вы писали:

N>класс image содержит объекты шалбонного класса matrix, реализующего динамический двухмерный массив

N>
matrix<double> image_source;
N>matrix<int> image_scaled;

N>нужно написать 3 алгоритма обработки...

К сожалению в си ни бум-бум, но по ключевым словам
нужно написать 3 алгоритма обработки изображения

предлогаю паттерн стратегия.
Re: Помогите с проектированием классов
От: Basil B Россия  
Дата: 12.04.07 11:31
Оценка:
Здравствуйте, nk19, Вы писали:

N>класс image содержит объекты шалбонного класса matrix, реализующего динамический двухмерный массив

N>
matrix<double> image_source;
N>matrix<int> image_scaled;

N>нужно написать 3 алгоритма обработки изображения

Зачем делать сложным то что проще простого?(с) Чем свободные функции не нравятся?
Re[2]: Помогите с проектированием классов
От: nk19  
Дата: 12.04.07 12:02
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, nk19, Вы писали:


N>>нужно написать 3 алгоритма обработки изображения


КЛ>

    КЛ>
  1. Какие преобразования над изображением выполняют эти три алгоритма?
    КЛ>
  2. В каком порядке они вызываются? Существует ли предопределенная последовательность вызова этих операций?
    КЛ>
image — авторегрессионная модель изображения
3 алгоритма — это 3 вида прогнозов, каждый состоящий из нескольких функций
Re[3]: Помогите с проектированием классов
От: nk19  
Дата: 12.04.07 12:09
Оценка:
Здравствуйте, nk19, Вы писали:

N>Здравствуйте, Кирилл Лебедев, Вы писали:


КЛ>>Здравствуйте, nk19, Вы писали:


N>>>нужно написать 3 алгоритма обработки изображения


КЛ>>

    КЛ>>
  1. Какие преобразования над изображением выполняют эти три алгоритма?
    КЛ>>
  2. В каком порядке они вызываются? Существует ли предопределенная последовательность вызова этих операций?
    КЛ>>
N>image — авторегрессионная модель изображения
N>3 алгоритма — это 3 вида прогнозов, каждый состоящий из нескольких функций
еще забыл сказать, результат обработки тоже два image (прогноз, ошибки), но при рисовании формы получаются через get'ы(int x, int y)
Re[2]: Помогите с проектированием классов
От: nk19  
Дата: 12.04.07 12:14
Оценка:
Здравствуйте, pvnic, Вы писали:

P>Здравствуйте, nk19, Вы писали:


N>>class image_proc: public image[/ccode]

N>>и все методы обработки к этом классе

P>зачем обработчику наследоваться то от image?


P>схематично так:


P>1. создай какой-нить интерфейс


P>
P>public interface IImageProcessor {

P>  SomeResult processImage(Image image); 
P>}
P>


P>2. Реализуй обработчики


P>
P>public class FirstVariant  implements IImageProcessor {

P>   public SomeResult processImage(Image image) {
P>     // processing
P>   }
P>}

P>public class SecondVariant  implements IImageProcessor {

P>   public SomeResult processImage(Image image) {
P>     // processing
P>   }
P>}

P>etc..
P>


P>3. Сделай какую-нить фабрику по получению обработчиков и вызывай как нужно


P>
P>public class SomeFactory {
   
P>.....
P>  public static List<IImageProcessor> getAllProcessors() {

P>     List<IImageProcessor> res = new ArrayList<IImageProcessor>();
P>     res.add(new FirstVariant());
P>     res.add(new SeconddVariant());
P>     return res;
P>  }
P>}

P>.... SomeClass  ... {

P> ... someMethod() {
P>    List<IImageProcessor> list = SomeFactory.getAllProcessors();
P>    list.get(0).processImage(image);
P>  }
P>}

P>

с интерфейсами к сожалению не работал, не понял особенно 3 пункт
Re[3]: Помогите с проектированием классов
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 12.04.07 15:18
Оценка:
Здравствуйте, nk19, Вы писали:

N>image — авторегрессионная модель изображения

N>3 алгоритма — это 3 вида прогнозов, каждый состоящий из нескольких функций

А как работает пользователь с этими прогнозами? По очереди? В произвольном порядке? Что он делает после того, как получит прогноз? От ответов на эти вопросы и зависит конкретное архитектурное решение.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[4]: Помогите с проектированием классов
От: nk19  
Дата: 12.04.07 16:53
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, nk19, Вы писали:


N>>image — авторегрессионная модель изображения

N>>3 алгоритма — это 3 вида прогнозов, каждый состоящий из нескольких функций

КЛ>А как работает пользователь с этими прогнозами? По очереди? В произвольном порядке? Что он делает после того, как получит прогноз? От ответов на эти вопросы и зависит конкретное архитектурное решение.

в произвольном порядке, может использовать только один прогноз, может по очереди несколько
все прогнозы выводятся через get...(int x, int y)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.