Главная » Просмотр файлов » Конспект лекций

Конспект лекций (1158677), страница 20

Файл №1158677 Конспект лекций (Конспект лекций) 20 страницаКонспект лекций (1158677) страница 202019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 20)

Основной ключ – комбинация этихстолбцов.Автомобильмодельпроизводитель 0..1IDАвто1Модель600АвтомобильID1IDПрицепа12Прицепмодель0..1 грузоподъемностьПроизводительМерседесПрицепID2МодельИЖКАМАЗГрузоподъемность10001500В этом случае можно было добавить внешний ключ к какой-либо из таблиц, но не всегдадопускаются пустые значения во внешнем ключе.• «* к *» – для ассоциации заводится отдельная таблица. Ее столбцы – внешние ключидля таблиц классов, связанных ассоциацией.

Основной ключ – комбинация этихстолбцов.3Coursecredits0..nnamecurriculumdescription 0..nnumber+preRequisitesIDCou rse123Cre dits1001501 50IDCou rse133Nam eМАТ АН1МАТ АН2ФУНКАН…………I DCourse212В примере показано, как можно представить в таблицах связи между курсами (чтобызаписаться на курс функционального анализа, необходимо предварительно прослушатьдва курса математического анализа).• «1 к 1..*» – к таблице класса у полюса «1..*» добавляется столбец – внешний ключ длятаблицы класса у полюса «один».• «1 к 0..*» – как «1 к 1..*».Пример:Course Offering tableNumberCourseOffering678- number : StringCourse_ID456789Foreign Key0..*1Primary KeyCourse tableCourse- name- description- number•NameDescription NumberMath 101Algebra456789«0..1 к *» – применяются те же решения, что и в «0..1 к 0..1».Всякий раз, когда при реализации ассоциаций возникают связанные таблицы,возникают и ограничения целостности (в разных случаях разные), т.

е. фактическидобавляется не только внешний ключ и/или таблица, но и триггеры.Отображение классов связанных N-арной ассоциацией:Требуется таблица для хранения связи. Например, в случае тернарной (N=3) связиформируются четыре таблицы, по одной для каждого класса и одна для связи. Таблицасвязи будет иметь среди своих атрибутов ключи каждой из 3х других таблиц.Пример:4Отображение классов-ассоциаций:Атрибуты класса-ассоциации добавляются либо в создаваемую для связи таблицу,либо (если дополнительная таблица не требуется) в ту таблицу, куда добавляется внешнийключ.Пример:СеместрЧитаемыйКурсЛекторКурсIDЛектор IDСеместр IDКурс АтрибутЧитКурс••••Отображение квалифицированных ассоциацийРешение:Определить, какие мощности были бы у полюсов ассоциации без квалификатора.Применить решение для ассоциаций с полученными мощностями.Добавить квалификатор как столбец (или столбцы) в ту же таблицу, куда добавляютсявнешние ключи.Как правило, квалификатор становится частью возможного ключа таблицы, в которуюон добавлен.Пример:Отображение обобщения (наследования):Стратегии:• для каждого класса своя таблица;• для всей иерархии наследования одна таблица;• таблицы только для конкретных (не абстрактных) классов;5Person•StudentEmployeeтаблицы только для различных конкретных классов.Какой именно способ выбрать диктуют соображенияэффективности (скорость в обмен на объем памяти).StudentEmployeeРассмотрим на примере.

Пусть класс Person – абстрактный.При использовании 1-го подхода будут созданы 4таблицы. У таблиц Person, Student, Employee будет дополнительный столбец – тип, вкотором будет храниться реальный тип объекта. Для каждого экземпляра класса Studentбудут две записи, одна в таблице студентов, вторая – в таблице персон. Для экземпляраStudentEmployee – четыре записи, по одной в каждой таблице. При чем у всех их будетодинаковое значение первичного ключа.

Дублирование записей позволит быстро находитьвсех персон, всех студентов и т. п.При втором подходе используется общая разреженная таблица. В ней также длякаждой записи хранится ее тип. Неудобство состоит в том, что для любой записи оперсоне есть риск «залезть» в поля, принадлежащие подклассу.Третий подход позволяет сэкономить одну таблицу – Person – для поиска всехперсон в БД будет создан View, объединяющий записи 3-х созданных таблиц.Четвертый путь дает две таблицы (студентов и служащих) и два View (один дляперсон, второй для студентов-служащих).Литература к лекции 91.

Вендров А. М. Проектирование программного обеспечения экономическихинформационных систем. 2-е изд. – М.: Финансы и статистика, 2005. – Глава 4.2. Рамбо Дж., Блаха М. UML 2.0. Объектно-ориентированное моделированиеи разработка. 2-е изд.: Пер. с англ. – СПб.: Питер, 2007. – Глава 19.3. Мацяшек Л. А. Анализ и проектирование информационных систем с помощью UML2.0 – СПб.: Вильямс, 2008 – § 10.9.6Лекция 10.

Образцы проектированияОбразец (паттерн) – это типовое проектное решение конкретной задачипроектирования, описанное специальным образом, чтобы облегчить его повторноеприменение.Фактически, каждый паттерн является формализованным опытом лучшихразработчиков в индустрии создания ПО. Исторически понятие образца возникло вархитектуре, введено архитектором Кристофером Александром – проектировщикомзданий и городов в конце 1970-х.«Любой паттерн описывает задачу, которая снова и снова возникает в нашейработе, а также принцип ее решения, причем таким образом, что это решение можнопотом использовать миллион раз, ничего не изобретая заново.» Кристофер Александр.Основные составляющие части образца:Имя. Идентифицирует образец, Хорошее имя характеризует решаемую проблему испособ ее решения.Задача.

Описание ситуации, в которой следует применять образец. Это описаниевключает в себя: постановку проблемы, контекст проблемы, перечень условий, привыполнении которых имеет смысл применять образец.Решение. Описание элементов архитектуры, связей между ними, функций каждогоэлемента. Включает в себя UML-диаграммы.Результаты. Следствия применения паттерна и компромиссы.

Преимущества инедостатки образца. Влияние использования образца на гибкость, расширяемость ипереносимость системы.Полное описание образца включает:• Название.• Назначение (краткое описание функций образца и решаемой задачи).• Другие известные названия.• Мотивация (иллюстрация решаемой задачи проектирования).• Применимость (описание ситуаций, в которых применим паттерн. Примерыпроектирования, которые можно улучшить с помощью образца).• Структура (диаграмма классов).• Участники (слоты или роли, задействованные в образце, на место которых следуетподставлять конкретные проектные классы).• Отношения (диаграмма взаимодействия экземпляров классов-участников).• Результаты.• Реализация (сложности, подводные камни при реализации образца, рекомендации,зависимость от языка программирования).• Пример кода.• Известные применения (2 или более применений в различных областях).• Родственные паттерны (связь с другими образцами, различия, использование образца всочетании с другими).Каталог образцов1 содержит 23 образца.

Существуют другие каталоги – например,каталог Фаулера2.Классификация образцов:• Порождающие образцы (способы создания экземпляров классов).• Структурные образцы (способы задания статических связей между проектнымиклассами).• Образцы поведения (способы организации взаимодействий).1Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования.Паттерны проектирования. – СПб.: Питер, 2007.2Фаулер М. Архитектура корпоративных приложений. – М.: Вильямс, 2007.1Рассмотрим несколько образцов.Абстрактная фабрика (Abstract Factory)Классификация: образец порождения объектов.Назначение: предоставляет интерфейс для создания взаимосвязанных ивзаимозависимых объектов, не определяя их конкретных классов.Мотивация: часто встает задача проектирования программной системы независимойот конкретной реализации GUI.Ситуации применимости:• Система не должна зависеть от того как создаются, компонуются и представляютсявходящие в нее объекты;• Входящие в семейство объекты должны использоваться вместе и необходимообеспечить выполнение этого ограничения;• Система должна конфигурироваться одним из семейств составляющих ее объектов;• Предоставляется библиотека классов, реализация которых скрыта за интерфейсом.Участники:• AbstractFactory – интерфейс с операциями для порождения экземпляров абстрактныхклассов-продуктов.• ConcreteFactory – реализация порождения экземпляров конкретных классов.• AbstractProduct – интерфейс с операциями класса-продукта.• ConcreteProduct – реализация абстрактного продукта, объекты которой порождаютсяодной из конкретных фабрик.• Client – класс пользующийся интерфейсами AbstractFactory и AbstractProduct.Отношения:Обычно, во время выполнения создается один экземпляр ConcreteFactory, которыйсоздает экземпляры конкретных продуктов одного из семейств.

