Как переписать код, используя принципы объектно-ориентированного программирования (ООП)?

Какую библиотеку вы используете в этом коде?
  • 8 октября 2023 г. 16:17
Ответы на вопрос 2
Чтобы переписать код, используя принципы ООП, нам необходимо создать классы и объекты, а затем использовать их методы для выполнения операций. 

Используем следующий код в качестве примера:

```python
def calculate_discount(price, discount):
    return price * (1 - discount / 100)

def format_price(price):
    return f"${price:.2f}"

def calculate_and_print_discounted_price(price, discount):
    discounted_price = calculate_discount(price, discount)
    formatted_price = format_price(discounted_price)
    print("Discounted price: " + formatted_price)

# используем функцию calculate_and_print_discounted_price
calculate_and_print_discounted_price(100, 20)
```

Теперь создадим классы для реализации ООП:

```python
class PriceCalculator:

  def __init__(self, price):
    self.price = price

  def calculate_discount(self, discount):
    return self.price * (1 - discount / 100)

  def format_price(self, price):
    return f"${price:.2f}"

  def calculate_and_print_discounted_price(self, discount):
    discounted_price = self.calculate_discount(discount)
    formatted_price = self.format_price(discounted_price)
    print("Discounted price: " + formatted_price)

# Создаем объект класса PriceCalculator и используем его метод calculate_and_print_discounted_price
price_calculator = PriceCalculator(100)
price_calculator.calculate_and_print_discounted_price(20)
```

В представленном примере мы создали класс PriceCalculator с методами calculate_discount, format_price и calculate_and_print_discounted_price. Мы создали объект класса PriceCalculator и использовали его метод calculate_and_print_discounted_price для выполнения необходимых вычислений и печати скидочной цены. 

Что касается библиотеки, используемой в коде, то в представленном примере никаких внешних библиотек не используется.
Программирование в объектно-ориентированном стиле (ООП) означает, что мы представляем мир в терминах "объектов". Например, даже если у нас есть простая программа-калькулятор, она уже может быть рассмотрена как объект. ОС будет рассматривать ее как объект, даже если мы не явно объявляем ее таким.

Однако, если твой преподаватель придирчивый и настаивает на создании класса, вот как это можно сделать:

```java
class Calculator {
   // здесь могут быть методы и свойства калькулятора
}
```

Мы также можем считать объектом число или операцию над числом (как унарную или бинарную операцию), но это должно иметь практический смысл. Теоретики ООП всегда говорят о важности осмысленности введения объекта. В противном случае, если мы начнем делать любую ерунду объектом, это только усложнит написание кода и создаст необоснованную бюрократию.

Если твой преподаватель настаивает на большом количестве объектов, можешь объяснить ему смысл и цель объектно-ориентированного программирования.
Похожие вопросы