1. Memperkenalkan prinsip OOP

Hari ini Anda akan menemukan dunia baru dan menarik. Dunia Pemrograman Berorientasi Objek ( OOP ). Anda sebelumnya belajar tentang kelas dan objek. Hari ini Anda akan belajar lebih banyak tentang mereka, lebih banyak lagi.

OOP muncul sebagai respon terhadap meningkatnya kompleksitas program. Ketika variabel dan metode dalam program mulai berjumlah puluhan ribu, menjadi jelas bahwa sesuatu harus dilakukan. Salah satu solusinya adalah menggabungkan data dan metode terkait menjadi objek terpisah.

Sekarang pemrogram harus menjelaskan secara terpisah bagaimana objek berinteraksi secara eksternal dan bagaimana mereka berperilaku secara internal. Ini membuatnya lebih mudah untuk memahami dan menulis program. Namun, masih ada pertanyaan: metode mana yang harus internal untuk suatu objek dan mana yang harus tersedia untuk objek lain?

Banyak pendekatan dicoba. Dan berdasarkan praktik terbaik yang ditemukan, 4 prinsip OOP muncul. Mereka adalah abstraksi, enkapsulasi, pewarisan dan polimorfisme . Sebelumnya hanya ada tiga, tetapi para ahli kemudian memutuskan untuk menambahkan abstraksi juga.


2. Abstraksi

Orang-orang di Internet masih memperdebatkan definisi abstraksi dalam OOP . Masalahnya bukan bahwa semua orang salah. Semua orang benar . Semakin kecil sebuah program, semakin banyak abstraksi yang terkait dengan bahasa Java. Semakin besar sebuah program, semakin banyak abstraksi yang terkait dengan pemodelan/penyederhanaan objek dunia nyata.

Tetapi pikiran terbaik tampaknya setuju bahwa:

Abstraksi adalah penggunaan hanya karakteristik objek yang mewakilinya dengan cukup akurat dalam suatu program. Gagasan utamanya adalah untuk merepresentasikan objek dengan kumpulan bidang dan metode terkecil yang secara bersamaan memungkinkan tugas Anda diselesaikan dengan akurasi yang memadai .

Di Java, abstraksi dilakukan melalui kelas dan antarmuka abstrak.

Abstraksi dalam kehidupan nyata

Contoh abstraksi yang baik dalam kehidupan nyata adalah deskripsi pekerjaan di perusahaan atau organisasi. Judul suatu posisi adalah satu hal, tetapi tanggung jawab khusus yang diberikan pada suatu posisi adalah masalah yang sama sekali berbeda.

Bayangkan Anda sedang merancang struktur organisasi perusahaan masa depan Anda. Anda dapat membagi tanggung jawab kesekretariatan, menyebarkannya ke beberapa posisi berbeda. Anda dapat membagi posisi CEO menjadi beberapa posisi terpisah: CFO, CTO, CMO, HR Director. Atau, misalnya, Anda bisa menggabungkan posisi manajer kantor dan perekrut menjadi satu.

Anda memikirkan jabatan dan kemudian membagi tanggung jawab untuk posisi ini. Abstraksi melepaskan diri dari objek secara keseluruhan dan memilih properti dan komponen penting yang kita butuhkan.

Memperkenalkan prinsip-prinsip OOP.  Abstraksi

Dari sudut pandang pemrograman, abstraksi adalah pembagian program yang benar menjadi objek . Biasanya, ada lusinan cara untuk merepresentasikan program besar apa pun sebagai objek yang berinteraksi. Abstraksi memungkinkan Anda memilih karakteristik penting dan mengabaikan yang tidak penting.


3. Enkapsulasi

Tujuan enkapsulasi adalah untuk meningkatkan interaksi dengan membuat objek lebih sederhana.

