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

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

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

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

Добавлен: 29.03.2023

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

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

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

Поэтому данный принцип ООП позволяет оперативно изменить подход к хранению данных.

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

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

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

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

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

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

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

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

ГЛАВА 2. АНАЛИЗ ВОЗМОЖНОСТЕЙ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ С ПОДДЕРЖКОЙ ООП ПАРАДИГМЫ


2.1. Специфика и возможности использования ЯП Python

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

Поддерживаемые объекты в Python классифицируют на ссылочные и атомарные. К последним относятся int, long, complex [2].

Компонентный состав ЯП Python приведен на рисунке 5.

Рисунок 5 – Компонентный состав ЯП Python

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

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

Кроме ООП язык реализует структурное, аспектно-ориентированное, функциональное программирование. Данный ЯП позволяет выяснять тип переменной на этапе исполнения программы.

Поэтому вместо присваивания переменной заданного значения более корректным является применение фразы «связывания значения с определенным именем».

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

PyCharm – это современная среда разработки для язык Python от GeekBrains с широким полным набором инструментов и средств для организации эффективной и быстрой разработки программных продуктов на языке Python.

На данный момент выпускается в двух вариациях –PyCharm Community Edition (бесплатная версия) с поддержкой стандартного набора функциональных возможностей и PyCharm Professional Edition (платная и расширенная версия) [15]. 

Интерфейс IDE PyCharm приведен на рисунке 6. Основные достоинства версии Community Edition:

  • Заточена для разработки именно на языках Python 2.х и 3.х.
  • Распространяется с открытым исходным кодом.
  • Поддержка функционального контекст редактора и отладчика.
  • Поддержка средств удобного рефакторинга кода, инспекции качества кода, и интеграции с различными системами контроля версий.

Рисунок 6 – Интерфейс IDE PyCharm для ЯП Python

  • Средства быстрой навигации по создаваемому проекту, поддержка модульного тестирования, настраиваемый пользовательский интерфейс для разработчика [2].

2.2. Специфика и возможности использования ЯП Ruby

В языке Ruby всё элементы языка являются объектами. Это значит, что каждому объекту при необходимости можно задать конкретные свойства или действия.

Язык полноценно реализует объектно-ориентированную парадигму разработки ПО, поэтому свойства называют классически - переменными экземпляра класса, а выполняемые действия над свойствами - методами. ООП подход в данном языке легок для понимания в арифметическом коде числовых расчетов [9].

В большей части существующих языков числа и другие используемые примитивные типы данных не являются отдельными объектами. Язык Ruby, однако, аналогично языку Smalltalk, предоставляет методы и переменные всем типам объектов [12].

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

Иерархия классов в Ruby приведена на рисунке 7.

Рисунок 7 – Схема наследования классов в Core Ruby

В ЯП Ruby поддерживаются различные библиотеки для разработки разных типом программных приложений: XML, привязки графического интерфейса, различные сетевые протоколы, фреймворки создания игр и др. Разработчики также имеют свободный доступ к пакету RubyGems3. Аналогичный CPAN Perl, данный пакет предоставляет функционал быстрого импорта сторонних библиотек [16].

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

Rails для Ruby является бесплатным фреймворком, расширяющим функционал, и являющийся необходимым для оперативной разработки MVC-приложений.

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

Программный продукт RubyMine является полнофункциональным средством разработки кода для создания веб-приложений на основе применяемых технологий Ruby и фреймворка Ruby on Rails.


Данная система обладает широкими возможностями создания приложений аналогично решению IntelliJ IDEA, при этом включает дополнительные инструменты повышения эффективности разработки проектов на основе платформ Ruby и Rails. 

Данная IDE предоставляет в пользование разработчику набор эффективных инструментов создания программ, которые в полной мере соответствуют имеющимся языковым особенностям Ruby, обеспечивая при этом динамичный учет синтаксиса данного языка и поддерживаемых в нем методов работы со структурами данных [12].

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

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

Рисунок 8 - Интерфейс IDE RubyMine

RubyMine в качестве дополнительных возможностей поддерживает интеграцию всех существующих систем контроля версий программного кода, в том числе платформы Git, Subversion и CVS. Интегрированные средства отладки программного кода для Ruby обеспечивает возможности установки точек останова в имеющемся коде и файлах отображения представлений Rails RHTML [9].

Реализация функций проведения модульного тестирования RSpec и Test::Unit предоставляет возможности организации процесса проверки работы модулей для выявления ошибок на стадии разработки. Наличие гибкого и открытого API обеспечивает возможности создания пользовательских надстроек на сторонних языках, например на Java. 

Ключевые возможности [18]:

  • Наличие плагинов для установки и развертывания инфраструктуры проекта.
  • Поддержка технологий Puppet.
  • Интеграция плагина EditorConfig для автоматической идентификации и выбора требуемой конфигурации типа кода для существующих IDE.

2.3. Специфика и возможности использования ЯП Java

Java является популярным и востребованным на рынке труда ЯП высокого уровня, разработанным известной организацией Sun Microsystems. Официальную поддержку данного ЯП осуществляет корпорация Oracle. Концепция данного ЯП основана на языке C++, являющимся базовым при написании Java [8].


Создаваемые на Java приложения собираются в отдельный байт-код, выполнение которого посредством виртуальной машины (JVM) позволяет интерпретировать его под конкретную платформу (устройство) или под любую современную операционную систему.

Для обхода недостатка Java, заключающегося в достаточно низкой скорости работы, применяются механизмы объединения отдельных модулей на низком уровне управления, что позволяет задействовать языки ассемблер, С++ для узких мест, повышая общий уровень производительности [10].

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

Разрабатываемые программные приложения компилируются средствами языка в отдельный байт-код, поддерживающий интерпретацию под виртуальной машиной Java для заданной аппаратно-программной платформы [19]. Это является неким недостатком, поэтому реализован ряд механизмов интеграции отдельных программных модулей, поддерживающих другие языки. При создании ЯП Java изначальными положениями были:

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

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

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

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

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