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