"Helo, Amigo! Hari ini saya akan membuka dunia baharu dan menarik untuk pandangan anda. Saya bercakap tentang Pengaturcaraan Berorientasikan Objek (OOP) . Anda sudah mengenali kelas dan objek. Hari ini anda akan pergi untuk mengetahui lebih lanjut tentang mereka, lebih banyak lagi."

Kita akan mulakan dengan empat tiang OOP. Ia adalah abstraksi, enkapsulasi, pewarisan, dan polimorfisme. (Dulu ada tiga, tetapi abstraksi telah ditambahkan kemudian)

1) Abstraksi.

Contoh abstraksi yang baik dalam kehidupan sebenar ialah huraian kerja di sebuah syarikat. Tajuk kerja adalah satu perkara, tetapi tugasnya adalah perkara yang sama sekali berbeza.

Bayangkan anda sedang mencipta carta organisasi untuk syarikat masa depan anda. Anda mungkin membahagikan tugas setiausaha, menyebarkannya ke beberapa jawatan lain. Anda mungkin membahagikan tugas CEO kepada beberapa jawatan berasingan: ketua pegawai kewangan, ketua pegawai teknologi, ketua pegawai pemasaran, ketua pegawai sumber manusia. Atau anda boleh menggabungkan jawatan pengurus pejabat dan perekrut menjadi satu.

Katakan anda membuat nama untuk jawatan di syarikat anda, dan kemudian anda "melepaskan" tanggungjawab untuk jawatan ini. Itulah abstraksi - membelah sesuatu yang besar dan monolitik kepada beberapa bahagian kecil.

OOP: prinsip asas - 1

Dari perspektif pengaturcara, abstraksi membahagikan program kepada objek dengan betul.

Program besar biasanya boleh diwakili sebagai objek berinteraksi dalam mana-mana daripada sedozen cara yang berbeza. Abstraksi membolehkan anda memilih ciri utama objek dan meninggalkan apa-apa yang kurang penting.

Abstraksi adalah seperti strategi ketenteraan. Jika anda memilih strategi yang salah, tiada taktik yang bijak akan menyelamatkan hari.

2) Enkapsulasi.

Enkapsulasi bertujuan untuk meningkatkan interaksi antara objek dengan memudahkannya.

OOP: prinsip asas - 2

Cara terbaik untuk memudahkan sesuatu ialah menyembunyikan apa-apa yang rumit daripada mereka yang tidak perlu mengetahuinya. Sebagai contoh, jika anda duduk di belakang kawalan juruterbang jet Boeing, ia akan mengambil masa yang lama untuk memahami cara ia berfungsi:

OOP: prinsip asas - 3

Sebaliknya, segala-galanya kelihatan lebih mudah kepada penumpang di dalam pesawat: mereka membeli tiket dan menaiki pesawat, yang kemudiannya berlepas dan mendarat. Anda boleh terbang dari benua ke benua dengan mudah, hanya mengetahui cara «membeli tiket» dan «naik kapal terbang». Kami tidak melihat sebarang kerumitan yang berkaitan dengan penyediaan pesawat untuk penerbangan, berlepas, mendarat dan pelbagai situasi kecemasan yang berpotensi. Dan kami tidak menyebut tentang navigasi satelit, autopilot dan pusat kawalan trafik udara. Ini memudahkan hidup kita.

Dari segi pengaturcaraan, enkapsulasi adalah «menyembunyikan pelaksanaan». Saya suka definisi itu. Kelas kami boleh mengandungi beratus-ratus kaedah dan melaksanakan tingkah laku yang sangat kompleks dalam pelbagai situasi. Tetapi kita boleh menyembunyikan semua kaedahnya daripada mengintip mata (dengan menandakan mereka « persendirian »), meninggalkan hanya dua atau tiga kaedah untuk interaksi dengan kelas lain (dengan menandakan mereka « awam »). Kemudian semua kelas lain dalam program kami hanya akan melihat—dan memanggil—beberapa kaedah ini pada kelas ini . Semua kerumitan kelas akan tersembunyi di dalam, sama seperti kokpit disimpan daripada pandangan penumpang gembira.

3) Warisan.

Warisan adalah satu konsep dalam pengaturcaraan dan kehidupan sebenar. Dalam pengaturcaraan, warisan adalah hubungan istimewa antara dua kelas. Tetapi warisan dalam kehidupan sebenar jauh lebih menarik.

Jika kita perlu mencipta sesuatu dalam kehidupan sebenar, kita mempunyai dua pilihan:

1) buat apa yang kita perlukan dari awal, dan luangkan banyak masa dan usaha untuk melakukannya.

2) buat apa yang kita perlu guna benda yang dah ada.

Strategi terbaik ialah ini: Kami mengambil penyelesaian yang baik sedia ada, mengolah semula dan mengubahnya untuk memenuhi keperluan kami, dan kemudian menggunakannya.

Pertimbangkan, evolusi manusia. Jika kita mengesan permulaan mereka kembali ke permulaan kehidupan di planet ini, kita melihat bahawa berbilion tahun telah berlalu. Tetapi jika kita menganggap manusia bermula dari monyet, maka hanya beberapa juta tahun telah berlalu. Mencipta sesuatu dari awal mengambil masa yang lebih lama. Lebih lama.

Begitu juga, dalam pengaturcaraan kita boleh membuat satu kelas berdasarkan yang lain. Kelas baru menjadi keturunan (waris) kelas sedia ada. Ini sangat membantu apabila anda sudah mempunyai kelas yang mengandungi 80-90% daripada data dan kaedah yang diperlukan. Kami hanya mengisytiharkan kelas yang sesuai sebagai induk kelas baharu kami. Semua data dan kaedah kelas induk secara automatik menjadi sebahagian daripada kelas baharu. Mudah, bukan?

4) Polimorfisme.

Polimorfisme ialah konsep pengaturcaraan yang menggambarkan situasi di mana pelaksanaan berbeza tersembunyi di sebalik antara muka yang sama. Untuk mencari analog dalam kehidupan sebenar, kita boleh melihat kepada proses memandu kereta.

Jika seseorang boleh memandu trak, maka dia juga boleh diletakkan di belakang roda ambulans atau kereta sukan. Seseorang boleh memandu kereta tanpa mengira jenis kereta itu, kerana mereka semua mempunyai antara muka kawalan yang sama: stereng, pedal dan penukar gear. Kereta disusun secara berbeza di dalam, tetapi semuanya berkongsi antara muka kawalan yang sama.

Kembali kepada pengaturcaraan, polimorfisme membolehkan kita berinteraksi dengan objek kelas yang berbeza (biasanya dengan nenek moyang yang sama) dengan cara yang sama. Kepentingan ini tidak boleh terlalu ditekankan. Ia menjadi lebih penting apabila program menjadi lebih besar.

OOP ialah prinsip. Undang-undang pengaturcaraan. Setiap daripada mereka mengehadkan kami dalam beberapa cara, tetapi sebagai balasannya memberikan kelebihan besar apabila program berkembang menjadi besar. Empat prinsip OOP adalah seperti empat kaki kerusi. Jika anda mengambil walaupun satu daripadanya, keseluruhan sistem menjadi tidak stabil.