Личный кабинет

Объектно-ориентированное программирование для школьников

Как учить школьников объектно-ориентированному программированию
Александр Горячев ( Пользователь )
Цитата (Потопахин Виталий, 26.01.2011, 15:24) <{POST_SNAPBACK}>
Надо придумать задачу которая не просто будет посильна школьнику, но еще будет смысл решать её посредством ООП. Боюсь такую задачу вы не придумаете.

Смысл может быть разный.
Это не только ООП как борьба со сложностью, за счет группирования алгоритмов вокруг объектов.
Можно рассматривать ООП как способ развития программы.
Например, программируем простую игру. За счет ООП можем менять поведение отдельных объектов в этой игре.
Я понимаю, что если предложить небольшую обозримую ОО программу, тут же появятся возражения, что без ООП текст программы будет меньше. Я полагаю, что это возражение можно игнорировать, потому как размер текста не самоцель. Зато дальше можно показывать, как можно развивать эту программу по шагам. Именно потому что, с самого начала провели ООА, затем ОО проектирование и уже затем ООПрограммирование.
Станислав Михалкович ( Пользователь )
Цитата (Потопахин Виталий, 26.01.2011, 15:24) <{POST_SNAPBACK}>
Давайте. Но я за эту задачу не возьмусь. Надо придумать задачу которая не просто будет посильна школьнику, но еще будет смысл решать её посредством ООП. Боюсь такую задачу вы не придумаете.

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

ООП - это может быть любая задача, не имеющая однозначно алгоритмическую формулировку. Разумеется, Вы считаете, что ООП не нужно, событийное программирование не нужно - имеете право. У Вас - такой опыт. У нас - опыт другой. Мы учим школьников - не промышленному программированию - но элементам современного программирования. Объекты и события - одни из элементов, их одних недостаточно разумеется.

Я уже понял, что Вы задачу не хотите предлагать - может, кому-то еще это будет интересно - я готов обсуждать.
Эти технологии просты - проще многих алгоритмов. Их использование, на мой взгляд, повышает интерес у школьников к программированию, позволяя им создавать более сложные программы и пользоваться уже готовыми компонентами, а не делать всё с нуля. И здесь - очень важно правильно формировать восприятие. Если Вы говорите своим ученикам - ООП не нужно - то и вопроса нет - восприятия у них не будет.

Я не готов формулировать задачу сам и сам ее решать - это неправильно. Но всё-таки, если кому интересно - предлагайте.

Из известного и того, что связано с объектным восприятием мира - пожалуйста. Файл - область на диске и связанная с ним переменная в программе, над которой возможно выполнять ряд действий. Массив - набор объектов, которые имеют один тип, имеют доступ по индексу. Над массивом можно выполнять ряд хорошо известных алгоритмов - сортировать, инвертировать, суммировать и проч. Обычное число - объект, над которым можно совершать известные действия (операции), выводить его на экран, вводить с клавиатуры и проч.

Событийное программирование встречается повсеместно коль скоро Вы решите делать оконные приложения. Можно либо вообще не преподавать их детям со словами "вам это не нужно", а можно аккуратно возглавить этот процесс и объяснить, как это работает. Кроме того, событийным программированием пронизана система Scratch, которую не пытался использовать в школе только ленивый.

По поводу Шалыто - я не считаю автоматное программирование объектным - это всё-таки другой вид программирования. Несомненно, Шалыто - профессионал, и может объяснить автоматное программирование даже школьнику, но эта технология, на мой взгляд, слабо масштабируется. Здесь я займу позицию Виталия - я считаю, что школьнику это не нужно, потому как сложно.

Цитата (Александр Горячев, 26.01.2011, 20:01) <{POST_SNAPBACK}>
Например, программируем простую игру. За счет ООП можем менять поведение отдельных объектов в этой игре.
Я понимаю, что если предложить небольшую обозримую ОО программу, тут же появятся возражения, что без ООП текст программы будет меньше. Я полагаю, что это возражение можно игнорировать, потому как размер текста не самоцель. Зато дальше можно показывать, как можно развивать эту программу по шагам. Именно потому что, с самого начала провели ООА, затем ОО проектирование и уже затем ООПрограммирование.

