--- Rie! <[EMAIL PROTECTED]> wrote:
> On 26/03/2008, Edwin Pratomo <[EMAIL PROTECTED]> wrote:
>
> > 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().
>
> boleh ada contoh source code yang C++ nya?
#include <iostream>
using namespace std;
class Foo {
friend class Bar;
private:
void foo() {
cout << "foo" << endl;
}
};
class Bar {
public:
Bar() {
Foo f;
f.foo();
}
};
int main() {
Foo f;
Bar b; // foo
// f.foo(); // error: ‘void Foo::foo()’ is private
return 0;
}
>
> > 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.
>
> apa artinya "sifatnya advisory" ? (nyerah googling[1])
lawannya mandatory. sepertinya ini filosofi serapan dari larry wall juga :-)
si larry pernah bilang kira2 gini: orang memprogram tidak di bawah todongan
pistol di kepala. makanya di Perl ngga ada access control.
tapi mungkin ini ekstrim menurut matz, jadi dia introduce access control. tapi
access control-nya ini dia buat tidak betul2 strict, mungkin karena dia "amin"
juga sama ajaran larry wall :-D
>
> > class Foo
> > def self.foo
> > puts "foo"
> > end
> > class << self
> > private :foo
> > end
> > end
> >
> > class Foo
>
> sampai di baris ini, kalau saya bilang itu karena ruby bersifat open
> class. kena bagian yang saya suka nih. tapi memang argumen saya nggak
> kuat mutlak, karena saya sendiri boleh menyanggah argumen tsb, ya
> walau bersifat open tapi kan apa harus private berubah jadi public?!
sebetulnya tidak mengubah private jadi public. kalo mengubah private -> public
kan dng cara:
public :foo
yg saya rasa tidak dianjurkan.
> makanya saya di atas nanyaken code asli yang dari C++ mana.
rgds,
Edwin.
________________________________________________________
Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda! Kunjungi
Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/