Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Обзор языков программирования высокого уровня (Обзор существующих популярных парадигм)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

  1. Анализ особенностей объектно-ориентированных языков программирования.
  2. Обзор существующих популярных парадигм реализации программного обеспечения.
  3. Аналитический обзор популярных языков программирования java, c#, python.
  4. Выполнение практической реализации программного приложения средствами языка программирования c#.
  5. Описание разработанного состава программного приложения
  6. Описание основных функциональных возможностей программного приложения.

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

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

Третий раздел отражает специфику практической реализации программного приложения по обработке графических файлов средствами языка высокоуровневого программирования C# и среды разработки MS Visual Studio 2019. Описан состав разработанного проекта программного приложения с соответствующими иллюстрациями. Приведено описание реализации функциональных возможностей разработанного программного приложения, приведены скриншоты основных форм и результатов обработки фотоизображений.

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

1.1. Вводные положения и обзор используемой терминологии

Языки программирования - формальные знаковые системы, предназначенные для записи компьютерных программ. Языки программирования определяют набор лексических,  синтаксических и  семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением [1].

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

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

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

Большая часть современных языков программирования высокого уровня поддерживает парадигму объектно-ориентированного программирования (ООП) [3].

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

Спецификой современных языков программирования высокого уровня является отсутствие необходимости в учете особенностей отдельных архитектур и систем, что позволяет переносить и использовать разработанные приложения на разных компьютерах. Достаточно одной предварительной перекомпиляции программного продукта под конкретную операционную систему и архитектуру. Это позволяет сократить время, необходимое на разработку программного приложения, что является критичным параметром при работе над большими проектами [4].

Структурная схема подразделения языков программирования на 2 направления(низкоуровневые и высокоуровневые) приведена на рис.1.

Рисунок 1 – Структурная схема классификации языков программирования

Языки высокого уровня призваны к упрощению процессов решения трудоемких задач в программировании существующего и будущего программного обеспечения.

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

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

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

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

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

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

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

В настоящее время наиболее востребованными языками программирования высокого уровня являются C++, Java, C# и др (рис.2).

Рисунок 2 – Статистика современной воcстребованности языков программирования высокого уровня

1.2. Обзор существующих популярных парадигм реализации программного обеспечения

1. Объектно-ориентированный метод разработки современного программного обеспечения.

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

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

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

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

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

Для ООП характерно использование следующих концепцій (рис.2).

Абстрагирование — это метод для выборки наборов наиболее значимых параметров и характеристик какого-либо объекта.  Сама абстракция представляет собой интегральную совокупность таких характеристик и параметров.

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

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

Полиморфизм  позволяет пользователю использовать объекты с одним и тем же программным интерфейсом без детализации информации о структуре и типе самого объекта [12].

Рисунок 2 – Концепции ООП

2. Функциональный метод разработки современного программного обеспечения.

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

Данный подход был впервые продемонстрировано Джоном Маккарти в методах реализации языка программирования Лисп еще во второй половине ХХ века [17].

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

Функциональный стиль разработки программного обеспечения концептуально объединяет ряд подходов к идентификации и формализации процессов вычисления на базе строгих понятий и методов символьной обработки используемых данных. Зависимость функционального программирования от классических математических основ делает возможным наследование доказательств построения результата в коде программы. При этом, возможно применение целого ряда различных методов для абстрагирования при решении задачи [19].

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

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

Недостатком данной парадигмы является отсутствие присваиваний и их замены на порождение новых данных, что явным или неявным образом приводит к необходимости контроля над выделением и очисткой памяти [5].

Выводы по главе 1

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

ГЛАВА 2 АНАЛИТИЧЕСКИЙ ОБЗОР РЯДА ПОПУЛЯРНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

2.1. Высокоуровневый язык программирования Java

Современный язык программирования Java является мощной основой для различных типов сетевых приложений и глобальным стандартом для разработки мобильных приложений и веб-контента.

Также, широко данный язік применяется в рамках корпоративного сегмента программного обеспечения.

В настоящее время в мире насчитывается около 9 миллионов специалистов-разработчиков, которые создают программные приложения на данном языке.

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

Также, в настоящее время существуют эффективные инструменты, которые интегрируются в среду исполнения и каждый раз, в случае происшествия определенных исключительных ситуаций, происходит запись информации из памяти для осуществления корректной и последовательной отладки программы [9].

