Файл: Анализ и оценка средств реализации объектно–ориентированного подхода к проектированию экономической информационной системы (Суть объектно–ориентированного подхода).pdf

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

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

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

Добавлен: 21.05.2023

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

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

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

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

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

2. Средства реализации объектно–ориентированного подхода к проектированию экономической информационной системы

2.1. C ++

Прежде чем рассматривать преимущества и недостатки C++, следует ознакомиться с правилами, которые использовал Бьёрн Страуструп при проектировании данного языка[4]:

Си++:

  1. Разработан как универсальный язык со статическими типами данных, эффективностью и переносимостью языка Си.
  2. Разработан так, чтобы непосредственно и всесторонне поддерживать множество стилей программирования (процедурное программирование, абстракцию данных, объектно–ориентированное программирование и обобщённое программирование).
  3. Разработан так, чтобы давать программисту свободу выбора, даже если это даёт ему возможность выбирать неправильно.
  4. Разработан так, чтобы максимально сохранить совместимость с Си, тем самым делая возможным лёгкий переход от программирования на Си.
  5. Избегает таких особенностей, которые зависят от платформы или не являются универсальными.
  6. Не накладывает никакой избыточной нагрузки на программу, не использующую какие–либо возможности.
  7. Разработан так, чтобы не требовать слишком усложнённой среды программирования.

Первое правило явно показывает на одно из ключевых преимуществ C++ – переменная не может менять свой тип данных. Это значит, что при автодополнении интегрированная среда разработки будет предлагать исключительно те методы, которые применимы к данному типу данных. Статическая типизация также значительно уменьшает количество ошибок; многие из них исключаются уже на стадии компилирования приложения. Тем не менее, применение статической типизации влечет за собой определенные трудности с реализацией алгоритмов и читаемостью кода.

Универсальность C++ – еще одно значительное преимущество данного языка программирования. Овладев основами, разработчик сможет писать на C++ простые десктопные приложения для Windows с помощью Windows Forms, более сложные программы для Windows и Linux, игры для разных платформ (включая Windows и Android), серверную часть сайтов (back–end) и так далее.

Второе правило также следует отнести к преимуществам C++. Начинающий разработчик сможет сперва освоить процедурное программирование, а затем перейти к изучению ООП. Третье правило невозможно охарактеризовать исключительно как положительную или негативную особенность данного языка программирования. На начальном этапе основные ошибки (несовместимость методов с типом переменной, попытки привести одну и ту же переменную к другому типу данных) исключаются еще на стадии компилирования, поэтому пункт о «свободе выбора» для начинающих программистов не является действительным.

Так как автор данной статьи рассматривает преимущества и недостатки языка программирования С++ как первой платформы для начинающего разработчика, то четвертый пункт (совместимость с Си) не является существенным. Однако с приобретением опыта разработчик заметит, что некоторые функции, работающие на C, также поддерживаются и C++ (например, функции ввода/вывода на экран информации scanf() и printf(), библиотека stdio.h). Вследствие этого некоторые программисты называют С++ не иначе как «Ц с классами»[5].

Кроссплатформенность C++ является весомым преимуществом для начинающих программистов. Есть множество компиляторов и IDE, которые имеют версии для Windows, MacOS и Linux (Code::BlocksIDE предназначена для Windows и Linux, CLion – для Windows, Linux и MacOS). Разработчик может создавать приложения для разных платформ, используя «родную» для системы IDE и компилятор. QT–framework, разработанный в 1996 году, особенно упростил задачу кроссплатформенности.

