Напиши программу на языке программирования Kotlin, в которой будт класс Shape с открытым методом calculateArea(), который должен возвращать площадь фигуры. Также добавь в программу подклассы Circle, Rectangle и Triangle, которые наследуются от класса Shape и переопредели метод calculateArea() для каждого из них. Продемонстрируй полиморфизм, создав массив объектов типа Shape и вызвав метод calculateArea() для каждого объекта
kotlin
// Определяем абстрактный класс Shape
abstract class Shape {
// Открытый метод для вычисления площади
abstract fun calculateArea(): Double
}
// Подкласс Circle, наследующийся от класса Shape
class Circle(private val radius: Double) : Shape() {
override fun calculateArea(): Double {
return Math.PI * radius * radius
}
}
// Подкласс Rectangle, наследующийся от класса Shape
class Rectangle(private val width: Double, private val height: Double) : Shape() {
override fun calculateArea(): Double {
return width * height
}
}
// Подкласс Triangle, наследующийся от класса Shape
class Triangle(private val base: Double, private val height: Double) : Shape() {
override fun calculateArea(): Double {
return 0.5 * base * height
}
}
fun main() {
// Создаем массив объектов типа Shape
val shapes = arrayOf(
Circle(5.0),
Rectangle(3.0, 4.0),
Triangle(5.0, 7.0)
)
// Вызываем метод calculateArea() для каждого объекта в массиве
for (shape in shapes) {
val area = shape.calculateArea()
println("Площадь фигуры: $area")
}
}
В данной программе определен абстрактный класс `Shape`, который имеет открытый метод `calculateArea()`. Этот метод возвращает площадь фигуры и должен быть переопределен в подклассах `Circle`, `Rectangle` и `Triangle`.
Класс `Circle` имеет приватное поле `radius`, представляющее радиус круга. Переопределенный метод `calculateArea()` вычисляет площадь круга по формуле πr².
Класс `Rectangle` имеет приватные поля `width` и `height`, представляющие ширину и высоту прямоугольника соответственно. Переопределенный метод `calculateArea()` вычисляет площадь прямоугольника по формуле width * height.
Класс `Triangle` имеет приватные поля `base` и `height`, представляющие основание и высоту треугольника соответственно. Переопределенный метод `calculateArea()` вычисляет площадь треугольника по формуле 0.5 * base * height.
В функции `main()` создается массив объектов типа `Shape`, содержащий объекты `Circle`, `Rectangle` и `Triangle`. Затем для каждого объекта в массиве вызывается метод `calculateArea()`, и результат выводится на экран. Таким образом, достигается полиморфизм - для каждого типа фигуры вызывается соответствующий метод `calculateArea()`, возвращающий правильное значение площади.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет