mau nambahin, mgk bisa membantu jawaban saya mgk lebih cenderung ke "apa sih motivasi kita belajar oop dan kenapa harus oop".
menurut saya, Setiap kali coding pasti ada proses pemahaman (meskipun udah paham) dan ada proses belajar, proses mengimajinasikan, memodelkan suatu problem, dan proses mengingat. Dengan menggunakan paradigma oop kita (seharusnya) bisa lebih cepat utk coding (ini pun pada skala tertentu). bagi saya, dengan oop, proses koding bisa lebih cepat, karena dengan oop kita bisa dengan mudah membuat model dari permasalahan didunia nyata dibandingin dengan prosedural. contohnya untuk menjalankan mobil kita tinggal bilang mobil.jalan(); utk mundur mgk bisa mobil.mundur(). Beda dengan prosedural, mgk kita memodelkan mobil dengan variabel integer x. menjalankan mobil mungkin bisa dengan x = x + 1; dan mundul dengan x = x - 1; apabila kode ini dita beri ke orang lain, maka orang lain itu pun (idealnya) langsung mengerti apa yang sedang terjadi, tanpa kita harus menjelaskan panjang lebar lewat komentar. contoh lagi : program menghitung luas segitiga *prosedural* int alas = bacaInputan(); int tinggi = bacaInputan(); int luas = hitungLuasSegitiga(alas,tinggi); tampilkan(luas); disana kita menggunakan fungsi hitungLuasSegitiga. secara intuisi mgk kita bisa menebak, bakal ada fungsi hitungLuasPersegi, hitungLuasLingkaran. karena berupa fungsi, ada banyak sekali yang perlu diingat, (dengan catatan gak buka dokumentasi ya.. :) ) *oop* untuk menghitung luas segitiga yang hanya perlu kita lakukan adalah tanya lah pada segitiga. disini kita sudah memanfaatkan *layanan dari sebuah object*. disini kita minta bantuan class Segitiga. kenapa minta bantuan class Segitiga? karena hanya segitigalah yang tahu cara menghitung luas dirinya sendiri. bagaimana prosesnya? kita tidak perlu tahu karena itu sudah diurus oleh class Segitiga (enkapsulasi) dan kita tinggal pakai saja, tak perlu tahu cara kerjanya. int alas = bacaInputan(); int tinggi = bacaInputan(); Segitiga s = new Segitiga(alas, tinggi); int luas = s.getLuas(); tampilkan(luas); ketika kita akan menghitung luas persegi maka yang kan kita lakukan adalah kita akan panggil class persegi panjang PersegiPanjang p = new PersegiPanjang(panjang, lebar); karena sebelumnya kita sudah pernah menghitung luas segitiga, maka intuisi kita kan mengatakan utk mendapatkan luas persegi kita masih menggunakan method yang sama yang kita gunakan pada segitiga (sehingga proses mengingat jadi lebih diminimalisir, proses belajar jadi lebih cepat) p.getLuas(); hanya ada satu method getLuas utk semua object bentuk. Disini learning curve bisa lebih rendah karena kita gak perlu belajar method lain lagi. bandingkan dengan prosedural, mgk utk menghitung luas persegipanjang, bakal ada banyak fungsi luasPersegiPanjang(); luasLingkaran(); kelilingSegitiga(); dan lain2. begitu juga dengan proses komunikasi dua object atau lebih, lebih mudah dimodelkan dengan oop dibandingkan dengan struktural. sebenarnya pemilihan dari kedua paradigma pemrograman itu tergantung kebutuhan. tidak ada yang lebih baik. Gunakan prosedural jika lebih mementingkan performansi Gunakan OOP jika menginginkan proses development yang ingin lebih cepat. *doh semangat banget jelasinnya, sorry aj kalo ad yg salah.. :p