Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Преподавание ActionScript 3.0 (http://www.flasher.ru/forum/showthread.php?t=144413)

Bond007 11.09.2010 12:35

Преподавание ActionScript 3.0
 
В своем институте преподаю основы AS3.

Хотел спросить как лучше рассказать что такое ООП, что такое классы, объекты ?
Если брать учебник и читать по нему, то вообще крыша у них съедет, т.к. должна быть понятна идея всего о чем говоришь.

Обычно, даже когда рассказываешь про, например, битовые операции сдвига возникает вопрос, а зачем что-то двигать.

Может у кого-то есть идея примера класса, на котором хорошо будет рассказывать про ООП ?

Поделитесь своими мыслями пожалуйста. :)

Shogun4ever 11.09.2010 15:22

:) Думаю неплохо будет на примере реальных объектов объяснить для начало.
Например если учебный класс, в нем ученики, столы, стулья. У него свойства x y ... ну и так далее.

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

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

Ну и дальше уже можно к практике переходить, начинать с простого базового класса Object. Дальше реальные объекты перенести в классы. И все так далее.

Охх...:wacko: ну надеюсь поняли о чем я. :D
Надеятся только на чтение из книг и простых копи паст примеров не стоит, на своем примере знаю что если хотите чтобы им это было понятно и запомнилось то нужно разьеснить все на нормальном человеческом языке.

гг... :bye::D

wvxvw 11.09.2010 16:58

Я бы искал что-то, что можно было бы потом использовать в качестве продолжения, например с наследованием (как у Мука - животные, т.е. класс Кот и класс Собака - оба наследники класса Млекопитающее, которой в свою очередь наследник класса Животное, но еще и имплементит интерфейс Домашнее (т.е. не все домашние животные на самом деле животные, могут быть и насекомые, например :))
Но тут возникают некорорые проблемы, например, как в таком случае представить композицию или декоратор? :) Будет ли мягкая игрушка хорошим примером? (т.е. использует какие-то качества животного, но в то же время животным не является). А декоратор - как блохи, можно перенести с одного животного на другое, при этом поменяв качество животного? :D

Shogun4ever 11.09.2010 17:09

Цитата:

Сообщение от wvxvw (Сообщение 935090)
Я бы искал что-то, что можно было бы потом использовать в качестве продолжения, например с наследованием (как у Мука - животные, т.е. класс Кот и класс Собака - оба наследники класса Млекопитающее, которой в свою очередь наследник класса Животное, но еще и имплементит интерфейс Домашнее (т.е. не все домашние животные на самом деле животные, могут быть и насекомые, например :))
Но тут возникают некорорые проблемы, например, как в таком случае представить композицию или декоратор? :) Будет ли мягкая игрушка хорошим примером? (т.е. использует какие-то качества животного, но в то же время животным не является). А декоратор - как блохи, можно перенести с одного животного на другое, при этом поменяв качество животного? :D

:D :D Ну я общую мысль выразил, а примеров могут быть уймо...

Bond007 11.09.2010 18:30

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

alexcon314 11.09.2010 20:22

А чем кружочки с квадратиками не устраивают? Тем более, что много ооп просматривается при работе именно с графическими объектами (это субъективно, но тем не менее).
Потом, животные - это мило, но далеко не каждый способен психологически рассуждать об ооп в терминах живого, пусть и животного мира. Кому-то блохи просто омерзительны, а кто-то за любимого песика может и по морде дать, другой поржет и пойдет пить пиво, а у того с зоологией вообще беда. Тут шибко не развернешься, одним словом.
Пример со студентами-стульями-столами-дверьми - это для кавээна, пожалуй, но как разогрев подошел бы, пожалуй)).
Впрочем, если преподаватель суть личность авторитетная (типа Мук-2:)) или может уверенно держать аудиторию под контролем, обладая при этом железной волей - ради бога, делайте как вам нравится.

Shogun4ever 11.09.2010 20:24

Цитата:

