Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование

Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 96

PDF-файл Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 96 Объектно-ориентированный анализ и проектирование (53090): Книга - 7 семестрДж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование: Объектно-ориентированный ан2019-09-18СтудИзба

Описание файла

PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 96 страницы из PDF

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

В этой главе будут приведены примеры того, какэто делается.В OCL используется два стиля комментирования:–– Это однострочный комментарий. Игнорируется вся строка после знака ./* Это многострочный комментарий.Игнорируется все, что заключено в символы комментария. */Мы предпочитаем использовать однострочные комментарии.В OCL есть очень небольшой набор ключевых слов, которые не могутиспользоваться как имена в OCLвыражениях:and, attr, context, def, else, endif, endpackage, if, implies, in, inv, let, not, oper, or, package,post, pre, then, xor, body, init, derive.Все они рассматриваются в этой главе.Операции OCL подчиняются правилам старшинства, как показано нарис.

25.5.старшинство в порядке убывания25.8. Тело выражения537::@pre. –>not – ^ ^^* /+ !if ... then ... else ... endif> < <= >== <>and or xorimpliesРис. 25.5. Приоритет операцийВ любом OCLвыражении более высокие по старшинству операции выполняются первыми.

Таким образом, например, выражение1+2*3в результате дает 7, потому что операция умножения * имеет более высокий приоритет, чем операция сложения +.Приоритет операций можно изменить с помощью скобок, тогда(1 + 2) * 3в результате дает 9.В любом языке программирования всегда лучше использовать скобки,а не полагаться на правила старшинства операций!25.8.2. Система типов OCLOCL – строго типизированный язык. Для написания OCLвыраженийнеобходимо понимать систему типов OCL.Простые типы OCL – это Boolean, Integer, String и Real.Все языки программирования имеют набор простых типов, и OCL неисключение.Простые типы – это Boolean, Integer, Real и String.

Они обсуждаютсяв разделе 25.8.3. В OCL также есть структурированный тип, Tuple (кортеж), который рассматривается в разделе 25.8.4.Кроме простых типов и Tuple OCL имеет ряд встроенных типов, которые перечислены ниже.• OclAny – супертип всех типов OCL и ассоциированной UMLмодели;• OclType – подкласс OclAny – перечисление всех типов ассоциированной UMLмодели;• OclState – подкласс OclAny – перечисление всех состояний ассоциированной UMLмодели;538Глава 25. Введение в OCL••OclVoid – тип «null» в OCL – имеет единственный экземпляр под названием OclUndefined;OclMessage – представляет сообщение (раздел 25.12.4).Все классификаторы UMLмодели доступны OCLвыражениям.Необычный, но ключевой аспект системы типов OCL состоит в том, чтовсе классификаторы ассоциированной UMLмодели становятся типами в OCL.

Это означает, что OCLвыражения могут напрямую ссылаться на классификаторы ассоциированной модели. Это то, что позволяетOCL выполнять роль языка ограничений.OclAny – супертип всех типов OCL.В OCL все типы – это подтипы OclAny. Простые типы являются прямымиподтипами OclAny, тогда как типы UMLмодели являются подклассамиOCLType, который, в свою очередь, является подклассом OclAny. Каждыйтип наследует небольшой набор полезных операций (табл.

25.2).Таблица 25.2Операция OclAnyСемантикаОперации сравненияa=bВозвращает true, если a – тот же объект, чтои b, в противном случае возвращает false.a <> bВозвращает true, если a не тот же объект,что и b, в противном случае возвращаетfalse.a.oclIsTypeOf( b : OclType ) : BooleanВозвращает true, если a того же типа, чтои b, в противном случае возвращает false.a.oclIsKindOf( b : OclType ) : BooleanВозвращает true, если a того же типа, чтои b, или a – подтип b.a.oclInState( b : OclState ) : BooleanВозвращает true, если a находится в такомже состоянии, что и b, в противном случаевозвращает false.a.oclIsUndefined() : BooleanВозвращает true, если a = OclUndefined.Операции запросаA::allInstances( ) : Set(A)Это операция уровня класса, возвращающая Set всех экземпляров типа A.a.oclIsNew( ) : BooleanВозвращает true, если a был создан в ходевыполнения операции.Может использоваться только в постусловиях операции.53925.8.

