Навигация по проблемам изучения принципов ООП

Навигация по проблемам изучения принципов ООП

28 декабря 2022 г.

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

Джек - Эй! Почему ты выглядишь таким расстроенным, что происходит?

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

Джек – Хорошо, у меня тоже были проблемы в первое время в колледже. Но вот совет: просто постарайтесь сформулировать большие и причудливые вещи своими словами и придумать несколько метафор из реальной жизни. Это очень поможет вам в обучении, информатика, являющаяся недавней дисциплиной, имеет много человеческого прикосновения. Так что создавайте свои собственные метафоры и учитесь, делая вещи! С какими трудностями вы столкнулись?

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

Джейн – Хорошо! Не беспокойтесь, давайте начнем с наследства. Из биологии вы знаете, что ребенок наследует физические свойства от родителей или предков, верно?

Джей - Да

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

Джей - Да! Итак, для обеспечения повторного использования кода мы используем наследование?

Джейн – Точно. Полиморфизм еще более интересен. Возможно, вы уже знаете, что углерод проявляет полиморфизм.

Джей. Да, при разной температуре и давлении он существует в двух разных формах: графит и алмаз.

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

Джей - Я правда скучал по тебе во второй части, можешь помочь понять на примере?

Джейн – вот пример

class Airplane {
    int speed;
    private void setSpeed(int speed){
        this.speed = speed
    }
    public int getSpeed(){
    return this.speed
}
}
Class Jet extends Airplane {
    private void setSpeed(int speed) {
        this.speed = 2*speed;
    }
}
Jet jt = new Airplane();

Способность класса Jet заменять родительский класс также относится к полиморфизму.

n Jay - О, в классе нам сказали, что перегрузка функций является примером полиморфизма. Но переопределение функций также подпадает под действие полиморфизма.

Джейн – Верно! Инкапсуляция, возможно, вы съели эти капсулы, когда заболели.

Джей. Да, в одной капсуле заключено много разных смесей.

Джейн – Точно, мы группируем вещи, чтобы предотвратить неправильное использование.

Джей – Предотвратить неправильное использование? Что это значит?

Джейн – Хорошо, как вы думаете, что должно быть на выходе программы?

Class Jet extends Airplane {
    public void setSpeed(int speed) {
        this.speed = 2*speed;
    }
    public void getSpeed() {
        return this.speed;
    }
}

Jet jt1  = new Jet()
jt1.speed = 500; 
system.out.println(jt1.getSpeed())

Jet jt2 = new Jet()
jet2.setSpeed(500)
system.out.println(jt2.getSpeed())

Джей – Должно быть что-то похожее на это…

500
1000

Джейн – Верно! Но, по вашему мнению, как правильно использовать этот метод.

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

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

Джей: О, когда мой профессор объяснял концепцию сокрытия информации, я был в замешательстве, от кого мы скрываем информацию, но теперь я думаю, что это разработчик, он должен использовать методы вместо того, чтобы напрямую манипулировать свойствами объектов.< /p>

Джейн – Да, верно. Надеюсь, эта короткая беседа была полезной! Счастливого обучения. п


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE