Точка входа в программирование
Фундаментальные знания по основам программирования Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Другие наши проекты: https://tprg.ru/media
Show more21 937
Subscribers
-424 hours
-357 days
-15530 days
- Subscribers
- Post coverage
- ER - engagement ratio
Data loading in progress...
Subscriber growth rate
Data loading in progress...
Какой из следующих примеров наилучшим образом демонстрирует использование полиморфизма через переопределение методов (method overriding)?Anonymous voting
- Класс Animal с методом makeSound() и его подклассы Dog и Cat, переопределяющие метод makeSound()
- Использование разных конструкторов класса Person для создания объектов с разными параметрами
- Класс Calculator с методами add(int, int) и add(double, double)
- Класс с приватными методами, которые вызываются через публичные методы
Простыми словами: Полиморфизм в ООП
Вот мы и добрались до заключительной парадигмы в ООП. Напомню, что наследование, абстракцию и инкапсуляцию можно прочитать выше или по тегу #простымисловами
Давайте же разберём подробно концепцию полиморфизма в объектно-ориентированном программировании (ООП) с примерами кода.
Полиморфизм — это концепция ООП, позволяющая использовать один и тот же интерфейс для разных типов объектов. Он позволяет объектам разных классов обрабатывать вызовы методов с одинаковыми именами, предоставляя каждым свой уникальный подход к реализации.
Зачем нужен полиморфизм?
1. Унификация интерфейсов позволяет использовать один интерфейс для взаимодействия с различными типами объектов.
2. Гибкость и расширяемость упрощает добавление нового функционала, так как новые классы могут использовать существующие интерфейсы.
3. Упрощение кода позволяет писать более общий и универсальный код.
Как это выглядит в коде?
В Python полиморфизм часто достигается через методические перегрузки и наследование:
class Животное:
def издать_звук(self):
raise NotImplementedError("Этот метод должен быть реализован в подклассе")
class Кот(Животное):
def издать_звук(self):
print("Мяу!")
class Собака(Животное):
def издать_звук(self):
print("Гав!")
животные = [Кот(), Собака()]
for животное in животные:
животное.издать_звук() # Output: Мяу! Гав!
В этом примере метод издать_звук
вызывается для объектов различных классов (Кот
и Собака
), и каждый объект реализует этот метод по-своему.
В Java полиморфизм достигается через интерфейсы и абстрактные классы:
abstract class Животное {
abstract void издатьЗвук();
}
class Кот extends Животное {
@Override
void издатьЗвук() {
System.out.println("Мяу!");
}
}
class Собака extends Животное {
@Override
void издатьЗвук() {
System.out.println("Гав!");
}
}
public class Main {
public static void main(String[] args) {
Животное[] животные = { new Кот(), new Собака() };
for (Животное животное : животные) {
животное.издатьЗвук(); // Output: Мяу! Гав!
}
}
}
Здесь абстрактный метод издатьЗвук
реализуется в классах Кот
и Собака
, и тот же метод вызывает различные реализации в зависимости от объекта.
Давайте теперь посмотрим примеры кейсов, где может быть актуален полиморфизм:
1. Фигуры
Предположим, у нас есть несколько различных фигур, и мы хотим рассчитать их площадь. Полиморфизм позволяет нам использовать один интерфейс для разных типов фигур.
class Фигура:
def площадь(self):
raise NotImplementedError("Этот метод должен быть реализован в подклассе")
class Круг(Фигура):
def __init__(self, радиус):
self.радиус = радиус
def площадь(self):
return 3.14159 * self.радиус ** 2
class Прямоугольник(Фигура):
def __init__(self, ширина, высота):
self.ширина = ширина
self.высота = высота
def площадь(self):
return self.ширина * self.высота
фигуры = [Круг(5), Прямоугольник(3, 4)]
for фигура in фигуры:
print(f"Площадь: {фигура.площадь()}")
2. Платежные системы
Используем полиморфизм для различных способов проведения платежей.
class Платеж(ABC):
@abstractmethod
def провести_платеж(self, сумма):
pass
class КредитнаяКарта(Платеж):
def провести_платеж(self, сумма):
print(f"Платеж проведён на сумму {сумма} с кредитной карты")
class PayPal(Платеж):
def провести_платеж(self, сумма):
print(f"Платеж проведён на сумму {сумма} через PayPal")
платежи = [КредитнаяКарта(), PayPal()]
for платеж in платежи:
платеж.провести_платеж(100)
Полиморфизм — ключевая концепция ООП. Он делает ваш код более универсальным и удобным для использования и расширения. Это особенно полезно, когда ваш проект растёт и требует поддержки различных типов объектов.
#простымисловами #ооп #полиморфизм👍 5
Полиморфизм — ключевая концепция ООП, которая позволяет:
- Унифицировать интерфейсы для различных типов объектов.
- Упрощать код и делать его более гибким.
- Легко расширять функциональность, добавляя новые типы объектов.
Полиморфизм делает ваш код более универсальным и удобным для использования и расширения. Это особенно полезно, когда ваш проект растёт и требует поддержки различных типов объектов.
Если у вас есть вопросы или нужны дополнительные примеры, не стесняйтесь писать! 😊
Простыми словами: Полиморфизм в ООП Конечно! Давайте разберём подробно концепцию полиморфизма в объектно-ориентированном программировании (ООП) с примерами кода.
### Что такое полиморфизм?
Полиморфизм — это концепция ООП, позволяющая использовать один и тот же интерфейс для разных типов объектов. Он позволяет объектам разных классов обрабатывать вызовы методов с одинаковыми именами, предоставляя каждым свой уникальный подход к реализации.
### Зачем нужен полиморфизм?
1. Унификация интерфейсов: Позволяет использовать один интерфейс для взаимодействия с различными типами объектов.
2. Гибкость и расширяемость: Упрощает добавление нового функционала, так как новые классы могут использовать существующие интерфейсы.
3. Упрощение кода: Позволяет писать более общий и универсальный код.
### Как это выглядит в коде?
#### Пример 1: Полиморфизм в Python
В Python полиморфизм часто достигается через методические перегрузки и наследование.
class Животное:
def издать_звук(self):
raise NotImplementedError("Этот метод должен быть реализован в подклассе")
class Кот(Животное):
def издать_звук(self):
print("Мяу!")
class Собака(Животное):
def издать_звук(self):
print("Гав!")
животные = [Кот(), Собака()]
for животное in животные:
животное.издать_звук() # Output: Мяу! Гав!
В этом примере метод издать_звук
вызывается для объектов различных классов (Кот
и Собака
), и каждый объект реализует этот метод по-своему.
#### Пример 2: Полиморфизм в Java
В Java полиморфизм достигается через интерфейсы и абстрактные классы.
abstract class Животное {
abstract void издатьЗвук();
}
class Кот extends Животное {
@Override
void издатьЗвук() {
System.out.println("Мяу!");
}
}
class Собака extends Животное {
@Override
void издатьЗвук() {
System.out.println("Гав!");
}
}
public class Main {
public static void main(String[] args) {
Животное[] животные = { new Кот(), new Собака() };
for (Животное животное : животные) {
животное.издатьЗвук(); // Output: Мяу! Гав!
}
}
}
Здесь абстрактный метод издатьЗвук
реализуется в классах Кот
и Собака
, и тот же метод вызывает различные реализации в зависимости от объекта.
### Применение полиморфизма
#### Пример 1: Фигуры
Предположим, у нас есть несколько различных фигур, и мы хотим рассчитать их площадь. Полиморфизм позволяет нам использовать один интерфейс для разных типов фигур.
class Фигура:
def площадь(self):
raise NotImplementedError("Этот метод должен быть реализован в подклассе")
class Круг(Фигура):
def __init__(self, радиус):
self.радиус = радиус
def площадь(self):
return 3.14159 * self.радиус ** 2
class Прямоугольник(Фигура):
def __init__(self, ширина, высота):
self.ширина = ширина
self.высота = высота
def площадь(self):
return self.ширина * self.высота
фигуры = [Круг(5), Прямоугольник(3, 4)]
for фигура in фигуры:
print(f"Площадь: {фигура.площадь()}")
#### Пример 2: Платежные системы
Используем полиморфизм для различных способов проведения платежей.
class Платеж(ABC):
@abstractmethod
def провести_платеж(self, сумма):
pass
class КредитнаяКарта(Платеж):
def провести_платеж(self, сумма):
print(f"Платеж проведён на сумму {сумма} с кредитной карты")
class PayPal(Платеж):
def провести_платеж(self, сумма):
print(f"Платеж проведён на сумму {сумма} через PayPal")
платежи = [КредитнаяКарта(), PayPal()]
for платеж in платежи:
платеж.провести_платеж(100)
### Чем полиморфизм отличается от других концепций?
- **Наследование**: Позволяет классам наследовать свойства и методы от другого класса.
- Инкапсуляция: Скрывает детали реализации и предоставляет доступ к данным через методы.
- Абстракция: Скрывает сложную реализацию и предоставляет простой интерфейс.
Полиморфизм: Фокусируется на способности использовать один и тот же интерфейс для различных типов объектов, что позволяет более универсально и гибко работать с кодом.
### ЗаключениеPhoto unavailableShow in Telegram
Методы сжатия данных: алгоритмы и инструменты
Сжатие используется повсеместно. Оно нужно, чтобы обмениваться информацией в интернете, компактно сохранять файлы на телефоне и много для чего ещё.
В этой статье мы рассмотрели основные алгоритмы и инструменты для сжатия данных. Рекомендуем прочитать, как минимум, для расширения кругозора.
Кстати, на идее сжатия данных даже построен сюжет сериала «Кремниевая долина». Рекомендую к просмотру, если ещё не смотрели.
👍 5❤ 1
15:29
Video unavailableShow in Telegram
Проект по блокчейну для начинающих С++ разработчиков
Это увлекательное путешествие в мир программирования и криптографии, где сложные концепции преподносят простым и понятным языком.
Видео включает в себя основы майнинга и транзакций. Автор также демонстрирует процесс программирования блокчейна, обеспечивая практическое понимание темы.
#видео #блокчейн #cpp
Кодим_блокчейн_на_C++_⧸_Системное_программирование_YAHldqFgq2A.mp439.43 MB
Photo unavailableShow in Telegram
Всё самое важное и интересное в IT и Digital за неделю
— YouTube вводит технические меры противодействия на перенос контента на отечественные виде...
читать полностью
— Защита сайта, несколько ключевых новинок, которые помогут вам защитить вашу онлайн-площадку от…
читать полностью
— Дневная аудитория Rutube за месяц достигла 9,6 млн пользователей, еще в июле он был 4 млн. В связи с активным ростом…
читать полностью
— Об эффективных SEO стратегиях на 2024 рассказали специалисты…
читать полностью
— В VK Видео появилась новая функция — теперь авторы видео могут связывать между собой…
читать полностью
— Большим корпорациям не хватает вычислительных мощностей на рынке, поэтому они…
читать полностью
— Видеосервис NUUM представил новый инструмент монетизации для блогеров – «Единый оффер». По расчетам площадки, за одно видео авторы смогут получать от…
читать полностью
Это #партнёрский пост
👍 2❤ 1
Photo unavailableShow in Telegram
Java для начинающих
Нашёл для вас небольшой плейлист из 18 уроков по Java. С помощью этих видео, вы сможете освоить программирование на java с нуля до Junior Java Developer. Также здесь множество полезной информации для подготовки к собеседованию.
Смотрим здесь.
#курс #java #видео
👍 5🔥 1🥰 1
Photo unavailableShow in Telegram
Полное практическое руководство по Docker: с нуля до кластера на AWS
Докер позволяет разработчикам, системными администраторам и другим специалистам деплоить их приложения в отдельных контейнерах, которых может быть много на одной машине. Причём у каждого контейнера может быть своя ОС и набор конфигураций, отличные от остальных. Чем-то это похоже на виртуальные машины, но при этом меньше нагружают систему и требует меньше ресурсов.
В этом руководстве вы сможете не только разобраться с устройством докера, но и создавать первые рабочие контейнеры.
#docker #aws
👍 4😁 1
Choose a Different Plan
Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.