Dan cara terbaik untuk menyederhanakan sesuatu adalah dengan menyembunyikan sesuatu yang rumit dari pengintaian. Misalnya, jika Anda dimasukkan ke dalam kokpit jet jumbo Boeing, Anda tidak akan langsung mengerti cara mengoperasikannya:

Tetapi untuk penumpang di pesawat, semuanya lebih sederhana: Anda membeli tiket dan naik pesawat, yang lepas landas lalu mendarat. Anda dapat dengan mudah terbang dari satu benua ke benua lain hanya dengan kemampuan "membeli tiket" dan "naik pesawat". Semua kerumitan mempersiapkan pesawat untuk terbang, lepas landas, mendarat, dan berbagai situasi darurat tersembunyi dari Anda. Belum lagi navigasi satelit, autopilot, dan pusat kontrol lalu lintas udara. Dan ini menyederhanakan hidup bagi kita.

Dari sudut pandang pemrograman, enkapsulasi adalah "menyembunyikan implementasi". Saya suka definisi ini. Kelas kami dapat berisi ratusan metode dan menerapkan perilaku yang sangat kompleks dalam berbagai situasi. Tetapi kita dapat menyembunyikan semua metodenya dari pengintaian (dengan menandainya dengan pengubah pribadi), dan hanya menyisakan dua atau tiga metode untuk berinteraksi dengan kelas lain (dengan menandainya dengan pengubah publik). Kemudian semua kelas lain dari program kami hanya akan melihat tiga metode publik dan memanggilnya tetapi tidak yang lain. Dan semua kerumitan akan disembunyikan di dalam kelas, seperti kokpit yang tersembunyi dari penumpang yang bahagia.


4. Warisan

Ada dua sisi warisan . Warisan dalam pemrograman dan warisan dalam 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. Buat hal yang kita butuhkan dari awal, habiskan banyak waktu dan tenaga.
  2. Buat hal yang kita butuhkan berdasarkan sesuatu yang sudah ada.

Strategi optimalnya adalah: ambil solusi bagus yang sudah ada, modifikasi sedikit, sesuaikan dengan kebutuhan kita, lalu gunakan.

Jika kita menelusuri sejarah manusia kembali ke asalnya, kita menemukan bahwa miliaran tahun telah berlalu sejak kehidupan dimulai di planet ini. Tetapi jika kita menganggap titik awal manusia sebagai nenek moyang primata kita (yaitu manusia "berdasarkan" nenek moyang primata), maka hanya beberapa juta tahun yang telah berlalu. Membangun dari awal membutuhkan waktu lebih lama. Lebih lama.

Dalam pemrograman, Anda dapat melakukan hal serupa dengan membuat satu kelas berdasarkan yang lain. Kelas baru turun dari (mewarisi) kelas yang ada. Ini sangat menguntungkan ketika kelas yang sudah ada memiliki 80-90% data dan metode yang kita butuhkan. Kami hanya mendeklarasikan kelas yang sesuai sebagai induk dari kelas baru kami, dan semua data dan metode dari kelas induk secara otomatis muncul di kelas baru. Nyaman, bukan?


5. Polimorfisme

Polimorfisme adalah konsep pemrograman. Ini menggambarkan situasi di mana implementasi yang berbeda disembunyikan di balik satu antarmuka. Melihat ke kehidupan nyata sebagai mitra, kami menemukan bahwa mengoperasikan kendaraan sangat cocok.

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

Kembali ke dunia pemrograman, polimorfisme memungkinkan objek dari kelas yang berbeda (biasanya memiliki nenek moyang yang sama) diakses dengan cara yang sama, sebuah properti yang nilainya sulit dilebih-lebihkan. Nilainya meningkat saat program tumbuh lebih besar.

OOP berarti prinsip. Hukum internal. Masing-masing membatasi kita dalam beberapa hal, tetapi memberikan manfaat besar sebagai imbalannya ketika program menjadi besar. Empat prinsip OOP seperti empat kaki meja. Ambil satu dan seluruh sistem menjadi tidak stabil.