OOP tidak penting karena itu sendiri, tetapi karena apa yang diperlukan. Sesuatu yang berhubungan dengan kemampuan untuk mengabstraksi dan mengisolasi, mengelompokkan hal-hal bersama akhirnya hanya memperlihatkan bagian-bagian yang diperlukan untuk berinteraksi bersama.
Ini adalah teknik rekayasa umum yang disebut "modularisasi", yang memungkinkan untuk membuat sistem kompleks sebagai agregasi yang lebih sederhana, tanpa harus mengurus setiap detail tunggal di tingkat tinggi, dan yang membutuhkan komponen yang dapat diganti, bahkan tanpa harus menjadi sama.
"Konsep-konsep rekayasa" tersebut telah dicoba untuk dimasukkan ke dalam pengembangan perangkat lunak dari saat produk perangkat lunak itu sendiri telah menjadi lebih besar daripada "kemampuan pengembang tunggal", sehingga membutuhkan cara untuk membuat pengembang bekerja pada bagian-bagian independen, dan membiarkan bagian-bagian itu untuk berinteraksi bersama.
Yang mengatakan, prinsip-prinsip tersebut tidak selalu ditemukan hanya dalam OOP (itu teori perhitungan valid, ada metode tak terbatas yang mungkin untuk sampai pada hasil tersebut).
OOP hanyalah upaya yang berhasil untuk menyatukan hal-hal tersebut, memberikan istilah-istilah umum (seperti modul, enkapsulasi, substitusi) definisi yang lebih tepat dan menguraikan konseptualisasi pada definisi (pola) yang dapat masuk ke dalam bahasa pemrograman.
Pikirkan dulu untuk OOP bukan sebagai " fitur bahasa " tetapi sebagai " leksikon umum " yang membuat insinyur perangkat lunak mendekati desain perangkat lunak.
Fakta bahwa bahasa yang diberikan memiliki atau tidak primitif yang secara langsung menegakkan leksikon yang memastikan - misalnya - bahwa "kapsul" tidak dibuka secara tidak sengaja oleh siapa yang tidak seharusnya melakukan itu adalah aspek sekunder dari desain OOP. Itu sebabnya bahkan proyek C besar sering "dikelola sebagai" OOP, bahkan jika bahasa itu sendiri tidak menawarkan dukungan langsung untuk itu.
Keuntungan dari semua yang tidak dikenali sampai ukuran proyek tetap menjadi kemampuan pengembang tunggal dalam memahami dan melacak semua yang dia lakukan (pada kenyataannya, dalam situasi itu bahkan dapat dilihat sebagai "overhead") atau menjadi kelompok kecil yang mengembangkan sesuatu dalam periode singkat. Dan itulah alasan utama junior yang mempelajari OOP dalam istilah "fitur bahasa" sering salah mengartikannya menghasilkan kode yang dirancang buruk.
Bagaimana OOP cocok dengan bahasa tergantung pada bagaimana perancang bahasa menafsirkan prinsip OOP dalam konstruk mereka sendiri.
Jadi "enkapsulasi" dalam C ++ menjadi "anggota pribadi" (dan "kapsul" menjadi kelas), "substitusi" menjadi fungsi virtual menimpa atau template parametrization / spesialisasi dll, sedangkan di D kapsul adalah "modul" (dan substitusi berjalan) melalui kelas dll), sehingga membuat paradigma atau pola tertentu langsung tersedia dalam bahasa yang diberikan dan tidak dalam bahasa lain dan seterusnya.
Apa yang dicari oleh perekrut dalam mengajukan pertanyaan OOP hanyalah memeriksa kemampuan Anda untuk abstrak dan membuat desain perangkat lunak untuk proyek dan pengembangan besar di masa depan. OOP, bagi mereka hanyalah "kamus" yang seharusnya mereka dan Anda ketahui sehingga Anda dapat berbicara tentang hal-hal lain yang lebih umum atau mengkonkretkan ke dalam implementasi spesifik.