Форум программистов, компьютерный форум CyberForum.ru

MVC дайте пример - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача char в функцию http://www.cyberforum.ru/cpp-beginners/thread1158708.html
Привет всем! Помогите, что неправильно: есть функция void send_new_object(char *g, char *h, int j) { char name_nach_punkta = *g; char name_kon_punkta = *h; nomer_marshrouta = j; } в которую посылается char add_name_nach_punkta; char add_name_kon_punkta;
C++ Написать программу на Форматированный ввод/вывод в текстовые файлы. Динамические массивы Файл f1 содержит: число чисел, записанных в файл; • далее - последовательность №1 целых положительных чисел в 16-й системе счисления. Последовательность №1 считать из файла и записать в динамический массив. Из динамического массива записать в файл f2 числа, делящиеся на 3 без остатка в 10-ой системе счисления. Вывести на экран содержимое файла f2 (считывать из файла). Вывод в файл f2... http://www.cyberforum.ru/cpp-beginners/thread1158665.html
По условию, заново выполнение программы? C++
Как сделать, выполнение небольшого кода заново, если условие выполнилось и присвоением нового значение какого либо переменной?
C++ Мин-макс в списке
не получается найти минимальный и максимальный элементы в списке: struct Node {int d,a; int value; Node *next; //указатель на следующий элемент списка Node *prev; };
C++ Динамическая память и конструктор класса http://www.cyberforum.ru/cpp-beginners/thread1158483.html
Подскажите, почему Marshroute *objects2 = new Marshroute(for_loop); компилятор ругается на (for_loop), если я хочу запустить конструктор не по умолчанию.
C++ Освобождение памяти Маленький вопросик, как правильно освобождать память выделенную под vector<...>, деструктором ~vector() или методом clear() ? подробнее

Показать сообщение отдельно
Bretbas
189 / 48 / 7
Регистрация: 05.08.2013
Сообщений: 766
Завершенные тесты: 1
02.05.2014, 23:57  [ТС]     MVC дайте пример
Посмотрел твой пример, вроде все понятно У тебя контроллер делает всю работу - отображает матрицу, и вызывает event(..) для ловли клавиш. Тоже подход) На самом деле эту задачу можно крутить под разными углами, и результат можно получить одинаковый, вопрос только в том, на сколько она будет легка для изменения чего-либо в ней.
Честно, я эту задачу уже разбирал на здесь, выложил свой проект, и услышал много комментариев по поводу разделения сущностей - логики от вида. Вот тогда я впервые с этим встретился
Вот, если хочешь взгляни на старый мой проект, прикрепляю его к посту с названием OldCreateMap. Оценишь хи-хи :-D

Так, ну собственно я переделал, немного, то что выкладывал выше, я решил задачу сделать тупо без контроллера, ибо он мне мешает. Грубо говоря только Модель, и только Представление.

Смотри, у меня есть 6 классов, два из них которые абстрактные:
View - Абстрактный класс, является наблюдателем за Model, и так же использует шаблон Command для того, чтобы внести чисто виртуальную функцию execute()
Model - Абстрактный класс, является субъектом, за которым следят наблюдатели, а именно View.
ModelMatrix - Конкретный подкласс класса Model, содержит данные о матрице и ее ширине и высоте. Так же предоставляет команды set/get.
ModelCursor - Конкретный подкласс класса Model, содержит данные о курсоре, координатами на экране и в матрице. Имеет прямую ссылку на саму матрицу. Так же предоставляет команды set/get.
ViewMatrix - Конкретный подкласс класса View, переопределяет функцию execute(), в которой запрашивает у пользователя ширину и высоту, затем инициализирует матрицу с введенной шириной и высотой нулями, и подписывается на обновления модели(именно ModelMatrix), что в свою очередь сразу же отображает матрицу на экране, затем прям в этой функции создается экземпляр подкласса ViewCursor и вызывается так же переопределенная функция execute(), о которой прямо сейчас напишу ниже
ViewCursor - Конкретный подкласс класса View, переопределяет функцию execute(), в которой отслеживает нажатия клавиш и делает соответствующии действия по нажатию. Следит за изменениями модели курсора(ModelCursor) и перерисовывает его каждый раз в нужном месте.

Вот более менее объяснил, как я и хотел, я разделил Модель на две сущности - Матрица и Курсор. Причем Курсор всегда имеет ссылку на матрицу, в которой он крутится.

На мой взгляд по логике все правильно не так ли? Прикрепил проектик с названием NewCreateMap.

Еще хотел узнать, как сделать такую систему, что к примеру у меня есть класс ViewError(), и чтобы я его мог использовать где захочу вывести к примеру ошибку какую-нибудь...ну вы полняли, я просто не могу нормально объяснить Такое я видел на php опять же
Вложения
Тип файла: 7z NewCreateMap.7z (531.7 Кб, 26 просмотров)
Тип файла: 7z OldCreateMap.7z (338.6 Кб, 8 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru