🗊Презентация Объектно-ориентированное проектирование ПС (часть 2)

Нажмите для полного просмотра!
Объектно-ориентированное проектирование ПС (часть 2), слайд №1Объектно-ориентированное проектирование ПС (часть 2), слайд №2Объектно-ориентированное проектирование ПС (часть 2), слайд №3Объектно-ориентированное проектирование ПС (часть 2), слайд №4Объектно-ориентированное проектирование ПС (часть 2), слайд №5Объектно-ориентированное проектирование ПС (часть 2), слайд №6Объектно-ориентированное проектирование ПС (часть 2), слайд №7Объектно-ориентированное проектирование ПС (часть 2), слайд №8Объектно-ориентированное проектирование ПС (часть 2), слайд №9Объектно-ориентированное проектирование ПС (часть 2), слайд №10Объектно-ориентированное проектирование ПС (часть 2), слайд №11Объектно-ориентированное проектирование ПС (часть 2), слайд №12Объектно-ориентированное проектирование ПС (часть 2), слайд №13Объектно-ориентированное проектирование ПС (часть 2), слайд №14Объектно-ориентированное проектирование ПС (часть 2), слайд №15Объектно-ориентированное проектирование ПС (часть 2), слайд №16Объектно-ориентированное проектирование ПС (часть 2), слайд №17Объектно-ориентированное проектирование ПС (часть 2), слайд №18Объектно-ориентированное проектирование ПС (часть 2), слайд №19Объектно-ориентированное проектирование ПС (часть 2), слайд №20Объектно-ориентированное проектирование ПС (часть 2), слайд №21Объектно-ориентированное проектирование ПС (часть 2), слайд №22Объектно-ориентированное проектирование ПС (часть 2), слайд №23Объектно-ориентированное проектирование ПС (часть 2), слайд №24Объектно-ориентированное проектирование ПС (часть 2), слайд №25Объектно-ориентированное проектирование ПС (часть 2), слайд №26Объектно-ориентированное проектирование ПС (часть 2), слайд №27Объектно-ориентированное проектирование ПС (часть 2), слайд №28Объектно-ориентированное проектирование ПС (часть 2), слайд №29Объектно-ориентированное проектирование ПС (часть 2), слайд №30Объектно-ориентированное проектирование ПС (часть 2), слайд №31Объектно-ориентированное проектирование ПС (часть 2), слайд №32Объектно-ориентированное проектирование ПС (часть 2), слайд №33Объектно-ориентированное проектирование ПС (часть 2), слайд №34Объектно-ориентированное проектирование ПС (часть 2), слайд №35Объектно-ориентированное проектирование ПС (часть 2), слайд №36Объектно-ориентированное проектирование ПС (часть 2), слайд №37Объектно-ориентированное проектирование ПС (часть 2), слайд №38Объектно-ориентированное проектирование ПС (часть 2), слайд №39Объектно-ориентированное проектирование ПС (часть 2), слайд №40Объектно-ориентированное проектирование ПС (часть 2), слайд №41Объектно-ориентированное проектирование ПС (часть 2), слайд №42Объектно-ориентированное проектирование ПС (часть 2), слайд №43Объектно-ориентированное проектирование ПС (часть 2), слайд №44Объектно-ориентированное проектирование ПС (часть 2), слайд №45Объектно-ориентированное проектирование ПС (часть 2), слайд №46Объектно-ориентированное проектирование ПС (часть 2), слайд №47Объектно-ориентированное проектирование ПС (часть 2), слайд №48Объектно-ориентированное проектирование ПС (часть 2), слайд №49Объектно-ориентированное проектирование ПС (часть 2), слайд №50Объектно-ориентированное проектирование ПС (часть 2), слайд №51Объектно-ориентированное проектирование ПС (часть 2), слайд №52Объектно-ориентированное проектирование ПС (часть 2), слайд №53Объектно-ориентированное проектирование ПС (часть 2), слайд №54Объектно-ориентированное проектирование ПС (часть 2), слайд №55Объектно-ориентированное проектирование ПС (часть 2), слайд №56Объектно-ориентированное проектирование ПС (часть 2), слайд №57Объектно-ориентированное проектирование ПС (часть 2), слайд №58Объектно-ориентированное проектирование ПС (часть 2), слайд №59Объектно-ориентированное проектирование ПС (часть 2), слайд №60Объектно-ориентированное проектирование ПС (часть 2), слайд №61Объектно-ориентированное проектирование ПС (часть 2), слайд №62Объектно-ориентированное проектирование ПС (часть 2), слайд №63Объектно-ориентированное проектирование ПС (часть 2), слайд №64Объектно-ориентированное проектирование ПС (часть 2), слайд №65Объектно-ориентированное проектирование ПС (часть 2), слайд №66Объектно-ориентированное проектирование ПС (часть 2), слайд №67Объектно-ориентированное проектирование ПС (часть 2), слайд №68Объектно-ориентированное проектирование ПС (часть 2), слайд №69Объектно-ориентированное проектирование ПС (часть 2), слайд №70Объектно-ориентированное проектирование ПС (часть 2), слайд №71Объектно-ориентированное проектирование ПС (часть 2), слайд №72Объектно-ориентированное проектирование ПС (часть 2), слайд №73Объектно-ориентированное проектирование ПС (часть 2), слайд №74Объектно-ориентированное проектирование ПС (часть 2), слайд №75Объектно-ориентированное проектирование ПС (часть 2), слайд №76

