--- 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/

Kirim email ke