Курс языка программирования Raku / Приложение 🆕 / Типы и текстовые машины / Объекты и классы / Exercises

Фигуры с общей ролью

Задача

Определите роль Shape, требующую метод area, а затем создайте классы Circle и Square, которые эту роль исполняют.

Напишите подпрограмму describe, параметр которой типизирован как Shape, чтобы она принимала любую фигуру и отвергала всё, что фигурой не является. Она должна печатать площадь фигуры, снабдив её именем класса. Вызовите её для круга радиусом 2 и квадрата со стороной 3.

Подпрограмма нигде не проверяет, какую именно фигуру она получила: раз её параметр — Shape, у объекта гарантированно есть метод area, поэтому один и тот же вызов .area работает с любой пришедшей фигурой. Это и даёт роль — единый тип, который можно потребовать, и один участок кода, одинаково обращающийся с каждым классом, эту роль исполняющим.

Пример

Программа печатает:

Circle: 12.56636
Square: 9

Решение

Посмотреть решение

Навигация по курсу

Решение: Банковский счёт   |   Решение: Фигуры с общей ролью