Pertanyaan umum yang mungkin ditanyakan siswa ketika mereka mempelajari OOP?

Jan 19 2021

Membaca pertanyaan ini Apakah kita benar-benar membutuhkan bahasa OO untuk mengelola kompleksitas perangkat lunak? di salah satu situs SE dan pengalaman saya sendiri dalam mengajarkan konsep berorientasi objek, misalnya Beberapa contoh praktis nyata untuk mengajarkan konsep dan pemrograman berorientasi objek (dengan python) telah membuat saya bertanya-tanya apa pertanyaan umum yang mungkin ditanyakan siswa ketika mereka pertama kali belajar OOP ?

Misalnya dalam pertanyaan itu penulis bertanya,

Saya seorang mahasiswa CS pemula ... Pada semester pertama kami diperkenalkan dengan konsep OOP seperti enkapsulasi, penyembunyian data, modularitas ...

Tapi saya pikir semua prinsip yang digunakan untuk mengelola kompleksitas seperti modularitas, enkapsulasi, penyembunyian data, dan sebagainya dapat dengan mudah diterapkan oleh bahasa prosedural. Jadi mengapa benar-benar OOP jika kita dapat mengelola kompleksitas tanpanya?

Saya juga harus mengakui bahwa saya memiliki perjuangan sendiri, misalnya saya menanyakan pertanyaan ini Apakah OOP terlalu menekankan pentingnya kata benda dan dengan demikian menempatkan tindakan / kata kerja dalam posisi yang kurang penting? di situs itu juga (meskipun tidak ada siswa yang menanyakan pertanyaan ini kepada saya). Pertanyaan saya ditutup dan bahkan mendapat 2 suara hapus tetapi itu selalu menjadi perhatian saya.

Jika siswa saya atau kolega saya yang memiliki pengalaman dengan javascript dan suka belajar OOP, saya akan selalu membiarkan mereka membandingkan momentjs dengan date-fns , keduanya berhubungan dengan tanggal dan menyediakan fungsi yang serupa, keduanya melakukan pekerjaan dengan baik, tetapi momentjs merupakan perpustakaan OOP dan date-fns adalah pustaka fungsi.

Tujuan saya adalah membuat mereka mengerti bahwa ada lebih dari satu cara untuk melakukan sesuatu.

Jadi apa pertanyaan umum yang ditanyakan siswa Anda?

Jawaban

4 Qiulang Jan 20 2021 at 11:01

Saya membaca sebagian besar pertanyaan yang dipilih dengan tag berorientasi objek pada softwareengineering.stackexchange.com dan stackoverflow.com . Saya merasa beberapa pertanyaan di situs rekayasa perangkat lunak cukup umum saat mempelajari OOP sementara pertanyaan tentang stackoverflow lebih terkait dengan pertanyaan pemrograman praktis yang lebih mungkin ditanyakan oleh para profesional.

Jadi saya membuat daftar beberapa pertanyaan dari situs rekayasa perangkat lunak,

  1. Mengapa bagus untuk membagi program menjadi beberapa kelas? . Pertanyaan ini memang dilontarkan oleh seorang siswa SMA.
  2. Apakah objek di OOP harus mewakili suatu entitas? . Murid-murid saya menanyakan pertanyaan ini kepada saya.
  3. Apa keuntungan dari pemrograman berorientasi objek dibandingkan pemrograman prosedural? yang satu ini agak terkait dengan pertanyaan "kelola kompleksitas perangkat lunak" dalam pertanyaan saya dan saya berdiskusi dengan rekan-rekan saya pertanyaan menarik lainnya yang ditanyakan di quora Bagaimana Linux mempertahankan basis kode yang begitu besar ketika C bukan bahasa berorientasi objek? Apakah basis kode semuanya kacau?
  4. Apakah OOP memenuhi janji penggunaan kembali kode? Alternatif apa yang ada untuk mencapai penggunaan kembali kode? Saya tidak yakin apakah siswa akan menanyakan pertanyaan ini dan saya juga memiliki pertanyaan ganda sendiri.
  5. Saat menulis kode berorientasi objek, haruskah saya selalu mengikuti pola desain? . Situs ini juga mempunyai pertanyaan tentang pola desain, Seberapa burukkah kursus Ilmu Komputer yang tidak mengajarkan Pola Desain?
  6. Penjelasan tentang bagaimana “Tell, Don't Ask” dianggap sebagai OO yang baik . Hanya setelah mereka mendapatkan beberapa pengalaman pengkodean, mereka dapat mengajukan / menghargai pertanyaan tersebut. Tapi itu bagus.
  7. Haruskah saya membuat kelas jika fungsi saya kompleks dan memiliki banyak variabel? Satu jawaban ada juga rekomendasi saya kepada siswa saya ketika mereka memiliki pertanyaan seperti, "Gunakan kelas, tetapi juga berikan fungsi berdiri bebas, yang hanya membangun objek, memanggil metode dan mengembalikan hasilnya, kelas yang Anda gunakan secara internal benar-benar hanya menjadi detail implementasi fungsi publik Anda "

Quora juga memiliki beberapa pertanyaan menarik yang saya rasa orang akan tanyakan ketika mereka pertama kali belajar OOP, saya daftar beberapa di sini:

  1. Adakah yang bisa (dalam posisi programmer) bertahan di industri teknologi modern (perangkat lunak atau tanpa perangkat lunak) tanpa OOP?
  2. Seberapa sering pengembang perangkat lunak menggunakan OOP? . Satu jawaban yang menarik dari Kurt Guntheroth adalah "Setiap kali Anda menulis program dengan panjang lebih dari 1.000 baris, Anda harus menggunakan OOP. 1000 baris? Mengapa begitu ...?"
  3. Kapan pemrograman berorientasi objek tidak cocok?

Semoga saya bisa mendapatkan jawaban lain.

1 Eddie Feb 06 2021 at 17:23

Ini pertanyaan yang sangat bagus! Jawaban Anda mencakup banyak hal juga.

Saya ingin menawarkan refleksi tentang apa yang mungkin memotivasi pertanyaan-pertanyaan ini.

Dalam pengalaman saya, pelajar yang menghadapi OOP di awal perjalanan mereka harus bergulat dengan beberapa tantangan berbeda, termasuk:

  1. Mereka belum mengalami masalah yang dapat diselesaikan oleh OOP.
  2. Mereka percaya bahwa ada solusi sempurna untuk semua tantangan pemrograman yang menunggu untuk ditemukan.

Ini menimbulkan banyak pertanyaan, kebingungan dan, dalam beberapa kasus, rasa tidak aman.