

Полморфизм
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
21 questions
Tester's Day
Presentation
•
KG
25 questions
Угадай учителя
Presentation
•
KG
26 questions
Україна - член світового співтовариства
Presentation
•
12th Grade
24 questions
Практичне використання табличного процесора в навчанні
Presentation
•
12th Grade
27 questions
10_Пошук відомостей в Інтернеті
Presentation
•
5th Grade
28 questions
Насекомые - вредители растений
Presentation
•
KG
24 questions
КЩС. Метаболическая компонента
Presentation
•
KG - University
26 questions
1-kurs BOSHLANGISH NAZORAT
Presentation
•
11th Grade
Popular Resources on Wayground
6 questions
Secondary Safety Quiz
Presentation
•
9th - 12th Grade
10 questions
Afterschool Activities & Sports
Quiz
•
6th - 8th Grade
19 questions
ROAR Week 2026
Quiz
•
9th - 12th Grade
20 questions
Lab Safety Quiz
Quiz
•
6th Grade
15 questions
Cool Tool:Chromebook
Quiz
•
6th - 8th Grade
22 questions
would you rather
Quiz
•
3rd - 11th Grade
21 questions
Continents and Oceans
Quiz
•
6th Grade
20 questions
Parts of Speech
Quiz
•
5th Grade