Object-Oriented Programming (OOP – Pemrograman Berorientasi Objek) adalah paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dikelompokkan dalam kelas-kelas atau objek-objek. Tiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
Dalam OOP, penyelesaian suatu masalah ditekankan pada objek-objek apa saja yang dapat melakukan pemecahan masalah tersebut.Setiap objek pada OOP memiliki deskripsi tugasnya sendiri sehingga untuk memecahkan masalah dibutuhkan kolaborasi antar objek-objek yang bersangkutan.
Procedural Programming (Pemrograman Prosedural) adalah paradigma pemrograman di mana sebuah program dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi terdiri atas runtutan (sequence) instruksi yang dilaksanakan satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional. Data yang disimpan di dalam memori dimanipulasi oleh instrusi secara beruntun atau prosedural.
Dalam PP, penyelesaian suatu masalah ditekankan kepada langkah-langkah atau instruksi apa saja yang digunakan dalam menyelesaikan suatu masalah tersebut. Data pada PP bersifat pasif, dengan fungsi dan prosedur digunakan untuk memanipulasi data tersebut.
Fokus dari OOP adalah memecah sebuah program menjadi objek-objek, sedangkan pada PP, sebuah program dipecah menjadi kumpulan variabel, struktur data, dan sub-program yang lebih sederhana.
Perbedaan yang paling mendasar antara OOP dan PP adalah PP menggunakan fungsi dan prosedur untuk memanipulasi sebuah struktur data yang pasif, sedangkan OOP menggabungkan keduanya (fungsi/prosedur dan data) menjadi sebuah objek yang dapat mengoperasikan struktur datanya sendiri.
OOP baik digunakan karena fleksibilitasnya dan kemudahan mengubah program tanpa harus mempengaruhi keseluruhan struktur program. Pemrogram tidak harus benar-benar mengetahui langkah-langkah untuk memroses suatu data, melainkan mengetahui dan memahami objek apa saja yang berkaitan dengan data tersebut. PP memiliki kelebihan dalam pendefinisian langkah-langkah atau instruksi (untuk mencapai status akhir yang diinginkan) dengan jelas. Pendefinisian langkah-langkah yang jelas dapat mempertahankan alur dari program (dari status awal ke status akhir) tetap terstruktur dan teratur, dengan demikian mencegah kemungkinan kode program berubah menjadi spaghetti code.