Для использованияобъектов другого семейства нужно породить другую конкретную фабрику.Результаты:• изоляция клиента от деталей реализации классов-продуктов (их имена известнытолько конкретной фабрике);• упрощение замены семейств продуктов;• набор продуктов фиксирован, добавлять новые трудно.Представим, что нужно добавить третий класс продуктов. Потребуется добавить2иерархию из 3-х классов и дополнительный метод в каждую фабрику.C lie ntF:C o n cre te Fa cto ry1cre a teP ro du ctAnewA:P ro d uctA1cre a teP ro du ctBne wB:P r o du ctB1Пример: взаимодействие при создании новых объектов по образцу Абстрактная фабрика.Фабричный метод (Factory method)Классификация: образец порождения объектов.Назначение: определяет интерфейс для создания объектов, но оставляет реализациямрешение о том, какой объект какого именно класса создавать.Мотивация: нужно создать экземпляр одной из реализаций интерфейса, но заранеенеизвестно какой.

Например, в текстовом редакторе работающем с разными форматамипри создании нового документа не известен его тип.Ситуации применимости:• Класс заранее не знает, объекты каких классов нужно создавать;• Известно лишь, что это будет экземпляр одного из подклассов (реализации) какого-тоабстрактного класса (интерфейса);• Класс делегирует свои обязанности одному из вспомогательных подклассов ипланируется локализовать знание о том, какой именно из подклассов берет этиобязанности на себя.•••Участники:Product – интерфейс порождаемых объектов;ConcreteProduct – конкретные реализации продукта;Creator – интерфейс порождения экземпляров продукта, в котором определенфабричный метод (factoryMethod), может определять реализацию фабричного метода3•по умолчанию;ConcreteCreator – реализация создателя для порождения конкретного продукта.Пример (редактор разноформатных документов):+docsDocumentopen()Document* docs=CreateDoc();docs.Add(doc);docs->open();...ApplicationcreateDoc()*MyDocumentMyApplicationopen()createDoc()return new MyDocument<<creates>>Отношения:Creator полагается на свои подклассы в определении factoryMethod’а,возвращающего экземпляр конкретного продукта.Результаты:• нет необходимости встраивать в код зависящие от приложения классы;• код связан лишь с интерфейсом класса Product, поэтому может работать с любымконкретным продуктом;• накладные расходы: при создании даже одного экземпляра конкретного продуктапонадобится создать экземпляр ConcreteCreator.Адаптер (Adapter)Классификация: структурный образец.Назначение: преобразует один интерфейс в другой, обеспечивая совместимость.Мотивация: есть библиотечный класс, который можно было бы использовать, но онне поддерживает требуемый интерфейс.Ситуация применимости: обеспечение совместимости существующего класса приего повторном использовании.1ClientAdapterrequest()-theTargetTargetrequest()-AdapteeRef1AdapteespecificRequest()•••Участники:Target – требуемый клиентом интерфейс;Client – клиент;Adaptee – адаптируемый класс или интерфейс;4•Adapter – класс-адаптер, в методе request вызывается specificRequest из Adaaptee.Отношения:Адаптер получает запросы клиентов и преобразует их в вызовы операцийадаптируемого класса или интерфейса.ClientAdr:AdapterAdpt:Adapteereques ts pecReques tРезультаты:паттерн не работает, если надо адаптировать не только класс, но и его подклассы;вводится только один дополнительный объект.Composite (Компоновщик)Классификация: структурный образец.Назначение: организует объекты в древовидные структуры, позволяет клиентамединообразно работать с составными и элементарными объектами.Мотивация: есть совокупность объектов-контейнеров, состоящих из элементарныхобъектов и других контейнеров.Ситуации применимости:• нужно представить иерархию объектов «часть-целое»;• нужно дать одинаковый интерфейс к составным и простым объектам.••ComponentClient••••-theComponent+ operation()+ getChild()1+ addComponent()+ removeComponent()-componentsnLeafComposite+ operation()+ operation()+ getChild()+ addComponent()+ removeComponent()for all children G:G.operation();Участники:Component – компонент, определяющий единый интерфейс, содержащий реализацииобщих операций по умолчанию;Leaf – простые (элементарные) объекты;Composite – составной объект;Client – работает с объектами через интерфейс, объявленный в компоненте.Отношения:5Клиенты вызывают операции Component.

Характеристики

Тип файла
PDF-файл
Размер
3,82 Mb
Тип материала
Высшее учебное заведение

Список файлов лекций

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