Конспект лекций, страница 14

PDF-файл Конспект лекций, страница 14 Объектно-ориентированный анализ и проектирование (53235): Лекции - 7 семестрКонспект лекций: Объектно-ориентированный анализ и проектирование - PDF, страница 14 (53235) - СтудИзба2019-09-18СтудИзба

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

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

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

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

Решение: Следует назначитьобязанность информационному эксперту – классу, у которого имеется информация,требуемая для выполнения обязанности. Пример:: RegistrationController3: // get schedule(forSemester)10: // update with new selections( ): Student: ScheduleПри выполнении подчиненного потока событий "Обновить график" вариантаиспользования "Зарегистрироваться на курсы" студент-пользователь должен получитьдоступ к своему графику прежде, чем изменить его. Согласно образцу "InformationExpert", нужно определить, объект какого класса содержит информацию, необходимуюдля доступа к графику.

На эту роль информационного эксперта, очевидно, претендуетобъект класса-сущности Student, поскольку график принадлежит именно ему. Поэтомусообщение 3 "get schedule(forSemester)" должно быть направлено от контроллера объектукласса Student. После того, как студент получит график и внесет в него необходимыеизменения, они должны быть зафиксированы в объекте Schedule. В данном случае уже сам9объекте Schedule будет играть роль информационного эксперта, поскольку оннепосредственно доступен контроллеру, и сообщение 10 "update with new selections" будетнаправлено именно ему.Следствия:При распределении обязанностей образец Information Expert используется гораздочаще любого другого образца.

Большинство сообщений на диаграммах взаимодействиясоответствуют данному образцу. Образец Information Expert не содержит неясных илизапутанных идей и отражает обычный интуитивно понятный подход. Он заключается втом, что объекты осуществляют действия, связанные с имеющейся у них информацией.Если информация распределена между различными объектами, то при выполнении общейзадачи они должны взаимодействовать с помощью сообщений.В некоторых ситуациях применение образца Information Expert нежелательно.Образец "Creator". Проблема: Нужно определить, кто должен отвечать за созданиенового экземпляра некоторого класса. Создание новых объектов в объектноориентированной системе является одним из стандартных видов деятельности.Следовательно, при назначении обязанностей, связанных с созданием объектов, полезноруководствоваться некоторым основным принципом.

Решение: Следует назначить классуВ обязанность создавать экземпляры класса А, если выполняется одно из следующихусловий:• класс В агрегирует, содержит или активно использует объекты класса А;• класс В обладает данными инициализации, которые будут передаваться объектамкласса А при их создании (т.е. класс В является информационным экспертом).Класс В при этом определяется как создатель (creator) объектов класса А.Если несколько классов удовлетворяют этим условиям, то предпочтительнееиспользовать в качестве создателя класс, агрегирующий или содержащий класс А.Пример: При выполнении подчиненного потока событий "Создать график" вариантаиспользования "Зарегистрироваться на курсы" необходимо решить, кто должен отвечатьза создание нового графика в системе.

На рис. показаны два возможных варианта решенияэтой задачи.: RegistrationController: RegistrationController9: // create with offerings()10: // add schedule(Schedule)9: // create with offerings( ): Student: Schedule: Student10: // create and add shedule(): ScheduleСогласно образцу "Creator", наилучшим решением является вариант справа (новыйобъект класса Schedule создается классом Student, а не RegistrationController, посколькуименно Student удовлетворяет первому из перечисленных выше условий).Следствия: Образец "Creator" определяет способ распределения обязанностей,связанный с процессом создания объектов. В объектно-ориентированных системах этазадача является наиболее распространенной. Основным назначением образца Creator10является выявление объекта-создателя, который при возникновении любого событиядолжен быть связан со всеми созданными им объектами.

При таком подходеобеспечивается низкая степень связанности объектов.В некоторых случаях в качестве создателя выбирается класс, который содержитданные инициализации, передаваемые объекту во время его создания. На самом деле этопример использования образца Information Expert.Образец "Low Coupling" (слабое зацепление или низкая связанность). Проблема:Нужно распределить обязанности между классами таким образом, чтобы снизитьвзаимное влияние изменений в них и повысить возможность повторного использования.Решение: Следует распределить обязанности таким образом, чтобы обеспечить слабоезацепление.

Зацепление (coupling) – это мера, определяющая насколько жестко одинэлемент связан с другими элементами, или каким количеством данных о других элементахон обладает. Элемент со низким зацеплением зависит от небольшого числа другихэлементов. Класс с высоким зацеплением зависит множества других классов. Наличиетаких классов нежелательно, поскольку оно приводит к возникновению следующихпроблем: Изменения в связанных классах приводят к локальным изменениям в данном классе. Затрудняется понимание каждого класса в отдельности. Усложняется повторное использование, поскольку для этого требуетсядополнительный анализ классов, с которыми связан данный класс.Пример: Рассмотрим подчиненный поток событий "Создать график" вариантаиспользования "Зарегистрироваться на курсы" (предыдущий рисунок). Согласно образцу"Low Coupling", наилучшим решением является вариант справа, поскольку при этом укласса RegistrationController будет на одну связь меньше (т.е., будет обеспечено болеенизкое зацепление).Следствия: Образец Low Coupling поддерживает независимость классов, что, в своюочередь, повышает возможности повторного использования и обеспечивает болеевысокую эффективность приложения.

Его нельзя рассматривать изолированно от другихобразцов, таких как Information Expert и High Cohesion. Он также обеспечиваетвыполнение одного из основных принципов проектирования, применяемых прираспределении обязанностей.Образец "High Cohesion" (высокая прочность или сильная связность). Проблема:Нужно распределить обязанности между классами таким образом, чтобы каждый класс невыполнял много разнородных функций или несвязанных между собой обязанностей.Такие классы создавать нежелательно, поскольку они приводят к возникновению таких жепроблем, как у классов с сильной связанностью.

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

Согласнообразцу "High Cohesion", наилучшим решением также является вариант справа, посколькупри этом класс RegistrationController делегирует обязанность создания нового объектакласса Shedule классу Student, и у самого класса RegistrationController будет на однуобязанность меньше (т.е., его прочность будет выше).Следствия: Как правило, класс с высокой прочностью содержит сравнительнонебольшое число методов, которые функционально тесно связаны между собой, и невыполняет слишком много функций. Он взаимодействует с другими классами для11выполнения более сложных задач. Высокая степень однотипной функциональности всочетании с небольшим числом операций упрощают поддержку и модификацию класса, атакже возможность его повторного использования.Следует обратить внимание, что обязанностью экземпляров классов является нетолько прием сообщений, но и их отправка другим объектам. То есть объект обязан знатьо других объектах, которым он должен будет посылать сообщения.

Распределитьобязанности такого рода позволяют образцы Сценарий транзакции и Модель предметнойобласти.Образец «Сценарий транзакции».Аннотация: В управляющем классе заводится по одной операции на каждый запрос.Экземпляр управляющего класса обеспечивает правильную последовательность шаговсценария обработки каждого запроса, рассылая сообщения объектам сущностям, которыесами по себе не реализуют сложного поведения. Типовая последовательность шаговтакова: 1) прием входного запроса; 2) получение данных из базы; 3) обработка данных; 4)выдача результата. Все сложное поведение реализовано в контроллерах.Эскиз:Controllerservice1()service2()DataНазначение:Главное достоинство: простота, естественность, производительность.Подходит для небольших приложений.

Недостаток: при усложнении бизнес-логикидублируется большое количество кода – снижается гибкость и сопровождаемость. В такихслучаях нужно применять образец «Модель предметной области».Пример:: RegForCoursesForm: RegController: Student.: Student:: DBManager2: saveSchedule( )3: addSchedule(Schedule)4: save(Schedule, Student)Образец «Модель предметной области»Аннотация: Обязанности по обработке запросов распределены по сети объектовсущностей. В приложении создается слой объектов, описывающих структурные иповеденческие аспекты предметной области. Поведение сочетается с данными иреализуется в сущностях. Управляющие объекты довольствуются ролью посредниковмежду граничными объектами и сущностями.12Эскиз:Entity1op11()op12()DataEntity2Entity3op21()op22()op31()op32()Назначение: Подходит для приложений с запутанной бизнес-логикой.

Недостаток:создание модели предметной области более трудоемко, чем реализация сценариятранзакции. В простых случаях нужно применять сценарий транзакции.Пример: в системе регистрации на курсы бизнес-логика распределена между классамисущностями: RegistrationController9: deleteSchedule(Semester): Student.10: delete( ): Schedule11: removeStudent(Schedule):CourseOfferingЕсли бы применялся сценарий транзакции, взаимодействие выглядело бы так:: RegistrationController9: deleteSchedule(Semester)11: removeStudent(Schedule): Student:CourseOffering10: delete( ): ScheduleНабор обязанностей классов, полученный в результате их распределения, долженбыть проанализирован на предмет выявления и устранения следующих проблем:• дублирования одинаковых обязанностей в различных классах;13• противоречивых обязанностей в рамках класса;• классов с одной обязанностью или вообще без обязанностей;• классов, взаимодействующих с большим количеством других классов.Атрибуты классов анализа определяются, исходя из знаний о предметной области,требований к системе, глоссария и бизнес-модели.

В процессе анализа атрибутыопределяются только для классов-сущностей. Атрибуты должны быть простыми.Сложные атрибуты должны моделироваться как ассоциации между классами.Связи между классами определяются в два этапа. Начальный набор связейопределяется на основе анализа кооперативных диаграмм. Если два объектаобмениваются сообщениями, между ними должна быть ассоциация.: RegisterForCoursesForm<<boundary>>RegisterForCoursesForm2: // get course offerings( )8: // create schedule with offerings( )<<control>>RegistrationController: RegistrationControllerНа втором этапе, исходя из знаний о предметной области, создаются связи междуклассами-сущностями (ассоциации, агрегации, обобщения). Композиции выделяются наэтапе проектирования, во время анализа используются только агрегации.Квалификация механизмов анализа состоит в том, что: Составляется список всех механизмов анализа. Классы анализа ставятся в соответствие механизмам анализа. Определяются характеристики механизмов анализа.Механизмы анализа играют следующие роли: Отражают нефункциональные требования к системе (надежность, безопасность и т.д.)и их реализацию в архитектуре системы. Представляют собой набор типовых решений, или образцов (patterns), принятых вкачестве стандарта данного проекта. Позволяют сосредоточиться на преобразовании функциональных требований впрограммные абстракции, отвлекаясь от особенностей реализации.Так, имея дело с устойчивыми классами, достаточно указать для них механизм«persistencу», не задумываясь как именно будет реализовано сохранение их экземпляров вбазе данных.

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