Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Проект 19: Геометрические фигуры (полиморфизм) 📐

Консольное приложение для расчёта площади геометрических фигур.
Демонстрирует принципы полиморфизма через наследование и duck typing.

🎯 Что закрепляет

  • Полиморфизм (один интерфейс, разная реализация)
  • Наследование (class Circle(Shape))
  • Переопределение методов
  • Duck typing (функция print_area не проверяет тип)
  • Интерактивное меню с валидацией ввода

📋 Функционал

1. Класс Shape (родительский)

  • метод area() — возвращает 0 (заглушка)
  • метод info() — возвращает "Фигура"

2. Дочерние классы

  • Circle — радиус, площадь = π × r²
  • Rectangle — ширина, высота, площадь = width × height
  • Triangle — основание, высота, площадь = ½ × base × height

3. Функция print_area(shape)

  • Принимает любой объект, у которого есть методы info() и area()
  • Выводит: "{info()}: площадь = {area()}"

4. Интерактивное меню

  • Выбор фигуры (1–4)
  • Ввод параметров
  • Вывод площади
  • Выход

🛡️ Обработка ошибок

  • Ввод числа: защита от букв, пустого ввода
  • Диапазон: проверка, что число в меню 1–4
  • Ввод параметров: любое положительное число

📝 Пример работы

1. Круг
2. Прямоугольник
3. Треугольник
4. Выход
Выберите фигуру (1-4): 1
Введите радиус: 5
Круг: площадь = 78.53981633974483

1. Круг
2. Прямоугольник
3. Треугольник
4. Выход
Выберите фигуру (1-4): 2
Введите ширину: 4
Введите высоту: 6
Прямоугольник: площадь = 24

1. Круг
2. Прямоугольник
3. Треугольник
4. Выход
Выберите фигуру (1-4): 3
Введите длину основания: 3
Введите высоту: 4
Треугольник: площадь = 6.0

🧠 Чему научился

  • Реализовывать полиморфизм через наследование
  • Использовать duck typing (функция работает с любым объектом, у которого есть нужные методы)
  • Переопределять методы в дочерних классах
  • Строить интерактивное меню с валидацией
  • Обрабатывать ошибки ввода

📁 Структура проекта

19_polymorphism_shapes/
├── main.py       # код программы
└── README.md     # документация

🚀 Как запустить

python main.py

📊 Статус

✅ Проект готов