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

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

Содержание:

ВВЕДЕНИЕ

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

Компьютеры и программы установленные на них помогают решать множество задач, чем приносит огромную пользу.

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

Это подтолкнуло ведущих зарубежных аналитиков на множественные аналитические исследования, но результаты их были довольно удручающие. В обговоренный срок на тот момент были закончены только менее 20% проектов. Из остальных проектов примерно 50% сданы заказчику с опозданием или разработчики превысили запланированные расходы. В основном причинами неудач служили нечёткая или неполная формулировка требований по отношению к ПО, неудовлетворительное планирование, недостаток во влечёных в работу над проектом пользователей и т.п. Исходя из этого потребовался существенно новый подход к проектированию ПО.

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

1 СТРУКТУРА ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА

1.1. Подходы к анализу и проектированию информационных систем

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

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

В-третьих, отличие двух подходов заключается в структурной организации внутри модулей системы. В структурном подходе модуль состоит из функций, иерархически связанных между собой отношением композиции (англ. part-of – часть-целое), т.е. функция состоит из подфункций, подфункции из подподфункций и т.д. В объектно-ориентированном подходе иерархия выстраивается с использованием двух отношений: композиции и наследования. При этом в объектно-ориентированном подходе «объект-часть» может включаться сразу в несколько «объектов-целое». Таким образом, модуль в структурном подходе представляется в виде дерева, а в объектно-ориентированном подходе – в виде ориентированного графа, т.е. с помощью более общей структуры.

Наибольшую популярность обрели методологии объектно-ориентированного подхода поддерживающие данный подход:

  • унифицированный процесс (Unified Process, UP);
  • экстремальное программирование (eXtreme Programming, XP);
  • гибкое моделирование (Agile Modeling, AM).

Базовым средством документирования результатов проектирования систем посредством этих методологий является унифицированный язык моделирования (Unified Modeling Language, UML).[1]

1.2. Сущность объектно-ориентированного подхода

Термин «объект» или аналогичные ему понятия появились практически независимо в различных областях, связанных с компьютерами, в процессе разработки:

  • архитектуры компьютеров (Burroughs 5000, IBM System/38, Intel 432);
  • объектно-ориентированных операционных систем (Plessey/System 250, StarOS, iMax);
  • объектно-ориентированных языков программирования (Simula, Smalltalk);
  • теории баз данных (модели «сущность-связь»);
  • систем искусственного интеллекта (фреймы).

В процесс создания программ термин «объект» впервые был введен в языке Simula 67 при определении сущностей предметной области.

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

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

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

Индивидуальность – это свойство сущности, которое отличает её от других. Например, объект «преподаватель» в реальности – это мужчина или женщина, имеющие определённый рост, вес и возраст. Этот человек в определённые рабочие дни приходит в один из вузов. С точки зрения проектирования системы абстракция этого типа объектов будет привелена к базовому набору атрибутов: фамилия, имя, отчество, дата рождения, пол. После этого, набор атрибутов зависит от сферы использования проектируемой системы. Например, для бухгалтерии наиболее важной является информация о должности, на которой работает преподаватель, время приёма на работу, так как это определяет стаж, а соответственно размер надбавки за стаж работы, наличие учёной степени и учёного звания, что тоже предполагает начисление соответствующих надбавок. Для учебного отдела интерес представляют список дисциплин и количество часов, которые читает преподаватель.

Для логической группировки однотипных объектов предметной области в объектно-ориентированном подходе используется понятие «класс».

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

Каждый класс характеризуются обозначенным набором атрибутов и методов. Текущее значение атрибутов чётко определяет текущее состояние объекта. Набор методов и их алгоритмическая реализация определяют поведение класса объектов.

Когда говорят об объектно-ориентированном подходе, то обязательно дают понятие терминам "инкапсуляция", "наследование", "полиморфизм".

Наследование – принцип, в соответствии с которым знание об общей категории разрешается применять по отношению более узкая категории. Применительно к классам это означает, что порождаемый класс (узкая категория) полностью унаследует (включит в себя) все атрибуты и методы, определённые в родительском классе (общей категории). При этом в дочернем классе можно доопределять атрибуты и вводить новые методы. Например, дочерний класс «преподаватель» будет наследовать от родительского класса «сотрудник» все атрибуты, к которым будут отнесены фамилия, имя, отчество, дата рождения, дата приема на работу и все методы (определения возраста по дате рождения, стажа работы по дате приёма на работу). При этом данный класс будет иметь обязательно атрибуты "Учёная степень" и "Учёное звание".

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

Полиморфизм – принцип построения определяет возможность принимать различные внешние формы или функциональность (поведение) в зависимости от контекста. Как пример, методы Paint (нарисовать) или DefineS (определить площадь), определённые в родительском классе «фигура», для классов «эллипс» и «прямоугольник» должны быть реализованы по-разному."

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

1.3 Базовые составляющие объектно-ориентированного подхода

Базовыми составляющими объектно-ориентированного подхода являются:

унифицированный процесс;

унифицированный язык моделирования;

шаблоны проектирования.

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

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

На стадиях анализа и проектирования часто используются так называемые шаблоны (паттерны) проектирования.

Шаблон – это пара «проблема/решение», содержащая готовое обобщенное решение типичной проблемы, которой присвоено имя. Обычно, шаблон кроме текстового описания содержит также одну или несколько диаграмм UML (например, диаграммы классов, кооперации и/или последовательности), графически иллюстрирующих состав и структуру классов, а также особенности их взаимодействия при решении поставленной проблемы.  Шаблоны разрабатываются опытными профессионалами и являются проверенными, эффективными (порой оптимальными) решениями. Применение шаблонов обеспечивает сокращение затрат и повышение качества разработки программного обеспечения.

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

  1. Описание системы в виде объектов больше соответствует содержательному смыслу предметной области.
  2. Сущности предметной области, зачастую, обладают поведением, что в объектно-ориентированном проектировании отражается с помощью определения методов класса. В структурном подходе данные (атрибуты) и алгоритмы (методы) существуют отдельно друг от друга.
  3. Объединение атрибутов и методов в объекте (классе), а также инкапсуляция позволяют добиться большей внутренней связности и меньшей связности между компонентами системы.
  4. Объектно-ориентированный подход позволяет легче производить параллельные вычисления, так как каждый объект обладает собственными значениями характеристик (атрибутов) и поведением, за счет чего можно добиться автономности обработки атрибутов различных экземпляров класса.
  5. CASE-средства, поддерживающие объектно-ориентированный подход, на основе информации об объектах позволяют достичь большей степени автоматизации генерации кода. CASE-средства, поддерживающие структурный подход, хорошо справляются с генерацией структур БД. Однако следует отметить, что эта структура должна удовлетворять требованиям нормализации. В связи с чем автоматическая генерация кода (например, экранов или функций обработки данных) возможна лишь в определенных случаях.

2 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ПРОЕКТИРОВАНИЕ ИНФОРМАЦИННЫХ СИСТЕМ.

2.1 Суть анализа и проектирования в ООП

Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and design) состоит в рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, которые будут реализованы средствами объектно-ориентированного языка программирования. Эти программные объекты включают в себя атрибуты и методы. И, наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компонентов и классов.

В начале объектно-ориентированного анализа и проектирования производится так называемый анализ требований (requirements analysis), во время которого выделяются основные процессы, происходящие в моделируемой системе, и их формулировка в виде прецедентов.

Прецедент (precedent) - это текстовое описание процессов, происходящих в предметной области.

После следует объектно-ориентированный анализ предметной области (object-oriented domain analysis). Задачей этого этапа является определение видов деятельности участников процесса и составление концептуальной модели (conceptual model), которая отражает различные категории элементов предметной области. Причем не только виды деятельности участников, но и все относящиеся к делу понятия.

Следующий этап - это объектно-ориентированное проектирование (object-oriented design), при котором основное внимание сосредоточено на распределении обязанностей. Распределение обязанностей (responsibility assignment) означает выделение задач и обязанностей различных программных объектов в приложении.