Данные инструменты автоматизированной обработки исключений предоставляют основную информацию об исключениях в программах на Java.

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

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

Существует несколько сред разработки программного обеспечения на языке Java, таких как: NetBeans, Eclipse, IntelliJ IDEA, JDeveloper, BluеJ и некоторые другие [11].

Согласно статистике[21]:

  1. Java в той или иной мере используется на 97% корпоративных настольных ПК.
  2. Java используется на 89% настольных программных станциях в соединенных штатах Америки.
  3. Среди разработчиков программного обеспечения данный язык является наиболее популярным.
  4. Java имплементирован и поддерживается на более чем 3 миллиардах мобильных телефонов и смартфонов.
  5. Java используется в качестве основы при создании прикладных пакектов приложений для современных ТВ-устройств.

При создании высокоуровневого языка разработки програм разработчиками Java закладывались такие цели [17]:

- синтаксис языка должен быть понятным и простым, с поддержкой парадигмы ООП;

- разработка исполняемых приложений должна осуществляться безотказно, т.е. надежность и производительность работы программных приложений должны быть высокой;

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

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

Т.е, программное приложение, которое написано с использованием средств языка Java, должно обеспечивать корректное функционирование на любой, поддерживаемой вендором, системной платформе без особой необходимости добавления изменений в исходный код программы или его перекомпиляции [20].

Состав программы на языке Java приведен на рис.3.

Рисунок 3 – Состав программы на языке Java

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

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

2.2. Высокоуровневый язык программирования C#

Данный язык изначально создавался с целью обеспечения компонентного программирования, поэтому в его ядро закладывались возможности повторной инициализации и интеграции разработанных программистов программных компонентов. Особенностями данного языка являются [10]:

  • язык создавался параллельно с технологией .Net, что позволило разработчикам интегрировать все необходимые механизмы обеспечение функциональных взаимосвязей фреймворка, в том числе FCL и CLR;
  • это полноценный объектно-ориентированным язык, причем даже примитивные типы данных языка представлены в качестве отдельных классов;
  • поддержка механизмов наследования, инкапсуляции и полиморфизма;
  • разработан на базе использования C и C ++, что позволило интегрировать наиболее функциональные возможности этих высокоуровневых языков программирования;
  • с помощью поддержки ряда фреймворков, выступающих в виде некой надстройки над операционной системой пользователя, разработчики C# могут использовать механизмы создания и работы с виртуальной машиной, аналогично существующим технологиям языка Java. При этом существенно повышается эффективность и используемость программного кода. Это связано с тем, что исполнительная среда CLR позволяет обеспечить работу компилятора промежуточного уровня, что является более эффективным по сравнению с интерпретатором байт-кода в Java Virtual Machine.

При разработке языка C#, его создатели основывались на существующих преимуществах других языков, такиз как C++, C, Java. В результате работы по созданию данного языка программирования высокого уровня получился удобный и гибкий язык, который по функциональным возможностям практически не уступает языку С++, однако существенно существенно повышает эффективность и скорость разработки программ [13].

В качестве среды разработки для языка С# чаще всего применяется IDE Visual Studio. Данна среда разработки включает в себя гибкий и современный редактор исходного программного кода, интегрируя поддержку технологии IntelliSense, а также средства оперативного профилирования и рефакторинга кода. Имеющийся в среде разработки отладчик способен функционировать в качестве отладчика на уровне исходного программного кода, а также имеются возможности его использования в качестве отладчика на машинном уровне. К другим встроенным средствам и инструментам среды следует отнести интуитивно понятный редактор форм, который способствует ускорению процесса создания и конфигурирования компонентов графического интерфейса программного приложения, дизайнеры классов, объектов и схем баз даннях [14].

В настоящее время весьма популярен среди разработчиков программного обеспечения (ПО) набор продуктов компании Microsoft, включающих, в частности, интегрированную среду разработки (IDE) программ - Microsoft Visual Studio. В настоящее время актуальной версией является MVS 2019.

Предлагаемые средства разработки ПО продукты позволяют оперативно и гибко разрабатывать различные типы приложений, в частности, согласно [10]:

  • консольные приложения;
  • приложения с графическим интерфейсом, на базе использования популярной среди разработчиков десктопных решений технологии Windows Forms;
  • веб-сайты, на базе использования ASP.net.

