Tampaknya C memiliki objek semu sendiri seperti 'struct' yang dapat dianggap sebagai objek
Mari bersama-sama Anda dan saya membaca halaman Wikipedia tentang pemrograman berorientasi objek dan memeriksa fitur struct C-style yang sesuai dengan apa yang secara tradisional dianggap sebagai gaya berorientasi objek:
(OOP) adalah paradigma pemrograman menggunakan "objek" - struktur data yang terdiri dari bidang data dan metode bersama dengan interaksinya
Apakah C struct terdiri dari bidang dan metode bersama dengan interaksinya ? Tidak.
Teknik pemrograman dapat mencakup fitur-fitur seperti abstraksi data, enkapsulasi, pengiriman pesan, modularitas, polimorfisme, dan pewarisan.
Apakah C struct melakukan hal-hal ini dengan cara "kelas satu"? Tidak. Bahasa ini menentang Anda di setiap langkah.
pendekatan berorientasi objek mendorong programmer untuk menempatkan data di tempat yang tidak dapat diakses langsung oleh program lainnya
Apakah C struct melakukan ini? Tidak.
Program berorientasi objek biasanya akan berisi berbagai jenis objek, masing-masing jenis sesuai dengan jenis data kompleks tertentu yang akan dikelola atau mungkin dengan objek atau konsep dunia nyata
Apakah C struct melakukan ini? Iya.
Objek dapat dianggap sebagai membungkus data mereka dalam satu set fungsi yang dirancang untuk memastikan bahwa data digunakan dengan tepat
Tidak.
setiap objek mampu menerima pesan, memproses data, dan mengirim pesan ke objek lain
Bisakah struct sendiri mengirim dan menerima pesan? Tidak. Bisakah data diproses? Tidak.
Struktur data OOP cenderung "membawa operator mereka sendiri bersama mereka"
Apakah ini terjadi di C? Tidak.
Pengiriman dinamis ... Enkripsi Abstraksi
Apakah ada fitur C struct ini? Tidak.
Menurut Anda karakteristik struct mana yang menurut Anda "berorientasi objek"? Karena saya tidak dapat menemukan apa pun selain fakta bahwa struct mendefinisikan jenis .
Sekarang, tentu saja Anda dapat membuat struct yang memiliki bidang yang menjadi penunjuk fungsi. Anda bisa membuat struct memiliki bidang yang pointer ke array pointer fungsi, sesuai dengan tabel metode virtual. Dan seterusnya. Anda tentu saja dapat meniru C ++ dalam C. Tapi itu adalah cara yang sangat non-idiomatis untuk memprogram dalam C; Anda akan lebih baik hanya menggunakan C ++.
Dan juga, file C sendiri pada dasarnya terpisah "modul", kan? Lalu bukankah modul juga seperti 'objek'?
Sekali lagi, karakteristik modul apa yang Anda pikirkan yang membuatnya bertindak seperti objek? Apakah modul mendukung abstraksi, enkapsulasi, pengiriman pesan, modularitas, polimorfisme, dan pewarisan?
Abstraksi dan enkapsulasi cukup lemah. Jelas modul bersifat modular; itu sebabnya mereka disebut modul. Perpesanan? Hanya dalam arti bahwa panggilan metode adalah pesan dan modul dapat berisi metode. Polimorfisme? Nggak. Warisan? Nggak. Modul adalah kandidat yang cukup lemah untuk "objek".