И. Соммервилл - Инженерия программного обеспечения (1133538), страница 67
Текст из файла (страница 67)
На рис. 12.12 представлена диаграмма состояния объекта Метеостанция, которая показывает реакцию объекта на запросы от разных сервисов. Рис 12. 12. Дилгрлмлл состояний обтиктл Метеостанция Эту диаграмму можно прокомментировать следующим образом. 1. Если объект находится в состоянии Останов, он может отреагировать только сообщением запуск(), Затеи он переходит в состояние ожидания дальнейших сообщений. Немаркированная стрелка с черным кружком указывает на то, что это состояние является начальным. 2. В состоянии Ожидание система ожидает дальнейших сообщений. При получении сообщения завершение() объект возвращается в состояние завершения работы Останов. 3. Если получено сообщение отчет(), то система переходит в состояние обобщения данных Обобщение, а затем в состояние передачи данных Передача, в котором информация передаетсл через объект КонтроллерКоммуникаций.
Затеи система возвращается в состояние ожидания. 4. Получив сообщение калибровать(), система последовательно проходит через со. стояния калибровки, тестирования, передачи и лишь после этого переходит в состояние ожидания. В случае получения сообщения тестироватьо, система сразу переходит в состояние тестирования. 12. Объектно-ориентированное проектирование 261 5.
Если получен сигнал время, система переходит в состояние сбора данных, в котором она собирает данные от приборов. Каждый прибор по очереди также получает инструкцию "снять свои данные". Обычно не нужно создавать диаграммы состояний для всех определенных в системе объектов. Большинство объектов относительно просты, и модель конечного автомата просто излишняя. 12.2.5.
Специфицирование интерфейсов об ьектов Важной частью любого процесса проектирования я)()п(йтся специфицирование ин. терфейсов между различными компонентами системы. Интерфейсы необходимо определить так, чтобы объекты и другие компоненты можно было проектировать параллельно. Определив интерфейс, разработчики других объектов могут считать. что интерфейс уже реализован. Одному объекту не обязательно должен соответствовать один интерфейс. Один и тот же объект может иметь несколько интерфейсов, причем каждый из ннх предлагает свой способ поддержки методов. Такая поддержка имеется непосредственно в )ага, где интерфейсы объявляются отдельно от объектов н объекты "реализуют" интерфейсы.
Другими словами, через один интерфейс можно получить доступ к набору объектов. Проектирование интерфейсов объектов связано со спецификацией интерфейса в объекте или группе объектов, Под этим подразумевается определение сигнатур и семантик сервисов, которые поддерживаются этим объектом или группой объекгов.
В УМ1. интер. фейсы можно определить подобно диаграмме классов. Однако раздела свойств тзм нет, поэтому в стандарте ОМ). шаблон «интерфейс» следует включать в именную часть. Я предпочитаю альтернативный подход, в котором при определении интерфейса применяется язык программирования. В листинге 12.2 показана спецификация интерфейса на языке 1ата для метеостанции. По мере усложнения интерфейсов такой подход оказывается более эффективным, так как для обнаружения ошибок и противоречий в описании интерфейса можно воспользоваться средствами проверки синтаксиса, имсющимнся в компиляторе языка программирования. Из представленного описания видно, что некоторые методы могут использовать разное количество параметров.
Например, метод завершение без параметров применяется к целой станции, а тот же метод с параметрами может отключить один прибор. Листинг 12.2. Описание интерфейса метеостанции 1псеггасе Метеостанция риЫ1с чо1О Метеостанция()> рпЫтс чотб запуск(); рцЬ11с чозб запуск (Прибор 1)г рцЬ11с чосб завершение(); рцЫ1с чодб завершение(Прибор 1)г риЫ1с чодб отчетПогода(); риЬ11с уобб тестировать(): рцЫ1с чодб тестировать(Прибор 1)г риЫ1с чобб калибровать (Прибор 1) > риЫзс 1пс получитьндцомер (] г )//Метеостанция 362 Масть 111.
Проектирование 12.3. Модификация системной архитектуры Главное преимущество объектно. ориентированного подхода к проектированию системы состоит в том, что он упрощает задачу внесения изменений в системную архитекгу. ру, поскольку представление состояния объекта не оказывает на нее никакого влияния. Изменение внутренних данных объекта не должно влиять на другие объекты систеиы. Более того, так как объекты слабо связаны пожду собой, обычно новые объекты просто вставляются без значительных воздействий на остальные компоненты системы.
Рке. 12. 13. Новые абсенты дел клбеюдения м злгРлэхеыкем воздухл Чтобы проиллюстрировать стабильность обьектно ориентированного подхода, предположим, что в каждую метеостанцию потребовалось добавить возможность наблюдения эа степенью загрязнения скрывающей среды, т.е. необходимо добавить приборы, измеряющие состав воздуха, чтобы вычислить количество различных загрязнителей. Снятые измерения по загрязнению воздуха передаются с таким же интервалом времени, что и остальные метеорологические данные. Для иодификации проекта необходимо внести ряд изменений. К Класс объектов, именуемый КачествоВоздуха следует вставить как часть объекта Метеостанция на одном уровне с объектом МетеоДанные. 2.
В объект Метеостанция необходимо добавить метод отчетКвчествоВоздуха, чтобы информация о состоянии воздуха отправлялась па центральный компьютер. Про. грамму управления метеостанцией необходимо изменить так, чтобы при получении запроса с верхнего уровня объекта Метеостанция осуществлялся автоматический сбор данных по загрязнению воздуха. 3.
Необходимо добавить объекты, которые представляют типы приборов измеряющих степень загрязнения воздуха. В нашем примере можно добавить приборы, которые намеряли бы уровень оксида натрия, дыма и паров бензина. 12. Объектно-ориентированное проектирование 263 На рнс. 12.13 показан объект Метеостанция и новые объекты, добавленные в систему. Зэ исключением самого верхнего уровня системы (объект Метеостанция) в имеющиеся объекты не потребовалось вносить изменений.
Добавление в систему сбора данных о загрязнении воздуха не оказало никакого влияния на сбор метеорологических данных. 6:. эгъ.КЛЮЧЕззЫЕ ПОНЯТИЯ'въ-'.;ЫьеФФв%„'::.;:,'-:==6)а)оь . - .;=...г=:г ': чх„ ь~';:-'При','объеюногориентироязоиюм йроьйпированйи основнэые",ю)йпонеиты.программной системы к;;;~~)г представлрюуся)ик объектысо своими состояниями и оперицияыи. ',. '' ~ -,Объекпзтпрвдостигигют сервисы(методы) другим объектам и создиотся в реааном вреыещг на ' ;.,':," основе.бпределения класса обьектов. ° '".' Объектй'могут''быть р)йлизоеаны последовательно 'и параллельно.
Параллельный объект может ,,';-" бып',пассивным, у второго состояние изменяется только через его интерфейс, или активнын, ко; ъ" ~", вторый,можетчизмеепь свое'сасччиние без вмешательсща извне.„'.,'", г" ":в „"';Уни4яцировииый язык моделирования 0МС:создан для поддержания сйстем нотаций, которые: Ф'.)гч.) применяются при докук(вщйравании обьекгно-ориентированных п)юектов :,".я'-"';.',Процесс объепно-орщщпг(юзанного проеаирования состоит из следующих этапов: проекщровафф';ние арявтвауры системы, иденвфиюгция объектов системы, описание аркнтехтуры различными .
-., т„.""-уэгмоделями обьектов и документирование интерфейсов объеюов. 'г,", т~ В процессе объектно-ариипированного'проектирования возможно создание ряда различных мо- ' ~4! ';,';.делей.' Все модели можно разделить на статические (модели классов, модели обобщения, модели "," '- 'агрегирования) н динамические (модели последователыюстей, модели конечного автомата). ° ', " Следует четв опредеипн йнтерфейсы обьектов, так как онн используются другими объектами, г'-,чячй Для документирования интерфейсов объектов можно использовать языки программирования, на,ьФФВажНЫМ ПрЕИМу1цвотВОМ'ОВЪЕКтиа-ОрнвитнрОВаННОГО ПрОЕКтнрОВЮВЮ язпявтоя тО, ЧтО ОН улрюща- ' -"0()) . г(($,*,,' ет процесс мо))ифииации системы.
Упражнения 12.1. Объясните, почему в проектировании систем применение подхода, который полагается на слабо связанные объекты, скрывающие информацию о своем представлении, приводит к созданию системной архитектуры, которую затем можно легко модифицировать. 12,2, Покажите на примерах разницу между объектом и классом объектов. 12хк При каких условиях можно разрабатывать систему, в которой обьекты вьнюлнвогся параллельно? 12.4. С помощью графической системы нотации 0МС спроектируйте следующие классы объектов с опрццеленными атрибутами и операциями: ° телефон; ° принтер персонального компьютера; ° персональная стереосистема; ° банковские расчеты; ° каталог библиотеки.
12.5. Рациботайте более детальный проект метеостанции, добавив описания интерфейсов обьекгов, изображенных на рис.! 2.9. Онн могут быть записаны с помощью языков эата, С++ или 0йй 12.6. Раз)иботайге проект метеостанции, показывающий взаимодействие между подсистемой сбора данных и приборами, собирающими данные. Воспользуйтесь диаграммой последовательностей. 2Б4 Часть Ш.
Проектировииие 12.7. Определите аозможные объекты я следующих системах, применяя при этом объектно. орнентирсаанный подход. ° Система "Дневник группы" подцержиаает расписание собраний и встреч а группе сотрудников. Для организации встречи, а которой участвует группа людей, система находит общие для всех личных днезникоа свободные "оюю" и назначает зту встречу на определенное время. Если система не находит общих "окон", то начинает азаимодейстаоаать с пользоаателями, чтобы реорганизояать'личные днеяники и тем самым создать "оюю" двг встречи.