Bagaimana cara terbaik untuk mempelajari konsep / prinsip OOP secara praktis? [Tutup]

12

Saya ingin belajar bahasa pemrograman berorientasi objek, saya tidak ingin itu untuk tujuan apa pun hanya untuk mengetahui seluruh konsep OOP. Jadi, adakah yang bisa memberi tahu saya bahasa mana yang harus saya pelajari?

Serigala berkafein
sumber
1
Bahasa apa yang sudah Anda ketahui?
Mchl
C, VB.NET, dan C ++ namun tidak OOP bagian
Caffeinatedwolf
1
pilih VB.NET lalu
Vinoth Kumar CM
Tidak, saya tidak ingin VB.NET Saya ingin kalian membantu saya memilih antara Java, C ++, Python dll ...
Caffeinatedwolf
3
Anda ingin secara praktis mempelajari sesuatu tanpa tujuan?
JeffO

Jawaban:

13

Beberapa saran lebih lanjut:

  • Buku terbaik yang pernah saya baca di OOP tidak ada buku adalah Konstruksi Perangkat Lunak Berorientasi Obyek Bertrand Meyer . Ini bukan bacaan yang 'mudah' karena Anda harus berpikir keras di suatu tempat. Tapi itu melakukan pekerjaan terbaik yang pernah saya lihat menjelaskan prinsip-prinsip OO.

  • Adapun bahasa: Saya akan tinggal jauh dari C ++. Terlalu besar untuk tujuan belajar. Jika Anda menginginkan bahasa yang benar-benar akan membantu Anda memahami OO (berbeda dengan yang Anda gunakan untuk menulis aplikasi arus utama / mendapatkan pekerjaan menggunakan), lihatlah smalltalk. Atau Eiffel (bahasa dalam buku Meyer di atas).

  • Jika Anda ingin bahasa yang sedikit lebih umum tetapi masih setia mendukung prinsip-prinsip OO maka Python adalah taruhan yang bagus. Java & C # juga layak jika Anda ingin mengetik statis.

Satu kata peringatan: bahasa tidak akan mengajarkan Anda OO. Ini hanya dapat membantu (atau menghambat) seberapa baik mendukung konsep OO. Belajar OO benar-benar tentang belajar berpikir dalam istilah OO. Untuk itu saya akan kembali ke buku Meyer.

hth.

sfinnie
sumber
1
Hal-hal lain dalam C ++ penting . Sangat penting untuk mengetahui tentang warisan virtual. Sangat penting untuk mengetahui tentang dukungan generik waktu kompilasi yang kuat, dan penting untuk mengetahui tentang nilai vs referensi. Pergi untuk sesuatu seperti Jawa hanya akan "LA LA LA AKU TIDAK BISA MENDENGAR ANDA, INI HANYA CARA UNTUK MELAKUKANNYA".
DeadMG
2
iya dan tidak. Pertanyaan OP adalah tentang pembelajaran yang menyiratkan dasar-dasar terlebih dahulu. Saya tidak yakin C ++ adalah salah satu pesaing sebagai bahasa pembelajaran yang paling cocok . Yang mengatakan: Meyer tetap mencakup generik & nilai vs referensi, meskipun sebagai topik yang lebih maju. Dia juga masuk ke dalam co-and contra-variance, di bagian akhir buku ini. Tapi dia menetapkan dasar-dasarnya terlebih dahulu. (Dan Eiffel diketik secara statis btw).
sfinnie
1
Saya tidak akan setuju atau tidak setuju dengan rekomendasi Eiffel, karena saya tidak pernah menggunakan atau bahkan melihat atau membaca apa pun tentang itu. Namun, saya benar-benar akan tidak setuju dengan rekomendasi untuk Java dan C #, seperti yang saya katakan.
DeadMG
12

Anda dapat mempelajari bahasa berorientasi objek seperti C ++, Java, C # dll. Untuk mencoba OOPS.

Jika Anda benar-benar ingin belajar OOP, Anda perlu berpikir di luar bahasa dan memahami bahwa itu adalah paradigma yang membantu kompleksitas mangae yang terlibat dalam program perangkat lunak sama seperti bagaimana kita mengelolanya di dunia nyata ini. Kemudian pelajari konsep dasar dalam OO seperti Polimorfisme, Warisan, Enkapsulasi (PIE) dll

Ada banyak buku bagus di sekitar terlalu-Object-Oriented Analysis and Design with Applications (2nd Edition) oleh Grady Booch

Juga, Anda dapat mencoba blog seperti ini yang saya temukan cukup sederhana untuk memulai dengan- fascinatingoops.com

WinW
sumber
3

Anda ingin belajar OOP? Satu jawaban - Smalltalk.

Ini adalah bahasa yang elegan dan OO pada intinya. Anda akan belajar OOP dari awal dan tidak akan terhambat oleh semua gangguan lain yang dikelola oleh bahasa lain.

Smalltalk menang. Dan ada juga beberapa buku elektronik gratis yang bagus (lihat: Stephane Ducasse )

Simon Knights
sumber
3

