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.

