Mari kita mulai dari awal. Pertama-tama, apa itu abstraksi?
Masalah / Motif
Ketika Anda memprogram, Anda seringkali harus memecahkan masalah yang sangat khusus.
Motif utama untuk abstraksi adalah ketika Anda mungkin menemukan diri Anda pada situasi di mana program Anda menangani seluruh masalah sebagai satu unit, dengan banyak kekhasan kecil yang terpisah yang membutuhkan perhatian dan pemahaman. Masalahnya di sini adalah sulit bagi manusia untuk menangani data dalam jumlah besar sekaligus.
Solusinya: Abstraksi
Agar Anda dapat memahami apa yang Anda butuhkan untuk mengimplementasikan ide Anda, Anda mengekstrak solusi terperinci menjadi abstraksi yang disederhanakan .
Sebagai contoh, mari kita lihat ORM (Object-Relational Mapping), di mana SQL diabstraksi menjadi objek.
Untuk memasukkan item baru ke database tanpa abstraksi, seorang programmer harus tahu SQL. Jadi untuk memasukkan item baru, seorang programmer perlu mengingat sintaks SQL untuk memasukkan item baru ke dalam tabel:
INSERT INTO Items (field1, field2) VALUES (value1, value2)
Tetapi dengan abstraksi, programmer hanya perlu menyadari gagasan tentang apa yang ingin dia lakukan. Abstraksi berorientasi objek mungkin terlihat seperti:
Item item = new Item(value1, value2)
Anda bahkan dapat melangkah lebih jauh dan memikirkan fakta bahwa SQL itu sendiri adalah abstraksi besar untuk banyak struktur dan algoritma penyimpanan data yang canggih, yang sepenuhnya ada di ujung jari Anda untuk harga belajar bahasa deklaratif sederhana.
Kebalikan dari Abstraksi
Berdasarkan apa yang sekarang kita definisikan bahwa abstraksi benar-benar semua tentang membuatnya cukup untuk hanya mengetahui konsep klasik yang ada, kita dapat dengan mudah menyimpulkan bahwa kebalikan dari abstraksi sebenarnya adalah esoterika , di mana penggunaan atau pemahaman mensyaratkan memiliki semacam pengetahuan khusus tentang kekhasan subjek.