Содержание

Вы можете ознакомиться и скачать презентацию на тему Объектно-ориентированное проектирование ПС (часть 2). Доклад-сообщение содержит 76 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Объектно-ориентированное проектирование ПС (часть 2)
Лекция 8
Описание слайда:
Объектно-ориентированное проектирование ПС (часть 2) Лекция 8

Слайд 2





Шаблон Controller
Проблема Кто должен отвечать за обработку системных сообщений?
Решение Обязанности по обработке системных сообщений назначаются классу, который:
представляет систему в целом;
представляет сценарий некоторого прецедента, в рамках которого обрабатываются системные сообщения
Описание слайда:
Шаблон Controller Проблема Кто должен отвечать за обработку системных сообщений? Решение Обязанности по обработке системных сообщений назначаются классу, который: представляет систему в целом; представляет сценарий некоторого прецедента, в рамках которого обрабатываются системные сообщения

Слайд 3





Контроллеры
Классы, обязанности которых состоят в обработке системных сообщений называются классами контроллера
Классы контроллера не относятся к интерфейсу пользователя
В рассматриваемом примере возможны два варианта решения
Описание слайда:
Контроллеры Классы, обязанности которых состоят в обработке системных сообщений называются классами контроллера Классы контроллера не относятся к интерфейсу пользователя В рассматриваемом примере возможны два варианта решения

Слайд 4





1-Й ВАРИАНТ
Все системные операции выполняются одним внешним контроллером
Описание слайда:
1-Й ВАРИАНТ Все системные операции выполняются одним внешним контроллером

Слайд 5





2-Й ВАРИАНТ
Системные операции распределены  между несколькими контроллерами прецедента
Описание слайда:
2-Й ВАРИАНТ Системные операции распределены между несколькими контроллерами прецедента

Слайд 6





Выбор варианта
Выбор  между вариантом использования внешнего контроллера (facade controller) и вариантом контроллеров прецедентов определяется, в основном требованиями соблюдения малой степени  сцепления и высокой связности
Описание слайда:
Выбор варианта Выбор между вариантом использования внешнего контроллера (facade controller) и вариантом контроллеров прецедентов определяется, в основном требованиями соблюдения малой степени сцепления и высокой связности

Слайд 7





РЕАЛИЗАЦИЯ ПРЕЦЕДЕНТА «ОФОРМЛЕНИЕ ПРОДАЖИ»
Реализация прецедента показывает, как определенный прецедент представляется в рамках модели проектирования в терминах взаимодействующих объектов
Описание слайда:
РЕАЛИЗАЦИЯ ПРЕЦЕДЕНТА «ОФОРМЛЕНИЕ ПРОДАЖИ» Реализация прецедента показывает, как определенный прецедент представляется в рамках модели проектирования в терминах взаимодействующих объектов

Слайд 8





Диаграммы взаимодействия
Реализация прецедентов представляется в виде диаграмм взаимодействия, начинающихся с соответствующего системного сообщения
Диаграммы взаимодействия включают процессы передачи сообщений между программными объектами, участвующими в реализации прецедента
Описание слайда:
Диаграммы взаимодействия Реализация прецедентов представляется в виде диаграмм взаимодействия, начинающихся с соответствующего системного сообщения Диаграммы взаимодействия включают процессы передачи сообщений между программными объектами, участвующими в реализации прецедента

Слайд 9





