Файл: «История и развитие методологии объектно-ориентированного программирования. Сферы применения».pdf
Добавлен: 21.05.2023
Просмотров: 334
Скачиваний: 3
СОДЕРЖАНИЕ
1. ИСТОРИЧЕСКИЕ АСПЕКТЫ ВОЗНИКНОВЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И ООП
1.1. Исторические предпосылки создания языков программирования и методологий программирования
1.2. Классификация и специфика языков программирования высокого уровня
2. СПЕЦИФИКА МЕТОДОЛОГИИ ООП В СОВРЕМЕННЫХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ
2.2 Анализ современных языков программирования, базирующихся на методологии ООП
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ ООП
3.1 Разработка проекта системы и ее основных классов
Некоторые функции, которые в языке C ++ обычно осуществлялись разработчиками вручную теперь выполняет JVM (например сборка мусора механізмом Garbage Collector). Это приводит к ряду особенностей языка, например, в силу того, что Java разрабатывался как кроссплатформенный язык разработки, он обладает меньшими возможностями для работы с аппаратным обеспечением на низком уровне. Но, для обхода этого недостатка языка существуют механизмы интеграции отдельных модулей низкоуровневого управления, которые могут быть написаны на других языках (ассемблер, С++ и др.) [8].
При создании Java изначально были сформулированы такие принципы [14]:
- сам синтаксис должен быть максимально простым, гибким, удобным и привычным пользователю-разработчику;
- высокая производительность и безопасность процесса разработки и реализации исполняемых приложений;
- кроссплатформенность по принципу “Once Write –Anywhere Use”;
- поддержка масштабируемости и мультизадачности посредством возможности создания параллельных процессов и потоков [23].
Кроссплатформенность достигается путем компиляции изначального Java-кода (формат .java) в байт-код (.class), представляющего собой набор упрощенных команд. После этого разработанное приложение может быть выполнено на любой поддерживаемой платформе, т.е. на платформе, которая имеет установленную JVM, способную интерпретировать байткод в код, учитывающий специфику конкретной ОС и процессора. В настоящее время JVM существуют для практически всех операционных систем (Linux, Windows, Mac и др.) и процессоров [15].
Первым и самым главным преимуществом использования байт-кода является портативность. Т.е. байт-код переносится на любую платформу и запускается без установки, достаточно просто наличие JVM. При этом, недостатком является необходимость выделения дополнительных вычислительных ресурсов на интерпретацию, т.е. мощности процессора и оперативной памяти задействуются в большем объеме. В связи с этим некоторые считают, что Java является достаточно медленным языком разработки [19].
В Java практически все структуры данных являются объектами. Исключением являются такие примитивные типы данных, как целочисленные (int), символы (char), логический тип данных (boolean) и др. Также, в Java все объекты являются производными от самого главного объекта (Object), который является их потомком, посредством которого обеспечивается их базовое поведение и все основные свойства [14].
В Java возможно единичное наследование, что позволяет исключить возникновение конфликтов между различными членами класса, которые могут быть наследованы от нескольких родителей, что затрудняет их однозначную идентификацию [21].
2. С#. Данный язык программирования реализует компонентно-ориентированный подход в программировании приложений, что позволяет снизить машинно-архитектурную зависимость полученного кода, благодаря чему достигается высокая степень переносимости и повторного использования кода. Преимущества языка: включает расширенную и гибкую поддержку событийно-ориентированного программирования, эффективно интегрируется с существующими продуктами от Microsoft. Главными недостатками языка является довольно сложный синтаксис и не высокая, в сравнении с С++, производительность [7].
C# включает также множество функциональных и интерфейсных особенностей и преимуществ: простота синтаксиса, защищенность типов данных, наличие сборщика мусора, поддержка систем контроля версий и обратной совместимости. Представленные возможности обеспечивают высоку скорость разработки программного обеспечения, в частности это касается COM +.
При разработке языка C#, его создатели основывались на существующих преимуществах других языков, такиз как C++, C, Java. В результате работы по созданию данного языка программирования высокого уровня получился удобный и гибкий язык, который по функциональным возможностям практически не уступает языку С++, однако существенно существенно повышает эффективность и скорость разработки программ [2].
В качестве среды разработки для языка С# чаще всего применяется IDE Visual Studio [12].
Python. Это современный интерпретируемый кроссплатформенный язык программирования. Как и Java он прост и гибок в отладке, однако не обладает высоким быстродействием и низкой требовательностью к вычислительным возможностям компьютера. Характерными особенностями данного языка являются следующими [16]:
1. Наличие механизмов динамической типизации. Т.е. разработчику нет необходимости заранее объявлять вручную тип используемой переменной, что существенно повышает скорость разработки программного обеспечения.
2. Наличие поддержки модульности. Т.е. каждый разработчик способен написать свой модуль и гибко адаптировать или импортировать его в работу другого приложения, даже на другом языке программирования.
3. Встроенная поддержка Unicode.
4. Поддержка парадигмы ООП.
5. Поддержка автоматической процедуры по «сборке мусора», т.е. в языке Python, как и в Java, отсутствуют деструкторы.
6. Гибкий автоформатируемый синтаксис, что обеспечивает читаемость кода.
7. Поддержка большого количества модулей и библиотек, среди которых есть множество «родных», т.е идущих «в коробке» при установке языка, так и от сторонних разработчиков. В ряде случаев для написания кода нет необходимости писать все с нуля, а достаточно найти подходящие библиотеки и модули, разобраться в их методах и подключить в свой проект. Т.е. появляется возможность работы с уже готовыми элементами, которые реализуют готовую функциональность и лишь комбинировать их [17].
8. Кроссплатформенность. Т.е. программное обеспечение, которое написано на языке Python, может использовать на любой операционной системе, где установлен данный интерпретатор. В редких случаях возможны ошибки, как правило, возникающие из-за различий в синтаксисе версий языка. Решение данных проблем обеспечивается путем использования регламентированной справочной документации, имеющейся на официальных сайтах поддержки данного языка программирования в большом количестве [5].
Выводы по главе 2
В рамках данной главы описана специфика методологии ООП в современных языках программирования, реализующих данную парадигму разработки программного обеспечения.
Приведены определения и иллюстрации, поясняющие принципы инкапсуляции, наследования и полиморфизма, а также принцип абстракции. Описаны функциональные возможности и преимущества объектно-ориентированных языков программирования Java, C# и Python, как наиболее распространенных на практике в современной разработке.
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ ООП
В рамках данной главы рассматривается разработка проектной и программной частей системы распределения грузов. Программная реализация выполнена с использованием базирующегося на ООП методологии языка программирования Java.
3.1 Разработка проекта системы и ее основных классов
Диаграмма классов - диаграмма, демонстрирующая классы системы, их атрибуты, методы и взаимосвязи между ними.
Класс - сущность, инкапсулирующая данные. Согласно традиционным подходам данные располагаются в базе данных, а обработкой их поведения занимается программа [2].
Диаграмма классов разработанной системы приведена на рис.8.
В основном на диаграмме можно выделить 3 вида классов:
• Классы, которые взаимодействуют с базой данных - Goods, Stores, Data, HibernateUtil;
• Классы, которые отвечают за отображение программы - FXMLDocument;
• Классы, которые следят за действиями пользователя с программой и выполняют отдельные функции - FXMLDocumentController.
Также есть класс, который отвечает за алгоритм расчетов - Logics. В нем к основным методам относятся следующие: sort (), pack () draw (). Метод sort () отвечает за сортировку элементов по выбранным критериям, таким как масса за варианты, которыми можно поставить элемент. Метод pack () отвечает за само расположение. Метод draw () отвечает за отображение элементов, где задаются их свойства: цвет, окончательные координаты, вид элемента, возвращает массив из элементов и используются в классе-отображении программы.
Отдельно выделяется класс HibernateUtil. Он используется для работы Hibernate. С помощью него с базой данных взаимодействуют другие классы (Goods, Stores), которые имеют те же поля, что в таблицах БД, методы get-тер и set-тер этих полей, и конструкторы.
В целом можно сказать, что программа разработана, соблюдая архитектурного шаблона MVC (Model-View-Controller).
Рисунок 8 – Разработанная диаграмма классов системы
Структура программных файлов проекта разработана с использованием системы автоматической сборки Java-приложения Ant, показано на рис. 9. Проект создан в среде разработки Netbeans [6], использована библиотека JavaFX Проект состоит из двух пакетов: Default и Main, содержащие соответствующие программные файлы и классы.
Рисунок 9 – Структура программных файлов проекта
Перечень базовых функциональных методов, компонентов и структур данных показан на рис. 10. Все они разработаны на базе применения методов ООП.
Рисунок 10 – Перечень базовых функциональных методов, компонентов и структур данных
Наиболее важными являются следующие методы контроллера:
1. add, addGood, addStore- используются для придания новой записи в соответствующей таблице БД.
2. deleteGood, deleteContainer, deleteStore - используются для удаления записи из соответствующей таблицы БД.
3. changeGood, changeStore - используются для изменения записи в соответствующей таблице БД.
4. exportGoods, exportStores, exportAll - используется для экспорта данных в таблицы Excel.
5. initData - используется для инициализации в начале программы данных в таблице с БД.
Из важных компонентов можно выделить следующие:
1. goodsView, storesView - компоненты таблиц.
2. goodsData, storesData - оболочки данных, хранящихся в таблицах.
3. containersList - компонент перечня контейнеров.
4. idGood, idStore, massGood. lengthGood, countGood, addressStore, idStore, universalStore - компоненты колонок в таблицах.
3.2 Разработка интерфейса системы
Интерфейс вкладки «Склад» разработанной системы приведен на рис.11.
Рисунок 11 – Интерфейс вкладки «Склад» разработанной системы
Он состоит из следующих компонентов обеспечения пользовательских функций по обработке информации [23] в соответствующей таблице созданной базы данных:
1. TableView - отражает соответствующие поля таблицы «Товары», предусматривает функции по изменению существующих записей и ввода данных по новым созданным записям.
2. TextField - отвечает за выполнение поиска данных по таблице БД.
3. Button - инициирует функции поиска данных, добавления новой записи или удаления существующей записи и экспорта данных в табличного редактора Excel [22].
Пример фильтрации данных под названием показано на рис. 12. Колонки таблицы, где содержатся числовые данные, можно сортировать по размеру.
Рисунок 12 – Пример фильтрации данных по названию
Пример работы функциональной возможности по выбору типа товаров показано на рис.13.
При двукратном нажатии на ячейки в таблице [11] появляются списки вариантов, которые можно выбрать, или поле, где можно собственноручно ввести новые данные. При некорректно введенных записях данные в таблице не меняются.
Рисунок 13 – Пример работы функциональной возможности по выбору типа товаров
Интерфейс вкладки «Контейнеры» для управления данными из типов контейнеров показано на рис.14.
При выборе из списка контейнеров в таблице появляется данные о товарах, которые в нем содержатся, если контейнер является занятым.
С выпадающего меню слева, как показано на рис. 15 можно выбрать тип и нажать на кнопку «Добавить».
При нажатии кнопки «Удалить» запись удаляется..
Рисунок 14 – Интерфейс вкладки «Контейнеры» для управления данными из типов контейнеров
Рисунок 15 – Функциональная возможность избрания и просмотра типов контейнеров
Интерфейс вкладки «Склады» разработанной системы показано на рис. 16. Как и в вкладке «Товары», в таблице есть возможность редактировать колонки. Диалоговое окно для выбора пути экспорта данных, которое появляется при нажатии кнопки «Экспорт в Excel», показано на рис. 17. В окне надо ввести название файла и выбрать кнопку «Сохранить».