

Полморфизм
Presentation
•
Education
•
12th Grade
•
Practice Problem
•
Hard
Екатерина Екатерина
FREE Resource
23 Slides • 9 Questions
1
Полиморфизм
2
Ответы к домашнему заданию к занятию 24, чтобы поднять рейтинг
Новые знания по классам
В конце занятия вы получите:
3
Что такое полиморфизм?
Полиморфизм – механизм, позволяющий объектам разных типов использовать один и тот же интерфейс (оператор, функция, метод, класс).
С первого взгляда данное определение может показаться немного запутанным, поэтому давайте сначала рассмотрим примеры полиморфизма из реальной жизни.
4
Игра на музыкальных инструментах таких как гитара, фортепиано или скрипка, может быть представлена как функция «играть». Несмотря на разные инструменты, способы извлечения звука и тембры звучания, общее действие остается таким же «игра на музыкальном инструменте».
Музыка и полиморфизм
5
Ножи, кастрюли, миксеры, духовки
- все это используется для приготовления пищи, но каждый из описанных предметов выполняет данную функцию по-своему.
Готовка и полиморфизм
6
Полиморфизм, который мы встречали
Один из примеров, который сразу приходит в голову - это функция len() для нахождения длины последовательности.
Мы применяли ее к спискам, строкам, словарям и другим изученным встроенным структурам данных:
7
Полиморфизм, который мы встречали
То есть функция len() является общим интерфейсом для нахождения длины, а внутри классов, описывающих список, строку и другие структуры данных, находятся свои реализации данной функции.
Тоже самое работает и с функцией sum(), находящей сумму элементов последовательности, и другими функциями, которые могут работать с разными типами данных.
8
Задача
9
Multiple Choice
Как создать класс Rectangle?
class Rectangle:
class Rectangle():
def Rectangle:
10
Multiple Choice
Как задать классу Rectangle следующие свойства:
·_length – длина прямоугольника
·_width – ширина прямоугольника
(не обращайте внимания на отступы, тут весь текст выравнивается по центру)
def init(self, length, width):
self.length = length
self.width = width
def init(self, lenght, width):
self._lenght = lenght
self._width = width
class Rectangle:
def init():
self._length = length
self._width = width
11
Самостоятельно
Получился такой код, перепишите его себе в программу:
12
Poll
Переписали код на предыдущем слайде? Нужно обязательно тренироваться!
Да
Уже переписываю!
13
Еще раз: перепишите код!
Получился такой код, перепишите его себе в программу:
14
Open Ended
А теперь выполните вторую часть задания самостоятельно. В классе Rectangle должен быть описан метод get_rectangle_area(), возвращающий площадь прямоугольника.
Впишите код в ответ к этому вопросу!
15
Poll
16
У вас должен получиться такой код
Перепишите его себе в программу
17
Poll
Переписали код на предыдущем слайде? Нужно обязательно тренироваться!
Да
Уже переписываю!
18
Далее вторая часть программы
Напишите эту часть кода самостоятельно
19
Open Ended
Напишите код ко второй части задания:
20
Экземпляры классов
Теперь создайте несколько экземпляров классов и запустите методы классов
Запустите код
21
Poll
Получилось запустить код? Не было ли ошибок?
Получилось без ошибок
Возникла ошибка, но удалось разобраться
Возникла ошибка, не могу разобраться
22
Вот такой код должен был получиться:
Перепишите код полностью, если еще этого не сделали!
Если возникли ошибки, еще раз все внимательно просмотрите!
Читайте текст ошибки, если самостоятельно не удается разобраться, то пришлите скриншот мне в телеграм.
23
Запуск кода
После запуска вы получите следующие параметры фигур
24
Мы могли бы попытаться перебрать каждый из указанных элементов с помощью цикла for и найти площадь:
Но получили бы ошибку:
25
Именно тут нам и поможет полиморфизм. Мы сделаем так, чтобы метод, отвечающий за нахождение площади фигуры, назывался одинаково в каждом классе. Поменяем название методов на get_area().
26
Теперь при запуске мы получаем площади всех фигур:
Таким образом, мы смогли обеспечить единообразие для выполнения конкретной задачи – «поиска площади фигуры». Давайте немного дополним нашу задачу.
27
Полиморфизм и наследование
Мы научились создавать единый интерфейс для работы с разными экземплярами классов благодаря методам с одинаковыми названиями. Однако, в данном подходе есть определенная проблема.
Представьте, что в будущем мы создадим класс для еще одной фигуры, и хотим, чтобы внутри, как минимум, были такие же методы для нахождения площади и периметра. И может случиться такая ситуация, что мы совершенно случайно забудем реализовать один из данных методов внутри нового класса.
28
Полиморфизм и наследование
Мы можем создать базовый класс для наших фигур, а все остальные сделать его наследниками. Класс будет называться Figure, напишем его заголовок:
29
Перенесите код себе в программу!
Переписать!
30
Poll
Переписали?
Да
Да, но были ошибки
31
Продолжение
Отлично, базовый класс готов. Теперь создадим еще один класс, описывающий круг. Назовем данный класс Circle и сделаем его наследником Figure.
Нам вполне достаточно иметь единственное свойство, чтобы работать с периметром и площадью круга – это радиус. Создадим метод init() и укажем внутри поле _radius:
32
Продолжение
Методы get_area() и get_perimeter() в классе Circle не определены, поэтому вызов произошел из родительского класса, и мы увидели на экране соответствующие сообщения:
Полиморфизм
Show answer
Auto Play
Slide 1 / 32
SLIDE
Similar Resources on Wayground
24 questions
Мої інтереси та захоплення
Presentation
•
1st - 12th Grade
22 questions
Види обставин (за значенням), способи їх вираження. Порівняльний
Presentation
•
12th Grade
25 questions
Кеңестік білім беру жүйесінің жетістіктері мен қайшылықтары
Presentation
•
11th Grade
26 questions
14 урок
Presentation
•
University
26 questions
Зорі та їх класифікація
Presentation
•
11th Grade
26 questions
Вебер, Парсонс и Фуко теориялары
Presentation
•
University
24 questions
Семейные ценности
Presentation
•
University
25 questions
Персонажі які оточують Алісу
Presentation
•
KG
Popular Resources on Wayground
5 questions
A Home on the Shore
Quiz
•
3rd Grade
28 questions
US History Regents Review
Quiz
•
11th Grade
6 questions
A Horse Tale
Quiz
•
3rd Grade
20 questions
Math Review
Quiz
•
3rd Grade
10 questions
Juneteenth History and Significance
Interactive video
•
5th - 8th Grade
20 questions
Dividing Fractions
Quiz
•
5th Grade
55 questions
A Long Walk to Water Final Review
Quiz
•
6th - 8th Grade
10 questions
Equation Word Problems
Quiz
•
7th Grade
Discover more resources for Education
20 questions
Insurance
Quiz
•
9th - 12th Grade
10 questions
Juneteenth: History and Significance
Interactive video
•
7th - 12th Grade
6 questions
Mayan Mathematics part 1
Presentation
•
9th - 12th Grade
40 questions
Flags of the World
Quiz
•
KG - Professional Dev...
10 questions
Unit 9 Quiz
Quiz
•
9th - 12th Grade