Прецедент «Оформление продажи»
На текущей итерации рассмотрены следующие системные события и соответствующие операции:
Начать оформление покупки (makeNewSale)
Ввести данные товара (enterItem)
Завершить оформление покупки (endSale)
Оформить платеж (makePayment) 
Для наглядности каждая операция будет представлена отдельной диаграммой
Описание слайда:
Прецедент «Оформление продажи» На текущей итерации рассмотрены следующие системные события и соответствующие операции: Начать оформление покупки (makeNewSale) Ввести данные товара (enterItem) Завершить оформление покупки (endSale) Оформить платеж (makePayment) Для наглядности каждая операция будет представлена отдельной диаграммой

Слайд 10





Операция makeNewSale
Операция 
makeNewSale()
Ссылки 
Прецеденты: Оформление продажи
Предусловия 
Отсутствуют
Постусловия 
Создан экземпляр s класса Sale
Экземпляр s связан с объектом класса Registor
Установлены атрибуты экземпляра s
Описание слайда:
Операция makeNewSale Операция makeNewSale() Ссылки Прецеденты: Оформление продажи Предусловия Отсутствуют Постусловия Создан экземпляр s класса Sale Экземпляр s связан с объектом класса Registor Установлены атрибуты экземпляра s

Слайд 11





Диаграмма последовательности
Описание слайда:
Диаграмма последовательности

Слайд 12





Операция enterItem
Операция 
enterItem(iID: ItemID,  quantity:  integer)
Ссылки 
Прецеденты: Оформление продажи
Предусловия 
Инициирована продажа
Постусловия 
Создан экземпляр sli класса SalesLineItem
Экземпляр sli связан с объектом класса Sale
Атрибуту  sli.quantity присвоено значение quantity
Экземпляр sli связан с классом ProductSpecification
Описание слайда:
Операция enterItem Операция enterItem(iID: ItemID, quantity: integer) Ссылки Прецеденты: Оформление продажи Предусловия Инициирована продажа Постусловия Создан экземпляр sli класса SalesLineItem Экземпляр sli связан с объектом класса Sale Атрибуту sli.quantity присвоено значение quantity Экземпляр sli связан с классом ProductSpecification

Слайд 13





Обработка enterItem
Ранее было установлено, что  объект Sale должен создаваться объектом Registor
Объект Sale создает  объект SalesLineItem и добавляет его в свой контейнер
Затем необходимо получить  описание товара ProductSpecification для экземпляра SalesLineItem
Кто должен поставлять эту информацию?
Описание слайда:
Обработка enterItem Ранее было установлено, что объект Sale должен создаваться объектом Registor Объект Sale создает объект SalesLineItem и добавляет его в свой контейнер Затем необходимо получить описание товара ProductSpecification для экземпляра SalesLineItem Кто должен поставлять эту информацию?

Слайд 14





Класс ProductCatalog
На основе анализа предметной области и в соответствии с шаблоном Expert эта обязанность должна быть назначена классу ProductCatalog
Этот класс должен содержать  коллекцию экземпляров класса ProductSpecification
Запрос на получение описания товара должен отправлять объект Register
Описание слайда:
Класс ProductCatalog На основе анализа предметной области и в соответствии с шаблоном Expert эта обязанность должна быть назначена классу ProductCatalog Этот класс должен содержать коллекцию экземпляров класса ProductSpecification Запрос на получение описания товара должен отправлять объект Register

Слайд 15





Диаграмма кооперации
Описание слайда:
Диаграмма кооперации

Слайд 16





Операция endSale
Операция 
endSale()
Ссылки 
Прецеденты: Оформление продажи
Предусловия 
Инициирована продажа
Постусловия 
Атрибуту  isComplete экземпляра класса Sale присвоено значение true
Описание слайда:
Операция endSale Операция endSale() Ссылки Прецеденты: Оформление продажи Предусловия Инициирована продажа Постусловия Атрибуту isComplete экземпляра класса Sale присвоено значение true

Слайд 17





Диаграмма кооперации
Описание слайда:
Диаграмма кооперации

Слайд 18





Вычисление общей стоимости 
В соответствии с описанием данного прецедента после завершения оформления продажи система должна вычислить общую стоимость покупки
Описание слайда:
Вычисление общей стоимости В соответствии с описанием данного прецедента после завершения оформления продажи система должна вычислить общую стоимость покупки

Слайд 19





