Изучение иерархии классов фигур: построение классов круга, прямоугольника и треугольника в Python

В этой статье блога мы углубимся в мир объектно-ориентированного программирования и рассмотрим создание класса Shape и его производных классов: Circle, Rectangle и Triangle. Мы обсудим дизайн и реализацию этих классов, а также различные методы, связанные с каждым классом. Давайте погрузимся!

Проектирование класса формы:
Класс Shape служит базовым классом для всех геометрических фигур. Он инкапсулирует общие атрибуты и поведение, присущие различным формам. Вот скелетный код класса Shape:

class Shape:
    def __init__(self):
        pass
    def area(self):
        pass
    def perimeter(self):
        pass

Наследование от класса фигуры:
Чтобы создать определенные классы фигур, такие как круг, прямоугольник и треугольник, мы можем наследовать от класса формы. Каждый производный класс будет реализовывать свои собственные уникальные методы и переопределять необходимые методы, унаследованные от класса Shape.

Создание класса Circle:
Класс Circle представляет собой круглую форму. Для инициализации требуется параметр радиуса. Давайте определим класс Circle и реализуем методы площади и периметра:

import math
class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius
    def area(self):
        return math.pi * self.radius2
    def perimeter(self):
        return 2 * math.pi * self.radius

Создание класса Rectangle:
Класс Rectangle представляет прямоугольную форму. Для этого требуется инициализировать параметры длины и ширины. Давайте определим класс Rectangle и реализуем методы площади и периметра:

class Rectangle(Shape):
    def __init__(self, length, width):
        self.length = length
        self.width = width
    def area(self):
        return self.length * self.width
    def perimeter(self):
        return 2 * (self.length + self.width)

Создание класса Triangle:
Класс Triangle представляет собой треугольную форму. Для инициализации требуется три длины сторон. Давайте определим класс Triangle и реализуем методы площади и периметра:

class Triangle(Shape):
    def __init__(self, side1, side2, side3):
        self.side1 = side1
        self.side2 = side2
        self.side3 = side3
    def area(self):
        s = (self.side1 + self.side2 + self.side3) / 2
        return math.sqrt(s * (s - self.side1) * (s - self.side2) * (s - self.side3))
    def perimeter(self):
        return self.side1 + self.side2 + self.side3

Дополнительные методы.
Помимо общих методов, унаследованных от класса Shape, каждый производный класс формы может иметь свои собственные методы. Вот несколько дополнительных методов, которые вы можете реализовать для каждого класса фигуры:

Класс круга:

  • get_radius(): возвращает радиус круга.
  • set_radius(new_radius): обновляет радиус круга.

Класс прямоугольника:

  • get_length(): возвращает длину прямоугольника.
  • get_width(): возвращает ширину прямоугольника.
  • set_length(new_length): обновляет длину прямоугольника.
  • set_width(new_width): обновляет ширину прямоугольника.

Класс треугольника:

  • get_side_lengths(): возвращает кортеж, содержащий длины трех сторон треугольника.
  • set_side_lengths(new_side1, new_side2, new_side3): обновляет длины сторон треугольника.

В этой статье блога мы исследовали концепцию объектно-ориентированного программирования, разработав класс Shape и производные от него такие классы, как Circle, Rectangle и Triangle. Мы обсудили реализацию общих методов, таких как площадь и периметр, а также дополнительных методов, специфичных для каждого класса формы. Используя наследование, мы можем создать гибкую и расширяемую иерархию классов фигур. Приятного кодирования!