Организация программного кода программы 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!