Операция makePayment
Операция makePayment(amount:  Money)
Ссылки Прецеденты: Оформление продажи
Предусловия Инициирована продажа
Постусловия 
Создан экземпляр p класса Payment
Экземпляр p связан с объектом класса Sale
Атрибуту  amountTendered присвоено значение  amount
Экземпляр Sale связан с экземпляром класса  Store для его добавления в журнал продаж
Описание слайда:
Операция makePayment Операция makePayment(amount: Money) Ссылки Прецеденты: Оформление продажи Предусловия Инициирована продажа Постусловия Создан экземпляр p класса Payment Экземпляр p связан с объектом класса Sale Атрибуту amountTendered присвоено значение amount Экземпляр Sale связан с экземпляром класса Store для его добавления в журнал продаж

Слайд 20





Создание Payment
В соответствии с шаблоном Creator и с учетом требований слабого сцепления и сильной связности обязанность создавать экземпляры класса Payment назначена объекту класса Sale, активно использующему информацию экземпляра Payment
Описание слайда:
Создание Payment В соответствии с шаблоном Creator и с учетом требований слабого сцепления и сильной связности обязанность создавать экземпляры класса Payment назначена объекту класса Sale, активно использующему информацию экземпляра Payment

Слайд 21





Регистрация покупки
Описание слайда:
Регистрация покупки

Слайд 22





Вычисление сдачи
В роли частичных экспертов могут выступать объекты классов:
Sale (информация о полной стоимости)
Payment (информация о внесенной покупателем сумме)
Экземпляр класса Sale является создателем  объекта класса Payment и может запросить у него сумму платежа
Описание слайда:
Вычисление сдачи В роли частичных экспертов могут выступать объекты классов: Sale (информация о полной стоимости) Payment (информация о внесенной покупателем сумме) Экземпляр класса Sale является создателем объекта класса Payment и может запросить у него сумму платежа

Слайд 23





Вычисление сдачи
Описание слайда:
Вычисление сдачи

Слайд 24





РЕАЛИЗАЦИЯ ПРЕЦЕДЕНТА «ЗАПУСК СИСТЕМЫ»
Практически все системы включают прецедент «Запуск системы» и системную операцию, связанную с запуском приложения
Описание слайда:
РЕАЛИЗАЦИЯ ПРЕЦЕДЕНТА «ЗАПУСК СИСТЕМЫ» Практически все системы включают прецедент «Запуск системы» и системную операцию, связанную с запуском приложения

Слайд 25





Запуск приложения
Представляется системной операцией StartUp, которая является абстракцией реального процесса загрузки и инициализации приложения
Диаграмма взаимодействия для операции StartUp строится в последнюю очередь, когда уже известна информация об основных системных операциях
Описание слайда:
Запуск приложения Представляется системной операцией StartUp, которая является абстракцией реального процесса загрузки и инициализации приложения Диаграмма взаимодействия для операции StartUp строится в последнюю очередь, когда уже известна информация об основных системных операциях

Слайд 26





Запуск приложения
Должен быть выбран исходный объект предметной области; соответствующий программный объект создается первым
Этот объект наделяется обязанностью создания других объектов, наличие которых необходимо для начала работы приложения, а также их инициализации
Описание слайда:
Запуск приложения Должен быть выбран исходный объект предметной области; соответствующий программный объект создается первым Этот объект наделяется обязанностью создания других объектов, наличие которых необходимо для начала работы приложения, а также их инициализации

Слайд 27





Выбор исходного объекта
В качестве исходного выбирается объект, наиболее приближенный к корню иерархии объектов
В нашем случае это может быть Register либо Store
Исходя из требования высокой степени связности, выберем объект Store
Описание слайда:
Выбор исходного объекта В качестве исходного выбирается объект, наиболее приближенный к корню иерархии объектов В нашем случае это может быть Register либо Store Исходя из требования высокой степени связности, выберем объект Store

Слайд 28





Операция StartUp
Операция StartUp()
Ссылки Прецеденты: Запуск системы
Предусловия Отсутствуют
Постусловия 
Создан экземпляр класса Store
Создан экземпляр pc класса ProductCatalog
Экземпляр pc связан с экземпляром класса  Store
Создан экземпляр ps класса ProductSpecification
Экземпляр ps связан с объектом класса Product Catalog
Описание слайда:
Операция StartUp Операция StartUp() Ссылки Прецеденты: Запуск системы Предусловия Отсутствуют Постусловия Создан экземпляр класса Store Создан экземпляр pc класса ProductCatalog Экземпляр pc связан с экземпляром класса Store Создан экземпляр ps класса ProductSpecification Экземпляр ps связан с объектом класса Product Catalog

Слайд 29





