ruby menyediakan access control public, private, protected. c++ juga
menyediakan access level public, private, protected. tapi di c++ ada friend
untuk mendeklarasikan bahwa sebuah class lain boleh mengakses private,
protected methods. misalkan class Foo punya private method foo(), maka class
Bar yg adalah friend dari Foo boleh mengakses Foo.foo().
di ruby tidak ada friend, kenapa? karena tidak perlu, karena access control di
ruby sifatnya advisory. private methods dng gampang diakses dari luar, jika
diperlukan.
class Foo
def self.foo
puts "foo"
end
class << self
private :foo
end
end
class Foo
def self.another_foo
foo
end
end
Foo.foo # private method `foo' called for Foo:Class (NoMethodError)
Foo.another_foo # foo
mungkin ada yg bertanya, gunanya utk apa?
sebuah contoh misalkan kita mau membuat unit test utk private methods.
i.e. class TestFoo < Test::Unit::TestCase butuh mengakses Foo.foo
rgds,
Edwin.
________________________________________________________
Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda! Kunjungi
Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/