Наиболее важным моментом объектно-ориентированного анализа и проектирования является квалифицированное распределение обязанностей между компонентами программной системы. Дело в том, что единственный вид деятельности, без которого невозможно обойтись. К тому же он оказывает определяющее влияние на масштабируемость, расширяемость и возможность повторно использовать компоненты. Обязанности объектов и их взаимодействия изображаются с использованием диаграмм классов (design class diagram) и диаграмм взаимодействий (collaboration diagram).

2.2 Диаграммы классов

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

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

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

На диаграммах классов обычно показываются ассоциации и обобщения. Каждая ассоциация несёт информацию о связях между объектами внутри программы. Чаще всего применяются бинарные ассоциации, связывающие два класса. Ассоциации присваивается название, выражающее суть отображаемой связи. Кроме названия, ассоциация может иметь такую характеристику, как множественность. Она показывает, сколько объектов каждого класса может участвовать в ассоциации. Множественность указывается у каждого конца ассоциации (полюса) и задаётся конкретным числом или диапазоном чисел. Множественность, указанная в виде звёздочки, предполагает любое количество (в том числе, и ноль). Например, если ассоциация называется «Товарная группа», то ее можно связать с одним или несколькими объектами класса «Товар». Связаны между собой могут быть и объекты одного класса, поэтому ассоциация может рекурсивной. Например, для класса «Воинская часть» можно ввести ассоциацию «Подчинение», которая позволит создать иерархическую структуру военных подразделений.

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

2.3 Язык проектирования UML

В настоящее время для проектирования ИС принято пользоваться средствами предоставляемыми унифицированным языком моделирования UML.

UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода.

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

По запросу Object Management Group (OMG) – организации, аао принятию стандартов в области объектных технологий и баз данных, образовавшаяся проблема по унифицированию и стандартизации была решена авторами трех наиболее популярных Объективно-Ориентированного методов – Г.Бучем, Д.Рамбо и А.Джекобсоном, которые совместными усилиями создали версию UML 1.1, утвержденную OMG в 1997 году в качестве стандарта.

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

UML позволяет также разработчикам программного обеспечения достигнуть соглашения в графических обозначениях для представления общих понятий (таких как класс, компонент, обобщение (англ. generalization), агрегация (англ. aggregation) и поведение) и больше сконцентрироваться на проектировании и архитектуре.

3 СРЕДСТВА ДЛЯ РЕАЛИЗАЦИИ ИНФОРМАЦИОННЫХ СИСТЕМ
С ИСПОЛЬЗОВАНИЕМ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

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

3.1 C++

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

Началом разработки данного языка является 1979 год. При появлении язык назывался “C с классами”, однако позже он получил имя C++. Подарив такое название, разработчики подчеркнули, с одной стороны, что язык основывается на языке C, и, с другой стороны, что он превосходит по возможностям своего родителя. Основное дополнение C++ заключалось в языковом обеспечении работы с классами. Вместе с тем создатели C++ стремились сохранить совместимость с C: синтаксис первого основан на синтаксисе последнего, и большинство программ на C будут работать и как C++.

Первый выпуск C++ для коммерческого использования состоялся в 1985 году, вместе с публикацией книги “The C++ Programming Language”, которая на продолжительное время стала его неофициальным стандартом. В 1989 году вышла вторая версия языка в сопровождении книги “The Annotated C++ Reference Manual”.

В 1990-х годах язык стал одним из наиболее широко используемых языков программирования общего назначения. Первым официальным стандартом языка стал ISO/IEC 14882:1998, более известный как C++98. В 2003 году была принята его дополненная версия, C++03, а в 2005 году был опубликован “Library Technical Report 1” (сокращенно TR1) — документ, описывающий расширения стандартной библиотеки. TR1 не является стандартом, но большинство актуальных компиляторов C++ поддерживает его. Наконец, в 2011 году был принят текущий стандарт, C++11. Пример языка программирования С++ на рис.3.2.

Рисунок 3.1 – Пример языка программирования С++

Наиболее часто разработку программ с использованием данного языка выполняют в среде MS Visual Studio (которую можно найти на сайте – Microsoft.com). Использование данной среды позволяет эффективно разрабатывать программы и комплексы любой сложности, функционирующие под управлением операционной с системы Windows.