Состав основных компонентов проекта на языке C# в Visual Studio приведена на рис. 4.

Рисунок 4 - Состав основных компонентов проекта на языке C# в Visual Studio

IDE Visual Studio включает в себя гибкий и современный редактор исходного программного кода, интегрируя поддержку технологии IntelliSense, а также средства оперативного профилирования и рефакторинга кода. Имеющийся в среде разработки отладчик способен функционировать в качестве отладчика на уровне исходного программного кода, а также имеются возможности его использования в качестве отладчика на машинном уровне. К другим встроенным средствам и инструментам среды следует отнести интуитивно понятный редактор форм, который способствует ускорению процесса создания и конфигурирования компонентов графического интерфейса программного приложения, дизайнеры классов, объектов и схем баз данных [14].

IDE Visual Studio, также, позволяет разрабатывать и интегрировать в проект сторонние плагины и функциональные расширения, которые обеспечивают новые возможности разработки приложений на различных уровнях. В частности, широко используются плагины добавления функций использования современных систем контроля версий (Subversion, Git), интеграции новых пакетов инструментов для визуального редактирования проектирования кода на UML-языке, создания диаграмм сценариев использования, разработки алгоритмов [19].

2.3. Высокоуровневый язык программирования Python

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

Основной реализацией языка является интерпретатор CPython, который поддерживает значительное число актуальных операционных платформ. Данный инструмент распространяется под свободной лицензией, это обеспечивает его применение без ограничений в любых, даже пропиетарных, приложениях. Разработаны версии интерпретаторов для JVM, MSIL и ряда других.

Python позволяет определять тип переменной на этапе исполнения программы. В связи с этим вместо присваивания переменной определенного значения более корректным является использование фразы «связывания определенного значения с конкретным именем». В языке поддерживаются такие встроенные типы данных как: бинарный, строковый, Unicode, целочисленный с произвольно заданной степень точности, число с плавающей запятой, и ряд других. Из современных коллекций язык обладает поддержкой таких встроенных структур как: список, словарь, кортеж (модифицируемый список), множество и др. Следует отметить, что все значения, также как и в Ruby, являются объектами, причем это характерно и для функций, модулей, методов и классов [15].

Добавить в программный код новый тип можно путем написания нового класса или определения нового типа в специальном модуле расширения, который может быть разработан на другом языке. Система классов поддерживает полноценные механизмы множественного и единичного наследования, а также функции метапрограммирования. Возможным, также является прямое наследование от подавляющего большинства встроенных типов расширений [16].

Структура проекта Python в среде разработки PyCharm приведена на рис.5.

Рисунок 5 – Пример структуры языка программирования Python [19]

Все объекты в Python подразделяются на атомарные и ссылочные. К первым относятся int, long, complex.

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

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

Преимущества языка следующие [18].

1. Интерпретируемость. Это позволяет существенно упростить и облегчить отладку программ, однако при этом теряется скорость выполнения приложения.

2. Динамическая типизация. Это повышает общую скорость разработки кода.

3. Гибкая поддержка модульности. Разработанный модуль может быть легко интегрирован в код произвольных приложений.

4. Встроенная поддержка Unicode. Это позволяет разработчику использование в программах символов родного языка, а не только английского.

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

6. Автоматическая «сборка мусора», т.е. освобождение разработчика от необходимости слежения за утечками памяти.

7. Интеграция другими, более низкоуровневыми языками программирования для повышения скорости работы программных приложений.

8. Гибкий, простой и лаконичный синтаксис позволяет разработчику лучше писать и читать созданный программный код. Это помогает сэкономить время разбора в коде одного разработчика другому.

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

10. Кроссплатформенность. Это позволяет запускать программное приложения, написанное на языке Python, на практически любой операционной системе, где установлен интерпретатор языка нужной версии и сборки.

Выводы по главе 2

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

3 ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ПРОГРАММНОГО ПРИЛОЖЕНИЯ СРЕДСТВАМИ ЯЗЫКА ПРОГРАММИРОВАНИЯ С#

3.1. Описание состава проекта программного приложения

Структура проекта программного обеспечения в обозревателе решений приведена на рис.6.

Рисунок 6 - Структура проекта программного обеспечения в обозревателе решений

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

