В этом задании вы построите первую простую иерархию классов для заданной предметной области.
Предметная область выглядит следующим образом: есть сущность фигура. Фигуры бывают двух типов: треугольник и четырёхугольник. У фигуры есть количество сторон. Для неизвестной фигуры будем считать это количество равным нулю. У треугольника три стороны, у четырёхугольника четыре стороны. У любой фигуры мы хотим узнавать количество её сторон, но мы не должны быть способны изменить количество сторон для заданной фигуры извне.
Задача: спроектировать и реализовать классы, описывающие предметную область. Продемонстрируйте их работу: создайте по одному экземпляру каждого класса и выведите информацию о количестве его сторон на консоль.
Количество сторон:
Фигура: 0
Треугольник: 3
Четырёхугольник: 4
Не читайте этот раздел сразу. Попытайтесь сначала решить задачу самостоятельно :)
Что использовать для решения.
Вам нужно создать три класса: для фигуры, треугольника и четырёхугольника. Назовём их Figure, Triangle и Quadrangle.
Классы Triangle и Quadrangle будут наследовать класс Figure.
Для хранения информации о количестве сторон создайте поле sides_count в классе Figure. Оно будет защищённым, чтобы нельзя было изменить его извне, но можно изменить значение в наследниках. Либо оно может быть приватным, и тогда вам нужно передавать информацию о количестве сторон через конструктор.
Для доступа к информации о количестве сторон создайте публичный метод get_sides_count в классе Figure. Он будет унаследован обоими фигурами.
Для правильной инициализации информации о количестве сторон создайте конструкторы в классах, в которых присвойте нужное значение полю sides_count. Если вы сделали sides_count защищённым, можете присвоить значение прямо в конструкторе. Если приватным, то нужно создать в классе Figure защищённый конструктор с параметром (количество сторон) и публичный конструктор без параметров, который будет вызывать свой защищённый конструктор с параметром. Защищённый конструктор должны будут вызывать дочерние классы в своих публичных конструкторах без параметров.
Также для удобства вывода названия фигуры можно создать защищённое поле name в классе Figure с соответствующим методом get_name и заполнением значения в каждом классе. В Figure это будет «Фигура» и т. д.