У світі об’єктно-орієнтованого програмування, робота з типами даних, які можуть змінюватися або розширюватися в майбутньому, є досить поширеною задачею. Така гнучкість особливо важлива, коли мова йде про проектування базових класів, які повинні бути спроможними адаптуватися…