Описание выбранных средств разработки

1.2.1. C++ (язык программирования)

При разработке данного курсового проекта был использован язык С++. Данный язык поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщенное программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.

Ключевым понятием в С++ является класс. Класс – это пользовательский тип. Классы обеспечивают сокрытие данных с помощью модификаторов областей видимости, их инициализацию, неявное преобразование пользовательских типов, динамическое задание типов, контролируемое пользователем управление памятью и средства для перегрузки операций. В языке С++ концепции контроля типов и модульного построения программ реализованы более полно, чем в С. Кроме того, С++ содержит усовершенствования, не связанные напрямую с классами: символические константы, функции-подстановки, стандартные значения параметров функций, перегрузка имен функций, операции управления свободной памятью и ссылочный тип.

Фреймворк Qt

Qt [1] – это мощный кроссплатформенный фреймворк, включающий нативные C++ библиотеки, декларативный язык для создания пользовательского интерфейса и инструменты, позволяющие разработчикам создавать прикладное программное обеспечение с использованием единого кода для всех значимых на сегодняшний день десктопных, встраиваемых и мобильных платформ, а также для устройств с операционными системами реального времени (RTOS). Qt позволяет ускорить процесс создания приложения, повысить его эффективность.

В большей степени Qt [1] используется для разработки приложений на С++, но так же может работать с такими языками, как Python, Ruby, Java, PHP и другими.

Отличительная особенность Qt от других библиотек — использование Meta Object Compiler (MOC) — предварительной системы обработки исходного кода (в общем-то, Qt — это библиотека не для чистого C++, а для его особого наречия, с которого и «переводит» MOC для последующей компиляции любым стандартным C++ компилятором). MOC позволяет во много раз увеличить мощь библиотек, вводя такие понятия, как слоты и сигналы. Кроме того, это позволяет сделать код более лаконичным. Утилита MOC ищет в заголовочных файлах на C++ описания классов, содержащие макрос Q_OBJECT, и создаёт дополнительный исходный файл на C++, содержащий метаобъектный код.

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

Сигналы и слоты могут быть соединены друг с другом, причем сигнал может быть соединен с большим количеством слотов. Слот, в свою очередь, тоже может быть соединен со многими сигналами. В случае когда слот не делает ничего, кроме отправки полученного сигнала дальше, то можно вообще обойтись без него, а просто соединить сигналы друг с другом. Методы сигналов должны быть обозначены в определении классы специальным словом signals, а слоты – slots. При этом слоты являются обыкновенными методами языка С++ и в их определении могут присутствовать модификаторы public, protected, private. Реализацию кода для сигналов берет на себя МОС. Отправка сигнала производится при помощи ключевого слова emit. Класс, содержащий сигналы и слоты, должен быть унаследован от класса QObject или от класса, унаследованного от этого класса. Сигнально-слотовые соединения всегда можно удалить (отсоединить), воспользовавшись методом disconnect(), но это нужно крайне редко, т.к. при удалении объекта автоматически уничтожаются все его соединения.

QObject – класс, по сути являющийся основным классом при программировании с использованием Qt. Конструктор класса QObject имеет два параметра: первый используется для создания объектных иерархий, а второй – для присвоения объекту имени.

Свойства объектов важны, т.к. позволяют получать информацию о классе и об объекте в процессе исполнения программы. Все объекты класса QObject или унаследованные от него классы должны создаваться динамически оператором new, а об освобождении памяти созданной объектной иерархии программист может не беспокоиться.

1.2.3. Qt Creator – интегрированная среда разработки

Qt Creator [2] - кроссплатформеннаясвободнаяIDE для разработки на С, С++ и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML.

Qt Creator поддерживает проекты систем qmake и cmake, начиная с версии 2.5 поддерживатеся autotools. Для проектов, созданных под другими системами, может использоваться в качестве редактора исходных кодов. Есть возможность редактирования этапов сборки проекта. Также IDE нативно поддерживает системы контроля версии, такие как Subversion, Mercurial, Git, CVS, Bazaar, Perforce. Начиная с версии 2.5, в поле комментария к правке поддерживается автодополнение.

Реализован ряд возможностей при работе с сигнатурами методов, а именно:

­ автогенерация пустого тела метода после его обновления;

­ возможность автоматически изменить сигнатуру метода в определении, если она была изменена в объявлении и наоборот;

­ возможность автоматически поменять порядок следования аргументов.

Среда разработки имеет графический интерфейс для следующих отладчиков: GDB, CDB и QML/JavaScript. В качестве отдельной опции реализовано отображение содержимого контейнеров, таких как QString, std::map и прочих. Поддерживаются следующие режимы отладки:

­ простой для отладки локально запущенных приложений, таких как GUI приложения на Qt;

­ терминал для отладки локально запущенных процессов, которым требуется консоль, обычно это приложения QTWidgets;

­ подключённый для отладки локальных процессов, запущенных вне Qt Creator;

­ удалённый для отладки запущенных на другой машине процессов (используя gdbserver);

При навигации по коду доступно переключение между определением и объявлением метода, переход к объявлению метода, переименование метода, как в отдельном проекте, так и во всех открытых. Также есть возможность вызвать справку согласно текущему контексту.

1.2.4. Сmath – стандартная библиотека C и С++ для использования математических функций и операций

C++ реализует выполнение простых математических операций и большинство функций, все они содержатся в заголовочном файле cmath [5].

Все эти функции принимают double, если не определено иначе. Для работы с типами float и long double используются функции с постфиксами f и l соответственно. Все функции, принимающие или возвращающие угол, работают с радианами.

1.2.5. Qwt – дополнительная библиотека для построения графиков

Qwt или Qt Widgets for Technical Applications [4] — набор Qt-виджетов и вспомогательных классов, необходимых для создания графического представления числовых данных. Помимо виджета для двумерного отображения данных (QwtPlot) он включает в себя классы для отображения данных в разных масштабах осей, различные стили отображения кривых и маркеров на виджете QwtPlot, а также некоторые другие вспомогательные виджеты.

Наши рекомендации