Tunjukkan Prinsip Berorientasi Objek kepada non-programmer menggunakan alat peraga fisik [ditutup]

8

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?

Adam Wells
sumber
1
Saya kira Google akan mengembalikan banyak contoh.
qwerty_so
2
Hai Adam, jangan salah sangka, tapi ini adalah pertanyaan umum yang terlalu luas untuk situs ini, atau perlu referensi ke sumber daya pihak ketiga, yang juga di luar topik. Itu juga termasuk dalam kategori "saran pendidikan di luar topik". Saya merekomendasikan penghapusan diri sebelum Anda mendapatkan banyak downvotes dari komunitas.
Doc Brown
3
Berhati-hatilah agar Anda tidak mencampuradukkan "is-a" dalam arti "is-an-instance-of" dan "is-a" dalam arti "inherit-from". Kelas adalah konsep hal-hal, tetapi objek di sekitar Anda di ruang pelatihan akan menjadi contoh kelas.
Simon B
1
Tolong jangan biarkan departemen Anda yang lain mulai menulis kode untuk bisnis.
Gardenhead
1
Ngomong-ngomong, saya hanya memperhatikan tanpa ada yang menjelaskan apa itu INTERFACE. Sejujurnya, saya pikir akan lebih baik untuk menjatuhkan warisan, dan hanya berbicara tentang antarmuka. Karena antarmuka dapat langsung dipetakan ke fonctionnalities, ini lebih mudah.
Walfrat

Jawaban:

11

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:

  • Serangkaian iPhone dari berbagai versi, sejak iPhone pertama, hingga iPhone 6, 6+ dll.

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.

masukkan deskripsi gambar di sini


Poliporfisme:

Atribut:

  • Serangkaian peralatan rumah tangga listrik, seperti pembuat kopi, satu set TV, blender, radio, lampu meja. Juga stopkontak.

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.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


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.

masukkan deskripsi gambar di sini

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.

masukkan deskripsi gambar di sini


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.

Tulains Córdova
sumber
3
Untuk warisan saya suka analogi ponsel cerdas lainnya: ponsel Android murni vs ponsel Android dengan item pabrik di atasnya. Yang terakhir jelas mewarisi dari yang pertama. Serangkaian smartphone Anda lebih seperti rilis produk yang berbeda, kurang seperti warisan.
RemcoGerlich
@RemcoGerlich OP meminta contoh fisik . Anda berbicara tentang perangkat lunak (OS Android). Selain itu, telepon LG dan telepon HTC tidak terkait, implementasi yang berbeda dari sesuatu, apa yang para ahli biologi sebut evolusi konvergen. Mereka hanya menggunakan beberapa rasa dari OS yang sama (sekali lagi, perangkat lunak). Contoh iPhone adalah tentang hal-hal fisik yang dibangun secara bertahap di atas cetak biru generasi sebelumnya alih-alih menciptakan semuanya dari awal setiap kali.
Tulains Córdova
2
Ini luar biasa. Saya harus mengingat posting ini lain kali saya harus menjelaskan itu :)
Quentin
Saya kira telepon tidak membantu sama sekali. Mereka mewakili versi / generasi lebih dari apa pun. Dan mereka terlalu kutu buku untuk tujuan ini.
Martin Maat
@ TulainsCórdova: Evolusi konvergen terjadi secara terpisah , tetapi HTC dan LG sangat menyadari apa yang dilakukan pihak lain dan itu memengaruhi proses mereka. Kedua, Anda benar bahwa contoh OS OS asli / produsen tidak fisik, tetapi itu adalah contoh warisan yang lebih baik. Contoh IPhone Anda tampaknya menyiratkan bahwa setiap telepon mewarisi dari pendahulunya, tetapi itu bukan cara yang baik untuk memodelkan perilaku ini. Jika tidak dengan menggunakan OS contoh, saya sarankan mencari contoh warisan yang lebih baik, misalnya bagaimana 3 orang yang berbeda (manajer, petugas kebersihan, guru) adalah semua dasar yang sama orang .
Flater
3

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).

Jules
sumber
Ide bagus dan itu sangat mirip dengan kartu Xtreme Programming CRC "game" .
Tulains Córdova
1

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.

Armin K
sumber
1

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.

JacquesB
sumber
+1 Untuk menunjukkan bahwa analogi hewan adalah contoh buruk.
Tulains Córdova
1

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 :

  1. 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 .”

  2. 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.)

Tim Grant
sumber
Catatan yakin tentang komposisi, saya akan lebih baik untuk sesuatu seperti komputer terdiri dari CPU, .... Ngomong-ngomong Anda lupa membedakan kuat (komposisi) dan agregasi lemah. Jika saya mati, tangan saya akan mati juga, tetapi bukan komputer saya. Override: lebih banyak sesuatu di baris: bukan anjing yang menyerang dengan cara yang sama.
Walfrat
1
Contoh hewan untuk menjelaskan konsep OO bukanlah salah satu pilihan terbaik. Terlalu bocor dan remaja. Juga, OP ingin menggunakan alat peraga fisik sebagai sumber daya didaktik.
Tulains Córdova
1
@ TulainsCórdova, jawaban Anda sendiri mengisyaratkan betapa tidak berhasilnya Anda mengajar orang-orang non-teknis dasar-dasar OO. Hewan membuat orang lebih terlibat, dan tidak ada yang "bocor" atau remaja tentang Biologi. Juga, jawaban saya menyebutkan alat peraga dalam judul.
Tim Grant
@TimGrant Saya tidak pernah mengajar atau menjelaskan OOP kepada yang bukan programmer, tapi saya pernah melihat orang lain gagal menggunakan contoh hewan. Cabang ilmu biologi tidak bocor atau remaja, saya berbicara tentang menjelaskan OOP dengan contoh-contoh hewan. Ini sangat basi. Tidak ada pelanggaran yang dimaksudkan.
Tulains Córdova
@ TulainsCórdova, Anda mengatakan bocor, remaja, dan sekarang, "basi"? Triteness akan meminta audiens untuk mendengarnya sebelumnya, dan audiens ini belum. Apakah Anda memiliki wawasan yang sebenarnya untuk ditawarkan, atau Anda hanya memberikan jawaban yang bersaing?
Tim Grant
-3

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)

Ewan
sumber