Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вопрос по ООД и ООА


Автор: rukudias 28.1.2008, 12:10
Привет всем!

Вопрос следущего характера:
-необходимо написать ПО связивающее ПК и некий девайс по COM порту
голика работы :
-запрос ответ ,анализ ответа причем есть еще куча зависемых условий кроме самого ответе 

Подскажите какую связку патернов использовать?

зы сейас использую обсервер для прослушивания сома в отдельном потоке 
поднимаю это сообщение вверх

че делать дальше сейчас стоит свитчь в свиче эсле криво както!

Автор: chipset 30.1.2008, 20:21
Кроме того что-бы разбить Factory на кучу кусков вряд-ли что-то поможет. 
В конце всё очевидно сведется:

Код

AbstractCommand *command = factoryMap["command"].Build();


А если логика очень сложная то уже имеет смысл использовать бизон или yacc.

Автор: Mayk 31.1.2008, 09:07
Цитата(rukudias @  28.1.2008,  16:10 Найти цитируемый пост)

че делать дальше сейчас стоит свитчь в свиче эсле криво както! 

общее правило такое --- заменяешь свитчи наследованием классами, перечитываешь книги по паттернам и на n-ной странице 
кричишь http://c2.com/ppr/wiki/WikiPagesAboutWhatArePatterns/HaveThisPattern.html.
а конкретнее имхо описание выглядит слишком размыто.

Цитата(chipset @  31.1.2008,  00:21 Найти цитируемый пост)

А если логика очень сложная то уже имеет смысл использовать бизон или yacc.

ыы. не факт что данные поступающие с COM порта лежат в некой имеющей смысл граматике.

Добавлено через 1 минуту и 28 секунд
Цитата(Mayk @  31.1.2008,  13:07 Найти цитируемый пост)

а конкретнее имхо описание выглядит слишком размыто.

в смысле  вопрос это выглядит так:
"я получаю данные, обрабатываю данные.  Какие паттерны мне использовать?".

Автор: rukudias 31.1.2008, 11:28
Спасибо за ответы всем респект и уважуха smile 
Цитата

А если логика очень сложная то уже имеет смысл использовать бизон или yacc. 



можно без сленга че за патерны?

Добавлено через 6 минут и 2 секунды
Цитата

в смысле  вопрос это выглядит так:
"я получаю данные, обрабатываю данные.  Какие паттерны мне использовать?". 


есть просто зависимых условий
ну например 
посылка запроса - ответ.Если норма то переходим к следуш посылки причем следуш посылка может быть пропушена
если мы не в стейте А и тут же если мы в стейте А то проверить на стейл В

те много зависимых условий проверок перед тем как принять решение об типе очередной отправки

Цитата

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



Это решение мне нравится! smile 

Автор: Mayk 31.1.2008, 16:24
Цитата(rukudias @  31.1.2008,  15:28 Найти цитируемый пост)

А если логика очень сложная то уже имеет смысл использовать бизон или yacc. 
можно без сленга че за патерны?

это не паттерны, а софт.

Цитата(rukudias @  31.1.2008,  15:28 Найти цитируемый пост)

есть просто зависимых условий
ну например 
посылка запроса - ответ.Если норма то переходим к следуш посылки причем следуш посылка может быть пропушена
если мы не в стейте А и тут же если мы в стейте А то проверить на стейл В

Во-первых собсно смотри паттерн  state, во-вторых поиск по ключевым словам "конечный автомат".


ещё можешь сюда кинуть фрагмент текущего кода, мы посмотрим, может посоветуем как зарефакторить.

Добавлено через 2 минуты и 36 секунд
ps. кстати паттерны не являются серебрянной пулей.

Добавлено через 3 минуты и 6 секунд
pps. это к тому что сидеть с бумажкой зачастую более эффективно чем спрашивать на форумах

Автор: rukudias 31.1.2008, 17:32

Цитата

это не паттерны, а софт.


Гы че за софт?

конечный автомат а иммено стейт машин уже использую на верху
ну типа там несколькотестов переход от теста к тесту через сообшения конкрет стейта -контексту! 

Автор: Любитель 31.1.2008, 17:50
Цитата(Mayk @  31.1.2008,  16:24 Найти цитируемый пост)
Во-первых собсно смотри паттерн  state, во-вторых поиск по ключевым словам "конечный автомат"

+1

Цитата(rukudias @  31.1.2008,  17:32 Найти цитируемый пост)
Гы че за софт?

Генераторы парсеров языков на основе декларативного описания.

Цитата(rukudias @  31.1.2008,  17:32 Найти цитируемый пост)
конечный автомат а иммено стейт машин уже использую на верху

Здесь он и нужен ИМХО (хотя, всё-таки, неплохо бы, если возможно, конкретный код). Только предусмотреть максимально декларативную логику описания переключения и пристыковки каких-то возможных спецобработчиков.

Автор: Mayk 31.1.2008, 17:52
Цитата(rukudias @  31.1.2008,  21:32 Найти цитируемый пост)

Гы че за софт?

STFW. В двух словах: генератор парсеров для LALR(1) грамматик.

Добавлено через 27 секунд
Любитель, обогнал

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)