Организация программного кода программы NanoScan Viewer
Программа написана на языке C++ с использованием библиотеки MFC (Microsoft Foundation Classes) и парадигмы объектно-ориентированного программирования. Парадигма объектно-ориентированного программирования состоит в том, что всё содержимое программы разбивается на некоторое количество объектов, при этом каждому объекту присваивается какой-либо класс. Каждому классу объектов соответствуют некоторые свойства (переменные класса) и методы (функции класса).
Исходный текст программы состоит из большого числа (более двух сотен на текущий момент) файлов, имеющих характерные для С++ расширения *.h (заголовочные файлы) и *.cpp (файлы с исходным кодом). Заголовочные файлы содержат в себе объявление какого-либо класса, а файл с исходным кодом содержит в себе описание методов этого класса. Таким образом, на каждый класс, содержащийся в программе, выделяется по два файла. Есть файлы и не относящиеся к какому-либо классу — например, это заголовочный файл, содержащий объявление глобальных констант. Кроме заголовочных файлов и файлов с исходным кодом присутствует двоичные файлы ресурсов (графические иконки, например) и файл-описатель ресурсов (NSCtrl.rc, создаётся и дополняется автоматически).
Сама программа выполнена как многодокументное приложение (MDI) в концепции фрейм-представление-документ (Frame-View-Document). Данная концепция призвана разделить данные документа и их отображение. Это означает, что на каждый тип отображаемых документов должно быть создано по три класса — класс самого документа содержит в себе данные, класс представления управляет способом отображения данных документа, а класс фрейма управляет самим окном с документом. У одного документа может быть несколько представлений. Применительно к NanoScan Viewer два представления имеют место при отображении двухмерных/трёхмерных документов: на двухмерное и трёхмерное представление выделено по одному классу представлений. В двухмерном представлении мы видим изображение поверхности, на котором цвет участка определяет его высоту, в трёхмерном же можно видеть непосредственно рельеф поверхности и поворачивать его произвольным образом. Одновременно в данном случае можно наблюдать только одно из них (см. рисунок 4).
|
|
а б
Рисунок 4. Двухмерное (а) и трёхмерное (б) представление документа
Классы, выходящие в состав исходного текста программы (всего их более сотни), могут быть разделены на следующие группы:
· Главный класс приложения
· Классы документов в рамках концепции фрейм-представление-документ
· Классы диалоговых окон
|
|
· Классы нестандартных элементов управления интерфейса (таких, как таблица)
· Класс математического обеспечения
· Другие вспомогательные классы (обслуживание графических файлов, работа с OpenGL, INI-файлами и др.)
В соответствии с концепцией библиотеки MFC программа является также событийно-ориентированной и завязанной, в основном, на действия пользователя. Когда пользователь выбирает тот или иной пункт меню, нажимает на кнопку, щёлкает по рабочей области окна или производит какие-либо другие действия над интерфейсом, вызывается обработчик события, если он есть. Например, пользователь совершает протягивание мышкой в области двухмерного/трёхмерного документа, когда тот находится в двухмерном представлении и активен режим Height Histogram, позволяющий получать функцию площади. В результате этого вызывается обработчик, рисующий красную рамку выделения и отображающий текущие размеры выделения в пикселях и в микрометрах — ширину и высоту (см. рисунок 5).
Рисунок 5. Пример действия вызванного обработчика
Дата добавления: 2018-02-18; просмотров: 639; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!