Orang seringkali keliru dengan menyamakan OOP dengan GUI. Pada dasarnya OOP berbeda dengan GUI (Graphical User Interfacce). Tidak semua bahasa program yang berbasis GUI (grafis, menggunakan mouse) adalah OOP, demikian juga tidak semua OOP berbentuk GUI. OOP pada prinsipnya adalah tentang objek, entah objek tersebut secara visual memang terlihat demikian, ataupun objek tersebut bersifat konsep.
Untuk dapat digolongkan sebagai OOP, ada 3 syarat yaitu:
1. INHERITANCE (Pewarisan)
Yaitu kemampuan untuk menurunkan atau mewariskan sifat atau ciri, baik property maupun method dari suatu objek. Dalam proses ini melibatkan dua pihak yaitu ancestor (induk) dan descendant (anak). Setiap ciri yang dimiliki oleh ancestor akan dimiliki juga oleh descendant. Namun si descendant dapat dikembangkan dengan menambah hal baru. Setiap penambahan di ancestor akan berpengaruh pada descendant, namun tidak sebaliknya. Dalam dunia nyata, anda bisa melihat apa yang terjadi pada arloji (jam tangan). Secara umum jam tangan hanyalah berfungsi sebagai penunjuk waktu yang terdiri atas jarum pendek dan jarum panjang serta angka 1-12 di tepi lingkaran. Dalam perkembangannya terjadi proses inheritance terhadap arloji ini namun anak-anaknya (descendants) memiliki banyak ciri tambahan. Misalnya ada tambahan informasi kompas, tanggal, bentuk digital, dan sebagainya. Tetapi secara prinsip fungsi dari arloji tidak berubah. Dalam pemrograman, bayangkan anda telah merancang sebuah form yang cukup rumit dan rapi. Kemudian dalam proses selanjutnya, anda menyadari bahwa anda harus merancang lagi sekitar 15 form yang mirip dengan form tersebut. Dalam kasus ini sangat tepat jika diterapkan konsep inheritance, sehingga 15 form tersebut adalah descendant dari form yang telah dirancang. Catat, bahwa hal ini sangat berbeda proses dan impactnya dibanding dengan model copy-paste.
2. ENCAPSULATION (Pembungkusan)
Adalah kemampuan untuk menyembunyikan suatu proses yang rumit dengan tampilan yang sederhana. Analoginya adalah tombol start (electric starter) pada motor. Anda hanya cukup memahami bahwa jika tombol yang umumnya berwarna kuning tersebut anda tekan, maka mesin motor akan hidup. Tombol ini sesungguhnya telah berhasil menyembunyikan sebuah proses yang rumit secara electrical, mengalirkan tenaga listrik dari accumulator dan menghasilkan tenaga kejut yang menghidupkan mesin. Dalam program komputer dapat anda samakan dengan tombol Play yang biasanya berbentuk segitiga hitam. Anda cukup memahami bahwa jika tombol Play ditekan maka itu akan menyalakan musik atau video. Tombol inipun berhasil menyembunyikan proses yang rumit; membaca file audio/video, memastikan filenya normal, menempatkan pointer di awal lalu memainkannya.
3. POLYMORPHISM (Banyak Bentuk)
Seseorang melempar bola, dan seorang lain menangkapnya. Gambaran orang melempar bola ke orang lain untuk ditangkap tentu mudah sekali kita bayangkan. Namun, jangan lupa bahwa ternyata jenis bola tersebut bisa bermacam-macam. Bisa bola kasti, bola basket, bola voley, bola pingpong, atau bola bowling. Tentu, efeknya juga berbeda walau proses melempar tersebut mirip. Contoh lain, sebagaimana kita tahu secara umum binatang mamalia bisa bersuara. Namun binatang bersuara ini ketika dilihat lebih rinci, ternyata berbeda-beda. Seekor singa dan harimau mengaum, kucing mengeong, anjing menggonggong, kuda meringkik, kerbau melenguh, dan sebagainya. Tombol segitiga hitam untuk Play di komputer, bisa bermakna untuk memainkan audio bisa juga untuk memainkan video. Proses melempar bola dengan banyak jenis bola yang dilempar, proses binatang bersuara yang ternyata bunyinya berbeda-beda, proses penekanan tombol Play yang ternyata bisa untuk audio dan video, adalah contoh sederhana bagaimana sebuah konsep polymorphism. Sebuah OOP harus mendukung polymorphism yaitu mampu melakukan beberapa hal yang berbeda namun dengan proses yang bisa dibuat standar.