OOP merupakan pemrograman yang menggunakan class dan object. OOP bukanlah masalah mengenai bagaimana menggunakan sintaks tapi lebih bagaimana menganalisa dalam melakukan pemrograman.
Dalam OOP, elemen sebuah program adalah object. Object akan merepresentasikan elemen dari masalah pada program Anda untuk diselesaikan (solusi). Sebagai contoh, jika masalah yang diselesaikan berupa aplikasi mobil bekas, maka objek yang berkaitan bisa berarti mobil dan pelanggan. Dan jika aplikasi itu berkaitan dengan luar angkasa, maka berarti objek itu adalah bintang dan planet.
Objek dan Class
Elemen dasar dari OOP adalah objek. Lebih mudah memahami objek jika itu berbentuk fisik, seperti mobil, mobil memiliki properti seperti warna, model, mesin dan ban, yang semua tadi disebut juga attribut.
Secara umum, objek adalah kata benda. Orang adalah objek. Begitu juga binatang, rumah, kantor, pelanggan, planet, dan sebagainya. Bagaimanapun juga objek tidak selalu berbentuk fisik. Kebanyakan objek yang juga kata benda, lebih bersifat konseptual. Sebagai contoh, rekening bank adalah sesuatu yang tidak dapat dipegang. Sebuah file juga dikatakan objek, begitu juga database. E-mail, alamat, lagu, acara tv, pertemuan dan semuanya bisa menjadi objek.
Sebuah class merupakan skrip yang berfungsi layaknya template, atau mungkin sebuah pattern, yang digunakan untuk membuat objek. Class akan mendefinisikan properti, attribut dari objek. Ini juga mendefinisikan apa yang dapat dilakukan objek. Sebagai contoh, Anda membuat class mengenai mobil, maka Anda akan mendefinisikan bahwa mobil itu memiliki empat roda, dan mesin, dan juga apa yang bisa dilakukan oleh mobil tersebut seperti maju, melakukan parkir dan sebagainya. Class mobil yang Anda buat mengikuti apa yang anda tulis pada pattern tersebut. Saat anda memberikan properti pada objek mobil tersebut, mungkin akan ada beberapa bagian yang hilang, seperti pintu atau setir. Itu karena Anda tidak menuliskannya.
Sebagai orang yang menulis class, Anda harus mengetahui secara pasti apa saja yang bisa dilakukan objek tersebut. Tapi sesungguhnya Anda tidak harus tahu bagaiman objek tersebut bekerja, tapi anggaplah Anda tahu apa yang bisa dilakukan oleh objek tersebut. Seperti halnya, kita tidak tahu secara pasti atau detail bagaimana sebuah telepon dapat bekerja, tapi paling tidak kita tahu bahwa telepon dapat digunakan untuk melakukan panggilan.
Properti
Objek memiliki properti, yang juga terkadang disebut attribut. Sebuah mobil bisa saja berwarna merah, hijau, biru dan sebagainya. Properti seperti warna dan model disimpan didalam objek. Properti diset didalam class sebagai variabel. Sebagai contoh, attribut warna disimpan didalam objek sebagai variabel, kita beri nama $warna, maka objek sebuah mobil bisa mengandung $warna = merah.
Variabel yang tersimpan melalui properti dapat diberikan menjadi nilai default, diberikan saat objek tersebut dibuat atau nilai properti tersebut diberikan atau dimodifikasi kemudian.
Method
Sebuah objek dapat melakukan sesuai dengan fungsinya. Sebagai contoh, sebuah mobil bisa bergerak maju, mundur, berhenti dan sebagainya. Setiap sesuatu bisa melakukan hal sesuai dengan fungsinya dimasukkan kedalam pemrograman yang disebut method.
Dalam PHP, method menggunakan sintaks yang sama dengan fungsi.Meskipun memiliki kemiripan layaknya sebuah fungsi, tapi method berada didalam class. Tidak bisa dipanggil sendiri dalam objek. PHP tidak mengijinkannya. Fungsi tipe ini hanya dapat berjalan jika dipanggil dengan sebuah objek.
Saat membuat method, berikan nama sesuai dengan yang dilakukan. Method biasanya diberi nama seperi getColor atau parkCar.
Method merupakan interface antara objek dengan “dunia luar”. Objek memerlukan method untuk menjalankan fungsinya. Objek harus dapat berinteraksi dengan dunia luar melalui method yang tersedia. Sebagai analogi, Jika anda memiliki tetangga sebagai objek, dan ia ingin meminta gula kepada Anda, Anda ingin agar tetangga Anda mengetok pintu lalu meminta gula. Anda tidak ingin tetangga Anda langsung masuk ke rumah Anda langsung mengambil gula tersebut. Maka rumah Anda sebagai objek harus memiliki pintu dan tetangga Anda sebagai objek tidak bisa masuk ke rumah Anda selain melalui pintu. Dalam kata lain, rumah Anda sebagai objek harus memiliki method untuk membuka pintu yang akan digunakan oleh tetangga Anda, dan tidak ada cara lain untuk masuk ke rumah Anda selain melalui pintu. Membuka pintu merupakan hal yang harus dimiliki oleh objek rumah Anda, melalui method yang diberi nama bukaPintu.
Sebuah objek yang baik seharusnya mengandung semua hal sesuai dengan fungsinya. Ini seharusnya tidak melakukan hal lain yang merupakan fungsi objek lain. Objek mobil harus bisa melakukan perjalanan dan memiliki semua fungsinya, seperti gas, oli, ban, mesin dan seterusnya. Objek mobil seharusnya tidak bisa dibuat untuk memasak, atau hal-hal lain.
Inheritance.
Objek hanya harus memiliki properti dan method sesuai dengan fungsinya. Tidak boleh lebih. Salah satu cara untuk menyesuaikan dengan berbagi properti dan method antara class dengan menggunakan inheritance. Sebagai contoh, andaikan Anda ingin membuat objek mawar merah dan mawar putih, maka Anda akan membuat dua class, yaitu redRose dan whiteRose. Bagaimana pun juga keduanya memiliki informasi yang sama, sama-sama bunga, sama-sama mawar, sama-sama memiliki wangi, sama-sama mekar pada bulan juni. Dengan inheritance memungkinkan bagi Anda untuk menghindari duplikasi.
Anda dapa menulis sebuah class Rose, lalu Anda dapat memberikan informasi dalam class tersebut, seperti $plant = bush, $stem = thorns dan $bloom = june. Selanjutnya baru Anda membuat subclass dengan dua jenis mawar tersebut. Class Rose dikatakan sebagai master class atau parent class, redRose dan whiteRose merupakan subclass yang bisa dikatakan merefer sebagai child class.
Child class membawa semua sifat turunan (inherit) properti dan method yang berasal dari parent class. Tapi mereka juga dapat memiliki properti tersendiri, seperti $color=white untuk whiteRose dan $color=red untuk redRose.