Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CRC cards / Minsk PHP MeetUp #8

887 views

Published on

В ООП важно исследовать взаимодействие объектов т.к. тогда мы исследуем процесс работы самой программы, а не просто данные которые есть в системе. Когда пользователь нажимает кнопку “Заказать”, программа оживляет объекты и они живут своею жизнью, взаимодействуют друг с другом, выполняют свою работу. Как нам представить этот процесс? Для этой задачи и были придуманы CRC-карты и CRC-диаграммы.

Published in: Technology
  • Be the first to comment

CRC cards / Minsk PHP MeetUp #8

  1. 1. CRC-карточки, используем в своей работе
  2. 2. Обо мне Alexander Nemanov alexander@asoft4web.com Skype: asoft4web FB: https://www.facebook.com/alexander.nemanov
  3. 3. Цель доклада • Раскрыть общие понятия о CRC-карточках • Показать как CRC-карточки используются в процессе Объектно-Ориентированного Проектирования / Моделирования • Применение CRC-карточки в рефакторинге
  4. 4. CRC-карты обзор CRC: Class – Responsibilities – Collaborators (класс – ответственность – взаимодействие) были взяты основные принципы объектно- ориентированного моделирования • CRC-карты используются для представления:  Классов  Ответственности класса  Взаимодействие между классами • CRC-карты это творческий подход к Объектному Ориентированному Моделированию • Карты создаются в процессе исследований сценариев работы программы, базирующейся на моделировании поведения системы
  5. 5. Создатели Уорд Каннингем Кент Бек • Октябрь, 1989 • OOPSLA '89 Conference proceedings on Object- oriented programming systems, languages and applications
  6. 6. Почему используем CRC-карты • Портативные… комп не нужен. Можно пользоваться в любом месте • Карты позволяют разработчикам прочувствовать и реально увидеть (на физическом уровне), как и какие объекты живут в разных сценариях • Карты полезны для обучения Объектно-Ориентированным парадигмам • Можно использовать в качестве наглядного пособия для обучения методологии разработки программного обеспечения
  7. 7. Основные понятия • Class: скелет объекта • Collaboration (Взаимодействие): процесс в котором несколько классов объединяются что бы обеспечить поведение более высокого уровня • Object (Объект): Сущность которая может делать какие-то вещи. Объект имеет: состояния, поведения и т.д. • Responsibility (Ответственность): Поведение объекта за которое он (объект) несет ответственность • Subclass (Подкласс): Класс который наследуется от одного или более классов • Superclass (Супер-класс): Класс от которого наследуются
  8. 8. CRC-карточка Order Проверить наличие позиции OrderLine Определить цену Customer Проверить правильность оплаты Shipping Отправить по адресу доставки Имя класса Взаимодействие Ответственность
  9. 9. CRC-карты в проектировании Задачи проектирования. Собрать всю необходимую информацию для начала имплементирования User Story. • Определить классы • Определить ответственность классов • Как и когда классы взаимодействуют друг с другом
  10. 10. Ищем классы Первая “C” (class) – класс • Первым шагом в объектно-ориентированном проектировании является выделение классов в предметной области  Это и есть первый шаг нашей “игры” • Изучаем User Story или доступное ТЗ  • Ищем существительные  Именно существительные идентифицируют будущие классы • Записываем имя класса вверху наших карточек • Раздаем карточки участникам нашей “игры”
  11. 11. “Игра” в CRC-карты • Команда разбивает User Story на отдельные сценарии • Рассматриваем один сценарий в одно время • Сценарий зачитывается • Когда объект определенного класса создается, мы поднимаем над столом его карточку  По объект “живет” мы держим карточку над столом • Пока разбирается сценарий все участники определяют:  Ответственность  Новые классы  Как классы взаимодействуют друг с другом • Все данные записываются на карточке • И так со всеми сценариями в User Story
  12. 12. Ответственность – ты где? “R” (Responsibilities): Ответственность – краткое описание того, что объект должен делать  Операция которую выполняет объект  Объем знаний который поддерживает объект  Какие-либо решения, которые объект принимает • Ищем глаголы в User Cases  Глаголы это – ответственность • Часть ответственности очевидна • Остальную ответственность определяем когда “играем” со сценариями  Не обязательно находить все ответственности до начало игры. Для старта достаточно нескольких
  13. 13. Иерархия классов, атрибуты • В процессе, как только становится видным что нужен: супер- класс, подкласс – добавляем их к нашим карточкам • На самом деле определить атрибуты классов это не задача CRC “игры”  Это детали имплементации  Если они находятся, записываем на обратной стороне карточки • Ищем прилагательные  Прилагательные – это атрибуты
  14. 14. Связи, связи, связи Вторая буква “C” взаимодействие (collaboration): другие классы с которыми работает рассматриваемый класс. • Когда подняты две и более карточки, ищем связь между этими классами • Крепкие связи между классами, если они вместе подняты на одном шаге сценария
  15. 15. CRC-карты в рефакторинге • Собираем из кода как можно больше информации и записываем на карточке • Эмулируем каждое поведение программы при помощи карточек – Вместо диаграмм взаимодействия – Быстрый просчет всех вариантов • Рефакторинг – Особенно обращаем внимание на ответственность Лучше один раз попробовать, чем услышать
  16. 16. ?

×