Операция StartUp
Постусловия (продолжение)
Создан экземпляр класса Register
Экземпляр класса Store связан с экземпляром класса  Register
Экземпляр pc связан с экземпляром класса  Register
Описание слайда:
Операция StartUp Постусловия (продолжение) Создан экземпляр класса Register Экземпляр класса Store связан с экземпляром класса Register Экземпляр pc связан с экземпляром класса Register

Слайд 30





Диаграмма кооперации
Описание слайда:
Диаграмма кооперации

Слайд 31





Подключение уровня интерфейса
До сих пор проектирование велось на уровне объектов предметной области
Для подключения уровня пользовательского интерфейса потребуем, чтобы инициализирующая программа создавала и объекты уровня пользовательского интерфейса и исходный объект уровня предметной области с их связыванием
Описание слайда:
Подключение уровня интерфейса До сих пор проектирование велось на уровне объектов предметной области Для подключения уровня пользовательского интерфейса потребуем, чтобы инициализирующая программа создавала и объекты уровня пользовательского интерфейса и исходный объект уровня предметной области с их связыванием

Слайд 32





Связь уровней приложения
Описание слайда:
Связь уровней приложения

Слайд 33





СОЗДАНИЕ ДИАГРАММЫ КЛАССОВ
Описание слайда:
СОЗДАНИЕ ДИАГРАММЫ КЛАССОВ

Слайд 34





Идентификация классов
На основе анализа диаграмм взаимодействия можно выделить следующие  классы:
Register
Sale
ProductCatalog
ProductSpecification
SalesLineItem
Store
Payment
Описание слайда:
Идентификация классов На основе анализа диаграмм взаимодействия можно выделить следующие классы: Register Sale ProductCatalog ProductSpecification SalesLineItem Store Payment

Слайд 35





Определение методов классов
Сообщения, передаваемые классу, определяют большую часть его методов
Иногда на диаграмме классов можно размещать дополнительную информацию о типах передаваемых методами параметров и возвращаемых результатов
Описание слайда:
Определение методов классов Сообщения, передаваемые классу, определяют большую часть его методов Иногда на диаграмме классов можно размещать дополнительную информацию о типах передаваемых методами параметров и возвращаемых результатов

Слайд 36





Методы классов
Описание слайда:
Методы классов

Слайд 37





Ассоциации и навигация
Линии связи и навигации устанавливаются на основе анализа диаграмм взаимодействия
Такие ассоциации интерпретируются как видимость целевого класса для класса-источника, обеспечиваемая с помощью атрибутов (атрибут класса-источника является ссылкой на экземпляр целевого класса)
Описание слайда:
Ассоциации и навигация Линии связи и навигации устанавливаются на основе анализа диаграмм взаимодействия Такие ассоциации интерпретируются как видимость целевого класса для класса-источника, обеспечиваемая с помощью атрибутов (атрибут класса-источника является ссылкой на экземпляр целевого класса)

Слайд 38





Ассоциации между классами
Описание слайда:
Ассоциации между классами

Слайд 39





Отношения зависимости
Означает наличие у одного из классов информации о другом классе
Изображается пунктирной линией
Объект класса Register получает информацию об объекте  класса ProductSpecification в виде возвращаемого значения метода getSpecification, а объект класса Sale – через параметр метода makeLineItem
Описание слайда:
Отношения зависимости Означает наличие у одного из классов информации о другом классе Изображается пунктирной линией Объект класса Register получает информацию об объекте класса ProductSpecification в виде возвращаемого значения метода getSpecification, а объект класса Sale – через параметр метода makeLineItem

Слайд 40





РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ
Описание слайда:
РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ

Слайд 41





Программный код
На заключительном этапе итерации проектное решение отображается в программный код
При этом производится описание классов с добавлением атрибутов-ссылок, а также  записывается реализация методов на основе соответствующих диаграмм взаимодействия
Описание слайда:
Программный код На заключительном этапе итерации проектное решение отображается в программный код При этом производится описание классов с добавлением атрибутов-ссылок, а также записывается реализация методов на основе соответствующих диаграмм взаимодействия

Слайд 42





Порядок реализации классов
Классы нужно реализовывать и тестировать в рамках модулей, начиная с минимально сцепленных
В нашем проекте это классы Payment и ProductSpecification
Затем реализуются классы со все большей степенью сцепления
Примеры реализации
Описание слайда:
Порядок реализации классов Классы нужно реализовывать и тестировать в рамках модулей, начиная с минимально сцепленных В нашем проекте это классы Payment и ProductSpecification Затем реализуются классы со все большей степенью сцепления Примеры реализации

Слайд 43





