Упражнения для этюдов/кодов OOD/OOP
Я искал в Интернете какое-то время. Я ищу небольшие примеры упражнений для практики OOD (& для некоторых внутренних семинаров TDD).
Если есть одно место, где эта потребность подается, пожалуйста, укажите мне это.. и закройте этот вопрос
Ограничения:
- Язык-агностическая проблема реального мира
- Маленький: что-то, что требуется от часа до двух в макс, чтобы решить (или имеет подчасти, которые могут соответствовать этому ограничению).
- Не сглаженный алгоритм: не следует сосредоточиться на решении вычислительной задачи. (Есть несколько сайтов, которые обслуживают эту категорию.) Привлекайте > 2 взаимодействующих объекта.
- Решено несколькими людьми, желательно сами: доброта проверена. Ссылки предпочтительны. Пожалуйста, не публикуйте то, что может быть хорошим упражнением... субъективным
Аналогичный вопрос SO 60109, но ответы не соответствуют моей потребности здесь. Я обнаружил, что я потерял мое прикосновение (обманывал идеи) с помощью OOD после длительного контакта с дневной работой. Нужно вернуть его.
Обновление: Собираемся ли мы из коротких упражнений ООП? Я надеялся, что у меня будет куча. Однако мои веб-поиски (это упражнение по разложению при формулировании правильной строки поиска), и отсутствие ответов здесь, похоже, указывает на другое. Возможно, я отправился в SO в плохое время.. в этом случае наткнулся на эту тему для получения дополнительных ответов.
Ответы
Ответ 2
Jeff Bay Object Calisthenics. После этого улучшатся ваши навыки OO.
Ответ 3
Ответ 4
Bill Wake таблица TDD-задача
Ответ 5
Дейв Томас CodeKata
Доброта,
Dan
Ответ 6
Из книги AGPPnP от Robert Martin aka UncleBob
CoffeeMaker Mark IV - Страница 2 содержит описание проблемы
Ответ 7
Практическая проблема вопросника
Проблема, с которой я работал в нескольких разных задачах, - это создание некоторых общих, основанных на данных методов опроса/анкетирования. Это не очень сложный, но у меня достаточно интересных способов стать хорошей проблемой практики OOD, я думаю. Это определенно реальный мир и появляется во многих местах.
Вы можете начать думать о том, как структурировать Survey
. Это, очевидно, состоит из Questions
, но вы также хотите Categories
? Может ли Question
иметь подзапросы? Может ли подзапрос иметь подзапросы? Как глубоко вы можете идти?
Вопрос, вероятно, должен иметь потенциал Scores
. Какие типы баллов у вас есть? Какие типы вопросов вы можете иметь (множественный выбор, множественный ответ, freetext и т.д.)?
Как только вы получите базовую бизнес-логику, вы также можете подумать о том, как вы показываете опрос. Может быть, у вас есть SurveyRenderer
и QuestionRenderer
? Как вы решаете, как обрабатывать разные типы вопросов? (Возможно, вы используете шаблон стратегии... как в этот вопрос SO). Как вы можете сделать версию опроса только для чтения?
Вы также можете думать о настойчивости. Как вы записываете ответы на пустой вопросник? Как ваш объектный граф опроса попадает в базу данных (или в другое хранилище) и наоборот?