Шестое правило Страуструпа говорит об эффективности программ, написанных на C++. Если функционал программы не задействуется, то она будет потреблять меньше системных ресурсов и выполняться быстрее. Для начинающих разработчиков этот пункт означает то, что приложение будет компилироваться быстрее. Это показывают независимые тесты: так, программа, высчитывающая числа Фибоначчи [6], написанная на C++ и скомпилированная через GCC, собралась за 0.014 секунд. В данном тесте C++ уступил только Си: программа на Си скомпилировалась за 0.013 секунд. C++ быстрее компилирует программы благодаря статической типизации: компилятор не тратит время на определения типа переменной, как это происходит со многими интерпретируемыми языками наподобие JavaScript, Python, PHP и так далее (к слову, алгоритм Фибоначчи выполнился за 0.689 сек, 1.109сек и 1.307 сек на JavaScript, Python 2 и PHP соответственно).


Преимущества седьмого правила выглядят весьма условными, так как сегодня множество производителей предлагают удобные IDE для разных языков программирования. Более того, тут C++ заметно уступает, например, JavaScript. Для разработки на JavaScript необходим минимальный инструментарий – блокнот и веб–обозреватель (эти приложения в большинстве операционных систем встроены изначально), в то время как для C++ необходим компилятор, который необходимо дополнительно скачивать и настраивать. В большинстве случаев начинающему разработчику придется устанавливать пакет «среда разработки + компилятор».

Несмотря на такие преимущества, как кроссплатформенность и эффективность, C++ обладает высоким порогом вхождения. Вот что говорит о данном языке программирования Бондарев В.М.: «Программы на С++ обгоняют программы на других языках, как гоночный автомобиль обгоняет обычные. Но учиться программировать на них – все равно, что учиться азам вождения, сев за руль гоночного автомобиля – дорого и долго»

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

2.2. Python

Согласно индексу TIOBE (ежемесячный индикатор популярности языков программирования на базе подсчетов результатов поисковых запросов) Python 3 раза определялся языком года: в 2007, 2010 и 2018. Награда присуждается языку программирования, который имеет самый высокий рост рейтинга за год.

Интересно, что в марте этого года Python занял свою самую высокую позицию в рейтинге с 2001 года. Согласно TIOBE Index сейчас он находится на 3 месте [24].

Как и любой другой язык программирования, Python имеет плюсы и минусы. Однако количество разработчиков, увлеченные данным языком программирования, растет, как и число проектов, взаимно требующие Python–специалистов. «Не нужно изобретать очередной велосипед» – так говорят многие разработчики о Python.

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

Плюсы:

  1. Низкий порог вхождения. Синтаксис Python более понятный для новичка.
  2. Логичный, лаконичный и понятный. В сравнении с многими другими языками Python имеет легкочитаемый синтаксис, разве что Visual Basic тоже легок. Например, существует шутка про Perl , что это «write only» язык, так как синтаксис сложно читать: https://en.wikipedia.org/wiki/Write–only_language.
  3. Кроссплатформенный: подходит для разных платформ: и Linux, и Windows.
  4. Есть реализация интерпретаторов для мобильных устройств и непопулярных систем.
  5. Широкое применение. Используется для разработки веб–приложений, игр, удобен для автоматизации, математических вычислений, машинного обучения, в области интернета вещей. Существует реализация под названием Micro Python, оптимизированная для запуска на микроконтроллерах (можно писать инструкции, логику взаимодействия устройств, организовывать связь, реализовывать умный дом).
  6. Сильное комьюнити и много конференций. К примеру, недавно в Одессе состоялся PyCon. На конференции в числе всех спикеров выступили 4 иностранных докладчика, которые затронули интересные темы. Лично мне было полезно услышать соавтора библиотек MindsDB, докладчика из Нью–Йорка (рассказывал про искусственный интеллект при разработке средств распознавания лиц на фото), спикера из британской компании Elastic (выступил с докладом на тему «инструменты мониторинга производительности вашего приложения»), спикера из Минска (девушка рассказывала про протокол MQTT для связи устройств интернета вещей).
  7. Мощная поддержка компаний–гигантов IT–индустрии. Такие компании, как Google, Facebook, Dropbox, Spotify, Quora, Netflix, на определенных этапах разработки использовали именно Python.
  8. Высокая востребованность на рынке труда [2].

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

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

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

