Třídní instanční proměnné
Třídy mohou mít instanční proměnné. Toto dá každé třídě proměnné, které nejsou sdíleny jinými třídami v řetězu dědictví.
class Zamestnanec
class << self; attr_accessor :instances; end
def uloz
self.class.instances ||= []
self.class.instances << self
end
def nacti jmeno
@jmeno = jmeno
end
end
class Tester < Zamestnanec; end
class Programator < Zamestnanec; end
Tester.new('Martin').uloz
Tester.new('Lukas').uloz
Programator.new('Jakub').uloz
puts Tester.instances.size # => 2
puts Programator.instances.size # => 1
Třídní metody
Třídní metody jsou deklarovány stejně jako normální metody, až na to, že mají předponu self, nebo jméno třídy, následované periodou. Tyto metody jsou vykonané v Class úrovňi a může být volány bez instance objektu. Nemohou zpřístupnit instanční proměnné ale mají přístup k třídním proměnným.
Příklad:
class MojeTrida
def self.nejaka_metoda
puts 'neco'
end
end
MojeTrida.nejaka_metoda
Výstupy:
něco
Instantizace
Instance objektu je vytvořená ze třídy skrz proces nazývající se instantizace. V Ruby se toto uskutečňuje skrz třídní metodu new.
Příklad:
Objekt = MojeTrida.new(parametry)
Tato funkce vytvoří objekt v paměti a potom deleguje kontrolu nad inicializací funkci třídy jestli je přítomná. Parametry předané do nové funkce jsou vloženy do intialize funkce.
class MojeTrida
def initialize(parametry)
end
end