🗊Презентация Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов

Нажмите для полного просмотра!
Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №1Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №2Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №3Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №4Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №5Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №6Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №7Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №8Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №9Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №10Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №11Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №12Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №13Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №14Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №15Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №16Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №17Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №18Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №19Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №20Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №21Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №22Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №23Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов, слайд №24

Содержание

Вы можете ознакомиться и скачать презентацию на тему Принцип единственной обязанности. Адаптер. Принцип разделения интерфейсов. Доклад-сообщение содержит 24 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





Осенний семестр 2017
Преподаватель: асс. каф. Чуканов В.С
Описание слайда:
Осенний семестр 2017 Преподаватель: асс. каф. Чуканов В.С

Слайд 2





Содержание
Принцип единственной обязанности
Адаптер
Соединение интерфейсов
Адаптер класса и адаптер объекта
Применение адаптера
Принцип разделения интерфейсов
Заключение
Описание слайда:
Содержание Принцип единственной обязанности Адаптер Соединение интерфейсов Адаптер класса и адаптер объекта Применение адаптера Принцип разделения интерфейсов Заключение

Слайд 3





Принцип Единственной Обязанности
АТД – абстрактный тип данных
Замкнутое множество данные + методы
Single Responsibility Principle (SRP)
Класс должен иметь лишь одну причину для изменения
Обязанность = ось изменения
Атомарный набор методы + данные = АТД
Принцип SRP: каждый класс реализует 1 АТД
Описание слайда:
Принцип Единственной Обязанности АТД – абстрактный тип данных Замкнутое множество данные + методы Single Responsibility Principle (SRP) Класс должен иметь лишь одну причину для изменения Обязанность = ось изменения Атомарный набор методы + данные = АТД Принцип SRP: каждый класс реализует 1 АТД

Слайд 4





SRP: Пример Rectangle
Rectangle
Используется для расчета площади и визуализации
Две обязанности = 2 АТД
Какие проблемы это может вызвать?
Описание слайда:
SRP: Пример Rectangle Rectangle Используется для расчета площади и визуализации Две обязанности = 2 АТД Какие проблемы это может вызвать?

Слайд 5





SRP: Решение Примера Rectangle 
Избыточная связь между приложениями выч. геом и визуализации
Изменение в модуле выч. геом могло привести к необходимости пересобирать модуль визуализации
Решение: разделить обязанности Rectangle по двум классам
Описание слайда:
SRP: Решение Примера Rectangle Избыточная связь между приложениями выч. геом и визуализации Изменение в модуле выч. геом могло привести к необходимости пересобирать модуль визуализации Решение: разделить обязанности Rectangle по двум классам

Слайд 6





SRP: Пример Modem
Modem
Интерфейс сетевого взаимодействия
Описание слайда:
SRP: Пример Modem Modem Интерфейс сетевого взаимодействия

Слайд 7





SRP: Пример Modem
Разделение обязанностей не всегда является необходимым
Особенности оборудования/ОС могут обуславливать слияние обязанностей в одном классе
Определяется постановкой задачи и возможностью изменения обязанностей независимо
Разделение обязанностей может быть реализовано с помощью паттернов Фасад (Facade) и Заместитель (Proxy)
Описание слайда:
SRP: Пример Modem Разделение обязанностей не всегда является необходимым Особенности оборудования/ОС могут обуславливать слияние обязанностей в одном классе Определяется постановкой задачи и возможностью изменения обязанностей независимо Разделение обязанностей может быть реализовано с помощью паттернов Фасад (Facade) и Заместитель (Proxy)

Слайд 8





Шаблон Проектирования: Адаптер
Позволяет повторно использовать реализованную функциональность при несовместимых интерфейсах
Технически – переадресация вызова от одного интерфейса к другому
Пример
Имеется реализованный в библиотеке класс для генерации случайных, равномерно распределенных чисел в интервале [0, 1]
Необходимо написать класс для генерации чисел в интервале [0, 100]
Описание слайда:
Шаблон Проектирования: Адаптер Позволяет повторно использовать реализованную функциональность при несовместимых интерфейсах Технически – переадресация вызова от одного интерфейса к другому Пример Имеется реализованный в библиотеке класс для генерации случайных, равномерно распределенных чисел в интервале [0, 1] Необходимо написать класс для генерации чисел в интервале [0, 100]

Слайд 9





Пример Адаптера: Код Библиотечных Классов
Описание слайда:
Пример Адаптера: Код Библиотечных Классов

Слайд 10





Пример Адаптера: Код Библиотечных Классов (2)
Описание слайда:
Пример Адаптера: Код Библиотечных Классов (2)

Слайд 11





