crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Программа для сценаристов, Обсуждение программы и кода
DOGG
  опции профиля:
сообщение 29.10.2014, 16:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Всем привет.

Ради интереса, предлагаю на досуге ознакомиться с моим творением - программой для написания киносценариев. Программа представляет из себя продвинутый текстовый редактор. Может быть кому-то будет интересно.

А мне было бы интересно ваше мнение - как код? Не претендую на полномасштабный ревью, но может всё-таки взглянете хотя бы на способ взаимодействия слоя бизнес логики со слоем хранения данных? или может быть вас заинтересует постраничный редактор а-ля ворд на основе QTextEdit'а?;)

Вобщем, кому не лень, или наоборот нечего делать - милости просим! Вот ссылка на гитхаб - https://github.com/dimkanovikov/Scenarist, там в ридми есть ссылка на сайт самого проекта, если вдруг понадобится более подробная информация о нём. Или пишите прямо сюда, я с удовольствием готов обсудить любые вопросы!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
DOGG
  опции профиля:
сообщение 18.3.2015, 14:24
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Всем привет.

Сегодня хочу рассказать об архитектуре проекта в общих чертах.

Итак, вся система разбита на шесть слоёв:


Вверху на картинке показаны два общедоступных слоя (т.е. знать о них разрешено любой функции/классу из любого другого слоя):
1. Модель предметной области
Фактически представляет собой отображение схемы базы данных в объекты.
2. Вспомогательные элементы
Здесь находятся все универсальные решения, а так же все сторонние решения, обнаруженные в интернете. В основном это виджеты и делегаты, но так же есть несколько вспомогательных классов, которые используются повсеместно в проекте.

Далее идут слои, являющиеся пожалуй, основными составляющими программы. Слева идут три слоя, которые замыкаются на себе, т.е. им разрешено знать о сущностях находящихся в собственном слое, а так же о сущностях общедоступных слоёв. Управленческий же слой берёт на себя обязанность по координации взаимодействия между всеми слоями приложения. Это моя своеобразная интерпретация паттерна модель-представление-контроллер. Т.к. слои независимы, они легко разносятся, что облегчает создание новых систем на основе имеющейся.

Дальше чуть более подробно о каждом из них:
3. Слой хранения и обработки данных
Скрывает в себе три подслоя, которые в свою очередь предоставляют: а) интерфейс доступа к базе данных; б) загрузку данных из базы и преобразование их в модель предметной области; в) собственно доступ к загруженным объектам.
4. Слой бизнес логики
Сосредотачивает в себе все тонкости работы с киносценарием: подсчёт хронометража, построение структуры сценария, импорт/экспорт сценария из/в документы различных форматов и т.д.
5. Слой пользовательского интерфейса
Мне нравится, когда интерфейс тупой, просто отправляет сигналы в нужный момент и загружает предоставляемые ему данные в заданные поля. Но в данном проекте есть одно большое исключение - это собственно сам редактор сценария (ScenarioTextEdit). Он вместе с группой зависимых классов является, как представителем слоя пользовательского интерфейса, так и входит в управленческий слой. Сделано это потому, что сам редактор довольно специфичный и разделение его на два независимых класса принесло бы больше проблем/сложностей/трудозатрат, чем их объединение.
6. Управленческий слой
Как и говорилось раньше, этот слой берёт на себя ответственность за координацию взаимодействия между всеми слоями приложения, от первого пункта меню, до вопроса о сохранении редактируемого проекта при закрытии программы.

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

Постепенно я буду выкладывать всё более детальные подробности, если вас что-то заинтересовало, вы хотите что-нибудь покритиковать, или уточнить - УРА! :) Пишите, мне очень интересно ваше мнение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 3:48