Вариант последовательности реализации
Описание слайда:
Вариант последовательности реализации

Слайд 44





Тестирование модулей
Осуществляется с использованием утилит модульного тестирования (NUnit,  JUnit  и т.д.)
Широко используемой является практика программирования на основе тестирования, когда тесты пишутся до написания кода
Тем самым обеспечивается  тотальный и неформальный характер тестирования
Описание слайда:
Тестирование модулей Осуществляется с использованием утилит модульного тестирования (NUnit, JUnit и т.д.) Широко используемой является практика программирования на основе тестирования, когда тесты пишутся до написания кода Тем самым обеспечивается тотальный и неформальный характер тестирования

Слайд 45





Синхронизация артефактов
На этапе реализации программного кода проясняются многие детали, не учтенные на стадиях анализа и проектирования
Поэтому после завершения кодирования необходимо произвести синхронизацию основных артефактов – концептуальной модели, проектного решения и программного кода
Описание слайда:
Синхронизация артефактов На этапе реализации программного кода проясняются многие детали, не учтенные на стадиях анализа и проектирования Поэтому после завершения кодирования необходимо произвести синхронизацию основных артефактов – концептуальной модели, проектного решения и программного кода

Слайд 46





Переход к новой итерации
Описание слайда:
Переход к новой итерации

Слайд 47





ВТОРАЯ ИТЕРАЦИЯ
Описание слайда:
ВТОРАЯ ИТЕРАЦИЯ

Слайд 48





Задачи
Реализация поддержки внешних служб (начисление налоговых платежей)
Сложные правила вычисления стоимости
Подключаемые бизнес-правила
Описание слайда:
Задачи Реализация поддержки внешних служб (начисление налоговых платежей) Сложные правила вычисления стоимости Подключаемые бизнес-правила

Слайд 49





Задача1: Поддержка внешних служб
Каждая из систем начисления налоговых платежей имеет собственный интерфейс и обладает собственным поведением
Необходимо обеспечить возможность подключения разрабатываемой системы к любой из систем начисления налоговых платежей
Описание слайда:
Задача1: Поддержка внешних служб Каждая из систем начисления налоговых платежей имеет собственный интерфейс и обладает собственным поведением Необходимо обеспечить возможность подключения разрабатываемой системы к любой из систем начисления налоговых платежей

Слайд 50





Шаблон Adapter
Проблема Как обеспечить взаимодействие с различными внешними системами?
Решение  Преобразовать интерфейс внешней системы к другому виду с помощью промежуточного объекта-адаптера
Описание слайда:
Шаблон Adapter Проблема Как обеспечить взаимодействие с различными внешними системами? Решение Преобразовать интерфейс внешней системы к другому виду с помощью промежуточного объекта-адаптера

Слайд 51





Пример
Описание слайда:
Пример

Слайд 52





Шаблон Factory
Проблема Какой класс должен  отвечать за создание объектов-адаптеров? Как определять тип создаваемого адаптера?
Решение Создать искусственный (не представляющий понятия предметной области) объект и назначить ему группу обязанностей по созданию других объектов
Описание слайда:
Шаблон Factory Проблема Какой класс должен отвечать за создание объектов-адаптеров? Как определять тип создаваемого адаптера? Решение Создать искусственный (не представляющий понятия предметной области) объект и назначить ему группу обязанностей по созданию других объектов

Слайд 53





Обоснование решения
Действительно, если бы обязанности по созданию новых объектов были поручены одному из объектов уровня предметной области (например, Register), то это нарушило бы принцип разделения обязанностей
Кроме того, это уменьшило бы связность соответствующего объекта уровня предметной области
Описание слайда:
Обоснование решения Действительно, если бы обязанности по созданию новых объектов были поручены одному из объектов уровня предметной области (например, Register), то это нарушило бы принцип разделения обязанностей Кроме того, это уменьшило бы связность соответствующего объекта уровня предметной области

Слайд 54





Объект-фабрика
Описание слайда:
Объект-фабрика

Слайд 55





Объект-фабрика
Методы класса-фабрики возвращают результат с типом интерфейса, а не класса
Это позволяет объекту-фабрике создавать любую реализацию интерфейса 
Информацию о типе создаваемого адаптера объект-фабрика должен получать из внешнего источника
Описание слайда:
Объект-фабрика Методы класса-фабрики возвращают результат с типом интерфейса, а не класса Это позволяет объекту-фабрике создавать любую реализацию интерфейса Информацию о типе создаваемого адаптера объект-фабрика должен получать из внешнего источника

