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

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

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

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

Добавлен: 29.03.2023

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

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

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

ВВЕДЕНИЕ

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

Объект исследования: ключевые особенности построения принципов ООП.

Предмет исследования: возможности использования языка программирования высокого уровня Java с учетом концепции ООП.

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

Задачи исследования:

  1. Обзор языков разработки и объектно-ориентированной концепций программирования.
  2. Обзор специфики становления языков для разработки программных продуктов.
  3. Анализ возможностей языков программирования с поддержкой ООП парадигмы.
  4. Разработка прикладного программного приложения на объектно-ориентированном языке программирования.
  5. Разработка и описание проекта программы, форм интерфейса и описание порядка работы пользователя с программой.

В первом разделе курсовой работы проведен обзор языков разработки и объектно-ориентированной концепций программирования. Приведены результаты исследования специфики становления языков для разработки программных продуктов, обозначены основные исторические этапы и даны ключевые определения в специфике языков программирования. Рассмотрены особенности парадигмы объектно-ориентированного создания программных приложений, принципы инкапсуляции, наследования и полиморфизма. Во втором разделе курсовой работы проанализированы возможности языков программирования с поддержкой ООП парадигмы, а также приведено описание специфических особенностей соответствующих интегрированных сред разработки для данных ЯП. Описаны языки Python, Java и Ruby, приведены их функциональные преимущества и достоинства практического использования. Третий раздел данной курсовой работы отражает результаты разработки прикладного программного приложения на объектно-ориентированном языке Java с использованием среды разработки Netbeans. Разработан и описан проект программы с помощью использования нотаций языка моделирования UML. Разработаны формы интерфейса и описан порядок работы пользователя с созданным ПО.


В рамках данной работы было рассмотрено 20 литературных источников по языкам программирования, наиболее полезными из которых стали труды И.А. Веренинова, В.А. Камаева, Р. Лафоре, П.Б. Хорева и ряда других.

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

1.1. Обзор специфики становления языков для разработки программных продуктов

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

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

Языки программирования (ЯП) - формальные знаковые системы, предназначенные для записи компьютерных программ.

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

Первые технические идеи, которые привели к разработке вычислительных цифровых машин, сформированы еще в начале 20-х годов девятнадцатого века Бэббиджем [13].

Главной была мысль о возможности предварительной фиксации перечня операций вычислительной машины для дальнейшей реализации вычислений в автоматическом режиме, т.е. в виде программы.

В конце 40-х годов 20 века машинный код являлся, фактически, единственным способом организации взаимодействия человека-пользователя с ЭВМ.

Важнейшим достижением разработчиков ЯП тех времен являлась реализация алгоритмов и механизмов использования ЭВМ для автоматической интерпретации ЯП в машинный код.


С начала 60-х годов ХХ века популярность ЯП начинает стремительно возрастать и общий прогресс в разработке методов и средств программирования с использованием ЭВМ набирается все большие обороты. При этом, вследствие развития технологий постоянно уменьшается использование подхода к написанию программ в машинных командах [3].

Первым из научно-прикладных языков стал, который был разработан командой программистов из молодой фирмы IBM. С данного языка наступает эра развития и совершенствования ЯП высокого уровня .

Все существующие современные языки программирования часто классифицируют по таким поколениям[7]:

– первое поколение: применение на ЭВМ первого поколения с машинно–ориентированным использованием и ручным процессом управлением памятью;

– второе поколение: применение автокодов или мнемонических символов для представления команд программы;

– третье поколение: языки программирования высокого уровня общего типа и назначения, которые использовались в первую очередь для разработки и реализации пакетов прикладных программ в нужной предметной области (Паскаль, Бейсик, Си);

– четвертое поколение: высокоуровневые языки программирования, использованные для разработки специализированных прикладных программ и приложений, которые поддерживали механизмы использования систем управления базами данных.

– пятое поколение: объектно–ориентированные, декларативные и визуальные высокоуровневые языки программирования. Данные языки применяются в настоящее время и используются для разработки клиент-серверных приложений, мобильных систем и распределенных веб-ресурсов. Примерами таких языков являются Си++, Java, C#, Visual Basic, Delphi [14].

Иерархическая классификация ЯП по разным критериям приведена на рисунке 1.

