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

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

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

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

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

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

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

Каковы признаки хорошего класса анализа?Признаки хорошего класса анализа можно кратко охарактеризоватьследующим образом:•••его имя отражает его назначение;он является четкой абстракцией, моделирующей один конкретныйэлемент предметной области;он проецируется на четко определяемую возможность предметнойобласти;••у него небольшой четко определенный набор обязанностей;у него высокая внутренняя связность (cohesion);•у него низкая связанность с другими классами (coupling).Имя класса анализа должно отражать его назначение.При анализе делается попытка точно и лаконично смоделировать одинаспект предметной области с точки зрения создаваемой системы.

Например, при моделировании клиента банковской системы необходимозаписать его имя, адрес и т. д. При этом вряд ли представляет интерес184Глава 8. Выявление классов анализаинформация о том, предпочитает ли он сидеть в самолете у окна илив проходе. Необходимо сосредоточиться на важных с точки зрениястроящейся системы аспектах реальных сущностей.Нередко составить первое впечатление о том, «хорош» класс или нет,можно уже по его имени.

В системе электронной коммерции вполнепонятно, какую реальную сущность может обозначать имя Customer;оно является хорошей кандидатурой для имени класса. ShoppingBasketтакже могло бы быть хорошей абстракцией, мы практически интуитивно понимаем его семантику. Однако семантика такого имени, какWebSiteVisitor (посетитель вебсайта), кажется неопределенной и по сутинапоминает роль, выполняемую Customer по отношению к системе электронной коммерции. Необходимо всегда искать «четкую абстракцию» –чтото, что имеет ясную и очевидную семантику.Обязанности описывают связный набор операций.Обязанность – это контракт или обязательство класса по отношениюк его клиентам.

По существу, обязанность – это сервис, который класспредлагает другим классам. Очень важно, чтобы классы анализа имели связный набор обязанностей, абсолютно соответствующих назначению класса (которое выражено в его имени) и реальной «сущности»,моделируемой классом. Возвращаясь к примеру ShoppingBasket, можноожидать, что этот класс будет иметь следующие обязанности:•добавить позицию в корзину;•удалить позицию из корзины;•показать позиции, находящиеся в корзине.Это связный набор обязанностей, обслуживающий коллекцию товарных позиций, выбранных покупателем.

Он является связным, потомучто все обязанности направлены на реализацию одной цели – обслуживание корзины для покупок клиента. На очень высоком уровне абстракции эти три обязанности можно представить как обязанность«обслужить корзину».Теперь в класс ShoppingBasket можно было бы добавить следующие обязанности:•проверить действительность кредитной карты;•принять платеж;•распечатать квитанцию.Но эти обязанности, похоже, не соответствуют назначению или интуитивно понятной семантике корзин для покупок.

Они не являютсясвязными и, без сомнения, должны быть заданы гденибудь в другомместе – может быть, в классах CreditCardCompany (компания, продающаятовары по кредитным карточкам), Checkout (касса) и ReceiptPrinter (устройство для распечатки квитанций). Важно правильно распределить8.3. Что такое классы анализа?185обязанности между классами анализа, чтобы обеспечить максимальную внутреннюю связность каждого класса.И наконец, хорошие классы обладают минимальной связанностью(coupling) с другими классами. Связанность измеряется количествомклассов, с которыми данный класс имеет отношения.

Равномерное распределение обязанностей между классами обеспечит в результате низкую связанность. Размещение управления или множества обязанностей в одном классе приводит к повышению связанности этого класса.Способы максимального повышения внутренней связности и уменьшения связанности рассматриваются в главе 15.8.3.3. Практические правила создания классов анализаЗдесь приведены некоторые практические правила создания правильно сформированных классов анализа.•В каждом классе должно быть трипять обязанностей – необходимостремиться сохранить максимальную простоту классов. Обычночисло обязанностей, которые они могут поддерживать, ограничивают тремяпятью.

Приводимый ранее класс ShoppingBasket являетсяхорошим примером класса с небольшим и управляемым количеством обязанностей.•Ни один класс не является изолированным – суть хорошего ОО анализа и проектирования во взаимодействии классов друг с другомс целью предоставить пользователям значимый результат. По существу, каждый класс должен быть ассоциирован с небольшим количеством других классов, взаимодействуя с которыми он обеспечивает требуемый результат. Классы могут делегировать некоторые изсвоих обязанностей другим «вспомогательным» классам, предназначенным для выполнения именно этой конкретной функции.•Остерегайтесь создания множества очень мелких классов – иногдаэто может нарушить баланс распределения обязанностей. Если в модели масса мелких классов, каждый из которых имеет однудве обязанности, необходимо тщательно проанализировать ситуацию с целью объединения нескольких мелких классов в большие.•Следует опасаться и противоположной ситуации, когда в моделинесколько очень больших классов, многие из которых обладаютбольшим числом (> 5) обязанностей.

Стратегия в этом случае такова: по очереди рассмотреть эти классы и проанализировать возможность их разбиения на несколько меньших классов с допустимымколичеством обязанностей.•Остерегайтесь «функтоидов»; функтоид – это на самом деле обычная процедурная функция, выдаваемая за класс. Гради Буч любитрассказывать забавный анекдот о модели очень простой системы,состоящей из тысяч классов. При тщательном рассмотрении оказалось, что в каждом классе была всего одна операция doIt() (сделай186Глава 8.

Выявление классов анализа«это»). Опасность функтоидов всегда существует, когда аналитики,привыкшие к прямой функциональной декомпозиции, впервые берутся за ОО анализ и проектирование.•Опасайтесь всемогущих классов – классов, которые, кажется, делают все. Ищите классы, в именах которых есть слова «system» (система) или «controller» (контроллер)! Для решения этой проблемынеобходимо посмотреть, можно ли разбить обязанности всемогущего класса на связные подмножества. Если да, то, вероятно, каждыйиз этих связных наборов обязанностей можно выделить в отдельный класс. Тогда поведение, предлагаемое исходным всемогущимклассом, можно было бы получить за счет взаимодействия этихменьших классов.•Необходимо избегать «глубоких» деревьев наследования – суть проектирования хорошей иерархии наследования в том, что каждыйуровень абстракции должен иметь четко определенное назначение.Очень легко создать много по сути бесполезных уровней.

Широкораспространенной ошибкой является использование иерархии дляреализации некоторого рода функциональной декомпозиции, гдекаждый уровень абстракции имеет только одну обязанность. Этонецелесообразно во всех отношениях, поскольку ведет к запутанной, сложной для понимания модели. В анализе наследование используется только там, где есть явная и четкая иерархия наследования, проистекающая непосредственно из предметной области.Что касается последнего правила, то следует пояснить, что имеетсяв виду под понятием «глубокое» дерево наследования. В анализе, гдеклассы представляют бизнессущности, «глубокое» – это три и болееуровней наследования.

Это объясняется тем, что бизнессущностиимеют тенденцию формировать «широкие», а не «глубокие» иерархиинаследования.При проектировании, когда дерево составляют классы области решения, определение «глубины» зависит от предполагаемого языка реализации. В Java, C++, C#, Python и Visual Basic под «глубоким» понимают дерево наследования, содержащее три или более уровней. Однако в Smalltalk деревья наследования могут быть намного более глубокими изза структуры системы Smalltalk.8.4. Выявление классовДалее в этой главе обсуждается основной вопрос ОО анализа и проектирования – выявление классов анализа.Как указывает Мейер (Meyer) в книге «Object Oriented Software Construction» [Meyer 1], нет простого алгоритма правильного выявленияклассов анализа.

Наличие подобного алгоритма было бы равнозначносуществованию универсального способа разработки ОО программного8.4. Выявление классов187обеспечения, что так же невероятно, как появление универсальногоспособа доказательства математических теорем.Тем не менее есть проверенные и протестированные методы, обеспечивающие хороший результат. Они представлены ниже и включают анализ текста и интервьюирование пользователей и специалистов предметной области. Но, разумеется, несмотря на все эти методы, правильноевыявление классов зависит от подхода, мастерства и опыта конкретного аналитика.8.4.1. Выявление классов с помощью анализасуществительное/глаголАнализ существительное/глагол – очень простой способ анализа текста с целью выявления классов, атрибутов и обязанностей.

По сути,существительные и именные группы, встречающиеся в тексте, указывают на обязанности или атрибуты класса, а глаголы и глагольныегруппы указывают на ответственности и операции класса. Анализ существительное/глагол успешно применяется в течение многих лет,поскольку основывается на прямом анализе языка предметной области. Однако необходимо помнить о синонимах и омонимах, посколькуони могут стать причиной появления ложных классов.В анализе существительное/глагол анализируется текст. Существительные и именные группы указывают на классы или атрибуты. Глаголыи глагольные группы служат признаком обязанностей или операций.Также надо быть очень осторожными, когда предметная область недостаточно понятна и определена. В этом случае необходимо попытатьсясобрать максимум информации об этой области у максимально возможного числа людей, изучить аналогичные предметные области запределами вашей организации.Наверное, самый сложный аспект анализа существительное/глагол –выявление «скрытых» классов.

Это классы, которые свойственныпредметной области, но могут никогда не упоминаться явно. Например, в системе резервирования для компании, занимающейся организацией отдыха, заинтересованные стороны будут говорить о резервировании, бронировании и т. д., но более важная абстракция, Order (Заказ),может вообще не упоминаться открыто, если ее нет в существующихбизнессистемах. Обычно признаком выявления скрытого класса является «загустевание» системы после введения единственной новойабстракции. Это происходит на удивление часто; на практике, еслиу нас возникают хоть какиенибудь трудности с аналитической моделью, мы продолжаем поиск скрытых файлов.

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