Saya biasanya mencoba dan menggambarkan Pemrograman Berorientasi Objek dengan menggunakan contoh dunia nyata.
Sebagai contoh, saya dapat mengatakan bahwa kelas yang dipanggil Vehicle
menggambarkan hal-hal minimum yang dimiliki kendaraan. Saya akan meminta orang tersebut untuk memberi tahu saya apa pendapatnya tentang kendaraan. Terkadang mereka mengatakan hal-hal seperti "Yah, seperti mobil atau truk", dan saya akan mengangguk dan setuju dengan mereka. Lalu saya akan bertanya apa perbedaan antara mobil dan truk. Terkadang mereka menyebutkan ukuran, terkadang tujuan, dan hal lainnya.
Kemudian saya akan meminta mereka untuk melupakan mobil, atau truk dan hanya meminta mereka untuk terus menggambarkan kendaraan:
"Oh, baiklah itu bergerak"
"Ini memiliki operator, atau sopir"
dll ...
Segera, kita tahu apa itu Kendaraan dan saya katakan bahwa di OOP kita akan mendefinisikan kendaraan, dan demi argumen mengatakan itu bisa bergerak, dan memberikannya semacam pengemudi. Lalu saya akan bertanya, ok, jadi apa yang dimiliki mobil?
"Pintu"
"Windows"
Dan kemudian sebuah truk ....
"Pintu" "windows" "Roda Lebih Banyak!"
Segera, setelah banyak diskusi, orang lain umumnya telah mengidentifikasi:
1) Apa yang merupakan kendaraan
2) Apa yang dimaksud dengan mobil
3) Apa yang dimaksud dengan truk
4) Apa yang merupakan pesawat terbang.
Semua tanpa teknis. Kami membagi properti masing-masing ke area yang tepat. Mereka memahami warisan ("Ya, mobil adalah kendaraan, truk adalah kendaraan, tetapi mobil bukan truk, itu SEDERHANA, duh!").
Mereka bahkan memahami polimorfisme, "Tentu, pada dasarnya mereka melakukan hal yang sama, tetapi itu mungkin sedikit berbeda.". Kita dapat berbicara tentang perilaku dan di mana hal itu seharusnya hidup di pohon benda kita.
Bergantung pada pendidikan dan latar belakang mereka, beberapa orang mendapatkannya lebih cepat daripada yang lain. Tetapi ketika saya membandingkan OOP dengan objek kehidupan nyata, kebanyakan orang selalu mendapatkannya. Bahkan, saya telah menemukan dalam percakapan dengan orang-orang non-teknis hal-hal yang tidak pernah saya pikirkan. Kendaraan tidak harus diawaki, misalnya (drone), tetapi apakah seorang programmer akan menganggap operator kendaraan sebagai properti dari itu? Saya tidak mengatakan itu benar atau salah untuk memiliki operator yang disebutkan, tetapi itu membuat kita berpikir tentang apa yang kita modelkan dan apa yang kita coba capai ketika kita mengembangkan perangkat lunak.
Sekarang, spesialisasi sebagian template, di sisi lain .... :)