Your SlideShare is downloading. ×
0
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

GRASP – паттерны Объектно-Ориентированного Проектирования

2,206

Published on

Published in: Engineering
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,206
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. GRASP Паттерны Объектно- Ориентированного Проектирования
  • 2. Обо мне Alexander Nemanov alexander@asoft4web.com Skype: asoft4web FB: https://www.facebook.com/alexander.nemanov
  • 3. Цель доклада • Сделать краткий обзор паттернов GRASP • Подтолкнуть Вас к их детальному изучению и применению на практике
  • 4. GRASP Ларман Крэг Применение UML и шаблонов проектирования
  • 5. Х.., Х… - и на продакшен Принципы ООП • Абстракция • Инкапсуляция • Наследование • Полиморфизм Проектирование Сначала определяются требования и создается модель предметной области, затем добавляются методы программных классов, описывающие передачу сообщений между объектами для удовлетворения требований.
  • 6. GRASP - определение General Responsibility Assignment Software Patterns общие образцы распределения обязанностей GRASP - паттерны, используемые в объектно- ориентированном проектировании для решения общих задач по назначению обязанностей классам и объектам
  • 7. GRASP Методический подход к объектному проектированию Паттерны • Information Expert (Информационный эксперт) • Creator (Создатель) • Controller (Контроллер) • Low Coupling (Слабая связанность) • High Cohesion (Сильное Сцепление) • Polymorphism (Полиморфизм) • Pure Fabrication (Чистая выдумка) • Indirection (Посредник) • Protected Variations (Сокрытие реализации)
  • 8. Information Expert Информационный эксперт Проблема: В системе должна аккумулироваться, рассчитываться и т. п. необходимая информация. Решение: Назначить обязанность аккумуляции информации, расчета и т. п. некоему классу (информационному эксперту), обладающему необходимой информацией. Рекомендации: Информационным экспертом может быть не один класс, а несколько.
  • 9. Information Expert
  • 10. Information Expert Преимущества • Поддерживает инкапсуляцию, то есть объекты используют свои собственные данные для выполнения поставленных задач • Поведение системы обеспечивается классами, содержащими требуемую информацию. Поддерживается High Cohesion Недостатки При проблемах со связыванием и зацеплением.
  • 11. Creator Проблема: "Кто" должен отвечать за создание экземпляров класса ? Решение: Назначить классу В обязанность создавать объекты другого класса А Рекомендации: применять паттерн если • Класс B содержит или агрегирует объекты A. • Класс B записывает экземпляры объектов A. • Класс B активно использует объекты A • Класс B обладает данными инициализации для объектов A
  • 12. Creator Преимущества • Использование этого паттерна не повышает связанности, поскольку созданный класс, как правило, виден только для класса - создателя. Недостатки Если процедура создания объекта достаточно сложная (например выполняется на основе некоего внешнего условия), логично использовать паттерн "Абстрактная Фабрика", то есть, делегировать обязанность создания объектов специальному классу.
  • 13. Low Coupling Низкая связанность Проблема: Как обеспечить низкую зависимость, незначительное влияние изменений и повысить возможность повторного использования? Решение: Распределить обязанности таким образом, чтобы степень связанности оставалась низкой.
  • 14. Low Coupling Низкая связанность
  • 15. Low Coupling Низкая связанность Преимущества: • Изменение компонентов мало сказывается на других объектах • Принципы работы и функции классов/компонентов можно понять, не изучая другие объекты • Удобство повторного использования
  • 16. High Cohesion Высокое зацепление Проблема: Как обеспечить возможность управления сложностью? Решение: Обеспечить распределение обязанностей с высокой степенью зацепления Пример: Если на класс "Регистрация" возлагать все новые и новые системные функции, связанные с системными операциями, то данный класс будет слишком перегружен и будет обладать низкой степенью зацепления.
  • 17. High Cohesion Высокое зацепление Преимущества: Классы с высокой степенью зацепления просты в поддержке и повторном использовании. Недостатки: Иногда бывает неоправданно использовать высокое зацепление для распределенных серверных объектов. В этом случае для обеспечения быстродействия необходимо создать несколько более крупных серверных объектов со слабым зацеплением.
  • 18. Pure Fabrication Чистая выдумка Проблема: Какой класс должен обеспечивать реализацию паттернов "Высокое зацепление", и "Низкая связанность"? Решение: Присвоить группу обязанностей с высокой степенью зацепления классу, который не представляет конкретного понятия из предметной области. Пример: Какой класс должен сохранять экземпляры класса "Продажа" в реляционной базе данных?
  • 19. Pure Fabrication Чистая выдумка Преимущества: Класс "ПостоянноеХранилище" будет обладать низкой степенью связывания и высокой степенью зацепления. Недостатки: Данным паттерном не следует злоупотреблять иначе все функции системы превратятся в объекты.
  • 20. GRASP Методический подход к объектному проектированию Паттерны • Information Expert (Информационный эксперт) • Creator (Создатель) • Controller (Контроллер) • Low Coupling (Слабая связанность) • High Cohesion (Сильное Сцепление) • Polymorphism (Полиморфизм) • Pure Fabrication (Чистая выдумка) • Indirection (Посредник) • Protected Variations (Сокрытие реализации)
  • 21. ?

×