"Halo, Amigo! Hari ini saya akan membuka dunia baru dan menarik untuk pandangan Anda. Saya berbicara tentang Pemrograman Berorientasi Objek (OOP) . Anda sudah mengenal kelas dan objek. Hari ini Anda akan pergi untuk belajar lebih banyak tentang mereka, lebih banyak lagi."

Kita akan mulai dengan empat pilar OOP. Mereka adalah abstraksi, enkapsulasi, pewarisan, dan polimorfisme. (Dulu ada tiga, tetapi abstraksi ditambahkan kemudian)

1) Abstraksi.

Contoh abstraksi yang baik dalam kehidupan nyata adalah deskripsi pekerjaan di sebuah perusahaan. Judul pekerjaan adalah satu hal, tetapi tugasnya adalah masalah yang sama sekali berbeda.

Bayangkan Anda sedang membuat bagan organisasi untuk perusahaan masa depan Anda. Anda mungkin membagi tugas seorang sekretaris, menyebarkannya ke beberapa posisi lainnya. Anda dapat membagi pekerjaan CEO menjadi beberapa posisi terpisah: chief financial officer, chief technology officer, chief marketing officer, chief human resource officer. Atau Anda bisa menggabungkan posisi manajer kantor dan perekrut menjadi satu.

Misalkan Anda menemukan nama untuk posisi di perusahaan Anda, dan kemudian Anda "memberikan" tanggung jawab untuk posisi tersebut. Itu abstraksi - membagi sesuatu yang besar dan monolitik menjadi beberapa bagian kecil.

OOP: prinsip dasar - 1

Dari perspektif pemrogram, abstraksi dengan benar membagi program menjadi objek.

Program besar biasanya dapat direpresentasikan sebagai objek yang berinteraksi dengan berbagai cara. Abstraksi memungkinkan Anda memilih karakteristik utama objek dan menghilangkan hal yang kurang penting.

Abstraksi seperti strategi militer. Jika Anda memilih strategi yang salah, tidak ada taktik cerdik yang akan menyelamatkan hari.

2) Enkapsulasi.

Enkapsulasi dimaksudkan untuk meningkatkan interaksi antar objek dengan menyederhanakannya.

OOP: prinsip dasar - 2

Cara terbaik untuk menyederhanakan sesuatu adalah dengan menyembunyikan sesuatu yang rumit dari mereka yang tidak perlu mengetahuinya. Misalnya, jika Anda duduk di belakang kendali pilot jet Boeing, perlu waktu lama untuk memahami cara kerjanya:

OOP: prinsip dasar - 3

Di sisi lain, semuanya terlihat lebih sederhana bagi penumpang di pesawat: mereka membeli tiket dan naik ke pesawat, yang kemudian lepas landas dan mendarat. Anda dapat dengan mudah terbang dari benua ke benua, hanya mengetahui cara «membeli tiket» dan «naik pesawat». Kami tidak melihat kerumitan terkait persiapan pesawat untuk terbang, lepas landas, mendarat, dan berbagai potensi situasi darurat. Dan kami tidak menyebutkan navigasi satelit, autopilot, dan pusat kendali lalu lintas udara. Ini menyederhanakan hidup kita.

Dalam hal pemrograman, enkapsulasi adalah «menyembunyikan implementasi». Saya suka definisi itu. Kelas kami dapat berisi ratusan metode dan menerapkan perilaku yang sangat kompleks dalam berbagai situasi. Tapi kita bisa menyembunyikan semua metodenya dari pengintaian (dengan menandainya « pribadi »), menyisakan hanya dua atau tiga metode untuk berinteraksi dengan kelas lain (dengan menandainya « publik »). Kemudian semua kelas lain dalam program kita hanya akan melihat—dan memanggil—beberapa metode ini di kelas ini . Semua kerumitan kelas akan disembunyikan di dalam, seperti kokpit yang dijaga dari pandangan penumpang yang bahagia.

3) Warisan.

Warisan adalah konsep dalam pemrograman dan kehidupan nyata. Dalam pemrograman, pewarisan adalah hubungan khusus antara dua kelas. Tapi warisan dalam kehidupan nyata jauh lebih menarik.

Jika kita perlu membuat sesuatu dalam kehidupan nyata, kita memiliki dua pilihan:

1) membuat apa yang kita butuhkan dari awal, dan menghabiskan banyak waktu dan tenaga untuk melakukannya.

2) membuat apa yang kita butuhkan menggunakan hal-hal yang sudah ada.

Strategi terbaik adalah ini: Kami mengambil solusi bagus yang ada, mengerjakan ulang dan menyesuaikannya untuk memenuhi kebutuhan kami, lalu menggunakannya.

Pertimbangkan, evolusi manusia. Jika kita menelusuri awal mereka kembali ke awal kehidupan di planet ini, kita melihat bahwa miliaran tahun telah berlalu. Tetapi jika kita menganggap manusia mulai dari monyet, maka hanya beberapa juta tahun yang telah berlalu. Membuat sesuatu dari awal membutuhkan waktu lebih lama. Lebih lama.

Demikian pula, dalam pemrograman kita dapat membuat satu kelas berdasarkan yang lain. Kelas baru menjadi keturunan (pewaris) dari kelas yang sudah ada. Ini sangat membantu ketika Anda sudah memiliki kelas yang berisi 80-90% data dan metode yang dibutuhkan. Kami hanya mendeklarasikan kelas yang cocok sebagai induk dari kelas baru kami. Semua data dan metode kelas induk secara otomatis menjadi bagian dari kelas baru. Nyaman, bukan?

4) Polimorfisme.

Polimorfisme adalah konsep pemrograman yang menggambarkan situasi di mana implementasi yang berbeda tersembunyi di balik antarmuka yang sama. Untuk menemukan analogi dalam kehidupan nyata, kita dapat melihat proses mengendarai mobil.

Jika seseorang dapat mengemudikan truk, maka dia juga dapat ditempatkan di belakang kemudi ambulans atau mobil sport. Seseorang dapat mengendarai mobil apa pun jenis mobilnya, karena semuanya memiliki antarmuka kontrol yang sama: setir, pedal, dan perpindahan gigi. Mobil diatur secara berbeda di dalam, tetapi semuanya memiliki antarmuka kontrol yang sama.

Kembali ke pemrograman, polimorfisme memungkinkan kita berinteraksi dengan objek dari kelas yang berbeda (biasanya dengan nenek moyang yang sama) dengan cara yang sama. Pentingnya hal ini tidak bisa terlalu ditekankan. Ini menjadi lebih penting ketika sebuah program tumbuh lebih besar.

OOP adalah prinsip. Hukum pemrograman. Masing-masing membatasi kita dalam beberapa hal, tetapi sebagai gantinya memberikan keuntungan besar saat program tumbuh besar. Empat prinsip OOP seperti empat kaki kursi. Jika Anda menghilangkan salah satunya saja, seluruh sistem menjadi tidak stabil.