3.2 Java

Java — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущен 23 мая 1995 года. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения.

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

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

Язык Java потребовался для создания программного обеспечения, которое предполагает выполнения в браузерах. На практике языковые конструкции языка, определенные для языка Java, похожи на синтаксис языка C++. В Java используются практически точно такие же соглашения для объявления переменных, передачи параметров, операторов, а также и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++. Пример того, как реализован класса на Java на рис. 3.2.

http://java-study.ru/images/stories/samouchitel/24.gif

Рисунок 3.2 – Пример реализации класса в JAVA

Отличием IDE-оболочек для разработки JAVA-программ является их кросс-платформенность, возможность формирования кода, который может работать под управлением любой операционной системы –Linux, Windows, MacOS. Широкое применение находят инструментальные оболочки для создания приложений для мобильных телефонов. Наиболее используемой оболочкой является Eclipse, которая в настоящее время сопровождается фирмой ORACLE.

3.3 Ruby

Ruby — интерпретируемый объектно-ориентированный язык программирования, созданный в 1995 году Ruby – это тщательно сбалансированный язык. Его создатель Юкихиро Мацумото (также известный как “Matz”), объединил части его любимых языков (Perl, Smalltalk, Eiffel, Ada и Lisp) чтобы создать новый язык, в котором парадигма функционального программирования сбалансирована принципами императивного программирования. Особенностью языка является то, что в нем можно изменить любой класс в любое время. Как и во многих современных языках, в Ruby все данные является объектом (даже классы являются объектом класса Class), а все функции — методами. Пример реализации класса на Ruby на рис.3.3.

Рисунок 3.3 – Пример реализации класса в Ruby

С практической точки зрения данный язык оказывает конкуренцию JAVA.

Идеалы создателя Ruby

Он часто повторял, что «пытается сделать Ruby естественным, но не простым» языком, который отражает жизнь.

Основываясь на этом, он добавляет:

Ruby прост на вид, но очень сложен внутри, подобно человеческому телу.

Рост популярности Ruby

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

Индекс TIOBE, который измеряет рост популярности языков программирования, помещает Ruby в десятку общепризнанных языков программирования. Во многом, рост популярности языка приписывается популярности программного обеспечения, написанного на Ruby, в особенности – Ruby on Rails, фреймворку для разработки веб-приложений.

Ruby также свободен для бесплатного использования, изменений, копирования и распространения.

Вначале Matz рассматривал другие языки в поисках идеального синтаксиса. Вспоминая свои изыскания, он говорил: «Мне нужен был скриптовый язык, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python2.»

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

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

Гибкость Ruby

Ruby очень гибкий язык, так как он позволяет его пользователям свободно менять его части. Ruby старается ни в чём не ограничивать пользователя. Основные части Ruby могут быть удалены или переопределены по желанию. А существующие части можно изменять. Например, сложение выполняется операцией плюс (+). Но, если вы хотите использовать для этого более читаемое слово «plus» – вы можете добавить такой метод прямо в Numeric, внутренний класс языка Ruby.

Операторы в Ruby – синтаксический сахар для методов. Вы также можете переопределить их.

Блоки в Ruby также отличные источники гибкости. Программист может добавить замыкание к любому методу, описывая, как этот метод должен действовать. Замыкание — это блок, одна из наиболее популярных конструкций для пришедших в мир Ruby из мира императивных языков программирования, таких как PHP или Visual Basic.

На создание блоков было обретено вдохновление функциональными языками программирования. Мац (Matz) объяснял это тем, что «замыканиями в Ruby я хотел отдать дань уважения культуре языка Lisp3.»

В отличие от многих объектно-ориентированных языков, Ruby намеренно предоставляет лишь одиночное наследование. Но Ruby также предоставляет концепцию модулей (называемых «категориями» в Objective-C). Модули – это коллекции методов.

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

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

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

var — может быть локальной переменной.

@var — переменная объекта.

$var — глобальная переменная.

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

Ruby имеет много других особенностей и конструкций, и вот некоторые из них:

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

