1. Memperkenalkan prinsip OOP

Hari ini anda akan menemui dunia baharu dan menarik. Dunia Pengaturcaraan Berorientasikan Objek ( OOP ). Anda pernah belajar tentang kelas dan objek. Hari ini anda akan mengetahui lebih lanjut tentang mereka, lebih banyak lagi.

OOP muncul sebagai tindak balas kepada peningkatan kerumitan program. Apabila pembolehubah dan kaedah dalam program mula berjumlah puluhan ribu, menjadi jelas bahawa sesuatu perlu dilakukan. Satu penyelesaian adalah untuk menggabungkan data dan kaedah yang berkaitan ke dalam objek yang berasingan.

Sekarang pengaturcara terpaksa menerangkan secara berasingan cara objek berinteraksi secara luaran dan cara ia berkelakuan secara dalaman. Ini menjadikannya lebih mudah untuk memahami dan menulis program. Walau bagaimanapun, satu soalan kekal: kaedah yang manakah harus menjadi dalaman kepada objek dan yang harus tersedia untuk objek lain?

Banyak pendekatan telah dicuba. Dan berdasarkan amalan terbaik yang ditemui, 4 prinsip OOP muncul. Ia adalah abstraksi, enkapsulasi, pewarisan dan polimorfisme . Sebelum ini, terdapat hanya tiga, tetapi pakar kemudian memutuskan untuk menambah abstraksi juga.


2. Abstraksi

Orang di Internet masih berhujah mengenai definisi abstraksi dalam OOP . Masalahnya bukan semua orang salah. Ia adalah bahawa semua orang betul . Lebih kecil program, lebih banyak abstraksi terikat pada bahasa Java. Semakin besar program, semakin banyak abstraksi terikat pada pemodelan/permudahkan objek dunia sebenar.

Tetapi minda terbaik nampaknya bersetuju bahawa:

Abstraksi ialah penggunaan hanya ciri-ciri objek yang mewakilinya dengan cukup tepat dalam program. Idea utama adalah untuk mewakili objek dengan set medan dan kaedah terkecil yang pada masa yang sama membolehkan tugasan anda diselesaikan dengan ketepatan yang mencukupi .

Di Java, abstraksi dicapai melalui kelas abstrak dan antara muka.

Abstraksi dalam kehidupan sebenar

Contoh abstraksi yang baik dalam kehidupan sebenar ialah huraian kerja di syarikat atau organisasi. Tajuk jawatan adalah satu perkara, tetapi tanggungjawab khusus yang diberikan kepada jawatan adalah perkara yang sama sekali berbeza.

Bayangkan anda sedang mereka bentuk struktur organisasi syarikat masa depan anda. Anda boleh membahagikan tanggungjawab kesetiausahaan, menyebarkannya ke beberapa jawatan yang berbeza. Anda boleh membahagikan jawatan CEO kepada beberapa jawatan berasingan: CFO, CTO, CMO, HR Director. Atau, sebagai contoh, anda boleh menggabungkan jawatan pengurus pejabat dan perekrut menjadi satu.

Anda memikirkan tajuk pekerjaan dan kemudian membahagikan tanggungjawab untuk jawatan ini. Abstraksi adalah memisahkan diri daripada objek secara keseluruhan dan memilih sifat dan komponen penting yang kita perlukan.

Memperkenalkan prinsip OOP.  Abstraksi

Dari sudut pengaturcaraan, abstraksi ialah pembahagian program yang betul kepada objek . Biasanya, terdapat berpuluh-puluh cara untuk mewakili mana-mana program besar sebagai objek berinteraksi. Abstraksi membolehkan anda memilih ciri penting dan mengabaikan ciri yang tidak penting.


3. Enkapsulasi

Matlamat enkapsulasi adalah untuk meningkatkan interaksi dengan menjadikan objek lebih mudah.

Dan cara terbaik untuk mempermudahkan sesuatu ialah menyembunyikan apa-apa yang rumit daripada mengintip. Contohnya, jika anda dimasukkan ke dalam kokpit jet jumbo Boeing, anda tidak akan memahami cara mengendalikannya dengan segera:

Tetapi bagi penumpang di dalam pesawat, semuanya lebih mudah: anda membeli tiket dan menaiki pesawat, yang berlepas dan kemudian mendarat. Anda boleh terbang dengan mudah dari satu benua ke benua lain dengan hanya keupayaan untuk "membeli tiket" dan "naik kapal terbang". Semua kerumitan menyediakan pesawat untuk penerbangan, berlepas, mendarat dan pelbagai situasi kecemasan tersembunyi daripada anda. Apatah lagi dengan navigasi satelit, autopilot dan pusat kawalan trafik udara. Dan ini memudahkan hidup kita.

Dari sudut pengaturcaraan, enkapsulasi adalah "menyembunyikan pelaksanaan". Saya suka definisi ini. 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 menandakannya dengan pengubah peribadi), dan meninggalkan hanya dua atau tiga kaedah untuk berinteraksi dengan kelas lain (dengan menandakannya dengan pengubah suai awam). Kemudian semua kelas lain program kami hanya akan melihat tiga kaedah awam dan memanggilnya tetapi tidak yang lain. Dan semua kerumitan akan disembunyikan di dalam kelas, sama seperti kokpit disembunyikan daripada penumpang gembira.


4. Warisan

Terdapat dua sisi dalam pewarisan . Warisan dalam pengaturcaraan dan warisan dalam kehidupan sebenar. Dalam pengaturcaraan, warisan ialah 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. Cipta perkara yang kita perlukan dari awal, menghabiskan banyak masa dan usaha.
  2. Cipta benda yang kita perlukan berdasarkan sesuatu yang sudah ada.

Strategi optimum ialah ini: ambil penyelesaian yang baik sedia ada, ubah suainya sedikit, laraskannya agar sesuai dengan keperluan kita, dan kemudian gunakannya.

Jika kita menjejaki sejarah manusia kembali ke permulaannya, kita mendapati bahawa berbilion tahun telah berlalu sejak kehidupan bermula di planet ini. Tetapi jika kita menganggap titik permulaan manusia sebagai nenek moyang primata kita (iaitu manusia "berdasarkan" nenek moyang primata), maka hanya beberapa juta tahun telah berlalu. Membina dari awal mengambil masa yang lebih lama. Lebih lama.

Dalam pengaturcaraan, anda boleh melakukan sesuatu yang serupa dengan mencipta satu kelas berdasarkan yang lain. Kelas baharu turun daripada (mewarisi) kelas sedia ada. Ini sangat berfaedah apabila kelas sedia ada mempunyai 80-90% daripada data dan kaedah yang kita perlukan. Kami hanya mengisytiharkan kelas yang sesuai sebagai induk kelas baharu kami, dan semua data serta kaedah kelas induk muncul secara automatik dalam kelas baharu. Mudah, bukan?


5. Polimorfisme

Polimorfisme ialah konsep pengaturcaraan. Ia menerangkan situasi di mana pelaksanaan berbeza tersembunyi di sebalik antara muka tunggal. Melihat kepada kehidupan sebenar untuk rakan sejawat, kami mendapati bahawa mengendalikan kenderaan adalah sesuai.

Jika seseorang boleh memandu trak, maka dia juga boleh diletakkan di belakang roda ambulans atau di belakang roda kereta sukan. Seseorang boleh mengendalikan kereta, tanpa mengira jenis kereta, kerana semua kereta mempunyai antara muka kawalan yang sama: stereng, pedal dan tukar gear. Bahagian dalam kereta berbeza, tetapi semuanya mempunyai antara muka kawalan yang sama.

Kembali ke dunia pengaturcaraan, polimorfisme membenarkan objek dari kelas yang berbeza (biasanya mempunyai nenek moyang yang sama) untuk diakses dengan cara yang sama, harta yang nilainya tidak boleh dilebih-lebihkan. Nilainya meningkat apabila program semakin besar.

OOP bermaksud prinsip. Undang-undang dalaman. Setiap daripada mereka mengehadkan kami dalam beberapa cara, tetapi memberikan faedah yang besar sebagai balasan apabila program menjadi besar. Empat prinsip OOP adalah seperti empat kaki meja. Ambil satu dan seluruh sistem menjadi tidak stabil.