Genellikle denemek ve gerçek dünya örnekleri kullanarak Nesne Yönelimli-Programlama tanımlamak.
Örneğin, denilen bir sınıfın Vehicle
, bir aracın minimum şeylerini tarif ettiğini söyleyebilirim . Kişiden bana bir aracın ne olduğunu düşündüğünü söylemesini isteyeceğim. Bazen "Peki, bir araba ya da bir kamyon gibi" gibi şeyler söylerler, ben de başını sallayarak onaylarım. Sonra bir araba ile bir kamyon arasındaki farkların ne olduğunu soracağım. Bazen büyüklükten, bazen amaçtan ve diğer şeylerden bahsederler.
Sonra onlardan bir araba veya bir kamyonu unutmalarını isteyeceğim ve sadece bir aracı tarif etmeye devam etmelerini isteyeceğim:
"Ah, iyi hareket ediyor"
"Bir operatörü ya da bir sürücüsü var"
vb...
Yakında, bir Aracın ne olduğunu biliyoruz ve OOP'ta bir araç tanımlayacağımızı söyledim ve tartışma uğruna onun hareket edebileceğini ve ona bir çeşit sürücü verebileceğini söyledim. Sonra soracağım, tamam, bir arabanın nesi var?
"Kapılar"
"Pencereler"
Ve sonra bir kamyon ....
"Kapılar" "pencereler" "Daha Fazla Tekerlek!"
Çok geçmeden, birçok tartışmadan sonra, diğer kişi genellikle şunları tespit etti:
1) Bir aracı ne oluşturur
2) Bir arabayı ne oluşturur
3) Kamyonu ne oluşturur
4) Bir uçağı neyin oluşturduğu.
Hepsi herhangi bir teknik olmadan. Her birinin özelliklerini doğru alanlara ayırdık. Miras anlıyorlar ("Evet, bir araba bir araç, bir kamyon bir araç, ama bir araba bir kamyon değil, BASİT, duh!").
Polimorfizmi bile anlıyorlar, "Tabii, temelde aynısını yapıyorlar, ama bu biraz farklı olabilir.". Davranış ve bunun nesneler ağacımızda nerede yaşanması gerektiği hakkında konuşabiliriz.
Eğitimine ve geçmişine bağlı olarak, bazıları diğerlerinden daha hızlıdır. Ama OOP'u gerçek hayattaki nesnelerle karşılaştırdığımda, çoğu insan bunu her zaman elde eder. Aslında, teknik olmayan insanlarla yaptığım konuşmalarda hiç düşünmediğim şeyleri buldum. Araçların insanlı olması gerekmez, örneğin (insansız hava araçları), ama bir programcı aracın operatörünü onun bir özelliği olarak düşünür müydü? Bir operatörün bahsetmesinin doğru ya da yanlış olduğunu söylemiyorum, ancak bizim neyi modellediğimizi ve yazılım geliştirirken neyi başarmaya çalıştığımızı düşünmemize neden oluyor.
Şimdi ise kısmi şablon uzmanlığı .... :)