Техническая программная реализация выполнена на базе использования высокоуровневого языка программирования C#, интегрированной среды разработки Microsoft Visual Studio 2019.

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

В общем создано 7 функциональных форм:

1. AboutForm - необходима для вывод информации о разработчике программы.

2. FourierDoc - обеспечивает обработку данных по фильтру.

3. HistogramWindow - предоставляет функцию построения гистограммы изображения.

4. ImageDoc - обеспечивает обработку графического изображения по предоставленным параметрам.

5. ImageStatisticsWindow - просмотр статистических данных и параметров графического изображения.

6. MainForm - предоставляет доступ к основным функциям системы по редактированию и обработки графических изображений.

7. SelectImageForm - окно избрание графического изображения для дальнейшего выполнения обработки.

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

Рисунок 7 - Перечень классов реализации фильтров для обработки изображений

3.2. Реализация функциональных возможностей программного приложения

Пример вида загруженного графического файла в стандартно настроенном программном обеспечении приведен на рис.8.

Пример подключения соответствующих элементов пользовательского интерфейса по обработке графического файла на базе компонента ToolStrip приведен на рис..

Рисунок 9 – Пример вида загруженного графического файла в стандартно настроенному программному обеспечению

Рисунок 10 – Пример подключения элементы пользовательского интерфейса по обработке графического файла на базе компонента ToolStrip

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

Это окно можно закрепить в рабочем окне или закрыть с помощью соответствующих кнопок, расположенных в заголовке.

Рисунок 11 - Отображение окна параметров гистограммы обрабатываемого графического файла по красному каналу

Отображение окна параметров гистограммы обрабатываемого графического файла по зеленому каналу можно увидеть на рис.12.

Рисунок 12 – Отображение окна параметров гистограммы обрабатываемом графического файла по зеленому каналу

Кроме графика гистограммы также выводятся данные по выбранному, с помощью указателя мыши, пикселю.

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

Аналогично предыдущих вариантов отображения гистограмм доступна ее построение для синего и красного цвета.

Пример открытия окна выдачи статистических данных в свернутом виде приведены на рис.13.

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

Рисунок 13 – Пример открытия окна выдачи статистических данных в свернутом виде

Пример открытия окна выдачи статистических данных в более детальном, развернутом виде приведены на рис.14.

Можно увидеть соответствующие максимальные, средние, минимальные значения и медиану.

Возможность масштабирования изображения в пункте меню Zoom компонента MenuStrip приведена на рис.15.

Рисунок 14 - Пример открытия окна выдачи статистических данных в развернутом виде

Возможность масштабирования изображения в пункте меню Zoom компонента MenuStrip на рис.. Предусмотрено режимы масштабирования в 10, 25, 50, 75, 100, 150, 200, 400, 500 процентов. Также можно изменять масштаб по шагам с помощью горячих клавиш Ctrl + 8 и Ctrl + 7. Предусмотрена возможность подгона масштаба изображения под размер экрана (Ctrl + 9).

Рисунок 15 - Возможность масштабирования изображения в пункте меню Zoom компонента MenuStrip

Результат функции клонирования изображения приведен на рис.16.

Рисунок 16 – Результат функции клонирования изображения

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

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

Можно увидеть уровень масштаба изображения, его разрешение в пикселях, текущие координаты указателя мыши по х и у, параметры аддитивной цветовой модели (RGB), описывающий способ синтеза цвета, по которому красное, зеленое и синее свет накладываются вместе, смешиваясь в различные цвета, параметры цветовая модели (HSL), где цвет определяется тремя характеристиками: цветовым тоном, насыщенностью (частью чистого цвета, без примеси черной и белой красок), яркостью (близостью изображения до белого цвета) и параметры семейства цветовых пр сторов (YCbCr), которые используются для передачи цветных изображений. Y - компонента яркости, Cb и Cr является синей и красной цветоразностными компонентами.

Рисунок 17 – Пример отображения параметров графического изображения средствами компонента StatusStrip

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

Рисунок 18 - Перечень реализованных в программном обеспечении опций из цветной фильтрации графического изображения

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

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

Рисунок 19 - Перечень реализованных в программном обеспечении опций по фильтрации графического изображения в соответствии с цветовой модели HSL

Интерфейс окна по коррекции насыщенности графического изображения в соответствии с цветовой модели HSL приведен на рис.20.

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

