Kami akan memulai untuk membantu dengan boot camp baru-untuk-coding di tempat kerja saya, di mana orang-orang dari departemen lain dapat belajar bagaimana kode dari orang-orang IT. Meskipun ini hebat dan semuanya, saya dalam acar. Saya diminta untuk menemukan cara untuk mendemonstrasikan secara fisik konsep pewarisan, polimorfisme, memiliki-dan-hubungan dengan demo fisik. Secara efektif, mereka meminta saya untuk menggunakan alat peraga untuk menunjukkan konsep-konsep ini kepada orang-orang yang tidak tahu apa-apa tentang pemrograman dan ilmu komputer!
Apakah ada analogi atau demonstrasi yang baik yang Anda gunakan atau lihat untuk menunjukkan prinsip-prinsip ini?
object-oriented
concepts
demonstration
Adam Wells
sumber
sumber
Jawaban:
Mengajarkan prinsip-prinsip OO kepada yang bukan pemrogram seperti mengajarkan scuba diving kepada orang yang tidak bisa berenang.
Yang mengatakan , inilah beberapa kemungkinan dengan alat peraga yang disarankan yang dapat Anda bawa ke kelas dan lulus (atau setidaknya menunjukkan) untuk menggambarkan konsep:
Warisan:
Atribut:
Penjelasan: beri tahukan kepada mereka bahwa setiap iPhone baru merupakan peningkatan tambahan dari pendahulunya yang sedang. Bahwa sebagian besar jeroan sama, tetapi beberapa telah diperbaiki. Hal yang sama untuk fungsi. Katakan bahwa bahkan beberapa bagian dapat secara harfiah bagian yang sama dari iPhone pertama yang tidak punya alasan untuk berubah.
Poliporfisme:
Atribut:
Penjelasan: Karena semua peralatan mematuhi antarmuka yang sama (semuanya memiliki colokan dengan cabang yang sesuai dengan lubang soket dinding), semua artefak kucing mendapatkan daya dari colokan tersebut. Dari sudut pandang soket, tidak masalah apa jenis alat yang Anda plugin ke listrik selama sesuai dengan "antarmuka" soket.
Adalah:
Alat Peraga: iPhone yang disebutkan di atas
Penjelasan: setiap iPhone 7 adalah iPhone, setiap iPhone adalah telepon pintar, setiap telepon pintar adalah telepon.
Has-a: Komposisi
Alat peraga: iPhone yang disebutkan di atas, ditambah panel layar sentuh yang terpisah.
Penjelasan: setiap iPhone memiliki panel layar sentuh (yang transparan dengan kabel datar yang menempel di samping). Panel layar sentuh yang terpisah dari iPhone tidak banyak digunakan. Anda tidak melihat orang yang membawa di dalam saku mereka panel layar sentuh yang dilepas dengan kabel rata yang menggantung.
Has-a: Agregasi
Alat Peraga: Gantungan kunci dengan kunci, penunjuk laser, pembuka tutup, drive flash, kontrol alarm mobil dan pernak-pernik dan gerobak lainnya.
Penjelasan: Gantungan kunci adalah objek komposit dengan banyak kunci yang melekat padanya, kunci, laser pointer dan pembuka kaleng dapat bekerja sendiri tanpa melekat pada gantungan kunci dan tidak ada gantungan kunci atau alat (kunci, dll) yang tersisa di keadaan tidak stabil. Anda dapat menambah dan menghapus item ini ke gantungan kunci tetapi mereka bisa eksis sendiri sebagai alat fungsional. Gantungan kunci itu sendiri bisa bersifat epmty, dan Anda tidak bisa mengatakan itu rusak karena itu.
CATATAN: kelas-kelas itu tidak akan benar-benar mengajar orang OOP, sama seperti metode Chineasy tidak akan mengajarkan Anda bahasa mandarin. Ini hanya akan menjadi wawasan yang menyenangkan (semoga) ke cara berpikir orang asing.
sumber
Mulailah dengan dasar-dasarnya. Jangan menggunakan benda-benda fisik sebagai alat peraga untuk menyarankan hal-hal yang mungkin menjadi benda, karena itu cara berpikir yang menyesatkan tentang sistem berorientasi objek. Alih-alih, luangkan waktu untuk kuliah Natal Royal Institution dan gunakan audiens Anda sebagai alat bantu. Dapatkan beberapa dari mereka untuk menjadi sukarelawan, dan menugaskan beberapa dari mereka peran menjadi objek dalam sistem berorientasi objek yang aktual dan realistis. Mungkin salah satu dari mereka menjadi antrian dan beberapa produsen dan konsumen, atau sesuatu seperti itu. Tunjukkan pada mereka bahwa hal penting tentang suatu objek adalah perilakunya dalam kaitannya dengan objek lain, bukan apa yang dimodelkannya (karena dalam banyak kasus ia tidak benar-benar memodelkan sesuatu yang berwujud).
sumber
Pengalaman pribadi saya bahkan beberapa pengembang junior tanpa latar belakang akademis dalam ilmu komputer yang baru saja belajar pemrograman dengan mencari di internet tidak dapat memahami dengan baik rincian OOP. Misalnya menggunakan nama yang tepat untuk properti atau menulis metode pendek, dan daftarnya berlanjut. Saya pikir mengajarkan konsep-konsep OOP kepada orang-orang yang tidak pernah terpapar pada pemrograman adalah kerja keras dan akan dengan cepat berubah menjadi kekecewaan.
Saya akan menyarankan mulai dengan beberapa dasar pemrograman dalam bahasa pilihan Anda dan kemudian perlahan-lahan menjelaskan mengapa Anda misalnya mewarisi dari kelas lain atau mengapa Anda membuat kelas bersarang dan akhirnya memberi tahu mereka "Oke, benda ini Is-A hubungan dan hal itu adalah hubungan Has-A ", dll.
sumber
Anda harus fokus pada fitur terpenting OO. Ini adalah enkapsulasi, perbedaan antarmuka / implementasi dan kopling longgar.
Apa yang tidak boleh Anda lakukan adalah memanfaatkan hierarki warisan dan menggunakan taksonomi sebagai metafora untuk ini. Pertama, pewarisan bukanlah konsep yang penting dalam OO, kedua, metafora populer sebenarnya lebih menyesatkan daripada mencerahkan. Kelas sebenarnya tidak seperti spesies hewan atau buah-buahan atau apa pun.
Saya pikir dapur akan menjadi metafora yang berguna. Dapur membutuhkan banyak fungsi kompleks agar dapat memasak makanan. Tetapi tidak dibangun sebagai satu mesin besar yang saling berhubungan. Melainkan dibangun dari komponen seperti oven, lemari es, wastafel dll. Setiap komponen memiliki tujuan tunggal yang jelas. Mereka dapat diganti - Anda dapat mengubah oven ke oven yang berbeda dari vendor yang berbeda, dan itu bahkan akan muat di ruang yang sama dan pada dasarnya memiliki antarmuka yang sama. Semua terhubung ke pipa dan outlet yang sama. Komponen-komponennya digabungkan secara longgar: Mengubah oven tidak akan menyebabkan kulkas mengubah perilakunya. Kesalahan desain di lemari es tidak akan mempengaruhi komponen lainnya. Pria yang memperbaiki oven hanya perlu ahli dalam oven.
Sekarang pertimbangkan apakah dapur dibangun sebagai satu "mesin" besar dengan semua fungsi ini (kemampuan untuk memanggang, membekukan, mengaduk, mendinginkan, dll.), Tetapi tidak dipisahkan menjadi beberapa komponen. Anda tidak akan dapat mengganti atau menambahkan komponen dari vendor yang berbeda. Mungkin beberapa fungsi di dapur khusus ini adalah sub-par, tetapi tidak ada yang dapat Anda lakukan. Pria perbaikan harus memahami segalanya karena ini adalah satu mesin besar. Ada risiko tinggi bahwa kesalahan desain dalam oven akan menyebabkan wastafel meledak. Dan seterusnya.
Perhatikan bahwa ini tidak akan membantu siapa pun untuk belajar kode. Anda tidak belajar kode melalui metafora - Anda belajar kode dengan menulis kode untuk memecahkan masalah.
sumber
Gunakan Klasifikasi Hewan, dan boneka binatang jika Anda suka
Hal ini menyeimbangkan keseimbangan yang tepat antara kemampuan mendekat yang tidak jelas dengan perasaan bahwa ini adalah “barang sains” yang serius. Gunakan beberapa boneka binatang murah sebagai alat peraga, jika Anda suka, dan mungkin gunakan presentasi PowerPoint dengan foto-foto binatang yang sering - orang menyukai binatang, dan sebagian besar akan "bersemangat" setiap kali mereka gambar binatang yang bagus.
Ini membantu bahwa sistem klasifikasi biologis adalah "hal yang nyata" dan bahwa sebagian besar lulusan sekolah menengah akan mengingatnya sedikit.
CAVEAT :
Satu peringatan adalah kadang-kadang Anda dapat bertemu dengan seseorang yang pandangan dunianya ditantang dengan membahas subjek yang berkaitan dengan evolusi. Anda dapat meyakinkan orang-orang itu bahwa Anda “hanya berbicara tentang klasifikasi hewan .”
Metafora hewan bekerja paling baik jika Anda tahu sedikit tentang Biologi dan sistem klasifikasi hewan. Jika Anda benar-benar tidak ingat riwayat hidup SMA Anda, dan melupakan atribut umum mamalia, Anda mungkin lebih baik menggunakan contoh yang bisa Anda ungkapkan secara otoritatif.
Bagaimanapun, hindari tema teknologi tinggi untuk contoh Anda. Kebanyakan orang awam benar - benar tidak peduli dengan model komputer atau periferal. Motif-motif ini hanya akan memperkuat gagasan yang mungkin sudah dimiliki oleh audiens Anda, dengan berjalan masuk, bahwa seluruh subjek ini adalah "hanya untuk teknisi."
Konsep untuk menggambarkan:
Kelas dan objek - Cita-cita anjing, vs anjing individu.
Metode dan atribut - Anjing berbulu. Anjing bisa menggonggong.
Override - Tidak semua anjing memiliki rambut.
Warisan - Anjing adalah mamalia. Anjing umumnya dapat melakukan apa yang dapat dilakukan mamalia (metode pewarisan) memiliki atribut yang dimiliki mamalia (pewarisan atribut).
Kelas Abstrak - Tidak ada hewan yang sebenarnya hanya mamalia.
Mewarisi dari kelas beton - deerhound Skotlandia adalah anjing yang tidak memiliki metode kulit .
Komposisi - Seekor anjing atau hewan lain dapat memiliki kerah, tetapi kerah bukanlah bagian dari hewan.
Konsep sedikit lebih maju
Di atas sejauh yang pernah saya bawa dengan pembicaraan pertama, tetapi Anda dapat melanjutkan:
Asosiasi - Seekor anjing atau kucing dapat memiliki kerah. Namun kerah juga merupakan benda yang independen. Anda bisa memberikan anjingnya pergi, tetapi simpan kerahnya.
Agregasi - Seekor ikan dapat menjadi milik sekolah . Jika sekolah ditelan oleh paus, sekolah tersebut hancur, bersama dengan semua ikan di dalamnya.
Warisan Chains - Anjing adalah mamalia adalah Vertibrate adalah hewan adalah bentuk kehidupan. (Dan tunjukkan bahwa sistem komputer juga bisa sekompleks ini.)
Libatkan audiens Anda
Ini semua adalah konsep yang sulit, dan Anda mungkin akan mendapatkan banyak tatapan kaca jika Anda tidak secara aktif membuat orang terlibat dan berbicara.
Misalnya, jangan daftarkan sendiri atribut dan metode anjing, mintalah masukan dari grup. (Orang terprogram untuk tertarik pada binatang, sehingga itu membantu.)
sumber
LEGO
Dapatkan lego dan buat mobil (kelas dasar)
Kemudian memiliki mobil yang sama dengan lampu (fungsionalitas tambahan)
Kemudian mobil yang sama dengan roda besar (override)
Kemudian dapatkan sepeda motor (kelas dasar yang berbeda)
Kemudian dapatkan mobil dengan ban lepas dua roda dan satu lampu. membuatnya tampak mengerikan. (mencoba untuk mengungkit fungsionalitas sepeda motor menjadi sistem yang ada)
sumber