cookie

We use cookies to improve your browsing experience. By clicking «Accept all», you agree to the use of cookies.

avatar

Точка входа в программирование

Фундаментальные знания по основам программирования Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Другие наши проекты: https://tprg.ru/media

Show more
Advertising posts
21 937
Subscribers
-424 hours
-357 days
-15530 days

Data loading in progress...

Subscriber growth rate

Data loading in progress...

Photo unavailableShow in Telegram
Варианты ответа ниже. #викторина #ооп
Show all...
Какой из следующих примеров наилучшим образом демонстрирует использование полиморфизма через переопределение методов (method overriding)?Anonymous voting
  • Класс Animal с методом makeSound() и его подклассы Dog и Cat, переопределяющие метод makeSound()
  • Использование разных конструкторов класса Person для создания объектов с разными параметрами
  • Класс Calculator с методами add(int, int) и add(double, double)
  • Класс с приватными методами, которые вызываются через публичные методы
0 votes
Простыми словами: Полиморфизм в ООП Вот мы и добрались до заключительной парадигмы в ООП. Напомню, что наследование, абстракцию и инкапсуляцию можно прочитать выше или по тегу #простымисловами Давайте же разберём подробно концепцию полиморфизма в объектно-ориентированном программировании (ООП) с примерами кода. Полиморфизм — это концепция ООП, позволяющая использовать один и тот же интерфейс для разных типов объектов. Он позволяет объектам разных классов обрабатывать вызовы методов с одинаковыми именами, предоставляя каждым свой уникальный подход к реализации. Зачем нужен полиморфизм? 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)
Полиморфизм — ключевая концепция ООП. Он делает ваш код более универсальным и удобным для использования и расширения. Это особенно полезно, когда ваш проект растёт и требует поддержки различных типов объектов. #простымисловами #ооп #полиморфизм
Show all...
👍 5
Полиморфизм — ключевая концепция ООП, которая позволяет: - Унифицировать интерфейсы для различных типов объектов. - Упрощать код и делать его более гибким. - Легко расширять функциональность, добавляя новые типы объектов. Полиморфизм делает ваш код более универсальным и удобным для использования и расширения. Это особенно полезно, когда ваш проект растёт и требует поддержки различных типов объектов. Если у вас есть вопросы или нужны дополнительные примеры, не стесняйтесь писать! 😊
Show all...
Простыми словами: Полиморфизм в ООП Конечно! Давайте разберём подробно концепцию полиморфизма в объектно-ориентированном программировании (ООП) с примерами кода. ### Что такое полиморфизм? Полиморфизм — это концепция ООП, позволяющая использовать один и тот же интерфейс для разных типов объектов. Он позволяет объектам разных классов обрабатывать вызовы методов с одинаковыми именами, предоставляя каждым свой уникальный подход к реализации. ### Зачем нужен полиморфизм? 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)
### Чем полиморфизм отличается от других концепций? - **Наследование**: Позволяет классам наследовать свойства и методы от другого класса. - Инкапсуляция: Скрывает детали реализации и предоставляет доступ к данным через методы. - Абстракция: Скрывает сложную реализацию и предоставляет простой интерфейс. Полиморфизм: Фокусируется на способности использовать один и тот же интерфейс для различных типов объектов, что позволяет более универсально и гибко работать с кодом. ### Заключение
Show all...
Photo unavailableShow in Telegram
Методы сжатия данных: алгоритмы и инструменты Сжатие используется повсеместно. Оно нужно, чтобы обмениваться информацией в интернете, компактно сохранять файлы на телефоне и много для чего ещё. В этой статье мы рассмотрели основные алгоритмы и инструменты для сжатия данных. Рекомендуем прочитать, как минимум, для расширения кругозора. Кстати, на идее сжатия данных даже построен сюжет сериала «Кремниевая долина». Рекомендую к просмотру, если ещё не смотрели.
Show all...
👍 5 1
15:29
Video unavailableShow in Telegram
Проект по блокчейну для начинающих С++ разработчиков Это увлекательное путешествие в мир программирования и криптографии, где сложные концепции преподносят простым и понятным языком. Видео включает в себя основы майнинга и транзакций. Автор также демонстрирует процесс программирования блокчейна, обеспечивая практическое понимание темы. #видео #блокчейн #cpp
Show all...
Кодим_блокчейн_на_C++_⧸_Системное_программирование_YAHldqFgq2A.mp439.43 MB
Photo unavailableShow in Telegram
Всё самое важное и интересное в IT и Digital за неделю — YouTube вводит технические меры противодействия на перенос контента на отечественные виде... читать полностью — Защита сайта, несколько ключевых новинок, которые помогут вам защитить вашу онлайн-площадку от… читать полностью — Дневная аудитория Rutube за месяц достигла 9,6 млн пользователей, еще в июле он был 4 млн. В связи с активным ростом… читать полностью — Об эффективных SEO стратегиях на 2024 рассказали специалисты… читать полностью — В VK Видео появилась новая функция — теперь авторы видео могут связывать между собой… читать полностью — Большим корпорациям не хватает вычислительных мощностей на рынке, поэтому они… читать полностью — Видеосервис NUUM представил новый инструмент монетизации для блогеров – «Единый оффер». По расчетам площадки, за одно видео авторы смогут получать от… читать полностью Это #партнёрский пост
Show all...
👍 2 1
Photo unavailableShow in Telegram
Java для начинающих Нашёл для вас небольшой плейлист из 18 уроков по Java. С помощью этих видео, вы сможете освоить программирование на java с нуля до Junior Java Developer. Также здесь множество полезной информации для подготовки к собеседованию. Смотрим здесь. #курс #java #видео
Show all...
👍 5🔥 1🥰 1
Photo unavailableShow in Telegram
Полное практическое руководство по Docker: с нуля до кластера на AWS Докер позволяет разработчикам, системными администраторам и другим специалистам деплоить их приложения в отдельных контейнерах, которых может быть много на одной машине. Причём у каждого контейнера может быть своя ОС и набор конфигураций, отличные от остальных. Чем-то это похоже на виртуальные машины, но при этом меньше нагружают систему и требует меньше ресурсов. В этом руководстве вы сможете не только разобраться с устройством докера, но и создавать первые рабочие контейнеры. #docker #aws
Show all...
👍 4😁 1
Choose a Different Plan

Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.