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

More Related Content

Similar to CRC cards / Minsk PHP MeetUp #8

Планирование по информатике в 5-6 классах
Планирование по информатике в 5-6 классахПланирование по информатике в 5-6 классах
Планирование по информатике в 5-6 классахСергей Афонин
 
Построение Secure Development Lifecycle
Построение Secure Development Lifecycle Построение Secure Development Lifecycle
Построение Secure Development Lifecycle Vlad Styran
 
Унификация взаимодействия
Унификация взаимодействияУнификация взаимодействия
Унификация взаимодействияNikita Efimov
 
Концепция продукта
Концепция продуктаКонцепция продукта
Концепция продуктаYury Kupriyanov
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.jsTimur Shemsedinov
 
Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies Anton Anokhin
 
Дополнительная общеразвивающая программа «Мастерская scratch»
Дополнительная общеразвивающая программа «Мастерская scratch»Дополнительная общеразвивающая программа «Мастерская scratch»
Дополнительная общеразвивающая программа «Мастерская scratch»rnmc7
 
как создавать прототипы
как создавать прототипыкак создавать прототипы
как создавать прототипыAlexey Korotkov
 

Similar to CRC cards / Minsk PHP MeetUp #8 (9)

Планирование по информатике в 5-6 классах
Планирование по информатике в 5-6 классахПланирование по информатике в 5-6 классах
Планирование по информатике в 5-6 классах
 
Построение Secure Development Lifecycle
Построение Secure Development Lifecycle Построение Secure Development Lifecycle
Построение Secure Development Lifecycle
 
Унификация взаимодействия
Унификация взаимодействияУнификация взаимодействия
Унификация взаимодействия
 
Концепция продукта
Концепция продуктаКонцепция продукта
Концепция продукта
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
 
буклет6
буклет6буклет6
буклет6
 
Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies
 
Дополнительная общеразвивающая программа «Мастерская scratch»
Дополнительная общеразвивающая программа «Мастерская scratch»Дополнительная общеразвивающая программа «Мастерская scratch»
Дополнительная общеразвивающая программа «Мастерская scratch»
 
как создавать прототипы
как создавать прототипыкак создавать прототипы
как создавать прототипы
 

CRC cards / Minsk PHP MeetUp #8

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