Сообщение от Bond007 (Сообщение 935102)
Да, да я про это же. Все правильно.
Надо будет придумать хороший пример, на котором можно было бы объяснить, что такое наследование и полиморфизм.
И вообще был максимально пригодным для всего о чем надо будет рассказывать.

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

пс: много примеров это все-таки опыт...

FlashRus 12.09.2010 00:25

Цитата:

А чем кружочки с квадратиками не устраивают? Тем более, что много ооп просматривается при работе именно с графическими объектами (это субъективно, но тем не менее).
помоему это лучший вариант. Начать с точки, потом линия, квадрат и круг....

easy.proger 12.09.2010 00:36

Наверно еще стоит добавить, что ООП изначально создавалось для упрощения жизни программисту поэтому стоит сделать на этом акцент и рассказать ученикам например, что ООП помогает по тысячи раз не писать одно и то же, то есть к примеру у нас есть куча методов и куча свойств которые нужны определенному количеству классов, так вот чтобы иметь в одном месте описание всех этих методов/переменных и нужно использовать ООП

Пример отличный есть, DisplayObject, чтобы не писать в Sprite/MovieClip ets методы addChild/x/y/ и т/д/, можно отнаследоваться от DisplayObject.

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

wvxvw 12.09.2010 03:32

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

aksios 12.09.2010 08:55

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

easy.proger 12.09.2010 15:11

Цитата:

Сообщение от aksios (Сообщение 935193)
Битовые операции объясняются в терминах линейного программирования.
На мой взгляд бесконечные аналогии на начальном этапе только усложняют восприятие.
Нужно начинать с самого главного - что код, написанный кем то однажды, может использоваться много раз в других проектах.
Начинающий программист должен уметь прежде всего грамотно применять работающие, хорошо документированные модули.
Поэтому разумно взять функционально законченный работающий проект и показать, как можно модифицировать его параметры.
Естественно, что до этого следует показать, как выглядят основные лексические и синтаксические структуры в простейшем случае.

Yeps ) почти тоже самое я написал в предидущем сообщений ) логика простая ! ООП должен в первую очередь ПОМОЧЬ программисту и именно это нужно преподавать в первую очередь, а не - "ООП круто прогаем так" )

Котяра 12.09.2010 17:31

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

Rzer 13.09.2010 02:25

Я объясняю на шариках. Свойства: цвет, размер. Методы: отпустить шарик, лопнуть шарик. События: ENTER_FRAME (полёт шарика), MOUSE_CLICK (лопнуть шарик). И сразу заставить человека написать, что-то вроде шутера по шарикам на очки (в зависимости от их радиуса). Наследование можно объяснить и на Sprite. Можно рассказать про фреймворки и готовые решения. Например про твин для полёта шарика.

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

Я считаю, что самый объективный показатель успешности обучения: попытки человека делать что-то своё, то что не задают как домашнее задание, его заинтересованность.

alexcon314 13.09.2010 02:52

В преподавании важно то, что услышат от тебя, а не вычитают на форуме или в книжке, ибо учиться пришли к тебе. Иначе, нафик ты сдался?
Цитата:

преподавайте то, что в других учебниках не прочитать
Расплывчато и дельно. Клише? Слишком амбициозно. Практикум - тут, пожалуй. В теории трудно что-то свое толкнуть.

relevance4 13.09.2010 09:06

может сначала рассказать студентам, что такое мувиклип, а потом на его примере рассказать про ООП? довольно наглядно пулучится

Psycho Tiger 13.09.2010 10:50

Цитата:

Сообщение от relevance4 (Сообщение 935399)
может сначала рассказать студентам, что такое мувиклип, а потом на его примере рассказать про ООП? довольно наглядно пулучится

