Ada dua konsep utama dalam kebingungan: mengikat dan memuat. Itu digabungkan dengan konsep DataBinding, yang merupakan suatu tempat di tengah sering melakukan keduanya. Setelah mempertimbangkannya, saya akan menambahkan satu konsep lagi, untuk melengkapi trifecta, pengiriman.
Jenis
Late Binding : type tidak diketahui sampai variabel dijalankan saat run-time; biasanya melalui penugasan tetapi ada cara lain untuk memaksa suatu jenis; bahasa yang diketik secara dinamis menyebut ini fitur yang mendasarinya, tetapi banyak bahasa yang diketik secara statis memiliki beberapa metode untuk mencapai pengikatan akhir
Diterapkan sering menggunakan tipe dinamis [khusus], introspeksi / refleksi, opsi flag dan kompiler, atau melalui metode virtual dengan meminjam dan memperluas pengiriman dinamis
Binding Awal : tipe diketahui sebelum variabel dijalankan selama run-time, biasanya melalui cara statik, deklaratif
Diimplementasikan sering menggunakan tipe primitif standar
Fungsi
Pengiriman Statis : diketahui, fungsi spesifik atau subrutin pada waktu kompilasi; itu tidak ambigu dan cocok dengan tanda tangan
Diimplementasikan sebagai fungsi statis; tidak ada metode yang dapat memiliki tanda tangan yang sama
Pengiriman dinamis : bukan fungsi atau subrutin tertentu pada waktu kompilasi; ditentukan oleh konteks selama eksekusi. Ada dua pendekatan berbeda untuk "pengiriman dinamis," dibedakan dengan informasi kontekstual apa yang digunakan untuk memilih implementasi fungsi yang sesuai.
Dalam pengiriman tunggal [ dinamis ] , hanya jenis instance yang digunakan untuk menentukan implementasi fungsi yang sesuai. Dalam bahasa yang diketik secara statis, apa artinya ini dalam praktek adalah bahwa tipe instance memutuskan implementasi metode mana yang digunakan terlepas dari tipe referensi yang ditunjukkan ketika variabel dideklarasikan / ditugaskan. Karena hanya satu tipe - tipe instance objek - yang digunakan untuk menyimpulkan implementasi yang tepat, pendekatan ini disebut "pengiriman tunggal".
Ada juga beberapa pengiriman [ dinamis ] , di mana tipe parameter input juga membantu menentukan implementasi fungsi mana yang akan dipanggil. Karena beberapa tipe - baik tipe instance dan tipe parameter - mempengaruhi penerapan metode mana yang dipilih, pendekatan ini dijuluki "pengiriman ganda".
Diimplementasikan sebagai fungsi virtual atau abstrak; petunjuk lain termasuk metode yang diganti, disembunyikan, atau dibayangi.
NB: Apakah metode overloading melibatkan pengiriman dinamis atau tidak, tergantung pada bahasa. Misalnya, di Jawa, metode kelebihan beban dikirim secara statis.
Nilai-nilai
Pemuatan Malas : strategi inisialisasi objek yang menentang penetapan nilai sampai dibutuhkan ; memungkinkan objek berada pada kondisi yang pada dasarnya valid tetapi tidak lengkap dan menunggu sampai data diperlukan sebelum memuatnya; sering ditemukan sangat berguna untuk memuat dataset besar atau menunggu sumber daya eksternal
Diimplementasikan sering dengan sengaja tidak memuat koleksi atau daftar ke objek komposit selama panggilan konstruktor atau inisialisasi sampai beberapa penelepon hilir meminta untuk melihat konten koleksi itu (mis. Get_value_at, get_all_as, dll). Variasi termasuk memuat informasi meta tentang koleksi (seperti ukuran atau kunci), tetapi menghilangkan data aktual; juga menyediakan mekanisme untuk beberapa runtime untuk menyediakan pengembang dengan skema implementasi tunggal yang cukup aman dan efisien
Eager Loading : strategi inisialisasi objek yang segera melakukan semua penetapan nilai agar semua data yang diperlukan harus lengkap sebelum menganggap dirinya dalam keadaan valid.
Diimplementasikan sering dengan menyediakan objek komposit dengan semua data yang diketahui sesegera mungkin, seperti saat panggilan konstruktor atau inisialisasi
Pengikatan Data : sering melibatkan pembuatan tautan atau peta aktif antara dua aliran informasi yang kompatibel sehingga perubahan terhadap satu tercermin kembali ke yang lain dan sebaliknya; Agar kompatibel, mereka seringkali harus memiliki tipe dasar, atau antarmuka yang sama
Sering diimplementasikan sebagai upaya untuk menyediakan sinkronisasi yang lebih bersih dan konsisten antara berbagai aspek aplikasi (misalnya model tampilan untuk melihat, model ke pengontrol, dll.) Dan berbicara tentang konsep seperti sumber dan target, titik akhir, ikatan / tidak mengikat, pembaruan, dan acara seperti on_bind, on_property_change, on_explicit, on_out_of_scope
EDIT NOTE: Edit besar terakhir untuk memberikan deskripsi contoh bagaimana ini sering terjadi. Contoh kode tertentu sepenuhnya bergantung pada implementasi / runtime / platform