
Abstraction – Fokus pada Hal yang Penting
Dalam pemikiran komputasional, setelah kita memecah masalah (decomposition) dan mengenali pola (pattern recognition), langkah selanjutnya adalah abstraction atau abstraksi. Ini adalah kemampuan untuk mengabaikan detail yang tidak relevan dan hanya fokus pada informasi penting yang dibutuhkan untuk menyelesaikan masalah.
Abstraksi sangat krusial dalam pemrograman karena komputer hanya memproses informasi yang kita berikan secara eksplisit. Tanpa menyaring informasi, kita akan kewalahan oleh banyaknya data dan kemungkinan solusi yang tidak diperlukan.
Apa Itu Abstraction?
Abstraction dalam konteks pemrograman berarti menyembunyikan kompleksitas dan hanya menampilkan hal-hal penting bagi pengguna. Contohnya adalah saat kita menggunakan System.out.println()
dalam Java. Kita tidak perlu tahu bagaimana karakter dikirim ke layar, cukup tahu bahwa perintah tersebut menampilkan teks.
Manfaat Abstraction
- Mengurangi kompleksitas masalah
- Memudahkan fokus pada elemen penting
- Meningkatkan efisiensi dalam merancang algoritma
- Mendorong pembuatan kode yang modular dan reusable
Contoh Abstraction dalam Kehidupan Sehari-Hari
Saat kamu menyalakan AC, kamu hanya perlu menekan tombol “ON”. Kamu tidak perlu tahu bagaimana sistem refrigerasi bekerja, bagaimana arus listrik mengalir, atau bagaimana sensor suhu membaca kondisi ruangan. Semua detail teknis tersebut di-abstraksi di balik satu tombol.
Contoh Abstraction dalam Java
Misalkan kamu ingin menghitung luas berbagai bangun datar. Kamu bisa membuat kelas abstrak BangunDatar
dan mewariskannya ke berbagai bentuk seperti persegi dan lingkaran.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
abstract class BangunDatar { abstract double hitungLuas(); } class Persegi extends BangunDatar { double sisi; Persegi(double sisi) { this.sisi = sisi; } double hitungLuas() { return sisi * sisi; } } class Lingkaran extends BangunDatar { double radius; Lingkaran(double radius) { this.radius = radius; } double hitungLuas() { return Math.PI * radius * radius; } } |
Kamu tidak perlu tahu bagaimana hitungLuas()
diimplementasikan saat memanggilnya. Cukup tahu bahwa setiap objek akan mengembalikan nilai luas yang benar.
Cara Berlatih Abstraction
- Saat menyelesaikan masalah, tanya: “Apa yang benar-benar penting di sini?”
- Latih membuat diagram dengan hanya komponen penting
- Saat membuat fungsi, sembunyikan logika internal dan tampilkan hanya nama fungsi dan input-output
- Gunakan class dan interface untuk menyembunyikan implementasi detail
Kesimpulan
Abstraction memungkinkan kita untuk menyederhanakan dunia nyata dalam bentuk solusi digital. Dengan fokus pada informasi yang relevan, kita bisa merancang algoritma dan sistem yang efisien, mudah dipelihara, dan scalable. Di artikel berikutnya, kita akan belajar bagaimana menyusun algoritma sebagai langkah-langkah logis dari solusi yang sudah kita rancang.