Rambler's Top100
  Rambler's Top100

Информационные технологии

Управление по событиям

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

Технологии моделирования

Предприятие реального времени №1

На главную   Новости   Карта сайта

Постановка задачи и ограничения

Задача заключается в построении библиотеки классов, содержащих общую для всех приложений функциональность - выделение квантов данных(Wrapper), построение структур связанных квантов данных (Composite Wrapper), управление событиями, связи между квантами данных посредством системы событий (signal/slot management) и построении каркаса(framework) приложения, содержащего систему построения визуализаторов(Views) по данным квантам данных.

Несколько слов о требованиях к классам модели и классам пользовательского интерфейса, способствующих более четкому расслоению архитектуры и, следовательно, улучшению гибкости при внесении изменений в один из "слоев".

  1. Зачастую бизнес-классы (будем классифицировать их как "модель") не имеют функций, требуемых от модели уровнем визуализации (далее - "вид") согласно паттерну MVC, например уведомления элементов GUI об изменениях.

  2. Бизнес-классы не обязаны управлять преобразованиями потока соответствующей информации: например класс, рассчитывающий скорость твердого тела не обязан нести информацию о различных единицах длины и скорости, т.е. м/с, миль/час и т.п.

  3. С учетом того, что по мнению автора большинство читателей знакомы с Sun JFC(Swing) API, уместно привести еще одно ограничение: классы пользовательского интерфейса (GUI, текстовый интерфейс) не обязаны знать о наличии других таких классов. Дело в том, что во многих библиотеках пользовательских интерфейсов, в том числе JFC, для построения элементов управления явно или скрыто применяется модель MVC в которой роль модели играет совсем не бизнес-класс и не абстрактная модель приложения, о которой идет речь в данной статье, а специализированная модель пользовательского интерфейса. С нашей точки зрения сейчас все представители этой MVC - структуры являются "видом" и спрятаны внутри него. Такой подход каскадного разбиения ответственности классов вполне допустим и оправдан повышением эффективности труда создателей графической библиотеки. Теперь переформулируем последнее ограничение на примере JFC: (под)класс модели таблицы TableModel не обязан знать о существовании (под)класса модели дерева TreeModel.