Да, игра, конечно. так и просится. Вы правы - размер текста тут не играет роли.

Но я бы для начала предложил бы более простые задачи нежели игра. Потому что нам резонно могут сказать. что программированием игр простые школьники не должны заниматься :)
Дмитрий Колосов ( Пользователь )
Цитата (Михалкович Станислав, 26.01.2011, 23:35) <{POST_SNAPBACK}>
ООП - это может быть любая задача, не имеющая однозначно алгоритмическую формулировку. Разумеется, Вы считаете, что ООП не нужно, событийное программирование не нужно - имеете право. У Вас - такой опыт. У нас - опыт другой. Мы учим школьников - не промышленному программированию - но элементам современного программирования. Объекты и события - одни из элементов, их одних недостаточно разумеется.

Я уже понял, что Вы задачу не хотите предлагать - может, кому-то еще это будет интересно - я готов обсуждать.
Эти технологии просты - проще многих алгоритмов. Их использование, на мой взгляд, повышает интерес у школьников к программированию, позволяя им создавать более сложные программы и пользоваться уже готовыми компонентами, а не делать всё с нуля. И здесь - очень важно правильно формировать восприятие. Если Вы говорите своим ученикам - ООП не нужно - то и вопроса нет - восприятия у них не будет.

Я не готов формулировать задачу сам и сам ее решать - это неправильно. Но всё-таки, если кому интересно - предлагайте.

Из известного и того, что связано с объектным восприятием мира - пожалуйста. Файл - область на диске и связанная с ним переменная в программе, над которой возможно выполнять ряд действий. Массив - класс объектов, которые имеют один тип, имеют доступ по индексу и над которыми можно выполнять ряд хорошо известных алгоритмов - сортировать, инвертировать, суммировать и проч. Обычное число - объект, над которым можно совершать известные действия (операции), выводить его на экран, вводить с клавиатуры и проч.


По поводу Шалыто - я не считаю автоматное программирование объектным - это всё-таки другой вид программирования. Несомненно, Шалыто - профессионал, и может объяснить автоматное программирование даже школьнику, но эта технология, на мой взгляд, слабо масштабируется. Здесь я займу позицию Виталия - я считаю, что школьнику это не нужно, потому как сложно.


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

По Н.Д. Угриновичу в преподавании темы ООП ставятся, по моему мнению, следующие цели:
познакомить с кирпичиками GUI;
познакомить с современными RAD;
попрактиковаться в визуальном проектировании интерфейсов;
предъявить термины, относящиеся к области ООП;
и некоторые другие, которые ближе алгоритмизации и изучению синтаксиса конкретного языка.

ВСЁ.

И этому то же можно уделить достаточное количество учебного времени. И это имеет смысл.
Но к ООП относится, мягко говоря, косвенно.
Не найдёте в учебнике ни ответа на вопрос о выполнении ОО-программы, ни создание собственных классов, ни расширение существующих, ни объектную модель, ни, даже, объяснения, каким образом к объектам, состоящим из свойств и методов, относятся пятая нога событий.

Тираж 60 000 экземпляров. Каждая редакция.

Но есть три примера, которые в этом учебнике могут быть, для заинтересованного ученика, точкой роста.
Калькулятор. Блокирование кнопок при недостаточном количестве данных: пара текстовых полей для аргументов, две командные кнопки для унарной и бинарной операций. Кнопки активизируются только когда достаточно данных (для унарной операции для простоты имеет роль только одно заранее известное "первое/левое" текстовое поле).
Решение меня интересует в меньшей степени. Хотя его нахождение принесёт некоторое удовольствие.
НО, в каких выражениях передать ученикам процедуру нахождения этого конкретного решения?

Теперь, когда этот процесс передачи оформился для меня как методический элемент (благодаря Автоматному программированию Анатолия Шалыто), это маркер на событийное программирование.
Особенно в случаях, когда собеседник под ООП понимает запись результата ER моделирования.

