it-swarm-id.com

Bagaimana cara menjelaskan OOP konsep kepada orang yang tidak teknis?

Saya sering mencoba untuk tidak memberi tahu orang bahwa saya seorang programmer karena sebagian besar waktu saya akhirnya menjelaskan kepada mereka apa artinya itu. Ketika saya memberi tahu mereka bahwa saya pemrograman dalam Java mereka sering bertanya pertanyaan umum tentang bahasa dan bagaimana perbedaannya dari x dan y. Saya juga tidak pandai menjelaskan sesuatu karena 1) saya tidak punya banyak pengalaman di lapangan dan 2) Saya sangat benci menjelaskan hal-hal kepada orang-orang non-teknis.

Mereka mengatakan bahwa Anda benar-benar memahami hal-hal begitu Anda menjelaskannya kepada orang lain, dalam hal ini bagaimana Anda akan menjelaskan OOP terminologi dan konsep kepada orang yang tidak teknis?

10
John

Saya biasanya mencoba dan menggambarkan Pemrograman Berorientasi Objek dengan menggunakan contoh dunia nyata.

Sebagai contoh, saya dapat mengatakan bahwa kelas yang disebut Vehicle menjelaskan 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 mengatakan bahwa dalam OOP kita akan mendefinisikan kendaraan, dan demi argumen mengatakan itu bisa bergerak, dan memberikannya semacam driver. 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 menyebabkan kita berpikir tentang apa yang kami modelkan dan apa yang kami coba capai ketika kami mengembangkan perangkat lunak.

Sekarang, spesialisasi sebagian template, di sisi lain .... :)

27
Moo-Juice

Objek adalah kata benda, metode adalah kata kerja.

14
k rey

Ini adalah beberapa versi dari jawaban kalengan saya yang saya berikan kepada orang yang sangat non-teknis:

Pemrograman adalah upaya untuk membuat representasi realitas di komputer. Ada banyak alat dan perangkat yang sudah ada yang melakukan hal ini - pikirkan tentang bagaimana spreadsheet memudahkan kita untuk merepresentasikan akuntansi atau statistik, atau bagaimana presentasi PowerPoint memungkinkan kita untuk menyimpan dan menampilkan presentasi kita.

Terkadang kita perlu membangun representasi kustom realitas menjadi aplikasi baru atau yang sudah ada yang mencerminkan proses bisnis kita. Ada banyak cara untuk memprogram, dan salah satu cara yang paling umum untuk memprogram adalah pemrograman berorientasi objek, di mana kode yang kita buat dirancang khusus untuk mereplikasi konsep realitas. "Benda" pada kenyataannya memiliki atribut dan perilaku. Sebagai contoh, seorang manusia sering memiliki lengan dan kaki, warna rambut, etnis, dan sering dapat Berbicara dan Berjalan.

Berbicara dan Berjalan dapat datang dalam varietas yang berbeda, seperti bahasa apa yang digunakan seseorang, atau kecepatan atau cara seseorang berjalan.

Makhluk Manusia sering berinteraksi dengan "benda" jenis lain, apakah itu binatang, manusia lain, organisme hidup lain, atau benda mati. Ada beberapa tema dalam kenyataan yang sering membutuhkan cara untuk diwakili, seperti interaksi antara "hal-hal", kategorisasi hal, dll. Pertimbangkan proses bisnis yang berlangsung dalam organisasi kita. Ada "logika bisnis" yang sangat rumit yang perlu diwakili dalam perangkat lunak yang digunakan organisasi kami.

Pemrograman Berorientasi Objek menyediakan sarana untuk secara akurat mewakili "konsep dunia nyata" dan "logika bisnis" ini.

-> Pernyataan ini biasanya cukup untuk mencegah keingintahuan mereka (atau mungkin membuat mereka menangis), tetapi jika mereka memiliki lebih banyak pertanyaan, pernyataan di atas (saya percaya) meletakkan dasar yang layak untuk ke mana pembicaraan dapat berlangsung. Saya tidak benar-benar berpikir bahwa orang non-teknis terlalu peduli dengan terminologi teknis seperti "Abstraksi," "Komposisi," "Polimorfisme," dll, tetapi jika ya, bahasa yang saya gunakan dalam pernyataan kalengan memungkinkan saya untuk menarik contoh berdasarkan itu.

3
Tim Claason

Saya selalu belajar OOP seperti ini:

Anda memiliki jam, dan ini menunjukkan waktu - yah, dalam pemrograman Anda meletakkan semua kode dan hal-hal yang harus Anda lakukan bersama-sama (terdengar cukup jelas, tetapi orang-orang tidak terbiasa melakukan hal ini pada masa-masa awal). Bagaimanapun, itu disebut enkapsulasi.

