Курс по Raku / Приложение 🆕 / Типове и текстови машини / Обекти и класове / Exercises
Фигури с обща роля
Задача
Дефинирайте роля Shape, която изисква метод
area, а после направете класове Circle и
Square, които изпълняват ролята.
Напишете подпрограма describe, чийто параметър е
типизиран като Shape, така че тя приема всяка
фигура и отказва всичко, което не е фигура. Тя трябва да отпечата площта
на фигурата, надписана с името на класа ѝ. Извикайте я за окръжност с
радиус 2 и квадрат със страна 3.
Подпрограмата никога не проверява какъв вид фигура е получила: понеже
параметърът ѝ е Shape, обектът гарантирано има метод
area, така че едно и също извикване .area
работи с която и да е постъпила фигура. Точно това ви дава ролята — един
тип, който можете да изисквате, и едно парче код, което се отнася
еднакво с всеки клас, изпълняващ този тип.
Пример
Програмата отпечатва:
Circle: 12.56636
Square: 9