Автор: Пользователь скрыл имя, 01 Ноября 2011 в 18:01, контрольная работа
Принципиальное различие между структурным и объектно-ориентированным подходом заключается в способе декомпозиции системы. Объектно-ориентированный подход использует объектную декомпозицию, при этом статическая структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщениями между объектами. Каждый объект системы обладает своим собственным поведением, моделирующим поведение объекта реального мира.
Введение 3
1. Сущность объектно-ориентированного подхода 5
2. Основные понятия объектно-ориентированного подхода - объект и класс 6
3. Унифицированный язык моделирования UML 8
4. Виды диаграмм 16
4.1 Диаграмма классов 16
4.2 Диаграмма взаимодействия 19
5. Определение целей, функций, входов и выходов модельной системы 23
6. Пример использования объектно-ориентированного подхода 29
Выводы 33
Список использованных источников 36
На рис.1 изображена простая модель классов, связанная с обработкой заказов клиентов. Опишем каждый фрагмент модели и рассмотрим его возможную интерпретацию с различных точек зрения.
Ассоциации представляют собой связи между экземплярами классов (личность работает в компании, компания имеет ряд офисов).
С
концептуальной точки зрения ассоциации
представляют собой концептуальные
связи между классами. На диаграмме
показано, что Заказ должен поступить
от единственного Клиента, а Клиент
в течение некоторого времени
может сделать несколько
Каждая ассоциация обладает двумя ролями; каждая роль представляет собой направление ассоциации. Таким образом, ассоциация между Клиентом и Заказом содержит две роли: одна от Клиента к Заказу, другая - от Заказа к Клиенту.
Роль может быть явно поименованная с помощью метки. Например, роль ассоциации в направлении от Заказа к Строкам заказа называется "позиция заказа". Если такая метка отсутствует, роли присваивается имя класс - цели - таким образом, роль ассоциации от Заказа к Клиенту может быть названа Клиент (термины "начало" (source) и "цель" (target) употребляются для обозначения классов, являющихся соответственно начальным и конечным для ассоциации).
Диаграммы взаимодействия (interaction diagrams) являются моделями, описывающими поведение взаимодействующих групп объектов.
Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного варианта использования. На такой диаграмме отображаются ряд объектов и те сообщения, которыми они обмениваются между собой.
Проиллюстрируем данный подход на примере достаточно простого варианта использования, который описывает следующее поведение:
Окно Ввода Заказа посылает Заказу сообщение "приготовиться".
Заказ посылает данное сообщение каждой Строке заказа в данном Заказе.
Каждая Строка заказа проверяет состояние определенного Запаса товара:
Если данная проверка удовлетворяется (результат - true), то Строка заказа удаляет соответствующее количество товара из Запаса.
В противном случае количество Запаса снижается до уровня повторного заказа, и Запас запрашивает новую поставку товара.
Существуют два вида диаграмм взаимодействия: диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams).
На диаграмме последовательности объект изображается в виде прямоугольника на вершине пунктирной вертикальной линии (рис.2).
Эта вертикальная линия называется линией жизни (lifeline) объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия. Такую форму представления впервые ввел Ивар Якобсон.
Рис.3
Диаграмма последовательности
Каждое
сообщение представляется в виде
стрелки между линиями жизни
двух объектов. Сообщения появляются
в том порядке, как они показаны
на странице - сверху вниз. Каждое сообщение
помечается, как минимум, именем сообщения;
при желании можно добавить также
аргументы и некоторую
Из
всей возможной управляющей
Диаграммы последовательности очень просты и наглядны (в этом заключается самое большое их достоинство) и существенно помогают разобраться в процессе поведения системы.
Диаграмма (см. рис.2) содержит возврат, означающий не новое сообщение, а возврат из сообщения. На диаграмме возврат отличается от обычных сообщений тем, что его стрелка не сплошная, а имеет вид пары линий.
Диаграммы последовательности можно также использовать для представления параллельных процессов.
На
рис.3 изображен ряд объектов, участвующих
в проверке банковской транзакции.
В момент создания Транзакции она
порождает Координатор
Рис.4
Параллельные процессы и активизации
Когда Проверка Транзакции завершается, она посылает соответствующее сообщение Координатору Транзакции. Координатор проверяет, все ли проверки сообщили о своем выполнении. Если нет, то координатор не выполняет никаких действий. Если же все проверки завершились успешно, как в данном случае, то координатор сообщает Транзакции о нормальном завершении.
В диаграмму последовательности на рис.3 введен ряд новых элементов. Во-первых, это активизации, появляющиеся явно в том случае, когда метод становится активным либо во время его выполнения, либо при ожидании результата выполнения какой-либо процедуры. Во-вторых, половинные стрелки обозначают асинхронные сообщения. Асинхронное сообщение не блокирует работу вызывающего объекта. Таким образом, он может продолжать свой собственный процесс. Асинхронное сообщение может выполнять одну из трех функций:
• создавать новую ветвь процесса (в этом случае оно связано с самой верхней частью активизации);
• создавать новый объект;
• устанавливать связь с уже выполняющейся ветвью процесса.
Удаление объекта показано с помощью большого знака "X". Объекты могут выполнить самоуничтожение или могут быть уничтожены посредством еще одного сообщения.
Используя механизм активизации, можно более четко показать смысл само делегирования. Без них, или без такого обозначения с помощью столбиков, которое здесь используется, довольно трудно определить, где же выполняются следующие после само делегирования вызовы - то ли в вызывающем методе, то ли в вызываемом методе. Активизации вносят ясность в этот вопрос.
Язык UML предназначен для решения следующих задач:
Речь
идет о том, что важным фактором дальнейшего
развития и повсеместного использования
методологии объектно-
Практика системного моделирования показала, что абстрактного описания языка на некотором метауровне недостаточно для разработчиков, которые ставят своей целью реализацию проекта системы в конкретные сроки. В настоящее время имеет место некоторый концептуальный разрыв между общей методологией моделирования сложных систем и конкретными инструментальными средствами быстрой разработки приложений. Именно этот разрыв по замыслу OMG и призван заполнить язык UML.
Отсюда
вытекает важное следствие - для адекватного
понимания базовых конструкций
языка UML важно не только владеть
некоторыми навыками объектно-ориентированного
программирования, но и хорошо представлять
себе общую проблематику процесса разработки
моделей систем. Именно интеграция
этих представлений образует новую
парадигму объектно-
Хотя
язык UML является формальным языком - спецификаций,
формальность его описания отличается
от синтаксиса как традиционных формально-логических
языков, так и известных языков
программирования. Разработчики из OMG
предполагают, что язык UML как никакой
другой может быть приспособлен для
конкретных предметных областей. Это
становится возможным по той причине,
что в самом описании языка UML
заложен механизм расширения базовых
понятий, который является самостоятельным
элементом языка и имеет
В
то же время разработчики из OMG считают
крайне нежелательным переопределение
базовых понятий языка по какой
бы то ни было причине. Это может
привести к неоднозначной интерпретации
их семантики и возможной
Язык UML допускает также специализацию базовых понятий. Речь идет о том, что в конкретных7 приложениях пользователи должны уметь дополнять имеющиеся базовые понятия новыми характеристиками или свойствами, которые не противоречат семантике этих понятий в языке UML.
Речь идет о том, что ни одна из конструкций языка UML не должна зависеть от особенностей ее реализации в известных языках программирования. То есть, хотя отдельные понятия языка UML и связаны с последними очень тесно, их жесткая интерпретация в форме каких бы то ни было конструкций программирования не может быть признана корректной. Другими словами, разработчики из OMG считают необходимым свойством языка UML его контекстно-программную независимость.
С
другой стороны, язык UML должен обладать
потенциальной возможностью реализации
своих конструкций на том или
ином языке программирования. Конечно,
в первую очередь имеются в
виду языки, поддерживающие концепцию
ООП, такие как C++, Java, Object Pascal. Именно
это свойство языка UML делает его
современным средством решения
задач моделирования сложных
систем. В то же время, предполагается,
что для программной поддержки
конструкций языка UML могут быть
разработаны специальные
Говоря
об этой особенности, имеют в виду
самодостаточность языка UML для понимания
не только его базовых конструкций,
но что не менее важно - понимания
общих принципов объектно-
С другой стороны, какие бы то ни было ссылки на дополнительные источники, содержащие важную для понимания языка UML информацию, по мнению разработчиков из OMG, должны быть исключены. Это позволит избежать неоднозначного толкования принципиальных особенностей процесса ООАП и их реализации в форме базовых конструкций языка UML.