Рисунок 1 – Классификация ЯП по разным критериям

В настоящее время в среде разработчиков принято утверждать, что языки высокоуровневого программирования, имеющие прямой доступ непосредственно к памяти и имеют различные вставки кода на ассемблере, являются ЯП с достаточно низким уровнем абстракции, что не всегда удобно [17].

Визуализация статистики тенденции изменения популярности языков программирования на с 2002 по 2018 год приведена на рисунке 2.

Процентная доля языка C# постепенно снижается, а использование на рынке обработки данных и искусственного интеллекта языка Python все больше увеличивается, во многом за счет активной интеграции библиотек и фреймворков.


Язык мобильной разработки Kotlin существенно растет благодаря поддержке его использовании компанией Google в качестве полноценного языка для разработки в Android.

Рисунок 2 – Тенденция популярности языков программирования в 2002-2018 годах

На сегодняшний день Java остается наиболее популярным языком, однако его доля использования постепенно сокращается. Это во многом обусловлено развитием новых JVM языков и технологий. JavaScript демонстрирует тенденции роста, но они все менее выражены [21].

1.2. Особенности парадигмы объектно-ориентированного создания программных приложений

Большая часть современных ЯП высокого уровня поддерживает парадигму ООП.

Объектно-ориентированное программирование (ООП) — это методика организации программного кода на основании группировки и представления его в виде объектов, являющихся отдельными элементами, включающими свои функции (методы) и информацию (поля) [1].

ООП значительно упрощает группировку и классификацию отдельных фрагментов информации вместе с регулярно используемыми действиями и функциями, которые непосредственно связанны с данной информацией [3].

ООП появилась посредством развития идеологии функционально-процедурного программирования, в которой не было четкой связи между данными, процедурами и функциями, их вызов осуществлялся в ручную, а обработка передавалась посредством операторов типа goto [5].

На развитие парадигмы ООП существенное значение оказало концептуальные понятия события и компонента.

В области создания программных продуктов и систем наиболее часто применяемой является именно ООП парадигма, т.к. она включает в свой состав следующие этапы:

  • анализ, позволяющий проводить исследования существующих требований клиента к рассматриваемой системе в форме большого числа взаимодействующих между собой абстракций;
  • проектирование, необходимо для объединения системы обозначений и нотаций с декомпозиционным подходом при планировании объектов сущностей;
  • конструирование, представляет собой итерационный процесс написания программного кода, осуществляющего реализацию нужных функций на базе ООП ЯП [17].

Объектно-ориентированное программирование можно разделить на две главные части: проектная и системная.

Первая отражает приемы и стратегии, используемые при проектировании и разработке программ (шаблоны проектирования, методы оптимизации объектного кода и др.).

Вторая описывает существующие структуры программирования, которые доступны в конкретном ЯП на базе использования объектно-ориентированной методологии разработки. Данная часть содержит такие базовые операции [18]:

  • определение структур классов;
  • создание обычных методов, методов доступа и полей объекта;
  • создание перечисляемых структур;
  • имплементация возможностей интерфейсов;
  • регулирование доступа к методам, классам, полям и методам доступа;
  • создание полей и методов статического характера;
  • наследование, полиморфизм, инкапсуляция, в том числе и динамическое переопределение классовых элементов.

Ключевыми терминами в ООП являются классы и объекты. Класс представляет собой формализованный, в рамках синтаксиса используемого языка программирования в составленном пространстве имен, исходный код абстрактного (неинициализированной при создании) объекта (сущности). Класс предназначен для детального описания структуры устройства объекта, т.е. это некий каркас [3].

Отношения между классами и объектами приведены на рисунке 3.

Рисунок 3 – Отношения между классами и объектами концепции ООП

При этом, когда создается объект, принято считать что он является экземпляром класса, который его описывает.

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

Инкапсуляция – принцип ООП, который заключается в осуществлении объединения данных и методов, которые находятся в рамках одного класса, за счет чего достигается сокрытие детали реализации логики класса от пользователя [4].

Иллюстрация принципа инкапсуляции данных в концепции ООП приведена на рисунке 4.

Рисунок 4 – Иллюстрация принципа инкапсуляции данных в концепции ООП

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