Тело выраженияОперация OclAnyСемантикаОперации преобразованияa.oclAsType( SubType ) : SubTypeВозвращает результат приведения a к типу SubType.Это операция приведения, и объект a можетбыть приведен только к одному из его подтипов или супертипов.Приведение к супертипу обеспечивает доступк переопределенным возможностям супертипа.Вероятно, самая необычная операция OclAny – allInstances() (все экземпляры).

Это операция уровня класса (применяется непосредственнок классу, а не к конкретному экземпляру), она возвращает Set всех экземпляров данного класса, существующих на момент вызова этой операции. Ни в одном из широко используемых языков программирования нет такой встроенной возможности, поэтому спецификация OCLопределяет allInstances() как необязательную для реализации операциюв инструментальных средствах, работающих с OCL. Это означает, чтоваш инструмент OCL, возможно, не сможет интерпретировать выражения, использующие allInstances().В начале может показаться странным, что все типы, тщательно определенные в UMLмодели, при использовании в OCLвыражениях автоматически получают новый супертип, OclType.

Однако OCL был вынужденсделать это, чтобы обеспечить общий объектный протокол (определенный OclAny), который он может использовать для работы с типами.25.8.3. Простые типыПростые типы OCL – это Boolean, Integer, Real и String. Их семантика вомногом аналогична семантике этих типов в других языках программирования (табл. 25.3).Таблица 25.3Базовый тип OCL СемантикаBooleanМожет принимать значения true или falseIntegerЦелое числоRealЧисло с плавающей точкойStringПоследовательность символовСтроковые литералы заключаются в одинарные кавычки,например 'Jim'Поскольку OCL является языком моделирования, а не языком программирования, его спецификация не налагает ограничений на длинустрок (String), размер целых (Integer), размер и точность действительных чисел (Real).540Глава 25.

Введение в OCL25.8.3.1. Тип BooleanТип Boolean принимает два значения: true и false. В нем имеется наборопераций, возвращающих значения типа Boolean. Двоичные операцииприведены в табл. 25.4. В данной таблице истинности представленырезультаты логических операций над значениями a и b.Таблица 25.4aba=ba<>ba.and( b ) a.or( b )a.xor( b ) a.implies( b )truetruetruefalsetruetruefalsetruetruefalsefalsetruefalsetruetruefalsefalsetruefalsetruefalsetruetruetruefalsefalsetruefalsefalsefalsefalsetrueВсе эти операции должны быть знакомы вам из других языков программирования, кроме операции implies (импликация).

Она пришла изформальной логики и состоит из предпосылки, a, и следствия, b. Результат операции принимает значение true, если предпосылка и следствие имеют одно и то же значение или если предпосылка принимаетзначение false, а следствие – true. Операция принимает значение false,если предпосылка принимает значение true, а следствие – false.Существует также унарный оператор not, представленный в табл. 25.5.Таблица 25.5anot atruefalsefalsetrueЛогические выражения часто используются в выражениях if...then...else в соответствии со следующим синтаксисом:if <логическоеВыражение> then<oclВыражение1>else<oclВыражение2>endif25.8.3.2. Типы Integer и RealТип Integer представляет целое число, Real – число с плавающей точкой.