Sekarang Anda punya jam, Anda mungkin ingin jam alarm - yah, setelah Anda memiliki semua hal bersama Anda dapat menambahkan hal-hal untuk membuatnya lebih banyak - seperti mengatur alarm dan membuatnya berdering. Ini disebut warisan.

Juga, Anda melihat jam yang saya miliki di pergelangan tangan saya, tetapi Anda dapat melihat jam lain yang berbeda seperti jam kakek atau jam digital. Tampaknya berbeda, tapi ini masih jam - yah, itu disebut polimorfisme.

Dan di sana Anda memiliki 3 sudut pemrograman berorientasi objek. Semua sisanya hanya coding.

1
gbjbaanb

Saya berbicara tentang percakapan saya dengan istri saya tentang hal ini, dalam jawaban ini di sini: https://softwareengineering.stackexchange.com/questions/45464/how-to-convince-non-programmer-his- pengertian-tentang-komputer-salah/45467 # 45467

EDIT: Pertanyaan yang saya jawab di sana dimoderasi, jadi saya akan mengulangi jawaban saya di sini.

Duduk di sebuah restoran bersama istri saya, dia bertanya kepada saya, "Apa yang dimaksud dengan Berorientasi Objek?"

Saya mulai membesar-besarkan tentang penggunaan kembali kode dan enkapsulasi dan polimorfisme, dan pada titik tertentu saya menyadari bahwa matanya telah ditutup-tutupi.

Jadi saya mengambil paket Splenda dari wadah. Saya berkata, "Ini sebuah objek. Apa propertinya?"

Dia berkata, "Ini berbentuk persegi panjang, terbuat dari kertas, mengandung splenda, biru, memiliki cetak di atasnya."

Saya mengambil sebungkus gula. "Apa kesamaannya dengan yang ini?"

Dia berkata, "Persegi panjang, kertas, yang ada cetak."

Saya berkata, "Bagaimana kalau mereka berdua mengandung sesuatu yang manis?"

Dia berkata, "Tentu."

Saya berkata, "Jadi ini adalah dua contoh dari apa yang kita sebut paket pemanis abstrak. Paket pemanis ideal platonis, jika Anda suka."

Dia berkata, "Tentu."

Saya berkata, "Dan masing-masing memiliki properti yang diwarisi dari paket abstrak, dan kemudian variasi yang spesifik untuk jenis barangnya."

Dia berkata, "Benar. Oh! Dan jika saya ingin membuat, seperti, paket Sakarin, saya akan mengambil yang generik, dan mengatur detail tentang hal itu untuk Sakarin, dan kemudian saya akan memilikinya!"

Saya berkata, "Bingo: Pemrograman Berorientasi Objek."

Anda dan saya tahu dia baru saja mengarahkan jalannya ke pola desain pabrik. Masa bodo. Ini menggambarkan warisan, enkapsulasi, identitas kelas objek ... Barang bagus.

1
Dan Ray

Saya hanya akan memberitahu mereka untuk mendaftar di OOP jika mereka benar-benar ingin memahaminya.

Maksud saya, semua analogi seperti Car.startEngine (); adalah, mari kita hadapi itu - rap murni. Ketika saya pertama kali ke OOP bertahun-tahun yang lalu, saya menemukan ini hanya untuk abstrak domain lebih jauh.

Alih-alih hanya menjelaskan bahwa OOP adalah tentang mengelola kompleksitas bahasa prosedural, hampir 80% penulis buku pemrograman menganggap bahwa programmer adalah orang bodoh yang tidak mengerti yang perlu diucapkan secara sederhana (lihat ironi di sini?) ketentuan.

Ya, itu sangat normal untuk menjelaskan Daftar dan Vektor, karena itulah yang paling sering kami kerjakan, bukan Car.Engine dan PoliceMan. Arrest (kecuali jika Anda adalah pengembang game, tetapi sekali lagi, Anda masih harus memiliki bagian dari bekas).

Kembali ke topik, saya hanya akan memberi tahu mereka, saya membuat objek tidak berwujud yang murni ada dalam pikiran programmer, untuk keperluan pemrosesan penggajian/permainan game/navigasi pesawat ulang-alik, dll.

Jika mereka masih memiliki pertanyaan, berhentilah berdiskusi, karena itu tidak layak. Kebanyakan orang gagal membayangkan gagasan abstrak dan membutuhkan contoh untuk hampir semuanya (yang berarti penyederhanaan/spesialisasi topik yang sebenarnya)

1
Jas

Pertanyaan ini sepertinya adalah kandidat untuk ditutup, namun ...