Упаси боже - люди, познавшие прелести MovieClip`а начинают мыслить в нём. Даже Timer реализуют как скрипты в кадрах ))

Bond007 13.09.2010 10:54

Да, здорово. Все сообщения довольно толковые.

И про шарики, как пример, понравился.
Цитата:

Сообщение от easy.proger (Сообщение 935165)
Наверно еще стоит добавить, что ООП изначально создавалось для упрощения жизни программисту поэтому стоит сделать на этом акцент и рассказать ученикам например, что ООП помогает по тысячи раз не писать одно и то же,

Да, и это очень правильная мысль, рассказать для чего нужен этот ОО подход.

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

FlashRus 16.09.2010 00:40

Цитата:

Упаси боже - люди, познавшие прелести MovieClip`а начинают мыслить в нём. Даже Timer реализуют как скрипты в кадрах ))
правда..... (((

divinus 16.09.2010 15:38

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

Котяра 16.09.2010 18:13

Цитата:

Сообщение от alexcon314 (Сообщение 935393)
В преподавании важно то, что услышат от тебя, а не вычитают на форуме или в книжке, ибо учиться пришли к тебе. Иначе, нафик ты сдался?
...
Расплывчато и дельно. Клише? Слишком амбициозно.

Не совсем понял твою мысль. Т.е. нафига преподавать то, что можно прочитать в хелпе? Или - мы пришли к тебе чтобы ты объяснил, а ты послылаешь хелпы читать? Непонятен акцент.
ИМХО: Задача препода - послать в хелп и научиться им пользоваться, а не пересказывать хелп своими словами и заставлять зубрить.

А вообще я за практикум, причём реальной задачи, за которую даже можно получить деньги.
Лучше всего подходит создание какой нибудь игры.
Примерный план:
1. Основы Flash
Ссылки на Мука и адобехелп, что такое AS3. Настраиваем FD. Что такое ООП.
Будем делать игру. Главный класс игры - хелловорлд
2. Объекты/классы. MVC. Делаем игровую логику и игровую модель данных.
Крестики - нолики.
3. Flash и сеть. XML
Крестики-нолики по сети.
4. Придумываем игры. Планирование, Архитектура приложений. SVN/GIT. Задание на бригаду - придумать/выбрать проект и расписать архитектуру.
5. Каждая бригада делает игру. Погружение в оптимизацию, битмапы, звуки итп. Тестирование.
каждый пункт 1-2 занятия/неделя.

UPD. Курс очень зависит от слушателей.
Если курс для первокурсников-экономистов/бухгалтеров/автослесарей, которые и знать не знают про ООП и курс проходит под графой "основы программирования" то AS3 вообще здесь ни причём.
Если это 2-3 курс ВУЗа программистской тематики, то мой план в тему, а то ещё и стоит добавить алхимии/3D и всяких других популярных движков и фрэймворков.
Самое главное определитесь с ЗАДАЧЕЙ курса.
Чего вы хотите достичь в результате.
Кроме задачи в имеем определяющие факторы курса: исходный материал (знание слушателей), ресурс (время), средства тестирования (лабы/коллоквиумы/зачёты)
Курс ради курса никому не нужен (разве что для самоудовлетворения и некоей галочки).

alexcon314 19.09.2010 03:05

Ну, вобщем-то, акцент на слове "услышат". А заодно и увидят от тебя. "Хелп", хоть и всеобъемлющий, порой скучноват, неправда ли?:) Видимо, хороший преподаватель - хорошо подкованный практик, если, конечно, он не упертый гундос. Одно дело послать к учебнику с картинками, другое - самому собрать в аудитории из безделушек что-то типа простенького радиопередатчика (действующего, само-собой) и дать его покрутить. С задачей курсов - в точку.
ЗЫ. Наверно, ты не любил посещать лекции? :).

Bond007 21.09.2010 10:39

Я еще понял, что до объяснения классов еще далеко.
Думаю, сейчас нужно порешать простые или простейшие задачи.
Например, есть прямоугольник, у которого известна ширина и высота. Найти площади и периметр. Используя trace();
Т.е. нужно поработать с простыми операциями такими как умножение, деление, сложение, битовые операции, условия, циклы, ну и функции.

Подскажите, какие-нибудь простые задачки.

alexcon314 21.09.2010 12:09

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

Nirth 21.09.2010 20:30

Никто еще не рекомендовал открыть книгу по Smalltalk, и адаптировать введение в OOP для AS?


Часовой пояс GMT +4, время: 16:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.