Навигация по проблемам изучения принципов ООП
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>
Джейн – Да, верно. Надеюсь, эта короткая беседа была полезной! Счастливого обучения. п
Оригинал