𝗔𝗯𝘀𝘁𝗿𝗮𝗸𝘀𝗶 𝗱𝗮𝗹𝗮𝗺 𝗢𝗢𝗣: 𝗠𝗲𝗻𝘆𝗲𝗺𝗯𝘂𝗻𝘆𝗶𝗸𝗮𝗻 𝗞𝗲𝗿𝘂𝗺𝗶𝘁𝗮𝗻

Anda memandu kereta dengan menekan pedal dan memusingkan stereng. Anda tidak perlu memahami suntikan bahan api atau pergerakan omboh. Kereta menyembunyikan butiran ini daripada anda. Anda hanya menggunakan antara muka yang ringkas.

Perisian berfungsi dengan cara yang sama.

Fikirkan tentang menghantar e-mel. Kod anda mungkin kelihatan seperti ini:

emailService.send(email);

Ia kelihatan ringkas. Di sebalik tabir, sistem melaksanakan banyak tugas:

Anda tidak perlu melihat langkah-langkah ini. Anda hanya peduli bahawa e-mel tersebut dihantar.

Jika anda mendedahkan setiap langkah, anda akan mencipta masalah. Bayangkan jika setiap pembangun perlu memanggil secara manual:

Ini menjadikan kod anda rapuh. Jika anda menukar pembekal e-mel anda, anda mesti mengemas kini setiap bahagian dalam aplikasi anda. Kod anda menjadi terikat rapat dengan pelaksanaan tersebut.

Abstraksi menyelesaikan masalah ini.

Abstraksi mendedahkan apa yang dilakukan oleh sesuatu objek. Ia menyembunyikan bagaimana ia melakukannya. Anda hanya menunjukkan kepada pengguna apa yang mereka perlukan.

Pengguna berinteraksi dengan antara muka yang stabil. Mereka tidak peduli tentang logik pengesahan atau strategi cubaan semula anda. Butiran tersebut kekal tersembunyi.

Ramai orang keliru antara Abstraksi dengan Enkapsulasi. Berikut adalah perbezaannya:

Enkapsulasi bertanya: Siapa yang boleh mengubah keadaan (state) objek ini? Ia melindungi data.

Abstraksi bertanya: Apakah butiran yang patut dilihat oleh pengguna? Ia menyembunyikan kerumitan.

Kedua-duanya berfungsi bersama untuk membina sistem yang lebih baik.

Seterusnya, kita akan membincangkan Pewarisan (Inheritance). Kita akan melihat cara mengendalikan tingkah laku yang dikongsi tanpa menulis kod yang sama dua kali.

Source: https://dev.to/ashay_tiwari_3658168ad5db/abstraction-in-oop-hiding-complexity-without-hiding-capability-1111