Длина целых (Integer) и длина и точность действительных чисел(Real) не ограничены. Integer и Real имеют обычный набор инфиксныхарифметических операций со стандартной семантикой:=, <>, <, >, <=, >=, +, , *, /Также эти типы имеют операции, описанные в табл. 25.6.54125.8. Тело выраженияТаблица 25.6Синтаксис СемантикаПрименяется кa.mod( b )Возвращает остаток от деления a на bнапример a = 3, b = 2, a.mod( b ) возвращает 1Integera.div( b )Возвращает лишь целую часть от деления a на bнапример a = 8, b = 3, a.div( b ) возвращает 2Integera.abs()Возвращает положительное aнапример a = (3), a.abs() возвращает 3Integer и Reala.max( b )Возвращает большее из чисел a и bнапример a = 2, b = 3, a.max( b ) возвращает bInteger и Reala.min( b )Возвращает меньшее из чисел a и bнапример a = 2, b = 3, a.min( b ) возвращает aInteger и Reala.round()Возвращает Integer, ближайшее к aRealЕсли два целых одинаково близки, возвращаетсябольшее из нихнапример a = 2.5, a.round() возвращает 3, а не 2a = (2.5), a.round() возвращает 2, а не 3a.floor()Возвращает ближайшее Integer, которое меньше Realили равно aнапример a = 2.5, a.floor() возвращает 2a = (2.5), a.floor() возвращает 325.8.3.3.

Тип StringСтроковые операции OCL (табл. 25.7) опятьтаки довольно стандартны, аналогичный набор можно найти практически в любом языке программирования.Таблица 25.7СинтаксисСемантикаs1 = s2Возвращает true, если последовательность символов s1 соответствует последовательности символов s2, в противном случае возвращает falses1 <> s2Возвращает true, если последовательность символов s1 не соответствует последовательности символов s2, в противном случае возвращает falses1.concat( s2 )Возвращает новую String, являющуюся объединением s1 и s2например 'Jim'.concat( ' Arlow' ) возвращает 'Jim Arlow's1.size()Возвращает число символов (Integer) в s1например 'Jim'.size() возвращает 3s1.toLower()Возвращает новую строку символов (String), записанныхв нижнем регистренапример 'Jim'.toLower() возвращает 'jim'542Глава 25.

Введение в OCLТаблица 25.7 (продолжение)СинтаксисСемантикаs1.toUpper()Возвращает строку символов (String), записанных в верхнемрегистренапример 'Jim'.toUpper() возвращает 'JIM's1.toInteger()Преобразует s1 в значение типа Integerнапример '2'.toInteger() возвращает 2s1.toReal()Преобразует s1 в значение типа Realнапример '2.5'.toReal() возвращает 2.5s1.substring(start, end )Возвращает новую String, являющуюся подстрокой s1, начинающуюся от символа, находящегося в позиции start и заканчивающуюся символом в позиции endПримечания:* start и end должны быть типа Integer* Первый символ в s1 имеет индекс 1* Последний символ в s1 имеет индекс s1.size()например 'Jim Arlow'.substring( 5, 9) возвращает 'Arlow'Строки в OCL неизменны.Строки в OCL неизменны (immutable).

Это значит, что, будучи инициализированными, они не могут быть изменены. Такие операции, какs1.concat( s2 ), всегда возвращают новую строку String.25.8.4. Тип TupleОбъекты типа Tuple – это структурированные объекты, имеющие однуили более именованных частей.Объекты типа Tuple (кортеж) – это структурированные объекты, имеющие одну или более именованных частей. Tuple необходимы, потомучто некоторые операции OCL возвращают несколько объектов. Tupleимеют следующий синтаксис:Tuple { имяЧасти1:типЧасти1 = значение1, имяЧасти2:типЧасти2 = значение2, ...

}Имя и значение каждой части обязательны, тип – необязателен. Порядок расположения частей не определен.Вот пример Tuple, представляющего информацию об этой книге:Tuple { title:String = ‘UML 2 and the Unified Process’, publisher:String = ‘Addison Wesley’ }Части Tuple могут быть инициализированы любым допустимым OCLвыражением.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее