Практические задачи для студентов, которые изучают [закрытые] шаблоны разработки

6
задан Bart 27 September 2012 в 11:31
поделиться

6 ответов

Я недавно взял класс, который имел аспект дизайна к нему (в половине семестра, мы потратили, может быть, 3-4 недели, проходящие над узорами дизайна).

Многие наши практики, и наша курсовая работа состояла из использования JHOTDRAW , чтобы исследовать использование шаблонов (а также как разработать рамки). JHOTDRAW является основой для структурированных редакторов рисования E.G. Направленные графики или пример, который мы использовали, было для нанесения rereery. Есть несколько шаблонов, которые должны быть поняты для использования JHOTDRAW. IIRC используются творческие узоры, включали хотя бы абстрактные фабрики и узор прототипа.

Это может занять некоторое время, чтобы определить, какие части JHOTDRAW подходят для вашего курса, но Javadoc делает это полезным, идентифицируя шаблон используемого класса и такое, как.

Как указано в другом ответе, примеры в голове первые шаблоны проектирования также превосходны, мы тоже использовали их в нашем курсе (уровень бакалавриата годом наличия).

2
ответ дан 9 December 2019 в 20:43
поделиться

Я нашел примеры в Книге « Глава Первые шаблоны дизайна « Очень легко понять еще достаточно, чтобы понять шаблоны.

5
ответ дан 9 December 2019 в 20:43
поделиться

Я полагаю, что вы должны просто придумать некоторые сценарии и попросить студентов, которые разработали шаблон (ы), которые они будут использовать для каждого.

Например: у нас есть объект, который представляет файл и имеет методы открытия и закрытия. Мы хотим, чтобы необязательно зарегистрировать сообщение всякий раз, когда приложения вызовы открываются или закрыты.

Другой пример: у нас есть система ниже по течению, которая реагирует очень медленно. Мы хотим разработать компонент, который повернет запрашивает запросы на нижестоящую систему и подавать их один на один на заднем плане.

2
ответ дан 9 December 2019 в 20:43
поделиться

Если вы могли бы подумать о проекте, который может использовать много моделей в разных точках, которые могут дать им что-то немного более мясистое, чтобы учиться, в то же время в очередь, в то время как указывает узоры. Я думаю о чем-то вроде простого HTTP-сервера, где вы можете применить паттерны в обработке запросов, регистрации, обслуживание сеансов, все такого рода вещей, поэтому вы можете преподавать различные в качестве индивидуальных тем, но выйти с относительно хорошо Структурированное целое и тот, который дает практический опыт использования различных моделей, которые вы изучаете и их взаимодействия.

2
ответ дан 9 December 2019 в 20:43
поделиться

Единственный способ, которым я могу видеть эту работу, если вы не можете сделать продавцом абстрактным, это:

1) в Salesperson.Givebonus (...) использовать отражение для определения Если «это» является продавцом, или полученный класс а) если не полученный класс, выполняйте текущий код в Salesperson.GiveBonus б) в противном случае вызов сдачи. (Объявите это как виртуально, и сделайте вспомогательное представление в продаже, бросьте исключение.)

Нарисуйте здесь, отражение медленное. Нет ошибки времени компиляции, если сдачи не заявлены, и т. Д.

-121--1152844-- 1152844-

Следуйте до комментариев:

Мои первоначальные намерения были просто предложить проблемную область, посредством которого вы можете сломать каждую часть всей системы в более значимые части, в результате чего ученики могли четко видеть нужно для каждого шаблона. Я полагал вместо нескольких несвязанных задач, которые вы могли бы следовать этой идее для нескольких более крупных задач и позволить им увидеть, как все это будет работать вместе. Это может быть слишком много для студента теперь, когда я думаю об этом, и это не было действительно решать вашу проблему.

Вот настоящий образ жизни

Sale(Integer_quantity, ICatalogItem _item, IDiscount _discount) implements ITransaction
Refund(Double _amount, IOrderNumber _orderNumer) implements ITransaction

Это пришло, потому что кто-то решил использовать волшебное число «-1», чтобы указать без продажи. Вы можете себе представить, что произошло, когда люди ставят в возврат на 1 доллар. (1134984], конечно, был, конечно, стратегический узор для расчета цены продажи. У нас был абстрактный фабричный объект для создания всех продаж.

1
ответ дан 9 December 2019 в 20:43
поделиться
  1. Разбираясь с JHotDraw , я нашел этот академический инструмент - DP Miner .
    Предполагается, что будет анализировать систему и искать классы, соответствующие некоторым шаблонам проектирования . Он принимает файл xml (xmi) , который описывает систему (файл может быть сгенерирован Rational Rose после реинжиниринга кода, я использовал Enterprize Архитектор для этого). Автономная версия инструмента может обнаруживать только 4 жестко запрограммированных шаблона.
    Инструмент также доступен как плагин для Eclipse. Таким образом, эта версия принимает также XML-файл, который описывает шаблон и использует это описание для обнаружения его в системе. Итак, идея состоит в том, чтобы попросить учащихся создать XML-описания для других шаблонов и обнаружить их в разных системах .
    Однако вчера я потратил около 5 часов, пытаясь заставить все это работать ... Мне удалось получить результаты только из автономной версии, используя их файл описания теста для JHotDraw (я сгенерировал свой собственный xml с помощью Enterprise Architect, но не дал результатов). Возможно, позже я удалось заставить его работать на меня и обновлю этот пост.

  2. "Шаблоны проектирования C # 3.0" Джудит Бишоп содержит упражнения для всех классических шаблонов проектирования.

0
ответ дан 9 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: