Всем привет.
Сегодня на ленте предложил студентам второго курса интересную задачку на развитие объектного мышления. Студентам понравилось.
Задача сводилась к следующему. Есть человек и кинотеатр. Человек в кинотеатре может совершать различные действия. Например в кинотеатрах очень часто стоят игровые автоматы и человек может на них поиграть. Отсюда вытекает следующая модель:
Вы понимаете что модель можно еще больше детализировать! Создавать более верную иерархию и т.д.
Задача студентов - создать модель, позволяющую реализовать как можно больше процессов в кинотеатре. При этом никаких жестких требований не предъявлялось к модели. Студенты могли ее делать где угодно, как угодно. Не придерживались никаких нотаций. У объекта есть действие и есть свойства. При этом и действия и свойства можно описывать любым языком. Не делался упор на правильность модели, правильность наследования и т.п.
Результат превзошел мои ожидания. :-) Студенты с удовольствием включились в решение задачи и предложили очень интересные и разные модели! Например одна девушка, сделала очень детализированную модель. Где посетитель мог поздороваться с любым другим посетителем, мог потерять жетон или напиться в баре, а также пописать в туалете мимо и вахтерша его за это ругала! :-) Другие углубились в детализацию кинозала, третьи описали очень полно казино в кинотеатре, с возможностью играть в покер и даже возможные комбинации этой игры. :-) А один парень реализовал паттерн команда, даже не подозревая о существование оного. :-)
В общем было очень весело. :-)
На следующих занятиях я хочу продолжить такие тренинги, но каждый раз усложнять задачу. Например в следующий раз, мы уже будем описывать свойства и методы жестко. Есть свойство, у него есть тип. Есть метод, у него есть возвращаемый тип и параметры определенного типа. Дальше начнем рисовать модели в нотации UML и делать упор на правильном наследовании, а потом научимся извлекать интерфейсы и понимать что такое инкапсуляция.
В общем жду вашего мнения, советов и предложений. :-) Я сегодня в очень хорошем настроении! :-)
Извиняюсь за оффтоп, а в чем Вы рисуете UML-диаграммы?
ОтветитьУдалитьVisual Studio 2008, стандартный редактор диаграмм классов. Кнопка будет вверху Solution Explorer'а, при выборе сборки, пиктограмма в виде увеличительного стекла и диаграммы. :-)
ОтветитьУдалитьКода же будет курс? Не забыли, ждем, очень интересно!
ОтветитьУдалить