![]() |
Преподавание ActionScript 3.0
В своем институте преподаю основы AS3.
Хотел спросить как лучше рассказать что такое ООП, что такое классы, объекты ? Если брать учебник и читать по нему, то вообще крыша у них съедет, т.к. должна быть понятна идея всего о чем говоришь. Обычно, даже когда рассказываешь про, например, битовые операции сдвига возникает вопрос, а зачем что-то двигать. Может у кого-то есть идея примера класса, на котором хорошо будет рассказывать про ООП ? Поделитесь своими мыслями пожалуйста. :) |
:) Думаю неплохо будет на примере реальных объектов объяснить для начало.
Например если учебный класс, в нем ученики, столы, стулья. У него свойства x y ... ну и так далее. Потом наследство: базовый класс учеников это человек, а так как есть разные то собственно монголы, индусы... можно и на примере ручек, делают они одно и тоже но выглядят по разному и с разными свойствами, ну и все такое... Методы тоже можно на примере ученика. Утром встал, пришел в универ, открывает дверь класса, заходит, закрывает дверь класса, садится за парту, получает подзатыльник,ждет дальнейших указаний... На этом же примере можно об евентах объяснить, пример: после того как зашол в класс поздоровался или когда открыл дверь то был скрип, и это все услышали все которые слушали. Ну и дальше уже можно к практике переходить, начинать с простого базового класса Object. Дальше реальные объекты перенести в классы. И все так далее. Охх...:wacko: ну надеюсь поняли о чем я. :D Надеятся только на чтение из книг и простых копи паст примеров не стоит, на своем примере знаю что если хотите чтобы им это было понятно и запомнилось то нужно разьеснить все на нормальном человеческом языке. гг... :bye::D |
Я бы искал что-то, что можно было бы потом использовать в качестве продолжения, например с наследованием (как у Мука - животные, т.е. класс Кот и класс Собака - оба наследники класса Млекопитающее, которой в свою очередь наследник класса Животное, но еще и имплементит интерфейс Домашнее (т.е. не все домашние животные на самом деле животные, могут быть и насекомые, например :))
Но тут возникают некорорые проблемы, например, как в таком случае представить композицию или декоратор? :) Будет ли мягкая игрушка хорошим примером? (т.е. использует какие-то качества животного, но в то же время животным не является). А декоратор - как блохи, можно перенести с одного животного на другое, при этом поменяв качество животного? :D |
Цитата:
|
Да, да я про это же. Все правильно.
Надо будет придумать хороший пример, на котором можно было бы объяснить, что такое наследование и полиморфизм. И вообще был максимально пригодным для всего о чем надо будет рассказывать. |
А чем кружочки с квадратиками не устраивают? Тем более, что много ооп просматривается при работе именно с графическими объектами (это субъективно, но тем не менее).
Потом, животные - это мило, но далеко не каждый способен психологически рассуждать об ооп в терминах живого, пусть и животного мира. Кому-то блохи просто омерзительны, а кто-то за любимого песика может и по морде дать, другой поржет и пойдет пить пиво, а у того с зоологией вообще беда. Тут шибко не развернешься, одним словом. Пример со студентами-стульями-столами-дверьми - это для кавээна, пожалуй, но как разогрев подошел бы, пожалуй)). Впрочем, если преподаватель суть личность авторитетная (типа Мук-2:)) или может уверенно держать аудиторию под контролем, обладая при этом железной волей - ради бога, делайте как вам нравится. |
Цитата:
пс: много примеров это все-таки опыт... |
Цитата:
|
Наверно еще стоит добавить, что ООП изначально создавалось для упрощения жизни программисту поэтому стоит сделать на этом акцент и рассказать ученикам например, что ООП помогает по тысячи раз не писать одно и то же, то есть к примеру у нас есть куча методов и куча свойств которые нужны определенному количеству классов, так вот чтобы иметь в одном месте описание всех этих методов/переменных и нужно использовать ООП
Пример отличный есть, DisplayObject, чтобы не писать в Sprite/MovieClip ets методы addChild/x/y/ и т/д/, можно отнаследоваться от DisplayObject. Напомню, ООП прежде всего облегчает работу программиста, писать ради самого ООП плохая практика и частая ошибка программистов и учить такому подходу явно не хорошо. Использовать нужно все тогда, когда действительно нужно. ) |
По поводу кружков и квадратов. Это не ахти какой пример... Если бы можно было ограничится совсем небольшим набором фигур - тогда да, а так можно легко и до октагонов добраться, а может и дальше :)
В этом одна из большущих проблем диаграм всякого вида. Если взаимоотношения сложные, то очень тяжело сделать диаграму так, чтобы она не запутала больше. Поэтому для быстроты усвоения хочется все-таки какой-то пример, в котором уже есть знакомые элементы и взаимосвязи. |
Битовые операции объясняются в терминах линейного программирования.
На мой взгляд бесконечные аналогии на начальном этапе только усложняют восприятие. Нужно начинать с самого главного - что код, написанный кем то однажды, может использоваться много раз в других проектах. Начинающий программист должен уметь прежде всего грамотно применять работающие, хорошо документированные модули. Поэтому разумно взять функционально законченный работающий проект и показать, как можно модифицировать его параметры. Естественно, что до этого следует показать, как выглядят основные лексические и синтаксические структуры в простейшем случае. |
Цитата:
|
я считаю, нужно давать примеры как можно более сложные, не надо унижать способности учеников. экспрессив очень хорошая метода. кому не понтятно пусть сами догоняют. ссылки на мука давайте на 1-же лекции.
пкусть сами учат. преподавайте то, что в других учебниках не прочитать. |
Я объясняю на шариках. Свойства: цвет, размер. Методы: отпустить шарик, лопнуть шарик. События: ENTER_FRAME (полёт шарика), MOUSE_CLICK (лопнуть шарик). И сразу заставить человека написать, что-то вроде шутера по шарикам на очки (в зависимости от их радиуса). Наследование можно объяснить и на Sprite. Можно рассказать про фреймворки и готовые решения. Например про твин для полёта шарика.
Дальше про циклы, условия, массивы и прочие операции на примере игры сапёра. Если у человека "подходящий" склад ума - должен разобраться. Я считаю, что самый объективный показатель успешности обучения: попытки человека делать что-то своё, то что не задают как домашнее задание, его заинтересованность. |
В преподавании важно то, что услышат от тебя, а не вычитают на форуме или в книжке, ибо учиться пришли к тебе. Иначе, нафик ты сдался?
Цитата:
|
может сначала рассказать студентам, что такое мувиклип, а потом на его примере рассказать про ООП? довольно наглядно пулучится
|
Цитата:
|
Да, здорово. Все сообщения довольно толковые.
И про шарики, как пример, понравился. Цитата:
Я сначала хотел взять, как пример, композицию (из музыкального альбома), но до конца так и не продумал. |
Цитата:
|
я считаю что лучший пример это правильно написанный живой, игровой проект.
понять ООП и научиться мыслить правильно можно только начав работать над живым примером под надзором опытного наставника. заставьте их написать что нибудь |
Цитата:
ИМХО: Задача препода - послать в хелп и научиться им пользоваться, а не пересказывать хелп своими словами и заставлять зубрить. А вообще я за практикум, причём реальной задачи, за которую даже можно получить деньги. Лучше всего подходит создание какой нибудь игры. Примерный план: 1. Основы Flash Ссылки на Мука и адобехелп, что такое AS3. Настраиваем FD. Что такое ООП. Будем делать игру. Главный класс игры - хелловорлд 2. Объекты/классы. MVC. Делаем игровую логику и игровую модель данных. Крестики - нолики. 3. Flash и сеть. XML Крестики-нолики по сети. 4. Придумываем игры. Планирование, Архитектура приложений. SVN/GIT. Задание на бригаду - придумать/выбрать проект и расписать архитектуру. 5. Каждая бригада делает игру. Погружение в оптимизацию, битмапы, звуки итп. Тестирование. каждый пункт 1-2 занятия/неделя. UPD. Курс очень зависит от слушателей. Если курс для первокурсников-экономистов/бухгалтеров/автослесарей, которые и знать не знают про ООП и курс проходит под графой "основы программирования" то AS3 вообще здесь ни причём. Если это 2-3 курс ВУЗа программистской тематики, то мой план в тему, а то ещё и стоит добавить алхимии/3D и всяких других популярных движков и фрэймворков. Самое главное определитесь с ЗАДАЧЕЙ курса. Чего вы хотите достичь в результате. Кроме задачи в имеем определяющие факторы курса: исходный материал (знание слушателей), ресурс (время), средства тестирования (лабы/коллоквиумы/зачёты) Курс ради курса никому не нужен (разве что для самоудовлетворения и некоей галочки). |
Ну, вобщем-то, акцент на слове "услышат". А заодно и увидят от тебя. "Хелп", хоть и всеобъемлющий, порой скучноват, неправда ли?:) Видимо, хороший преподаватель - хорошо подкованный практик, если, конечно, он не упертый гундос. Одно дело послать к учебнику с картинками, другое - самому собрать в аудитории из безделушек что-то типа простенького радиопередатчика (действующего, само-собой) и дать его покрутить. С задачей курсов - в точку.
ЗЫ. Наверно, ты не любил посещать лекции? :). |
Я еще понял, что до объяснения классов еще далеко.
Думаю, сейчас нужно порешать простые или простейшие задачи. Например, есть прямоугольник, у которого известна ширина и высота. Найти площади и периметр. Используя trace(); Т.е. нужно поработать с простыми операциями такими как умножение, деление, сложение, битовые операции, условия, циклы, ну и функции. Подскажите, какие-нибудь простые задачки. |
Простые задачи по вашему перечню простых операций - это реализация всевозможных алгоитмов из математики, типа общий делитель, наменьшее общее кратное, площади фигур, решение уравнений, матрицы... графики функций, численные методы решения дифуров, интегралов ... да море...
Вы бы уточнили все же, какова целевая аудитория. |
Никто еще не рекомендовал открыть книгу по Smalltalk, и адаптировать введение в OOP для AS?
|
| Часовой пояс GMT +4, время: 16:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.