Ruby/Kontrola dostępu: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Szymon wro (dyskusja | edycje)
Linia 60:
Moglibyśmy oczekiwać, że <tt>test.wylicz(6)</tt> zwróci <tt>12</tt>, ale zamiast tego nauczyliśmy się, że <tt>wylicz</tt> jest niedostępny, gdy odgrywamy rolę użytkownika obiektu <tt>Test</tt>. Tylko inne metody klasy <tt>Test</tt>, takie jak <tt>dwa_razy</tt> mogą korzystać z <tt>wylicz</tt>. Od nas wymagane jest posługiwanie się publicznym interfejsem, który składa się z metody <tt>dwa_razy</tt>. Programista, który jest pod kontrolą tej klasy może swobodnie modyfikować <tt>wylicz</tt> (tutaj, być może zmieniając <tt>b*2</tt> na <tt>b+b</tt> i argumentując to przypuszczalnie wzrostem wydajności) bez wpływania na to jak użytkownik współdziała z obiektami klasy <tt>Test</tt>. Ten przykład jest oczywiście zbyt prosty by był użyteczny; korzyści z metod kontroli dostępu staną się bardziej widoczne tylko wtedy, gdy zaczniemy tworzyć bardziej skomplikowane i interesujące klasy.
 
Dodatkowo warto zwrócić uwagę, na oznaczanie nazw metod jako ''symboli'' (nazwa poprzedzona dwukropkiem) po modyfikatorze <tt>private</tt>. Gdybyśmy chcieli uczynić ukryć obie metody klasy <tt>Test2</tt> kod wyglądałby następująco:
 
<pre>
Linia 74:
</pre>
 
Modyfikator <tt>private</tt> można również umieścić między definicjami metod bez podawania żadnych symboli. Wówczas wszystkie metody umieszczone za tym modyfikatorem są ukryte (czyli prywatne). Powyższy przykład mógłby wtedy wyglądać tak:
 
<pre>
class Test2
private
private # rownowazne private :metoda1, :metoda2
def metoda1
# jakis kod...