Ruby/Zmienne klasowe: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Szymon wro (dyskusja | edycje)
Linia 1:
== Zmienne klasowe ==
 
Zmienne ''klasowe'' są współdzielone przez wszystkie instancje danej klasy. W Rubim, do oznaczania zmiennych klasowych używa się prefiksu <tt>@@</tt>. W tymponiższym przykładzie zmienna <tt>@@ilosc</tt> odzwierciedla całkowitą ilość instancji klasy <tt>Test</tt> utworzonych w czasie działania programu.
 
<pre>
Linia 29:
</pre>
 
<tt>@@ilosc</tt> tojest zmiennazmienną klasowaklasową. W konstruktorze klasy <tt>Test</tt> zwiększamy ją o jeden, czyli ''inkrementujemy'' (zmniejszanie o jeden nazywamy ''dekrementacją''). Zapis <tt>@@ilosc += 1<tt> jest równoważny zapisowi <tt>@@ilosc = @@ilosc + 1</tt>.
 
Metoda zdefiniowana jako <tt>self.ile_instancji</tt> jest ''metodą klasową''. Inną metodą tego rodzaju np. <tt>new</tt>. Metoda klasowa może być wywołana jedynie na rzecz klasy, nie na rzecz obiektu. W naszym przykładzie równoważną metodą, dlaale obiektównie klasową, jest metoda <tt>ile</tt>. Obie zwracają wartość naszej zmiennej klasowej. Wynik działania instrukcji <tt>puts</tt> oznaczyliśmy za pomocą komentarzy (<tt># => ...</tt>). Jak widzimy, każde kolejne utworzenie instancji klasy <tt>Test</tt> spowodujepowoduje zwiększenie o jeden zmiennej <tt>@@ilosc</tt>.
 
<noinclude>