Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения (Исторические предпосылки создания объектно-ориентированного программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 335

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ИСТОРИЧЕСКИЕ АСПЕКТЫ ВОЗНИКНОВЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

1.1 Исторические предпосылки создания объектно-ориентированного программирования

1.2 Классификация объектно-ориентированных языков программирования высокого уровня

2. СПЕЦИФИКА МЕТОДОЛОГИИ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В СОВРЕМЕННЫХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ

2.1 Сущность методологии объектно-ориентированного программирования

2.2 Основные методы и концепции объектно-ориентированного программирования

2.3 Синтаксис и семантика объектно-ориентированных языков программирования

2.4 Анализ объектно-ориентированных языков программирования высокого уровня, сфера их применения

3. РАЗРАБОТКА ПРОГРАММНОЙ ПЛАТФОРМЫ С ИСПОЛЬЗОВАНИЕМ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

3.1 Постановка задачи и обоснование выбора среды разработки

3.2 Разработка проекта программной платформы и ее основных классов

3.3 Разработка интерфейса программной платформы

ЗАКЛЮЧЕНИЕ

БИБЛИОГРАФИЯ

Шаблон singletone имеет ряд недостатков.

  1. Синглтон нарушает SRP (Single Responsibility Principle) – принцип единой обязанности. Класс синглтона, кроме выполнения своих непосредственные обязанностей, занимается контролированием количества своих экземпляров.
  2. Зависимость обычного класса от синглтона не видна в публичном контракте класса. Потому что обычно экземпляр синглтона не передается в параметрах метода, а получается напрямую, через getInstance(). Так что для выявления зависимости класса от синглтона необходимо посмотреть тело каждого метода. Просто просмотреть публичный контракт объекта для этого недостаточно. Как следствие: сложность рефакторинга при последующей замене синглтона на объект, содержащий несколько экземпляров.
  3. Глобальное состояние. При получение доступа к экземпляру класса, не известно текущее состояние этого класса, кто и когда его менял. А это состояние может быть вовсе не таким, как ожидается. Другими словами, корректность работы с синглтоном зависит от порядка обращений к нему, что вызывает неявную зависимость подсистем друг от друга и, как следствие, серьезно усложняет разработку [9].
  4. Наличие синглтона понижает тестируемость приложения в целом и в частности классов, которые используют синглтон. Во-первых, вместо синглтона нельзя поставить Mock-объект, а во-вторых, если синглтон имеет интерфейс для изменения своего состояния, то тесты начинают зависеть друг от друга.

Папка DieselType (одиночка) - класс в данной программе, который написан вручную с использованием шаблона singletone и описывает тип дизеля. Шаблон гарантирует, что в программе при разных обстоятельствах создастся только один экземпляр класса дизеля. То есть будет только один тип дизеля, использоваться для расчетов. Класс DieselType описывается в файлах dieseltype.h (ввод данных) и dieseltype.cpp (вывод данных) (Рисунок 2).

Папка Dataio содержит файлы dataio.h и dataio.cpp. В них имеются функции реализации ввода, считывания и вывода данных.

Папка MainWindow - класс стандартной формы в Qt, который описывает и реализует главное окно с кнопками. Данная папка содержит в себе файлы mainwindow.cpp, mainwindow.h, mainwindow.ui.

Папка Settings - класс стандартной формы стандартной формы Qt, который описывает и реализует кнопку настройки датчика. Данная папка содержит в себе файлы settingsclass.h и settingsclass.cpp.

Папки WidgetArchive, WidgetDieselType, WidgetMetering, WidgetSelectDiesel, WidgetSettings, WidgetTest, WidgetVMTSetup – дочерние классы виджетов - более подробное описание кнопок, которые описаны общем head.

Папка QCustomPlot – библиотека в Qt для построения и визуализации графиков. Отрисовка графиков происходит после вызова метода replot() (вручную, или при срабатывании события). Для отрисовки данный виджет требует 2 массива данных, содержащих значение аргумента (x) и значение функции в этой точке (y). Используется в данной программе для реализации рисования графиков [1].


3.3 Разработка интерфейса программной платформы

Программа запускается исполнительным файлом. Проект главного окна программы представлено на рисунке 3.

Рисунок 3- Проект главного окна программы

Так же для корректной работы программы в любой версии операционной системы Windows и не зависимо от наличия среды разработки QT, кроме exe файла нужны все папки на рисунке 4 и библиотеки, обведенные рамочкой (рисунок 4).

Рисунок 4 – Используемые библиотеки

Часть библиотек QT уже вшиты в сам ехе файл. Это библиотеки являються стандартними для QT и Windows, и необходимы для запуска на операционной системе Windows. Поэтому для Windows их не принято добавлять отдельными файлами в проект.

Библиотеки, которые в название имеют Qt*.dll являються стандартними для QT, но не для Windows. То есть если на операционной системы Windows не стоит среда разработки QT и нет этих файлов, то при открытие ехе файла, система выдаст ошибку [1].

Остальные библиотеки являются не стандартными для QT. Их нет в базовой версии, установленной на компьютере QT, но данная среда разработки позволяет их установить и использовать для создания проектов. То есть они могут использоваться не для всех проектов, и их есть большое множество, зависимо от целей проекта и решаемой задачи. В данном проекте они используются и нужны для корректной работы программы независимо от того установлена данная среда разработки у пользователя или нет. На рисунке 4 представлены только библиотеке необходимые для работы только данного проекта, а не любого проекта, созданного с помощью QT.

Открывшееся при запуске окно программы для удобства и простоты использования разделено на три блока: тип дизеля, подготовка измерений, индицирование (Рисунок 3).

Блок тип дизеля. В данном блоке есть 2 кнопки: Задание и Выбор (Рисунок 3). При открытие кнопки задание, появляется окно, которое изображено на рисунке 5.

Рисунок 5 - Окно тип дизеля

В данном окне задаются характеристики дизеля. При этом в строке количество цилиндров стоит ограничение от 1-30, и есть возможность выбора тактности 2 или 4. При нажатии кнопки Принять, появляется окно, которое изображено на рисунке 6, где выставляется порядок работы цилиндра.


Рисунок 6 - Окно задание порядка работы цилиндра

При нажатии второй кнопки Принять, информация о типе дизеля записывается в память программы, и открывается кнопкой Выбор на главном окне. Нажав кнопку Выбор можно выбрать тип сохраненного дизеля (Рисунок 7).

Рисунок 7 - Окно выбор дизеля

Блок подготовка измерений. В данном блоке есть 2 кнопки: Установка ВМТ и Тест датчиков (Рисунок 3). При нажатии кнопки Установка ВМТ открывается окно, изображенное на рисунке 8.

Рисунок 8 - Окно установка ВМТ

При нажатии кнопки Тест датчиков открывается окно, изображенное на рисунке 9. Но при этом надо, чтобы в настройках стояло какой канал мы проверяем в этом режиме.

Рисунок 9 – Окно тест датчика

Блок индицирование. В данном блоке есть 2 кнопки: Измерение и Архив (Рисунок 3).

При нажатии кнопки Измерение открывается окно, изображенное на рисунке 10.

Рисунок 10 – Окно измерение

При нажатии кнопки Архив открывается окно, изображенное на рисунке 11.

Рисунок 11 – Окно архив

В программе также есть валидация вводимых данных - комплекс мер по пресечению ввода неправильной информации в форме

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

Например, если не заполнены все данные или введено недопустимое значение, то программа выдаст ошибку (Рисунок 12).

Рисунок 12 – Валидация вводимых данных в программе

При закрытии программы или окна с не сохраненными данными, в программе вызывается диалоговое окно с вопросом стоит ли закрывать программу (Рисунок 13).

Рисунок 13 – Вызов диалогового окна

По графикам, изображенным на рисунке 9 и 11 видно, что программа работает, что выполняется сбор данных с датчика, нормализация, хранение (кнопка Архив), анализ данных, и функция отрисовки графиков в программе. То есть цель дипломной работы достигнута.

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


Вывод по третий главе

Была разработана програмная платформа по сбору и анализу данных с дизельных датчиков. Программная плтаформа разработана на языке С++, для разработки использована среда Qt. Для разработки программы использован объектно-ориентированный подход. Программная платформа протестировна и работает исправно. Программа также есть валидацию данных и программа имеет возможность строить графики данных.

ЗАКЛЮЧЕНИЕ

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

Были достигнуты следующие задачи:

  1. Изучены исторические предпосылки создания объектно-ориентированного программирования
  2. Проведена классификация объектно-ориентированных языков программирования высокого уровня
  3. Расскрыта сущность методологии объектно-ориентированного программирования
  4. Изучены основные методами и концепциями объектно-ориентированного программирования
  5. Изучен синтаксис и семантика объектно-ориентированных языков программирования
  6. Проанализировано существующие объектно-ориентированные языки программирования высокого уровня, обозначить сферы их применения
  7. Разработана с использованием объектно-ориентированного подхода и протестирована програмная платформа.

БИБЛИОГРАФИЯ

  1. Амерааль, Л. STL для программистов на С++. / Л. Амерааль; пер. с англ.- СПб.: ДМК Пресс, 2016.- 240 с.
  2. Г.Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. - М.: Бином, 2015. - 560 с.
  3. Дейл, Н. Программирование С++. / Н. Дейл, Ч. Уимз, М. Хедингтон; пер. с англ.- СПб.: ДМК Пресс, 2017.- 672 с.
  4. Дубина Г.Д. Разработка и применение пакетов прикладных программ в экономике: Учебное пособие. – Томск: Изд. ТПУ, 2016. - 144 с.
  5. Лафоре, Р. Объектно-ориентированное программирование в С++. / Р. Лафоре.- СПб: Питер, 2017.- 928 с.
  6. Павловская, Т.А. С++. Объектно-ориентированное программирование. Практикум: учебное пособие. / Т.А. Павловская, Ю.А. Щупак.- М.; СПб.; Н.Новгород: Питер, 2016.- 264 с.
  7. Прата, С. Язык программирования Си. Лекции и упражнения. / С. Прата; пер. с англ.- 5-е изд.- М.: Вильямс, 2017. - 1181 с.
  8. Страуструп, Б. Язык программирования С++. / Б. Страуструп; пер. с англ.- М.: Бином-Пресс, 2014.- 1098 с.
  9. Хорев, П.Б. Технологии объектно-ориентированного программирования. / П.Б. Хорев.- М.: «Академия», 2018.- 448 с.