Вопрос задан 08.10.2026 в 14:52. Предмет Информатика. Спрашивает Леонтьева Милена.

Фигуры и их характеристики. Разработайте иерархию классов для расчета периметров и площадей геометрических фигур. 1. Создайте базовый класс Shape. Определите в нём методы calculate_perimeter() и calculate_area(), которые будут возвращать периметр и площадь фигуры соответственно (сейчас возвращают 0). 2. Создайте классы-потомки Shape, описывающие следующие геометрические фигуры: 2.1. Circle (Круг): Определите метод __init__(self, radius), который принимает радиус круга и сохраняет его как атрибут. Переопределите методы calculate_perimeter() и calculate_area() для вычисления периметра и площади круга. 2.2. Rectangle (Прямоугольник): Определите метод __init__(self, width, height), который принимает ширину и высоту прямоугольника и сохраняет их как атрибуты. Переопределите методы calculate_perimeter() и calculate_area() для вычисления периметра и площади прямоугольника. 2.3. Triangle (Треугольник): Определите метод __init__(self, side1, side2, side3), который принимает длины трех сторон треугольника и сохраняет их как атрибуты. Переопределите методы calculate_perimeter() и calculate_area() для вычисления периметра и площади треугольника. 3. Создайте класс Square (Квадрат), наследующий от Rectangle. Переопределите его конструктор и методы calculate_perimeter() и calculate_area(), чтобы они работали только с одной стороной (так как у квадрата все стороны равны). 4. Создайте класс RightTriangle (прямоугольный треугольник), наследующий от Triangle. Переопределите его конструктор и методы calculate_perimeter() и calculate_area(), чтобы они работали только с длинами катетов. 5. Создайте класс ShapeList, хранящий список фигур. Определите метод __init__(self), создающий атрибут shape_list, содержащий пустой список. Определите метод add_shape(self, shape), добавляющий в список shape_list фигуру shape. Определите методы calculate_perimeters() и calculate_areas() возвращающие кортежи периметров и площадей всех фигур, хранящихся в списке shape_list. Тесты: 1. Создайте объект класса ShapeList 2. Заполните его случайным количеством (от 2 до 10) произвольных фигур. 3. Выведите результаты работы методов calculate_perimeters() и calculate_areas() для этого объекта.

Перейти к ответам

Ответы на вопрос

Отвечает Пак Альбина.

Для решения задачи удобно использовать объектно-ориентированный подход: создать общий базовый класс Shape, от которого будут наследоваться конкретные геометрические фигуры. Каждый класс будет иметь собственные реализации методов вычисления площади и периметра.

В базовом классе Shape методы calculate_perimeter() и calculate_area() будут возвращать 0, так как общая фигура не имеет конкретных размеров. Дочерние классы будут переопределять эти методы и выполнять необходимые вычисления.

Для вычисления площади треугольника можно использовать формулу Герона:

S=p(p−a)(p−b)(p−c)S = \sqrt{p(p-a)(p-b)(p-c)}

где:

  • a, b, c — длины сторон;
  • p — полупериметр:
p=a+b+c2p = \frac{a+b+c}{2}

Для прямоугольного треугольника площадь вычисляется проще:

S=a⋅b2S = \frac{a \cdot b}{2}

где a и b — катеты.

Пример реализации:

Python
import math
import random


# Базовый класс
class Shape:
def calculate_perimeter(self):
return 0

def calculate_area(self):
return 0


# Круг
class Circle(Shape):
def __init__(self, radius):
self.radius = radius

def calculate_perimeter(self):
return 2 * math.pi * self.radius

def calculate_area(self):
return math.pi * self.radius ** 2


# Прямоугольник
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height

def calculate_perimeter(self):
return 2 * (self.width + self.height)

def calculate_area(self):
return self.width * self.height

Результат работы программы будет зависеть от случайно созданных фигур. Например:

Периметры фигур: (31.41592653589793, 20, 18.0, 16)

Площади фигур: (78.53981633974483, 24, 14.966629547095765, 16)

В данной иерархии используется наследование и полиморфизм:

  • Shape является общим родительским классом;
  • Circle, Rectangle, Triangle расширяют его функциональность;
  • Square повторно использует структуру Rectangle, так как квадрат является частным случаем прямоугольника;
  • RightTriangle расширяет Triangle, добавляя особенности прямоугольного треугольника;
  • ShapeList работает с любыми объектами типа Shape, не зная их конкретного типа, что демонстрирует принцип полиморфизма.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос