Главная страница
Навигация по странице:

  • 1.5.3. Вспомогательные операции Вспомогательными

  • 1.5.4. Спецификации операции

  • Задание возвращаемого класса операции

  • Назначение стереотипа для операции

  • Implementor

  • Задание видимости операции

  • Добавление и удаление аргументов к операции

  • Определение протокола операции

  • Определение уточнений операции, размера операции и времени ее выпол

  • Задание параллелизма операции

  • Задание предусловий, постусловий и семантики операции

  • Проектный практикум. Учебное пособие для студентов, обучающихся по направлению 230700. 62 При кладная информатика


    Скачать 1.9 Mb.
    НазваниеУчебное пособие для студентов, обучающихся по направлению 230700. 62 При кладная информатика
    АнкорПроектный практикум.pdf
    Дата26.04.2017
    Размер1.9 Mb.
    Формат файлаpdf
    Имя файлаПроектный практикум.pdf
    ТипУчебное пособие
    #5930
    страница4 из 8
    1   2   3   4   5   6   7   8
    Операции управления
    Операции управления (manager operations) управляют созданием и раз- рушением объектов. В эту категорию попадают конструкторы и деструкторы классов.
    В среде Rose не требуется вручную создавать конструкторы и деструк- торы классов. При генерации кода предоставляется возможность сделать это автоматически.
    Операции доступа
    Атрибуты обычно бывают закрытыми или защищенными. Тем не менее другие классы иногда должны просматривать или изменять их значения. Для этого предназначены операции доступа (access operations).

    50
    Пусть, например, у нас имеется атрибут Salary класса Employee. Нам бы не хотелось, чтобы другие классы могли изменять этот атрибут.
    Но мы добавляем к классу Employee две операции доступа: GetSalary и
    SetSalary. К первой из них, являющейся общей, могут обращаться остальные классы. Она получает значение атрибута Salary и возвращает его вызвавшему ее классу. Операция SetSalary также является общей, она помогает вызвав- шему ее классу установить новое значение атрибута Salary. Эта операция может содержать любые правила и условия проверки, которые необходимо выполнить, прежде чем изменить атрибут.
    Такой подход дает возможность безопасно инкапсулировать атрибуты внутри класса, защитив их от других классов, но все же позволяет осуществ- лять контролируемый доступ к ним.
    Создание операций Get и Set (получения и изменения значения) для каждого атрибута класса является стандартом.
    Как и в случае операций управления, операции доступа не нужно вво- дить вручную. При генерации кода Rose автоматически создаст операции Get и Set для каждого атрибута класса.
    1.5.3.
    Вспомогательные операции
    Вспомогательными (helper operations) называются такие операции класса, которые необходимы ему для выполнения его ответственностей, но о которых другие классы не должны ничего знать. Это закрытые и защищен- ные операции класса.
    Как и операции реализации, вспомогательные операции можно обна- ружить на диаграммах Последовательности и Кооперативных диаграммах.
    Часто такие операции являются рефлексивными сообщениями.
    Для идентификации операций выполните следующие действия:

    51 1.
    Изучите диаграммы Последовательности и Кооперативные диа- граммы. Большая часть сообщений на этих диаграммах является операциями реализации. Рефлексивные сообщения будут вспомогательными операциями.
    2.
    Рассмотрите управляющие операции. Возможно, требуется доба- вить конструкторы и деструкторы. Повторим еще раз, что это необязательно
    — Rose может сделать это за вас при генерации кода.
    3.
    Рассмотрите операции доступа. Для каждого атрибута класса, с которым будут работать другие классы, необходимо создать операции Get и
    Set. Как и в случае управляющих операций, это необязательно делать вруч- ную — Rose может создать указанные операции автоматически.
    Добавление операций
    Как и атрибуты, операции можно добавить в модель Rose на диаграмму
    Классов или в браузер. Можно также воспользоваться окном спецификации класса.
    После создания операции с ней можно связать какое-либо текстовое описание. Оно будет включено в генерируемый код в качестве комментария.
    Для добавления операции к классу:
    1.
    Щелкните правой кнопкой мыши на классе диаграммы Классов.
    2.
    В открывшемся меню выберите пункт New > Operation (Создать
    > Операция).
    3.
    Введите имя операции в формате
    Имя(Аргумент1 : Тип данных аргумента) : Тип возвращаемого значения.
    Например:
    Add(X : Integer, Y : Integer) : Integer Print(EmployeeID : Long) : Boolean De-
    lete() : Long
    4.
    Если вы хотите еще добавить операции, нажмите клавишу Enter и введите новые операции непосредственно на диаграмму Классов.
    ИЛИ
    1.
    Щелкните правой кнопкой мыши на классе в браузере.

    52 2.
    В открывшемся меню выберите пункт New > Operation (Создать
    > Операция).
    3.
    Под названием этого класса в браузере появится новая операция орname. Введите ее имя. В браузере нельзя указывать аргументы операции и тип возвращаемого значения, как и в случае атрибутов, это делается на диа- грамме Классов.
    ИЛИ
    1.
    Откройте окно спецификации класса данной операции (или стан- дартное окно спецификации в Rose).
    2.
    Перейдите на вкладку Operations (Операции). Здесь будут пере- числены уже имеющиеся операции класса.
    3.
    Щелкните правой кнопкой мыши где-нибудь внутри области операций.
    4.
    В открывшемся меню выберите пункт Insert (Вставить).
    5.
    Введите имя новой операции в колонке Operation.
    6.
    В соответствующих колонках задайте видимость, стереотип и тип возвращаемого значения операции.
    Для добавления к операции текстового описания:
    1.
    Выделите операцию в браузере или на диаграмме Классов.
    2.
    Введите текстовое описание в окне документации.
    ИЛИ
    1.
    Щелкните правой кнопкой мыши на операции в браузере.
    2.
    В открывшемся меню выберите пункт Open Specification (От- крыть спецификацию).
    3.
    В области DocComment окна спецификации операции введите комментарии к операции.
    ИЛИ
    1.
    Откройте окно спецификации класса данной операции (или стан- дартное окно спецификации в Rose).

    53 2.
    Перейдите на вкладку Operations (Операции).
    3.
    Укажите там операцию.
    4.
    Введите описание в окне документации.
    Удаление операций
    Удалить операцию можно с диаграммы Классов или из браузера. При удалении с диаграммы операция автоматически удаляется из модели в целом.
    При удалении операции следите за тем, чтобы модель оставалась со- гласованной. Возможно, операция использовалась на диаграммах Последова- тельности и Кооперативных диаграммах. При удалении она автоматически преобразуется в сообщение на этих диаграммах. Следовательно, нужно обновить соответствующим образом диаграммы Последовательности и Коо- перативные диаграммы.
    Если требуется определить, какие диаграммы используют операцию:
    1.
    Откройте окно спецификации класса этой операции (или стан- дартное окно спецификации в Rose).
    2.
    В нижней части окна нажмите кнопку Browse (Обзор) и выберите
    Show Usage (Показать использование).
    Для удаления операции класса:
    1.
    Щелкните правой кнопкой мыши на операции в браузере.
    2.
    В открывшемся меню выберите пункт Delete (Удалить).
    ИЛИ
    1.
    Выделите операцию на диаграмме Классов.
    2.
    С помощью клавиши Backspace сотрите имя операции и ее сигна- туру.
    3.
    Щелкните мышью где-нибудь в другом месте диаграммы.
    4.
    Rose подтвердит удаление перед завершением этой процедуры.
    ИЛИ
    1.
    Откройте окно спецификации класса данной операции (или стан- дартное окно спецификации в Rose).

    54 2.
    Перейдите на вкладку Operations (Операции).
    3.
    Щелкните правой кнопкой на удаляемой операции.
    4.
    В открывшемся меню выберите пункт Delete (Удалить). Подтвер- дите удаление перед завершением этой процедуры.
    1.5.4.
    Спецификации операции
    В спецификациях операции можно задать ее параметры, тип возвра- щаемого значения и видимость.
    Все спецификации операции можно просмотреть и изменить в окне спецификации операции, показанном на рис. 25.
    Открыть спецификацию операции можно следующим образом:
    1.
    Щелкните правой кнопкой мыши на операции в браузере.
    2.
    В открывшемся меню выберите пункт Open Specification (От- крыть спецификацию).
    ИЛИ
    1.
    Откройте окно спецификации класса операции.
    2.
    Перейдите на вкладку Operations (Операции).
    3.
    Дважды щелкните мышью на соответствующей операции.
    Задание возвращаемого класса операции
    Возвращаемым классом (return class) операции называется тип данных ее результата. Допустим, что есть операция Add, принимающая два парамет- ра — строки X и Y. Операция преобразует строки X и Y в значения типа in- teger, складывает их и возвращает целочисленный результат. Возвращаемым классом операции Add будет integer.

    55
    Рис. 25. Диалоговое окно спецификации операции
    При определении возвращаемого класса можно использовать либо встроенные типы языка программирования (такие, как string, char или integer) либо определенные в вашей модели классы. Для задания возвращаемого класса операции:
    1.
    Щелкните правой кнопкой мыши на операции в браузере.
    2.
    Откройте окно спецификации класса этой операции (или стан- дартное окно спецификации в Rose).
    3.
    Укажите возвращаемый класс в раскрывающемся списке или введите свой тип.
    ИЛИ
    1.
    Выделите операцию на диаграмме Классов.
    2.
    После имени операции введите двоеточие, а затем тип возвра- щаемого значения. Например, если операция Print возвращает целочисленные

    56 значения, то соответствующий класс будет выглядеть, как показано на рис.
    26.
    Рис. 26. Нотация класса с возвращаемым значением
    Назначение стереотипа для операции
    Как и в случае других элементов модели, для классификации операций создаются их стереотипы. Существуют четыре наиболее распространенных стереотипа операций:
    Implementor (Реализация). Операции, реализующие некоторую бизнес- логику.
    Manager (Управляющая). Конструкторы, деструкторы и операции управления памятью.
    Access (Доступ). Операции, позволяющие другим классам просматри- вать или редактировать атрибуты данного класса. Как правило, такие опера- ции называют Get <имя атрибута> или Set <имя атрибута>.
    Helper (Вспомогательная). Закрытые или защищенные операции, кото- рые используются классом, но не видны другим классам.
    Назначение операциям стереотипов не требуется для генерации кода.
    Тем не менее, они облегчают понимание модели. Кроме того, они помогают убедиться в том, что ни одна операция не была пропущена.
    Для назначения стереотипа операции:
    1.
    Щелкните правой кнопкой мыши на операции в браузере.
    2.
    Откройте окно спецификации класса этой операции (или стан- дартное окно спецификации в Rose).

    57 3. В соответствующем раскрывающемся списке укажите стереотип или введите новый.
    ИЛИ
    1.
    Выделите операцию в браузере.
    2.
    Чтобы отредактировать имя операции, один раз щелкните на ней мышью. Перед именем появятся символы "« »".
    3. Внутри этих скобок введите стереотип.
    Задание видимости операции
    Видимость показывает, каким образом данные и поведение инкапсули- руются в класс. Для операций допустимы четыре значения этого параметра:
    Public (Общая). Операция доступна всем остальным классам.
    Любой класс может запросить ее выполнение.
    Private (Закрытая). Операция не доступна ни одному другому классу.
    Protected (Защищенная). Доступ к операции разрешен только для самого класса и его потомков.
    Package or Implementation (Пакетная). Операция доступна только классам данного пакета.
    Операции могут быть общими, закрытыми, защищенными или пакет- ными.
    Назначить операции видимость можно следующим образом:
    1.
    Щелкните правой кнопкой мыши на операции в браузере.
    2.
    В открывшемся меню выберите пункт Open Specification (От- крыть спецификацию) или Open Standard Specification (Открыть стандартную спецификацию) в Rose. Появится окно спецификации операции.
    3.
    Установите переключатель Export Control в нужное значение:
    Public, Protected, Private или Implementation. По умолчанию видимость всех операций установлена в Public.

    58
    ИЛИ
    1.
    Выделите операцию на диаграмме классов.
    2.
    Если вы работаете с нотацией UML, щелкните один раз на сим- воле"+",или "#" рядом с операцией. В появившемся списке значков Rose вы- берите нужную видимость.
    3.
    Если вы работаете с нотацией Rose, щелкните один раз на значке видимости Rose слева от имени операции. В появившемся списке значков укажите нужную видимость.
    Добавление и удаление аргументов к операции
    Аргументы, или параметры, операции — это получаемые ею входные данные. Например, операция Add может принимать два аргумента, X и Y, и складывать их.
    Для каждого аргумента должны быть заданы имя и тип данных.
    На диаграмме Классов аргументы и их типы указываются в скобках по- сле имени операции (рис. 27).
    Рис. 27. Изображение аргументов операций класса на диаграмме
    Для аргументов можно задавать также их значения по умолчанию. В таком случае нотация UML будет иметь вид:
    Имя операции (аргумент1 : тип данных аргумента1 = значение по умолча-
    нию аргумента1) : тип возвращаемого значения операции
    При генерации кода Rose будет генерировать имя операции, ее аргу- менты, их типы данных и значения по умолчанию, а также тип возвращаемо-

    59 го значения. Если к операции было добавлено текстовое описание, Rose соз- даст комментарии.
    Для добавления аргумента к операции:
    1.
    Откройте окно спецификации операции (или стандартное окно спецификации в Rose).
    2.
    Перейдите на вкладку Detail (Подробно).
    3.
    Щелкните правой кнопкой мыши в области аргументов. В от- крывшемся меню выберите Insert (Вставить).
    4.
    Введите имя аргумента.
    5.
    Щелкните мышью на колонке Туре (Тип) и введите тип данных аргумента.
    6.
    При необходимости щелкните на колонке Default (По умолча- нию) и введите значение аргумента по умолчанию.
    Для удаления аргумента операции:
    1. Откройте окно спецификации операции (или стандартное окно спе- цификации в Rose).
    2. Перейдите на вкладку Detail (Подробно).
    3.
    В списке аргументов щелкните правой кнопкой мыши на удаляе- мом аргументе. В открывшемся меню выберите пункт Delete (Удалить).
    4.
    Подтвердите удаление.
    Определение протокола операции
    Протокол операции описывает, какие операции и в каком порядке мо- жет выполнять клиент над объектом. Например, если операцию А нельзя за- пускать до завершения операции Б, это можно отметить в поле протокола операции А.
    Вводимая таким образом информация будет включена в генерируемый код в качестве комментария, но не повлияет на сам код. Диалоговое окно протокола операции представлено на рис. 28.
    Для задания протокола операции:

    60 1.
    Откройте окно спецификации операции (или стандартное окно спецификации в Rose).
    2.
    Перейдите на вкладку Detail (Подробно).
    3.
    Введите протокол в поле Protocol.
    Рис. 28. Определение протокола операции
    Определение уточнений операции, размера операции и времени ее выпол-
    нения
    Поле Qualification (Уточнение) (рис. 28) позволяет идентифицировать любые уточнения операции, связанные с конкретным языком программиро- вания. Все, что вы здесь введете, войдет в генерируемый код в качестве ком- ментария, но на сам код не повлияет.
    Для ввода уточнения операции:
    1.
    Откройте окно спецификации операции (или стандартное окно спецификации в Rose).
    2.
    Перейдите на вкладку Detail (Подробно).

    61 3.
    Введите уточнения в поле Qualification.
    В поле Size можно указать предполагаемый объем памяти, требуемой операции во время ее выполнения. Эта информация войдет в качестве ком- ментария в генерируемый код.
    Время операции — это предполагаемое время, требуемое для выполне- ния операции. Указываемая информация войдет в сгенерированный код в ка- честве комментария.
    Задание параллелизма операции
    Значение переключателя Concurrency (Параллелизм) определяет пове- дение операции при наличии нескольких потоков управления. Возможны три значения этого параметра:
    Sequential (Последовательная). Предполагается, что операция будет выполняться правильно при наличии только одного потока управления. Вы- полнение операции должно завершиться перед тем, как начнется выполнение другой операции.
    Guarded (Охраняемая). Предполагается, что операция будет выпол- няться правильно в нескольких потоках управления, но только если взаимо- действие классов гарантирует взаимное исключение выполняемых операций.
    Synchronous (Синхронная). Предполагается, что операция будет пра- вильно выполняться при наличии нескольких потоков. После обращения операция будет выполняться в одном потоке управления вплоть до своего за- вершения.
    Другие операции могут в то же самое время выполняться в других по- токах. Класс должен сам позаботиться о решении проблем взаимных исклю- чений, так что взаимодействие с другими классами не требуется.
    Сведения о параллелизме операции появятся в сгенерированном коде в качестве комментариев. Для задания параллелизма операции:
    1.
    Откройте окно спецификации операции (или стандартное окно спецификации в Rose).

    62 2.
    Перейдите на вкладку Detail (Подробно) (рис. 28).
    3.
    Установите переключатель Concurrency (Параллелизм) в требуе- мое значение.
    Задание предусловий, постусловий и семантики операции
    Предусловия — это такие условия, которые должны быть выполнены перед запуском операции. Любые предусловия операции можно ввести на вкладке Preconditions (Предусловия) окна спецификации операции.
    Предусловия не влияют на генерируемый код, но появляются в нем в качестве комментариев. Если какая-либо диаграмма Взаимодействия иллю- стрирует эти условия, можно ввести ее имя в нижней части вкладки преду- словий.
    Для задания предусловий операции:
    1.
    Откройте окно спецификации операции (или стандартное окно спецификации в Rose).
    2.
    Перейдите на вкладку Preconditions.
    3.
    Введите предусловия в поле Preconditions.
    Постусловиями называются такие условия, которые должны всегда вы- полняться после завершения работы операции. Постусловия задаются на вкладке Postconditions (Постусловия) окна спецификации операции.
    В поле Semantics (Семантика) окна спецификации операции можно описать, что будет делать операция. Для передачи логики можно использо- вать псевдокод или обыкновенное описание. Все, что введено в этом поле, появится в готовом коде в виде комментария. Если какая-либо диаграмма
    Взаимодействия иллюстрирует семантику операции, можно ввести имя диа- граммы в нижней части вкладки.
    Для описания семантики операции:
    1.
    Откройте окно спецификации операции (или стандартное окно спецификации в Rose).
    2.
    Перейдите на вкладку Semantics (Семантика).

    63 3.
    В поле Semantics введите семантику операции.
    1   2   3   4   5   6   7   8


    написать администратору сайта