Слайд 56





Шаблон Singleton
Использование объекта-фабрики порождает новую проблему проектирования – кто должен создавать саму фабрику и как получить к ней доступ?
При этом очевидно, что в рамках приложения нужен всего лишь один экземпляр фабрики, доступ к которому возможен для любых объектов
Описание слайда:
Шаблон Singleton Использование объекта-фабрики порождает новую проблему проектирования – кто должен создавать саму фабрику и как получить к ней доступ? При этом очевидно, что в рамках приложения нужен всего лишь один экземпляр фабрики, доступ к которому возможен для любых объектов

Слайд 57





Шаблон Singleton
Проблема Как обеспечить взаимодействие с объектом-фабрикой различных объектов системы, используя при этом единственную точку доступа?
Решение  Определить статический метод класса, возвращающий объект-фабрику
Описание слайда:
Шаблон Singleton Проблема Как обеспечить взаимодействие с объектом-фабрикой различных объектов системы, используя при этом единственную точку доступа? Решение Определить статический метод класса, возвращающий объект-фабрику

Слайд 58





Шаблон Singleton
Описание слайда:
Шаблон Singleton

Слайд 59





Реализация метода getInstance()
	// статический метод
	public static synchronized ServicesFactory getInstance( )
 	{
		if (instance == null)
			instance = new ServicesFactory( );
		return instance;
	}
Описание слайда:
Реализация метода getInstance() // статический метод public static synchronized ServicesFactory getInstance( ) { if (instance == null) instance = new ServicesFactory( ); return instance; }

Слайд 60





