|
Программирование >> Дополнительные возможности наследования
Окончанно mU. 10.t йравфяка Ваавааав Диаграммы организации Диаграммы отношений внешних объектов и сис- сотрудничества тем, задействованных в решении той же задан- ной проблемы Анализ существующих систем Описание и диафаммы низкоуровневой аппарат- ной системы, для которых разрабатывается проект Требования к приложению Описание требований заказчика к данному проекту Отчет об ограничениях Описание ограничений системной платформы и особенности предполагаемых клиентов, что должно быть учтено при разработке проекта Смета и календарный план Календарный план с указанием сроков и этапов разработки проекта и материалов, предоставляемых заказчику после выполнения каждого этапа Проектирование Во время анализа основное внимание уделяется рассмофению домена и определению задач и требований к проекту, в то время как проектирование сосредоточено на поиске решений. Проектирование - это планирование практической реализации нашей идеальной модели средствами профаммирования. Результатом этого процесса является создание документа проекта приложения. Документ проекта состоит из двух разделов: проекта классов и архитектуры приложения. Первый раздел, в свою очередь, содержит статический (описание различных классов, их сфуктуры и характеристик) и динамический (описание взаимодействий классов) подразделы. В разделе Архитектура приложения определяется время жизни различных объектов, их взаимоотношения, системы передачи объектов и другие механизмы реализации классов. Далее на этом занятии основное внимание уделяется проектированию классов, а все оставшиеся занятия посвящены рассмотрению различных структур архитектуры приложения. Что таков классы Изучая материалы этой книги, вы уже не раз делали попытку создавать классы в профаммах на языке С++. Но поскольку в данный момент речь идет не о разработке профаммы, а о ее проектировании, следует различать проекты классов и их реализацию средствами С++, хотя, безусловно, эти моменты тесно взаимосвязаны. Каждому классу в проекте будет соответствовать класс в профаммном коде, но все же не надо их путать. Ведь для реализации спроектированного класса можно использовать другой язык профаммирования, и даже в пределах С++ для реализации класса можно использовать различные средства профаммирования. Далее не будем заострять на этом внимание, просто помните, что если планируется создать класс Кот с методом Мяу(), то в профамму будут добавлены класс Cat с методом MeowO, хотя реализовать их можно по-разному. Обратите внимание, что в тексте книги для классов проекта и классов профаммы использованы разные стили, чтобы помочь вам отличать их. Классы модели приложения отображаются в диафаммах UML, а классы С++ - в коде профаммы, который можно скомпилировать и запустить. У начинающих профаммистов часто возникает проблема с определением необходимого количества классов для программы и функций, которые должен выполнять каждый отдельный класс. Один из наиболее упрощенных подходов к решению этой проблемы состоит в записи сценария для ситуации использования приложения. Затем можно попытаться создать классы для каждого существительного (объекта), упоминающегося в этом сценарии. Возьмем для примера приведенный ниже сценарий. Клиент выбирает операцию снятия наличных с расчетного счета. На счете в банке имеется достаточная сумма, в ATM достаточно наличных и заправлена лента для квитанций, а сеть включена и работает. Кассовый аппарат ATM просит указать сумму, которая не должна превышать $300. Машина вьщает указанную сумму и печатает квитанцию для клиента. Из этого сценария можно извлечь такие классы: клиент; сумма; наличные; расчетный счет; счет; квитанция; лента для квитанций; банк; . ATM; сеть; снятие со счета; машина. Объединив синонимы и явно взаимосвязанные объекты, получаем следующий список: клиент; наличные (суммы на счете и снимаемая со счета); расчетный счет; счет; квитанции; ATM (кассовый аппарат); сеть. Пока что неплохо для начала. Можно затем отобразить отношения между классами, как показано на рис. 18.12. Расчетный счет
Рис. 18.12. Предварительная схема отношений между классами Преобразования Описанный в предыдущем разделе подход называется преобразованием объектов домена в объекты проекта. Большинству объектов домена в проекте соответствуют суррогаты. Термин суррогат вводится для того, чтобы отличать реальную квитанцию, выданную кассовым аппаратом, от виртуального объекта в программе, являющегося абстракцией, реализованной в программном коде. Многие объекты домена имеют в проекте изоморфное представление, т.е. между объектами домена и проекта сушествует отношение один-к-одному. В других случаях, однако, один объект домена представлен в проекте целым рядом объектов. Иногда множества объектов домена могут быть представлены одним объектом в проекте. Обратите внимание: на рис. 18.12 уже зафиксирован факт, что Расчетный счет является специализацией Счета. Аналогично, из анализа объектов домена известно, что кассовый аппарат ATM подготавливает и вьщает Наличные и Квитанцию, поэтому данные отношения зависимости классов также отображены на рис. 18.12. Отношение между Клиентом и Расчетным счетом менее очевидно. Известно, что такое отношение существует, но детали его пока скрыты, поэтому оставим анализ этого отношения на потом. Другие иреобразования После преобразования объектов домена можно начинать поиск других полезных объектов этапа проектирования. Неплохо начать с создания интерфейсов. Каждый интерфейс между новой системой и любой из существующих (унаследованных) систем должен быть инкапсулирован в класс интерфейса. (Напомним, что мы занимаемся проектированием, а не написанием программы, поэтому не путайте класс интер-
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |