Andry S Huzain wrote:
>> On 10/1/07, Hendy Irawan <[EMAIL PROTECTED]> wrote: Aditya Agustyana
>> wrote:
>>
>>
>> Dari beberapa kriteria yang disebutkan Mr. Kay, salah dua-nya adalah
>> 'dynamic typing' dan 'late-binding'...... dan keduanya tidak secara
>> natural ada dalam bahasa pemrograman C++, Java, maupun C# (yang
>> ketiganya sering2 disebut sebagai bahasa OOP). Possible, but probably
>> painful.
>>     
>
>
> Apa hubungannya "dynamic typing" dan "late-binding" dengan OOP?
>
> Ndak mudeng saya.
>
>   
Saya juga ndak mudeng. Wong yang bilang Dr. Kay bukan saya :-)

Interpretasi saya, OOP is about "sending messages to objects". Jadi 
konsep-konsep seperti "interface" dan "contract" tidak terlalu "ada" di 
sini.

Karena yang dihadapi adalah message, bukan 'function call', maka 
compiler/interpreter hanya bertugas sebagai penyampai pesan, bukan 
pemeriksa pesan.

Apakah objek A akan mengirim pesan yang invalid atau valid kepada objek 
B, itu adalah urusan objek B... bukan urusan compiler/interpreter atau VM.

Kalau pun objek B ternyata 'tidak suka' alias 'menolak' pesan 
tersebut..... kan masih ada 'method_missing' :-)

Kalo objek A ingin tau apakah objek B "kira-kira" bisa menerima pesan 
tersebut.... ya tinggal panggil .respond_to? :-)

sarah.respond_to?(:love) ==> UnbelievableDreamException raised

:-P

Satu lagi interpretasi saya adalah 'message' belum tentu harus terdiri 
dari 'method name' dan 'parameters', seperti yang biasanya ada di 
bahasa2 pemrograman. Mungkin kebetulan banyak bahasa pemrograman yang 
seperti itu.

Ini agak menyulitkan, karena misalnya di Ruby, respond_to? hanya bisa 
menerima nama method...

Bagaimana jika saya ingin mengirim message berupa objek? Saya harus 
menentukan dulu method yang akan menerima objek tersebut....

So, rather than:

my_love = Love.new(:from => hendy)
sarah.respond_to?(my_love)     

I need to do

sarah.respond_to?(:receive_love)      # INCORRECT!

Yang tidak sesuai dengan apa yang saya inginkan..... saya bukannya ingin 
memanggil method receive_love... tapi saya ingin mengirim objek my_love 
tersebut kepada sarah...

Akhirnya terpaksa ada workaround:

sarah.receive_love(my_love) if sarah.can_receive_love?(my_love)

yang akhirnya mem-violate prinsip encapsulation.... karena saya harus 
menggunakan dua method yang terpaksa dibuat karena objek tidak mempunyai 
kemampuan basic untuk menerima message seperti yang diinginkan oleh Dr. 
Alan Kay.

Kirim email ke