Пример Адаптера: Код Целевого Класса
Решение
Объявляем интерфейс класса для генерации чисел в заданном диапазоне
Объявляем виртуальный метод getValue()
Создаем наследника с реализацией виртуального метода getValue()
Реализация может адаптировать как интерфейсный метод, так и быть привязанной к одной выбранной реализации
Адаптер объекта VS адаптер класса
Описание слайда:
Пример Адаптера: Код Целевого Класса Решение Объявляем интерфейс класса для генерации чисел в заданном диапазоне Объявляем виртуальный метод getValue() Создаем наследника с реализацией виртуального метода getValue() Реализация может адаптировать как интерфейсный метод, так и быть привязанной к одной выбранной реализации Адаптер объекта VS адаптер класса

Слайд 12





Адаптер: Решение
Интерфейс класса
Описание слайда:
Адаптер: Решение Интерфейс класса

Слайд 13





Адаптер Класса
Реализация адаптера
Описание слайда:
Адаптер Класса Реализация адаптера

Слайд 14





Адаптер Объекта
Реализация адаптера
Описание слайда:
Адаптер Объекта Реализация адаптера

Слайд 15





Принцип Разделения Интерфейсов
«Жирные» интерфейсы
Состоят из множества несцепленных функций
Реализуют более 1 АТД
Перегруженные функциями интерфейсы приводят к жесткости, хрупкости и тд
Рассмотрим класс Door
Описание слайда:
Принцип Разделения Интерфейсов «Жирные» интерфейсы Состоят из множества несцепленных функций Реализуют более 1 АТД Перегруженные функциями интерфейсы приводят к жесткости, хрупкости и тд Рассмотрим класс Door

Слайд 16





«Загрязнение» Интерфейса
Новое требование
Новый тип дверей: вызывают сигнал тревоги, если слишком долго открыты
Класс TimedDoor
Поддержка абстракции TimerClient
Класс, реагирующий на истечение времени таймера
Описание слайда:
«Загрязнение» Интерфейса Новое требование Новый тип дверей: вызывают сигнал тревоги, если слишком долго открыты Класс TimedDoor Поддержка абстракции TimerClient Класс, реагирующий на истечение времени таймера

Слайд 17





Взаимодействие TimedDoor & Timer
Описание слайда:
Взаимодействие TimedDoor & Timer

Слайд 18





Анализ
Door теперь зависит от TimerClient
Изначальная абстракция Door не имела подобной зависимости
Реализации Door, не требующие отсчета времени, будут обязаны реализовать метод TimeOut()
Описание слайда:
Анализ Door теперь зависит от TimerClient Изначальная абстракция Door не имела подобной зависимости Реализации Door, не требующие отсчета времени, будут обязаны реализовать метод TimeOut()

Слайд 19





Жесткость и Вязкость Решения
Новое требование – регистрация более одного запроса на истечение времени
Любое изменение TimerClient повлечет изменения во всех объектах Door
Описание слайда:
Жесткость и Вязкость Решения Новое требование – регистрация более одного запроса на истечение времени Любое изменение TimerClient повлечет изменения во всех объектах Door

Слайд 20





Решение: Использование Адаптера
Адаптер
Разделяет иерархии Door & TimerClient
«Транслирует» интерфейс TimerClient в TimedDoor
Описание слайда:
Решение: Использование Адаптера Адаптер Разделяет иерархии Door & TimerClient «Транслирует» интерфейс TimerClient в TimedDoor

Слайд 21





Решение: Использование Адаптера (2)
Описание слайда:
Решение: Использование Адаптера (2)

Слайд 22





Анализ
Каждый вызов регистрации запроса на таймер вынуждает создать объект-адаптер
DoorTimerAdapter doorAdapter(door);
timer->Register(timeOut, timeOutId, &doorAdapter);
Какое еще существует решение?
Описание слайда:
Анализ Каждый вызов регистрации запроса на таймер вынуждает создать объект-адаптер DoorTimerAdapter doorAdapter(door); timer->Register(timeOut, timeOutId, &doorAdapter); Какое еще существует решение?

Слайд 23





Решение: Множественное Наследование
Описание слайда:
Решение: Множественное Наследование

Слайд 24





Заключение
Принцип единственной обязанности
Каждый класс должен реализовывать лишь одну «ось изменения»
Адаптер
Паттерн проектирования для улучшения коэф. повторного использования кода
Переадресовывает операции одного интерфейса в другой
Принцип разделения интерфейсов
«Жирные» интерфейсы приводят к вязкости и жесткости
Интерфейсы могут быть разделены посредством адаптера или множественного наследования
Описание слайда:
Заключение Принцип единственной обязанности Каждый класс должен реализовывать лишь одну «ось изменения» Адаптер Паттерн проектирования для улучшения коэф. повторного использования кода Переадресовывает операции одного интерфейса в другой Принцип разделения интерфейсов «Жирные» интерфейсы приводят к вязкости и жесткости Интерфейсы могут быть разделены посредством адаптера или множественного наследования



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