Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 76
Текст из файла (страница 76)
У14.1 показана часть диаграммы ВХЕ языка описания классов и бинарных ассоциаций. Нетерминальные символы изображаются прямоугольниками, а терминальные— кружками или прямоугольниками со скругленными углами. На диаграмме определены все нетерминальные символы, за исключением сЬагастег (символ). Диаграмма состоит нз классов и ассоциаций. Класс обладает уникальным именем и произвольным количеством атрибутов.
Ассоциация обладает необязательным именем и двумя полюсами. Полюс ассоциации характеризуется именем одного из участвующих в ней классов и данными о множественности. Текстовая информация представляется в виде строк, заключенных в кавычки. Символ — это произвольный АБСП-символ, за исключением кавычек. 1) Опишите диаграмму, представленную на рис. У14.2, при помощи языка с рис. У14.1. 2) Обсудите сходства и различия данных в устройстве хранения и данных «в движении».
Например, описание из пункта 1 может быть использовано для хранения диаграммы в файле или для передачи диаграммы из одного места в другое. Упражнения 321 Е!аягат С!555 ( С(АВВ пате а(1ПЬП1е ааасс(а(!оп ( АЗЗОС!АТ1ОМ пате епе' епо ( па!па МАМЕ 5(ппЯ аапаи1е АТТИ!В((ТЕ 51ППЯ 51ППЯ слагас(ег Рис. У14.1. Диаграмма ВМГ для языка описания классов н ассоциаций 3) В этой задаче язык используется для описания структуры диаграмм классов. Придумайте язык для описания двумерных многоугольников.
Опишите свой язык при помощи ВХг. Опишите на этом языке квадрат и треугольник. Рис. У14.2. Диаграмма классов многоугольников 14.13. (6) В цифровых системах часто возникают проблемы, связанные с повреждением данных из-за шумов илн поломок оборудования. Одно нз решений состоит в использовании циклического избыточного кода (Сус! !с Вес(нпг(апсу !! Мк 699 322 Глава 14 ° Проектирование системы Сос1е — СВС). При сохранении или передаче данных по ним вычисляется код, который добавляется к этим данным.
При чтении или приеме данных код вычисляется заново и сравнивается с присланным значением. Соответствие является необходимым, но не достаточным требованием корректности данных. Вероятность обнаружения ошибки зависит от сложности функции вычисления СВС. Некоторые функции могут использоваться не только для обнаружения, но и для коррекции некоторых ошибок. В качестве примера простой функции, позволяющей обнаружить ошибки в одном бите, можно привести проверку четности. Функция вычисления контрольной суммы может быть реализована аппаратно или программно. Выбор в конкретной задаче зависит от требований к скорости, стоимости, гибкости и сложности. Аппаратное решение будет быстрым, но сделает систему более сложной и дорогостоящей.
Программное решение дешевле и более гибкое, но оно может быть недостаточно быстрым, кроме того, оно может усложнить программную составляющую системы. Для каждой из перечисленных ниже подсистем определите, нужна ли вообще им контрольная сумма СКС. Если нужна, сделайте выбор между аппаратной и программной реализациями.
Объясните свой выбор. 1) Контроллер гибкого диска. 2) Система передачи файлов с одного компьютера на другой по телефонным линиям. 3) Плата памяти в компьютере космического корабля. 4) Магнитный ленточный накопитель. 5) Проверка номера счета (контрольная сумма используется для выявления случайно введенных номеров счетов). 14.14. (6) Рассмотрим программу-планировщика из упражнений 12.16 — 12.19 и 12.20 — 12.23.
Такие программы обязательно должны обеспечивать безопасность: доступ пользователя на запись и чтение к различным расписаниям должен четко контролироваться. Очевидный способ реализации схемы безопасности состоит в хранении списка разрешений доступа для каждой комбинации пользователя и расписания. Однако такая схема может оказаться неудобной для контроля и обслуживания.
Другое решение состоит в том, чтобы дать возможность указывать разрешения для групп пользователей. Пользователь может принадлежать к нескольким группам. Каждая группа может содержать другие группы и отдельных пользователей. Пользователи могут обращаться к расписаниям, разрешения на доступ к которым есть у них самих или у тех групп, в состав которых они входят. Расширьте модели классов из упражнений 12.19 и 12.23 так, чтобы описать эту модель безопасности.
(Замечание для преподавателя: предоставьте студентам наши ответы к упражнениям 12.19 и 12.23.) Проектирование классов На этапе анализа разработчики системы формулируют, что именно должна делать реализованная система, а на этапе проектирования они вырабатывают стратегию атаки. Цель этапа проектирования классов состоит в том, чтобы довести определения классов и ассоциаций до их конечного вида и выбрать алгоритмы для операций.
В этой главе рассказывается о том, каким образом следует облекать во плоть аналитическую модель, которая после этого становится основой для реализации. Ваши решения должны направляться стратегией, выработанной на этапе проектирования системы. На новом этапе вы должны заняться деталями этой стратегии. Нет необходимости переходить от одной модели к другой, потому что объектноориентированная парадигма охватывает и анализ, и проектирование, и реализацию. Эта парадигма применима и к спецификациям, описывающим реальный мир, и к компьютерным реализациям. 15.1. Обзор этапа проектирования классов Модель анализа описывает информацию, которую должна содержать система, и высокоуровневые операции, которые она должна выполнять.
Проектную модель можно было бы создать полностью с нуля, с абсолютно другими классами. Однако в большинстве случаев проше и лучше всего оказывается перенести классы нз аналитической модели прямо в проектную. После этого проектирование классов сводится к добавлению деталей и принятию конкретных решений. Более того, использование аналитической модели прн проектировании упрошает поддержание согласованности аналитической и проектной моделей в процессе их развития.
В процессе проектирования вам приходится выбирать различные способы реализации классов аналитической модели, с учетом необходимости минимизации времени выполнения, используемой памяти и других затрат. В частности, вы должны воплотить все операции, выбирая алгоритмы и разбивая сложные операции на более простые составляющие. Это разбиение представляет собой итерационный 324 Глава 15 ° Проектирование классов процесс, повторяющийся на все более низких уровнях абстрагирования.
Возможно, вам придется добавлять в модель новые классы для хранения промежуточных результатов во время выполнения программы (во избежание повторного вычисления). Однако следует опасаться чрезмерной оптимизации, так как не менее важными параметрами программы являются простота реализации и поддержки, а также возможность расширения. Объектно-ориентированное проектирование представляет собой итерационный процесс.
Когда вы сочтете модель классов готовой на одном уровне абстрагирования, вы должны будете рассмотреть ее на более низком уровне. На каждом следующем уровне вам придется добавлять новые операции, атрибуты и классы. Возможно, вам даже придется пересмотреть отношения между объектами (в том числе, изменить иерархию наследования). Не удивляйтесь, если вы обнаружите, что итерации повторяются несколько раз.
Проектирование классов делится на несколько этапов. 1. Наведение мостов между высокоуровневыми требованиями и низкоуровневыми сервисами (раздел 15.2). 2. Реализация вариантов использования через операции (раздел 15.3). 3. Формулирование алгоритмов для каждой операции (раздел 15А). 4. Рекурсия вниз для проектирования операций, обеспечивающих реализацию более высокоуровневых операций (раздел 15.5). 5. Реорганизация (раздел 15.6). 6.
Оптимизация доступа к данным (раздел 15.7). 7. Воплощение поведения, подлежащего манипуляции (раздел 15.8). 8. Коррекция структуры классов для улучшения наследования (раздел 15.9). 9. Организация классов и ассоциаций (раздел 15.10). 15.2. Наведение мостов Рисунок 15.1 демонстрирует суть проектирования. Имеется набор функций или черт, которыми должна обладать ваша система. Имеется набор доступных ресурсов. Вы должны навести мосты через пропасть между ними. Потребности высокого уровня диктуются вариантами использования, командами приложения, системными операциями и службами. К ресурсам относятся инфраструктура операционной системы, библиотеки классов и предшествующие приложения.