В Ruby представлен настоящий сборщик мусора типа mark-and-sweep (пометь и отчисти) для всех Ruby объектов. Не нужно самому отслеживать количество ссылок в сторонних библиотеках. Как утверждает Matz, «Это полезней для вашего здоровья.»

Писать расширения на C в Ruby проще, чем в Perl или Python при помощи элегантного API для вызова Ruby из C. Он включает в себя вызовы для встраивания Ruby в программное обеспечение, чтобы использовать его как скриптовый язык. Также доступен интерфейс SWIG.

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

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

Ruby отличается высокой адаптивностью: он был разработан большей частью на GNU/Linux, но работает на многих типах macOS, UNIX, Windows, DOS, BeOS, OS/2, и так далее.

Список реализаций:

JRuby — это Ruby, реализованный на JVM (Java Virtual Machine), использует оптимизированный JIT-компилятор, сборщик мусора, нативные потоки, инструментальную экосистему и огромное количество библиотек JVM.

Rubinius это — «Ruby написанный на Ruby». Реализован на основе LLVM – изящной виртуальной машине, на который созданы и другие известные языки.

mruby — это легкая реализация Ruby, которая может быть подключена и встроена в приложение. Возглавляет разработку mruby создатель языка Ruby, Юкихиро Мацумото (Yukihiro Matsumoto), знаменитого под псевдонимом Мац (Matz).

IronRuby — это реализация «тесно интегрированная с .NET FrameWork».

MagLev — это «быстрая, стабильная реализация Ruby с интегрированным долгосрочным хранением объектов и распределенным открытым кешем”.

Cardinal — это «компилятор Ruby для виртуальной машины Parrot» (Perl 6).

ЗАКЛЮЧЕНИЕ

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

СПИСОК ЛИТЕРАТУРЫ

  1. Иванов А.Г., Карпова А.В., Семик В.П., Филинов Ю.Е. Объектно-ориентированная среда программирования. Системы и средства информатики. Вып.2. - М.: Наука, 2011.
  2. Козырев А.А. Информационные технологии в экономике и управлении – СПб.: Изд-во Михайлова В.А., 2013
  3. Уткин В.Б., Балдин К.В. Информационные системы и технологии в экономике. – М.: ЮНИТИ, 2007.
  4. Хотинская Г.И. Информационные технологии управления. – М.: Дело и Сервис (ДИС), 2013.
  5. Stroustrup D. The C++ Programming Language. Addison-Wesley, 1986.
  6. А. А. Вичугова Методы и средства концептуального проектирования информационных систем: сравнительный анализ структурного и объектно-ориентированного подходов 2014
  7. Буч Г. Объектно-ориентированное проектирование с примерами применения. Пер. с англ. Киев: Диалектика, 1992
  8. Шлеер С., Меллор С. Объектно-ориентированный анализ: моделирование мира в состояниях. Пер. с англ. Киев: Диалектика, 1993
  9. Заботина Н.Н. Проектирование информационных систем: учебное пособие. – М.: Инфра-М, 2013.
  10. Йордан Э. Объектно-ориентированный анализ и проектирование систем. – М.: ЛОРИ, 2012
  11. Павловская Т.А. С++. Объектно-ориентированное программирование : практикум : учеб. пособие для вузов / Т. А. Павловская, Ю. А. Щупак . – СПб.: Питер 2015
  12. В.Н. Волкова и В.Н. Юрьева Информационные системы в экономике учебник для экономического бакалавриата Москва ЮРАЙТ 2019
  13. А.М. Вендоров. Проектирование программного обеспечения экономических информационных систем «Финансы и статистика» 2006
  14. Джей Макгаврен Head First. Изучаем Ruby перевод: Е.А. Матвеев 2016
  15. И.Ю. Коцюба, Чунаев А.В., А.Н. Шиков Основы проектирования информационных систем Учебное пособие 2015
  1. Иванов А.Г., Семик В.П., Карпова А.В., Филинов Ю.Е. Объектно-ориентированная среда программирования. Системы и средства информатики. Вып.2. - М.: Наука, 2011.