Курс Raku / Додаток 🆕 / Типи та текстові машини / Об’єкти та класи / Вправи

Фігури зі спільною роллю

Завдання

Означте роль Shape, що вимагає методу area, а потім створіть класи Circle та Square, що виконують цю роль.

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

Підпрограма ніколи не перевіряє, який саме різновид фігури вона отримала: оскільки її параметр є Shape, об’єкт гарантовано має метод area, тож той самий виклик .area працює з будь-якою фігурою, що надійде. Ось що дає вам роль — єдиний тип, який можна вимагати, і один шматок коду, що однаково поводиться з кожним класом, який його виконує.

Приклад

Програма друкує:

Circle: 12.56636
Square: 9

Рішення

Дивіться рішення

Навігація курсом

Розв’язання: Банківський рахунок   |   Розв’язання: Фігури зі спільною роллю