Практика на интерфейсы в Kotlin
Интерфейс Figure задает две операции для
плоских фигур: площадь и периметр. Классы с разной
геометрией реализуют один и тот же контракт по-своему.
interface Figure {
fun area(): Double
fun perimeter(): Double
}
Квадрат хранит длину стороны и считает площадь и периметр по формулам:
class Square(private val side: Double) : Figure {
override fun area(): Double = side * side
override fun perimeter(): Double = 4 * side
}
Прямоугольник использует две стороны:
class Rectangle(
private val width: Double,
private val height: Double
) : Figure {
override fun area(): Double = width * height
override fun perimeter(): Double = 2 * (width + height)
}
Если метод интерфейса не реализовать, проект не соберется. Компилятор сразу укажет, какой член контракта пропущен.
Сделайте класс Disk, реализующий интерфейс Figure.
Создайте несколько объектов класса Square,
несколько объектов класса Rectangle
и несколько объектов класса Disk.
Запишите их в один список как Figure
в случайном порядке.
Переберите циклом этот список и выведите на экран площадь каждой фигуры.
Не подсматривая в мой код реализуйте такой
же класс FigureCollection. Пусть у него
будет метод add для добавления фигуры
типа Figure и метод totalArea
для нахождения суммарной площади всех фигур.