Anda harus belajar C ++, atau mungkin salah satu leluhur seperti Smalltalk. C ++ menawarkan pemisahan yang bersih antara konsep-konsep seperti orientasi objek, manajemen memori, dan nilai vs referensi, dan memiliki dukungan generik yang kuat.

Jangan belajar Java atau bahasa .NET seperti C #. Ketika Anda belajar bahasa seperti Jawa, maka Anda belajar hal-hal seperti "Objek selalu ada di tumpukan dan selalu referensi", yang hanya berlaku untuk Jawa dan sama sekali tidak benar untuk OOP secara umum. Perpaduan konsep-konsep ini (orientasi objek, manajemen memori, referensi vs nilai) sangat berbahaya untuk bahasa pertama, karena begitu Anda terjebak di kepala Anda, akan sangat sulit untuk membuatnya kembali. C # agak lebih baik dalam hal ini tetapi tidak banyak. Selain itu, mereka dapat memiliki kecenderungan tinggi untuk mengajarkan "Warisan adalah palu dan semuanya adalah paku" dengan dukungan pemrograman generik yang lemah.

DeadMG
sumber
Ini sangat benar. Saya belum pernah memikirkan hal ini sebelumnya, sebenarnya ketika berhadapan dengan bahasa yang sangat fokus pada OOP dan mencoba untuk menyelesaikan semuanya dengan OOP Anda tidak akan pernah belajar masalah mana yang tidak benar-benar cocok untuk OOP.
daramarak
1

Cara terbaik untuk mempelajari konsep OOP adalah dengan menulis kode lebih banyak dan lebih sering ditinjau. Praktek membuat programmer yang baik.

Pikirkan skenario dunia nyata, tentukan pernyataan masalah - pecahkan dalam kode dan tinjau. Anda selalu dapat memperoleh bantuan dari /codereview// untuk ulasan :)

Selamat coding !!!

karthiks
sumber
0

Langkah

  1. Pelajari apa artinya.
  2. Pelajari cara menerapkannya.
  3. Ambil proyek untuk dikembangkan, pilih bahasa Anda [yang seharusnya memiliki prinsip OOPS terintegrasi seperti VB.NET atau C # atau C ++ atau java dll]
  4. Pikirkan tentang bagaimana Anda dapat menyederhanakan logika proyek dengan OOPS. [Catatan: Jangan hanya menerapkan OOPS karena Anda ingin memilikinya, mereka harus menyelesaikan tujuan Anda]
  5. Jangan lupa: Anda juga akan belajar dari kesalahan Anda .
Chris
sumber
0

Kontak pertama saya ke dunia OO adalah C ++, yang bukan awal yang buruk. Tapi saya banyak berkembang ketika belajar Python. Perbedaannya berasal dari bahasa: mencoba ide ('bagaimana saya bisa menyelesaikan masalah ini dengan cara OO?') Dalam C ++ membutuhkan lebih banyak kode untuk ditulis dan menyertakan lebih banyak jebakan daripada mencoba ide yang sama dengan Python. Jadi saya akan merekomendasikan Python.

rocksportrocker
sumber
0

Saya tidak berpikir Anda harus melihat ke dalam bahasa lain saat mencoba mempelajari OOP. Bagi saya, lebih mudah untuk memahami teori dan kemudian belajar menerapkannya jika saya dapat menghubungkannya dengan sesuatu yang sudah saya ketahui. Mencari tahu sintaks baru baru saja menghalangi.

Anda dapat mulai dengan buku OOP apa pun. Sekali lagi, saya akan mendapatkannya dalam bahasa pilihan saya. Membaca buku tentang refactoring (Gaya OOP) membantu saya dalam penerapan OOP. Saya mengambil proyek yang sudah ada (Tidak ada gangguan dari pengumpulan persyaratan) dan menemukan cara baru untuk memperbaikinya. Bukan hanya OOP demi OOP. Kemudian Anda bisa belajar bagaimana melakukannya dari awal hingga selesai pada proyek baru. Logikanya di sini adalah Anda tidak akan selalu melakukannya dengan benar sejak awal. Jika Anda bisa mengenali mana yang sesuai, Anda akan lebih baik. Seperti kebanyakan hal, itu tidak akan menyelesaikan setiap masalah.

Ada batasan yang pasti dengan beberapa bahasa. Jika tujuan Anda adalah menjadi master multi-inheritance, .NET sedang keluar.

JeffO
sumber
0

Saya akan menentang pemikiran konvensional di sini dan menyarankan bahwa bahasa yang paling mudah untuk menggunakan OOP belum tentu bahasa terbaik untuk mempelajarinya . Saya pertama kali terkena OOP dengan C ++, tetapi saya tidak "mendapatkannya" sampai membaca bab buku karya Larry Wall tentang OOP dengan Perl. Untuk beberapa alasan saya kesulitan memahami perbedaan antara kelas dan objek sampai harus secara eksplisit memberkati objek ke dalam kelas. Saya tidak benar-benar memahami implementasi OOP yang mendasarinya sampai melakukannya di C dengan GObject, di mana tidak ada detail yang disembunyikan dari Anda. Saya tidak benar-benar memahami praktik terbaik sampai mengambil kelas korporat yang agnostik bahasa. Itu topik yang sangat besar,.

Karl Bielefeldt
sumber