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

Фигури с обща роля

Задача

Дефинирайте роля Shape, която изисква метод area, а после направете класове Circle и Square, които изпълняват ролята.

Напишете подпрограма describe, чийто параметър е типизиран като Shape, така че тя приема всяка фигура и отказва всичко, което не е фигура. Тя трябва да отпечата площта на фигурата, надписана с името на класа ѝ. Извикайте я за окръжност с радиус 2 и квадрат със страна 3.

Подпрограмата никога не проверява какъв вид фигура е получила: понеже параметърът ѝ е Shape, обектът гарантирано има метод area, така че едно и също извикване .area работи с която и да е постъпила фигура. Точно това ви дава ролята — един тип, който можете да изисквате, и едно парче код, което се отнася еднакво с всеки клас, изпълняващ този тип.

Пример

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

Circle: 12.56636
Square: 9

Решение

Вижте решението

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

Решение: Банкова сметка   |   Решение: Фигури с обща роля