Saya telah membaca The Early History of Smalltalk dan ada beberapa yang menyebutkan "penugasan" yang membuat saya mempertanyakan pemahaman saya tentang maknanya:
Meskipun OOP berasal dari banyak motivasi, dua adalah pusat. Yang berskala besar adalah menemukan skema modul yang lebih baik untuk sistem kompleks yang melibatkan penyembunyian detail, dan yang berskala kecil adalah menemukan versi tugas yang lebih fleksibel, dan kemudian mencoba menghilangkannya sama sekali.
(dari 1960-66 - OOP Awal dan gagasan formatif lainnya dari tahun enam puluhan , Bagian I)
Apa yang saya dapatkan dari Simula adalah bahwa Anda sekarang dapat mengganti binding dan tugas dengan gol . Hal terakhir yang Anda inginkan dari setiap programmer adalah mengacaukan keadaan internal meskipun disajikan secara kiasan. Sebaliknya, objek harus disajikan sebagai situs perilaku tingkat tinggi yang lebih tepat untuk digunakan sebagai komponen dinamis . (...) Sangat disayangkan bahwa banyak dari apa yang disebut "pemrograman berorientasi objek" saat ini hanyalah pemrograman gaya lama dengan konstruksi yang lebih menarik. Banyak program dimuat dengan operasi "penugasan-gaya" sekarang dilakukan oleh prosedur terlampir lebih mahal.
(dari Gaya "Berorientasi Objek" , Bagian IV)
Apakah saya benar dalam mengartikan maksud sebagai objek yang dimaksudkan sebagai fasad dan metode apa pun (atau "pesan") yang tujuannya adalah untuk menetapkan variabel instan pada objek (yaitu "penugasan") mengalahkan tujuannya? Penafsiran ini tampaknya didukung oleh dua pernyataan kemudian di Bagian IV:
Empat teknik yang digunakan bersama - keadaan persisten, polimorfisme, instantiasi, dan metode-sebagai-tujuan untuk objek - menjelaskan sebagian besar kekuatan. Tidak satu pun dari ini memerlukan "bahasa berorientasi objek" untuk dipekerjakan - ALGOL 68 hampir dapat beralih ke gaya ini - dan OOPL hanya memfokuskan pikiran desainer dalam arah yang bermanfaat. Namun, melakukan enkapsulasi benar adalah komitmen tidak hanya untuk abstraksi negara, tetapi untuk menghilangkan metafora berorientasi negara dari pemrograman.
...dan:
Pernyataan penugasan - bahkan yang abstrak - mengekspresikan tujuan tingkat sangat rendah, dan lebih dari itu akan diperlukan untuk menyelesaikan apa pun. Secara umum, kami tidak ingin programmer untuk bermain-main dengan keadaan, apakah disimulasikan atau tidak.
Apakah adil untuk mengatakan bahwa kejadian-kejadian yang tidak jelas dan tidak dapat diubah sedang didorong di sini? Atau itu hanya perubahan status langsung yang tidak disarankan? Sebagai contoh, jika saya memiliki BankAccount
kelas, tidak masalah untuk memiliki GetBalance
, Deposit
dan Withdraw
contoh metode / pesan; pastikan saja tidak ada SetBalance
metode / pesan instan?