Пример обращения к объекту-фабрике
public class Register
{
	public void initialize ( )
 	{	…выполняем необходимые действия
		// обращаемся к объекту-фабрике через вызов 
		// статического метода getInstance ( )
	   ServicesFactory. getInstance ( ). getAccountAdapter();
	 …выполняем необходимые действия
	}
		// другие методы
}
Описание слайда:
Пример обращения к объекту-фабрике public class Register { public void initialize ( ) { …выполняем необходимые действия // обращаемся к объекту-фабрике через вызов // статического метода getInstance ( ) ServicesFactory. getInstance ( ). getAccountAdapter(); …выполняем необходимые действия } // другие методы }

Слайд 61





Задача2: Сложные правила вычисления стоимости
Проблема заключается в обеспечении возможности вычисления стоимости покупки с учетом различного рода скидок (сезонных, постоянным клиентам и т.д.)
Политика скидок может изменяться с течением времени, причем достаточно часто
Описание слайда:
Задача2: Сложные правила вычисления стоимости Проблема заключается в обеспечении возможности вычисления стоимости покупки с учетом различного рода скидок (сезонных, постоянным клиентам и т.д.) Политика скидок может изменяться с течением времени, причем достаточно часто

Слайд 62





Шаблон Strategy
Проблема Как спроектировать надежные, но изменяемые алгоритмы (стратегии)? Каким способом вносить изменения?
Решение  Определить для каждого алгоритма отдельный класс со стандартным интерфейсом
Описание слайда:
Шаблон Strategy Проблема Как спроектировать надежные, но изменяемые алгоритмы (стратегии)? Каким способом вносить изменения? Решение Определить для каждого алгоритма отдельный класс со стандартным интерфейсом

Слайд 63





Шаблон Strategy
Описание слайда:
Шаблон Strategy

Слайд 64





Терминология
Объекты классов, реализующих различные стратегии называются объектами стратегий
Объект, к которому применяется варьируемый алгоритм называется контекстным объектом
В нашем примере контекстным объектом является объект класса Sale
Описание слайда:
Терминология Объекты классов, реализующих различные стратегии называются объектами стратегий Объект, к которому применяется варьируемый алгоритм называется контекстным объектом В нашем примере контекстным объектом является объект класса Sale

Слайд 65





Взаимодействие объекта-стратегии с объектом Sale
При отправке объекту класса Sale сообщения getTotal он делегирует часть своих задач объекту стратегии
При этом контекстный объект передает объекту стратегии ссылку на самого себя (this) для обеспечения параметрической видимости
Описание слайда:
Взаимодействие объекта-стратегии с объектом Sale При отправке объекту класса Sale сообщения getTotal он делегирует часть своих задач объекту стратегии При этом контекстный объект передает объекту стратегии ссылку на самого себя (this) для обеспечения параметрической видимости

Слайд 66





Взаимодействие объекта-стратегии с объектом Sale
Описание слайда:
Взаимодействие объекта-стратегии с объектом Sale

Слайд 67





Создание объектов стратегий
Так же, как и в случае адаптеров, создание объектов стратегий следует осуществлять на основе шаблона Factory 
Единственный объект-фабрика должен получать и выполнять запрос на создание объекта стратегии определенного типа
Описание слайда:
Создание объектов стратегий Так же, как и в случае адаптеров, создание объектов стратегий следует осуществлять на основе шаблона Factory Единственный объект-фабрика должен получать и выполнять запрос на создание объекта стратегии определенного типа

Слайд 68





Фабрика стратегий
Описание слайда:
Фабрика стратегий

Слайд 69





Создание объекта стратегии
Описание слайда:
Создание объекта стратегии

Слайд 70





Почему две фабрики
«Каждому виду объектов своя фабрика» – такой подход позволяет понизить степень связанности в системе
Объект-фабрика ServicesFactory имеет дело только с объектами-адаптерами, а объект-фабрика PricingStrategyFactory – с объектами-стратегиями
Описание слайда:
Почему две фабрики «Каждому виду объектов своя фабрика» – такой подход позволяет понизить степень связанности в системе Объект-фабрика ServicesFactory имеет дело только с объектами-адаптерами, а объект-фабрика PricingStrategyFactory – с объектами-стратегиями

Слайд 71





Задача 3:Подключение бизнес-правил
Требуется подключить правила, отменяющие некоторые действия, например:
при наличии подарочного сертификата может быть приобретен только один товар – все операции enterItem, кроме первой должны быть отменены;
при проведении благотворительной акции могут приобретаться товары стоимостью не выше некоторой пороговой
Описание слайда:
Задача 3:Подключение бизнес-правил Требуется подключить правила, отменяющие некоторые действия, например: при наличии подарочного сертификата может быть приобретен только один товар – все операции enterItem, кроме первой должны быть отменены; при проведении благотворительной акции могут приобретаться товары стоимостью не выше некоторой пороговой

Слайд 72





Генератор правил
Реализацию тех или иных бизнес-правил целесообразно выделить в особую подсистему – «генератор правил»
Правила и их реализация подвержены частым изменениям, поэтому связывание с этой подсистемой должно быть минимальным
Описание слайда:
Генератор правил Реализацию тех или иных бизнес-правил целесообразно выделить в особую подсистему – «генератор правил» Правила и их реализация подвержены частым изменениям, поэтому связывание с этой подсистемой должно быть минимальным

Слайд 73





Шаблон Facade
Проблема Как обеспечить унифицированный интерфейс с набором разрозненных  интерфейсов и реализаций, подверженных частым изменениям
Решение Определить одну точку взаимодействия с подсистемой – фасадный объект и возложить на него обязанность по взаимодействию с компонентами подсистемы
Описание слайда:
Шаблон Facade Проблема Как обеспечить унифицированный интерфейс с набором разрозненных интерфейсов и реализаций, подверженных частым изменениям Решение Определить одну точку взаимодействия с подсистемой – фасадный объект и возложить на него обязанность по взаимодействию с компонентами подсистемы

Слайд 74





Шаблон Facade
В данном случае можно определить подсистему «генератор правил», которую можно реализовать либо на основе шаблона Strategy, либо с помощью интерпретатора правил, считывающих и интерпретирующих набор правил if – then
Фасадный объект для такой подсистемы можно назвать RuleEngineFacade
Описание слайда:
Шаблон Facade В данном случае можно определить подсистему «генератор правил», которую можно реализовать либо на основе шаблона Strategy, либо с помощью интерпретатора правил, считывающих и интерпретирующих набор правил if – then Фасадный объект для такой подсистемы можно назвать RuleEngineFacade

Слайд 75





Пример обращения к объекту фасада
public class Sale
{	public void makeLineItem (  )
	{
		SalesLineItem sli = new SalesLineItem (spec, quant);
		// обращение к фасадному объекту
		if (RuleEngineFacade.getInstance( ).isInvalid(sli, this))
			return;
		lineItems.add(sli);
	}
	// другие методы
}
Описание слайда:
Пример обращения к объекту фасада public class Sale { public void makeLineItem ( ) { SalesLineItem sli = new SalesLineItem (spec, quant); // обращение к фасадному объекту if (RuleEngineFacade.getInstance( ).isInvalid(sli, this)) return; lineItems.add(sli); } // другие методы }

Слайд 76





Конец лекции
Описание слайда:
Конец лекции



Похожие презентации
Mypresentation.ru
Загрузить презентацию