Все знания произошли от яблока.
Сейчас расскажу, почему. Сколько будет 1 + 2? Не знаете? А сколько будет одно яблоко плюс два яблока? А если у меня одно яблоко, а у тебя 2 яблока. Я тебе дам своё. Сколько яблок у тебя будет? Теперь понятнее, правда? Всех в детстве учили на яблоках, и не понятно, были бы мы такими же способными, если бы не они. Пример на грушах - уже не то.
Недолго думая, решила, что наследование в Java стоит объяснять именно на яблоках.
У нас была большая груша и маленький муравей. Идея урока состояла в том, чтоб научить муравья есть не только грушу, а еще и другую еду. Также хотелось сделать мир более пропорциональным.
Стали думать и гадать, как нам код реализовать, да так, чтоб не дублировать.
К великому прародителю
Дети предложили повторяемые части кода перенести в класс муравья. Звучит неплохо: муравей совершает акт поедания, и честно, чтоб его класс заведовал едой.
В то же время, разную еду есть хочется по-разному. В добавок, если думать о муравье, как о главном герое, который должен все знать и уметь, его класс вскоре превратится в роман с непонятными связями.
Появилась идея создать то самое яблоко, а для поедания вызывать метод груши. Вскоре, мы и пришли к необходимости наследования.
Все в мире относительно
Яблоко создали как элементарную еду весом в 1 (килограмм, слон, поинт, или в чем вы там считаете на вашем проекте). Грушу сделали наследником яблока с весом 2. Размеры фруктов на картинках примерно так и выглядят.
Раз уже и вес добавили, пришлось добавить силу муравья, говорящую о его грузоподъемности. Изначально она равна 1 и справедливости ради не может он принести домой грушу без подкрепления.
Место для фантазии
Когда вела Scratch у 10-12 леток, было очень весело наблюдать за тем, как они творят свой мир игры с актерами, которых выбрали. Они даже не спрашивали разрешения: "У вас там бегает котик за мышкой. Можно ли я сделаю, чтоб бегал тигр за конем?". Они просто делали что, хотели и вышло прикольно.
В современной группе у меня только мальчики, которым 11-13 лет, и прям с первого урока ощущается, что я имею дело с серьезными парнями. Я им предлагала фантазировать, выбрать картошку фри вместо моей груши, а они сопротивлялись. Хотя кто-то из уважения к моей просьбе таки взял что-то другое.
Проблема в том, что теперь я жалею об этом. С каждым уроком кода становится больше, и не у всех он одинаковый. Когда ищешь ошибку, да и вообще, удобно общаться одинаковыми понятиями, а не уточнять отдельно для разных учеников, что вместо моей груши, у тебя картошка, и логика работала бы, если в этом месте учёл то-то.
Домашнее задание
- Поменять в коде вес груши на 1, яблока на 3, и проверить, что логика все еще правильно работает.
- Добавить новые яблоки-груши на экран и убедится, что логика работает для многих элементов.
- Подумать и предложить варианты, как накапливать еду и ее есть, чтоб мочь поднять тяжелую еду.
Код с урока
public class Food extends Actor
{
protected int weight;
public Food(){
weight = 1;
}
public void jumpOn(int x, int y, int size){
setLocation(x, y+7);
}
public void disappear(Food food){
getWorld().removeObject(food);
}
}
}
В классе муравья добавили переменную его силы power и усовершенствовали метод подъема еды добавив условие:
if (myFood.weight <= power){...}
Немає коментарів:
Дописати коментар