P.S. Я говорю своим ученикам (всем) о том, что ООП нужно. Поясняя, для чего.
Федор Ткачев ( Пользователь )
Цитата (Сергей Кондрашов, 26.01.2011, 13:44) <{POST_SNAPBACK}>
А.Ф. Лосева, например: Лосев А.Ф. Хаос и структура / Тахо-Годи А.А. и Троицкий В.П. (сост. и ред.). М.: Мысль; 1997. 831 с., 1 л. портр. Указ. имен: с. 828-829. (ф. 84х108/32, тир. 5000 экз., тв. пер.) ISBN 5-244-00858-7 (возможно, ваше мнение изменится).

Вот уж что тут точно не поможет, так это штудирование специалиста по античной философии А.Ф.Лосева.

--------
А на самом деле смешно:
ООП обсуждаем, а не можем научить уверенно писать циклы, не говоря про структурирование программы в паре-тройке процедур, обменивающихся данными.
Виталий Потопахин ( Пользователь )
Цитата (Михалкович Станислав, 26.01.2011, 21:35) <{POST_SNAPBACK}>
У нас - опыт другой. Мы учим школьников - не промышленному программированию - но элементам современного программирования. Объекты и события - одни из элементов, их одних недостаточно разумеется.


Дело абсолютно не в том, какой опыт у меня и у вас. Я лично учу и ООП и событийному программированию. Но мы с вами не школьные учителя. У нас другие возможности и по времени и по требованиям со стороны контролирующих организаций. А здесь все же предлагают вести ООП в школе. Если же говорить о обучении детей вообще без привязки к определенным условиям, то разумеется все возможно.
Станислав Михалкович ( Пользователь )
Цитата (Потопахин Виталий, 27.01.2011, 01:52) <{POST_SNAPBACK}>
Дело абсолютно не в том, какой опыт у меня и у вас. Я лично учу и ООП и событийному программированию. Но мы с вами не школьные учителя. У нас другие возможности и по времени и по требованиям со стороны контролирующих организаций. А здесь все же предлагают вести ООП в школе. Если же говорить о обучении детей вообще без привязки к определенным условиям, то разумеется все возможно.

В школе - нет, невозможно наверное. С той программой, которая есть - невозможно. И с теми учебниками, которые есть. Это по идее нужна другая программа и другие учебники. И не только и не столько ООП в школе важно - там много других проблем.

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

Ещё - были бы современные специализированные школьные среды - можно было бы там это чуточку внедрять. Например, для того же Робота или Чертежника: Робот.Вправо. Совсем мало это конечно. Честно говоря, я ожидал, что Кушниренко это сделает в новом КуМире. Но - не сделал. И - в ЕГЭ это точно не требуется, и в олимпиадах. Значит, школе это рано пока.
Виталий Потопахин ( Пользователь )
Цитата (Михалкович Станислав, 27.01.2011, 02:21) <{POST_SNAPBACK}>
В школе - нет, невозможно наверное.


Тогда вообщем-то нам с вами и спорить не о чем.
Сергей Кондрашов ( Пользователь )
На этой печальной ноте…
//==============================
Ну, найдете вы метод, ну, научите школьников ООП, а чем они в ВУЗе будут заниматься? (Шутка).
Федор Ткачев ( Пользователь )
Цитата (Михалкович Станислав, 27.01.2011, 02:21) <{POST_SNAPBACK}>
были бы современные специализированные школьные среды - можно было бы там это чуточку внедрять. Например, для того же Робота или Чертежника: Робот.Вправо.

Что значит "были бы".
Давно есть, и Вы это прекрасно знаете.

В Байтике(-4) все курсы сейчас с этого начинаются и этим продолжаются.
Ч.Идти(100)
или
Ввод.Цел(х)
и т.д.
Станислав Михалкович ( Пользователь )
Цитата (info21, 28.01.2011, 01:06) <{POST_SNAPBACK}>
Что значит "были бы".
Давно есть, и Вы это прекрасно знаете.

В Байтике(-4) все курсы сейчас с этого начинаются и этим продолжаются.
Ч.Идти(100)
или
Ввод.Цел(х)
и т.д.

Ну так я ж на разговор пытаюсь раскрутить. А то все как деревянные - промышленное программирование, не нужно никому...

footer logo © Образ–Центр, 2019. 12+