Seperti kebanyakan hal, OOP sebenarnya sangat sederhana untuk dijelaskan pada tingkat konseptual. Programmer memodelkan objek; dan:

  • objek memiliki status (bidang/anggota data)
  • benda memiliki aksi (metode/fungsi)
  • benda membangun satu sama lain (warisan)

Ini adalah ratusan detail yang lebih halus, tentu saja. Tetapi jika Anda hanya mencoba memberi seseorang gambaran 10 detik, saya pikir itu awal yang baik. Apakah ada konsep yang lebih spesifik yang Anda kesulitan menjelaskan?

0
zourtney

Contoh Ponsel:

Bayangkan Anda adalah pemilik pabrik, Anda ingin menggambarkan telepon umum

  • Langkah 1: Sebutkan properti generik ponsel ini misalnya: tinggi, berat, warna, dll.
  • Langkah 2: Daftarkan ponsel umum ini fungsi misalnya: melakukan panggilan, menerima panggilan, mengirim sms dll

Sekarang Anda sudah memiliki "cetak biru" generik buat saya ponsel berikut:

Telepon 1:

  • Tinggi-> 102mm

  • Berat -> 85g

  • Warna-> Merah Muda

Telepon 2:

  • Tinggi-> 125mm

  • Berat -> 96g

  • Warna-> Merah

0
Darknight

Saya suka contoh mobil untuk menjelaskan warisan (saya cenderung menggunakan hewan daripada kendaraan tapi itu ide yang sama) tetapi untuk menjelaskan cara kerja program berorientasi objek, saya merujuk pada analogi yang pernah saya baca di situs web Chris Crawford: programnya seperti birokrasi yang sangat efisien. Semua objek yang berbeda dalam program seperti departemen yang berbeda dalam birokrasi; setiap departemen memiliki tugasnya sendiri, mereka memiliki input yang jelas (siapa yang harus diajak bicara dan formulir apa yang harus diisi), dan departemen lain sering tidak tahu banyak tentang apa yang terjadi di dalam. SDM itu seperti pabrik abstrak, TI adalah singleton, dll.

Mendapatkan pesan kesalahan karena Anda mengetik hal yang salah dalam program komputer sama seperti mengisi formulir yang salah untuk dikirim ke kantor.

0
jhocking

OOP adalah penyederhanaan besar jika sesuatu - sebuah abstraksi - dari proses pemikiran manusia dan pemahaman dunia untuk memproyeksikan fungsionalitas menjadi "kekosongan" digital untuk meniru proses dan klasifikasi yang dikenal secara digital. Ini, dalam banyak hal, lebih banyak tentang keadaan bahasa primitif kita daripada kita "berpikir lebih seperti komputer".

Jika pemrograman meniru realitas atau pemikiran manusia akan jauh lebih organik, kacau dan serampangan di alam - bahkan lateral. Alih-alih, kami menyederhanakan kenyataan menjadi langkah-langkah kecil, "logika 2 + 2", kategori kasar, alat kecil yang dapat digunakan kembali, dan penalaran prasejarah.

Kami masih mencoba mencari cara untuk mengunduh pikiran dan keinginan kami ke dalam protokol dan bahasa umum dan saya pikir sejarawan akan terpesona dengan kekasarannya yang canggih suatu hari nanti - seperti sekarang kita melihat hieroglif. Itu sama sekali bukan "pintar" - itu hanya menyoroti bagaimana kita tidak dapat dengan mudah menjelaskan bagaimana kita memutuskan atau memahami bahkan hal-hal yang paling sederhana. Komputasi masih pada tingkat "seekor anjing adalah seekor anjing karena itu bukan kucing" evolusi pemikiran - itu adalah ribuan tahun di belakang bahkan bahasa dasar yang diucapkan.

0
Glyn

Ada dua macam penyihir. Ada pria yang membuat hal-hal tertentu terjadi dengan kata-kata ajaib. Dia punya kata untuk memanggil api. Dia punya kata-kata untuk membuat ayam beku muncul dari udara tipis. Dan kata lain untuk menciptakan pot kekuatan (saya lebih suka kekuatan saya hijau, bersinar, dan tembus pandang) penuh kebaikan friolating. Dengan penerapan kata-katanya yang tepat ia dapat menghasilkan ayam goreng.

Dan kemudian ada wisaya OOP. Yang baru saja memanggil seorang imp yang tahu cara pergi ke toko kelontong, membeli ayam (atau bahan untuk makanan lain yang Anda ingin dia siapkan), memasaknya, dan menyajikan makan malam untuk Anda. OOP Wizard tidak harus memberi tahu impnya bagaimana melakukannya. Dia hanya perlu memberi tahu dia apa yang dia inginkan yang dalam hal ini adalah ayam goreng. Tidak hanya itu, wisaya OOP dapat memanggil antek-antek lain untuk memberi tahu koki impnya apa yang harus dilakukan.

Jadi, mantera pria mengesankan di pesta tetapi wizard OOP adalah yang Anda inginkan ketika Anda akan memulai restoran ajaib dengan banyak karakter (seperti misalnya, pelayan Unicorn yang kesal, dan troll floor manager) yang semuanya harus bekerja sama. Jika Anda mencoba memohon setiap langkah dari masalah "restoran" Anda dapat dengan mudah terlibat dalam detail dan itu sangat mudah untuk membuat kesalahan. Wisaya OOP pra-melatih antek-anteknya untuk memilah-milah detail untuknya sehingga dia bisa fokus pada memecahkan masalah yang lebih besar dengan menyuruh orang-orangnya berinteraksi.

Belum lagi lebih mudah untuk menggunakan kembali chef-imp Anda untuk masalah kantin sekolah dasar Anda maka itu adalah untuk memisahkan semua sampah yang Anda mungkin atau mungkin tidak digunakan kembali ketika Anda melakukan semuanya satu langkah pada satu waktu dengan menelepon kata-kata dan kata-kata yang memanggil set kata lain (yang akan menjadi lebih banyak karena Anda harus menangani berbagai masalah yang lebih besar).

Agar adil, dengan aplikasi yang sangat, sangat hati-hati, wizard mantra dapat menyelesaikan semuanya secepat wizard OOP. Dia dapat memecah hal-hal dengan cara yang benar sehingga memanggil mantra yang benar tidak membutuhkan lebih banyak pekerjaan daripada penyihir OOP. Tetapi pekerjaan itu jauh lebih sulit untuk dipahami atau diduplikasi dan jauh lebih sulit untuk menggunakan kembali sebagian besar karena semuanya terikat bersama untuk satu masalah kompleks tertentu.

0
Erik Reppen

Saya pikir cara terbaik untuk menjelaskan kepada tipe non-teknis tentang OOP adalah menghubungkannya dengan mereka.

Pada dasarnya OOD & OOP ingin Anda berpikir tentang sistem yang Anda rancang dan laksanakan sebagai dunia yang saling berinteraksi.

Jadi mari, demi argumen (yang tidak pernah berjalan dengan baik di internet), katakanlah Anda sedang menjelaskan kepada seorang kolektor sampah tentang OOD & P. Namanya adalah Bob. Kamu dulu pergi ke sekolah dengannya 15 tahun yang lalu, kamu pernah bertemu dengannya di sebuah bar, dan kamu berdua berpura-pura tertarik pada kehidupan masing-masing.

"Jadi, John, kamu bilang kamu programmer. Keponakanku suka omong kosong itu. Terus tentang pemrograman berorientasi objek, atau apalah. Tentang apa?" Perhatikan bahwa Bob adalah orang Inggris dari cara dia salah mengeja berorientasi.

"Yah, Bob," jawabmu, meringis pada orientasi. "Benar-benar sederhana. Kamu mengumpulkan sampah, kan? Apa, umumnya kamu dalam pekerjaanmu?"

"Yah, aku mengikuti van keliling kota mengambil sampah dan memasukkannya ke dalam van," jawab Bob, dengan heran.

"Luar biasa. Nah, bayangkan saya menulis sebuah program untuk mensimulasikan itu. Dalam desain berorientasi objek langkah pertama adalah menentukan objek apa yang ada. Dalam pekerjaan Anda tampaknya ada jalan, tempat sampah, Anda dan van. Itu adalah milik kami. Selanjutnya kita perlu tahu perilaku apa yang dilakukan masing-masing objek. Saya tidak yakin cara kerjanya di dunia nyata, tapi mari kita asumsikan bahwa Anda diberitahu tentang jalan yang perlu dibersihkan. Ada satu perilaku - jalan memberi tahu ketika mereka perlu membersihkan. Itu berarti ada sesuatu yang perlu didengarkan untuk jalan-jalan yang perlu dibersihkan Saya kira sejak Anda mengikuti van, van akan mendengarkan jalan-jalan yang perlu dibersihkan - itu dua. Yang ketiga adalah, tentu saja, Anda mengikuti van. adalah Anda memasukkan sampah ke dalam van. Anda juga melihat apakah sebuah bin penuh. Saya kira van perlu memberi tahu Anda ketika sudah penuh, dan Anda perlu mendengarkan untuk itu. Itu adalah perilaku kita. butuhkan untuk desain. Pemrograman berorientasi objek pada dasarnya adalah bagaimana Anda menerapkan ent desain. Ini berbeda dari bahasa ke bahasa. "

Bob tertidur di birnya. Kamu berjalan pergi.

0
Matt Ellen