Учебники

Объектно-ориентированная парадигма

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

  • Первым объектно-ориентированным языком был Simula (Симуляция реальных систем), который был разработан в 1960 году исследователями из Норвежского вычислительного центра.

  • В 1970 году Алан Кей и его исследовательская группа в Xerox PARC создали персональный компьютер по имени Dynabook и первый чистый объектно-ориентированный язык программирования (OOPL) — Smalltalk, для программирования Dynabook.

  • В 1980-х Грэди Буч опубликовал статью под названием «Объектно-ориентированный дизайн», в которой в основном представлен дизайн для языка программирования Ada. В последующих изданиях он расширил свои идеи до полного метода объектно-ориентированного проектирования.

  • В 1990-х годах Коад включил идеи поведения в объектно-ориентированные методы.

Первым объектно-ориентированным языком был Simula (Симуляция реальных систем), который был разработан в 1960 году исследователями из Норвежского вычислительного центра.

В 1970 году Алан Кей и его исследовательская группа в Xerox PARC создали персональный компьютер по имени Dynabook и первый чистый объектно-ориентированный язык программирования (OOPL) — Smalltalk, для программирования Dynabook.

В 1980-х Грэди Буч опубликовал статью под названием «Объектно-ориентированный дизайн», в которой в основном представлен дизайн для языка программирования Ada. В последующих изданиях он расширил свои идеи до полного метода объектно-ориентированного проектирования.

В 1990-х годах Коад включил идеи поведения в объектно-ориентированные методы.

Другими значительными нововведениями стали «Методы объектного моделирования» (OMT) Джеймса Рам Боуг и «Объектно-ориентированная программная инженерия» (OOSE) Ивара Якобсона .

Введение в OO Paradigm

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

Основные понятия и терминология объектно-ориентированных систем —

объект

Объект — это элемент реального мира в объектно-ориентированной среде, который может иметь физическое или концептуальное существование. Каждый объект имеет —

  • Идентичность, которая отличает его от других объектов в системе.

  • Состояние, определяющее характерные свойства объекта, а также значения свойств, которые он содержит.

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

Идентичность, которая отличает его от других объектов в системе.

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

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

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

Учебный класс

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

Составляющие класса —

  • Набор атрибутов для объектов, которые должны быть созданы из класса. Как правило, разные объекты класса имеют некоторые различия в значениях атрибутов. Атрибуты часто называют данными класса.

  • Набор операций, которые отображают поведение объектов класса. Операции также называются функциями или методами.

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

Набор операций, которые отображают поведение объектов класса. Операции также называются функциями или методами.

пример

Рассмотрим простой класс Circle, представляющий круг геометрической фигуры в двумерном пространстве. Атрибуты этого класса могут быть определены следующим образом:

  • х – координата, для обозначения х – координаты центра
  • у – координата, для обозначения у – координата центра
  • а, чтобы обозначить радиус круга

Некоторые из его операций могут быть определены следующим образом:

  • findArea (), метод для расчета площади
  • findCircumference (), метод для вычисления окружности
  • scale (), метод увеличения или уменьшения радиуса

Инкапсуляция

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

Полиморфизм

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

пример

Давайте рассмотрим два класса, Circle и Square, каждый из которых имеет метод findArea (). Хотя имя и назначение методов в классах одинаковы, внутренняя реализация, т. Е. Процедура вычисления площади, различна для каждого класса. Когда объект класса Circle вызывает свой метод findArea (), операция находит область круга без какого-либо конфликта с методом findArea () класса Square.

Отношения

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

Передача сообщений

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

Состав или Агрегация

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

ассоциация

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

  • Унарные отношения связывают объекты одного класса.
  • Бинарные отношения связывают объекты двух классов.
  • Тройные отношения связывают объекты трех или более классов.

наследование

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

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

пример

Из класса млекопитающих может быть получен ряд классов, таких как человек, кошка, собака, корова и т. Д. Люди, кошки, собаки и коровы имеют отличительные характеристики млекопитающих. Кроме того, у каждого есть свои особенности. Можно сказать, что корова — это млекопитающее.

ОО Анализ

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

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

Моделирование объектов

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

Процесс моделирования объекта может быть визуализирован в следующих шагах —

  • Определить объекты и сгруппировать в классы
  • Определите отношения между классами
  • Создать диаграмму модели объекта пользователя
  • Определите атрибуты объекта пользователя
  • Определите операции, которые должны быть выполнены на классах

Динамическое Моделирование

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

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

Процесс динамического моделирования может быть визуализирован в следующих шагах —

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

Функциональное моделирование

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

Процесс функционального моделирования может быть визуализирован в следующих шагах —

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

Объектно-ориентированный дизайн

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

Этапы объектно-ориентированного проектирования могут быть определены как —

  • Определение контекста системы
  • Проектирование архитектуры системы
  • Идентификация объектов в системе
  • Построение дизайнерских макетов
  • Спецификация объектных интерфейсов

ОО Дизайн можно разделить на два этапа — Концептуальный дизайн и Детальный дизайн.

Концептуальный дизайн

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

Детальный дизайн

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

Принципы дизайна

Ниже приведены основные принципы дизайна —

Принцип развязки

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

Обеспечение сплоченности

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

Открыто-закрытый принцип

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

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

В многопоточной среде сохраняйте атрибуты закрытыми.

Минимизируйте использование глобальных переменных и переменных класса.