Последний компонент интерфейса используется для просмотра сведений большого объема или для визуальной настройки числовых параметров. Он состоит из двух частей: ползунок и разделения. Ползунок служит средством настройки компонента. Его положение соответствует свойства Value.

Деления являются некоторыми визуальными отметками, расположенными через равные промежутки.

Рисунок 20 - Интерфейс окна по коррекции насыщенности графического изображения в соответствии с цветовой модели HSL

Выводы по главе 3

Третий раздел отражает специфику практической реализации программного приложения по обработке графических файлов средствами языка высокоуровневого программирования C# и среды разработки MS Visual Studio 2017. Описан состав разработанного проекта программного приложения с соответствующими иллюстрациями. Приведено описание реализации функциональных возможностей разработанного программного приложения, приведены скриншоты основных форм и результатов обработки фотоизображений.

ЗАКЛЮЧЕНИЕ

Исследование тематики языков программирования высокого уровня позволило мне выполнить следующие поставленные задачи:

  1. Проведен анализ особенностей объектно-ориентированных языков программирования.
  2. Осуществлен обзор существующих популярных парадигм реализации программного обеспечения.
  3. Выполнен аналитический обзор популярных языков программирования java, c#, python.
  4. Произведена практическая реализация программного приложения средствами языка программирования C#.
  5. Описан разработанный состав программного приложения
  6. Описаны основные функциональные возможности программного приложения.

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

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

Третий раздел отражает специфику практической реализации программного приложения по обработке графических файлов средствами языка высокоуровневого программирования C# и среды разработки MS Visual Studio 2019. Описан состав разработанного проекта программного приложения с соответствующими иллюстрациями. Приведено описание реализации функциональных возможностей разработанного программного приложения, приведены скриншоты основных форм и результатов обработки фотоизображений.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Антони С. Освой самостоятельно программирование за 21 день. — М.: Вильямс, 2017. - 562 с.
  2. Багриновский К.А. Хрусталев Е.Ю. Новые информационные технологии. – М.: ЭКО, 2017. – 122 с.
  3. Жилов Д.А. Теория информационных систем: опыт построения. – М.: Мир, 2013. –523 с.
  4. Иванова Г.С. Основы программирования Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2017. –156 с.
  5. Камаев В.А., Костерин В.В. Технологии программирования Учебник. — 4-е изд., перераб. и доп. — М.: Высш. шк., 2016. - 314 с.
  6. Касаткин В. Информатика и алгоритмы. – М.: Просвещение, 2014. – 167 с.
  7. Компьютерные технологии обработки информации / Под ред. С.В. Назарова. - М.: Финансы и статистика, 2017. – 108 с.
  8. Лутц М. Изучаем Python. СПб.: Символ-Плюс Медиа, 2017. – 1280 с.
  9. Монахов В.В. Язык программирования Java и среда NetBeans. – СПб.: БХВ-Петербург, 2014. – 704 с.
  10. Нейгел К., Ивьен Б., C# 5.0 и платформа .NET 4.5 для профессионалов. М.: Академия, 2014. – 1440 с.
  11. Нимейер П. Программирование на Java. – Москва: Эксмо, 2014. – 1216 с.
  12. Орлов С.А. Теория и практика языков программирования. – СПб.: Питер, 2014. – 688 с.
  13. Рихтер Д. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#. СПб.: Питер, 2017. – 720 с.
  14. Рихтер Д. Программирование на языке C#. – СПб.: Питер, 2013. – 412 с.
  15. Россум Г. Язык программирования Python. СПб.: Символ-Плюс Медиа, 2017. – 454 с.
  16. Саммерфилд М. Программирование на Python 3. СПб.: Символ-Плюс, 2017. – 608 с.
  17. Себеста Р.В. Основные концепции языков программирования. – М.: Вильямс, 2017. – 672 с.
  18. Сузи Р.А. Язык программирования Python. М.: Интуит, 2016. – 351 c. 
  19. Тюгашев А.А.. Основы программирования. Часть 1. – СПб.: Университет ИТМО, 2016. – 160 с.
  20. Холодов Г.М., Поповкин А.В. Алгоритмическое и объектно-ориентированное программирование. – М.: МГТУ МАМИ, 2017. – 459 с.
  21. Хорев П.Б. Объектно-ориентированное программирование. – Москва: Академия, 2017. – 446 с.