Конечно, у стороны две медали, и если говорить о минусах, то Python – язык с динамической типизацией. С одной стороны код проще и быстрее писать, но производительность уступает таким компилируемым языкам, как C++ и Golang. Но для большинства задач: для веб–разработки, для скриптов, прототипирования, машинного обучения и работы с большими данными, – один из лучших языков.

2.3. Java

Java – это язык программирования общего назначения, который следует парадигме объектно–ориентированного программирования и подходу «Написать один раз и использовать везде». Java используется для настольных, сетевых, мобильных и корпоративных приложений.

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

Java Development Kit (JDK) – комплект разработчика Java. С помощью JDK и стандартного блокнота можно писать и запускать/ компилировать код на Java;

Java Runtime Environment (JRE) – исполняющая система Java. Механизм распространения программного обеспечения, состоит из автономной виртуальной машины Java, стандартной библиотеки Java и инструментов настройки.

Integrated Development Environment (IDE) – интегрированная среда разработки. Инструменты, которые помогают запускать, редактировать и компилировать код. Самые популярные из них – IntelliJ IDEA, Eclipse и NetBeans [24].

Java можно найти везде. Это основной язык разработки для Android. Он используется в веб–приложениях, правительственных веб–сайтах и ​​технологиях обработки больших данных, таких как Hadoop и Apache Storm. Java подходит и для научных проектов, особенно в области обработки естественного языка. Язык Java преобладал и в программировании для мобильных устройств, задолго до появления смартфонов – первые мобильные игры в начале 2000–х годов были написаны на Java. Java, благодаря своей долгой истории, заработал свое место в Зале славы программирования. Индекс TIOBE, один из самых авторитетных индексов популярности программ в мире, при составлении рейтинга использует результаты поисковой выдачи. Несмотря на растущую популярность Go и Python, Java остается на вершине списка уже более десятилетия.


Java внес в мир программирования новые принципы:

  1. Гибкость. Java доказала, что C – процедурный, управляемый вручную и зависящий от платформы код – это не предел совершенства . Благодаря Java, все больше людей начали применять объектно–ориентированное программирование, которое сейчас используется повсеместно.
  2. Апплеты. Еще до появления JavaScript, в Java добавили апплеты – небольшие веб–программы, которые предоставляют интерактивные элементы для визуализации и обучения. Они не используются ни для чего, кроме простой анимации, однако апплеты привлекли внимание многих программистов и подтолкнули их к разработке HTML5, Flash и JavaScript.
  3. Разработка через тестирование. Java TDD – уже давно не экспериментальная практика, а стандартный способ разработки программного обеспечения. Введение JUnit в 2000 году считается одним из самых больших достижений Java [7].

В Java есть 5 основных принципов объектно–ориентированного подхода, а именно:

1. Все является объектом

Все данные программы хранятся в объектах. Каждый объект создается (есть средства для создания объектов), существует какое–то время, потом уничтожается.

2. Программа есть группа объектов, общающихся друг с другом

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

3. Каждый объект имеет свою память, состоящую из других объектов и/или элементарных данных.

Объект хранит некоторые данные. Эти данные – это другие объекты, входящие в состав данного объекта и/или данные элементарных типов, такие как целое, вещественное, символ, и т.п.

4. Каждый объект имеет свой тип (класс)

Т.е. в объектно–ориентированном подходе не рассматривается возможность создания произвольного объекта, состоящего из того, например, что мы укажем в момент его создания. Все объекты строго типизированы. Мы должны сначала описать (создать) тип (класс) объекта, указав в этом описании из каких элементов (полей) будут состоять объекты данного типа. После этого мы можем создавать объекты этого типа. Все они будут состоять из одних и тех же элементов (полей).

5. Все объекты одного и того же типа могут получать одни и те же сообщения [12]

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