8.7. Definiowanie wirtualnych atrybutów

Problem

Chcemy stworzyć metody dostępowe dla atrybutu, który nie jest bezpośrednio reprezentowany przez żadną zmienną instancyjną — jego wartość obliczana jest na podstawie wartości wybranych zmiennych instancyjnych.

Rozwiązanie

Dla atrybutu o nazwie <nazwa> należy zdefiniować metody dostępowe o nazwach <nazwa> i <nazwa>=, tak samo, jak robiliśmy to dla zmiennych instancyjnych. To, co będzie się dziać w treści tych metod, jest wewnętrzną sprawą definiującej je klasy; fakt, że w obiektach tej klasy nie istnieje zmienna @<nazwa>, jest w ogóle na zewnątrz tej klasy niezauważalny.

W poniższej klasie Arc definiowane jest sześć metod dostępowych: stopnie, stopnie=, radiany, radiany=, gradusy i gradusy= ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.