пʼятниця, 13 листопада 2020 р.

Java для детей 3. Наследование

Все знания произошли от яблока. 

Сейчас расскажу, почему. Сколько будет 1 + 2? Не знаете? А сколько будет одно яблоко плюс два яблока? А если у меня одно яблоко, а у тебя 2 яблока. Я тебе дам своё. Сколько яблок у тебя будет? Теперь понятнее, правда? Всех в детстве учили на яблоках, и не понятно, были бы мы такими же способными, если бы не они. Пример на грушах - уже не то.

Недолго думая, решила, что наследование в Java стоит объяснять именно на яблоках. 

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

Стали думать и гадать, как нам код реализовать, да так, чтоб не дублировать.


К великому прародителю 

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

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

Появилась идея создать то самое яблоко, а для поедания вызывать метод груши. Вскоре, мы и пришли к необходимости наследования.


Все в мире относительно

Яблоко создали как элементарную еду весом в 1 (килограмм, слон, поинт, или в чем вы там считаете на вашем проекте). Грушу сделали наследником яблока с весом 2. Размеры фруктов на картинках примерно так и выглядят. 

Раз уже и вес добавили, пришлось добавить силу муравья, говорящую о его грузоподъемности. Изначально она равна 1 и справедливости ради не может он принести домой грушу без подкрепления. 


Место для фантазии

Когда вела Scratch у 10-12 леток, было очень весело наблюдать за тем, как они творят свой мир игры с актерами, которых выбрали. Они даже не спрашивали разрешения: "У вас там бегает котик за мышкой. Можно ли я сделаю, чтоб бегал тигр за конем?". Они просто делали что, хотели и вышло прикольно. 

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

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


Домашнее задание

  1. Поменять в коде вес груши на 1, яблока на 3, и проверить, что логика все еще правильно работает.
  2. Добавить новые яблоки-груши на экран и убедится, что логика работает для многих элементов. 
  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);

    }

}


public class FoodPair extends Food
{
    public FoodPair(){
        weight = 2;
    }

}

 В классе муравья добавили переменную его силы power и усовершенствовали метод подъема еды добавив условие:

if (myFood.weight <= power){...}

            

Немає коментарів:

Дописати коментар