Saya akan menjawab pertanyaan Anda dengan pertanyaan; ketika Anda mengemudi untuk bekerja pagi ini (saya anggap Anda memang melakukannya), apakah Anda benar-benar peduli bagaimana mesin membuka katup untuk membiarkan campuran udara-bahan bakar, dan kemudian menyalakannya? Tidak. Anda tidak peduli bagaimana mesin mobil Anda bekerja saat Anda berkendara di jalan. Anda peduli itu terjadi bekerja.
Misalkan, suatu hari, mobil Anda gagal bekerja. Tidak memulai, melempar tongkat, mematahkan ikat pinggang, secara tidak masuk akal membajak ke penghalang beton itu bukan karena kesalahan Anda sendiri saat Anda sibuk mengirim SMS. Sekarang, Anda membutuhkan mobil baru (setidaknya sementara). Apakah Anda peduli persis bagaimana mobil baru ini bekerja? Tidak. Yang Anda pedulikan adalah yang pertama berhasil, dan kedua Anda dapat menggunakan pengetahuan dan keterampilan yang sama dengan yang Anda gunakan untuk mengendarai mobil lama Anda dengan mengendarai yang baru. Idealnya, Anda akan melihat bahwa tidak ada perubahan pada mobil yang Anda kendarai. Secara realistis, cara mobil baru ini bekerja harus memberi Anda "kejutan" sesedikit mungkin.
Prinsip dasar ini adalah prinsip inti di balik enkapsulasi dan abstraksi. Pengetahuan tentang bagaimana suatu objek melakukan apa yang seharusnya tidak menjadi syarat untuk menggunakannya untuk melakukan apa yang dilakukannya. Bahkan dalam pemrograman komputer, perincian jalur listrik dalam CPU yang menjalankan program Anda diabstraksikan di belakang setidaknya setengah lusin lapisan instruksi I / O, driver, perangkat lunak OS, dan runtime. Banyak insinyur perangkat lunak yang sangat sukses menulis kode yang sangat baik tanpa perlu khawatir tentang arsitektur perangkat keras yang tepat, atau bahkan OS build, yang akan menjalankannya. Termasuk saya.
Enkapsulasi / penyembunyian informasi memungkinkan mentalitas "tidak peduli bagaimana caranya, hanya peduli saja apa adanya". Objek Anda harus mengekspos apa yang bermanfaat bagi konsumen, dengan cara yang mudah dikonsumsi konsumen. Sekarang, kembali ke dunia nyata, ini tidak berarti bahwa mobil tidak boleh memberikan informasi apa pun kepada pengguna tentang pekerjaan dalam, atau bahwa mobil seharusnya hanya memberi pengguna fungsi yang paling dasar seperti kunci kontak, roda kemudi, dan pedal. Semua mobil memiliki spedometer dan pengukur bahan bakar, takometer, lampu idiot, dan umpan balik lainnya. Hampir semua mobil juga memiliki sakelar untuk berbagai subsistem independen, seperti lampu depan, sinyal belok, radio, penyesuaian tempat duduk, dll. Beberapa mobil memungkinkan input pengguna yang cukup esoteris, seperti sensitivitas diferensial pusat selip terbatas. Dalam semua kasus, jika Anda cukup tahu, Anda dapat membukanya dan mengubah hal-hal untuk membuatnya bekerja dengan cara yang sedikit berbeda. Tetapi, dalam banyak kasus, mungkin, mungkin saja, pengguna tidak dapat secara langsung dan independen mengendalikan pompa bahan bakar dari dalam kabin? Mungkin, mungkin saja, pengguna seharusnya tidak dapat mengaktifkan lampu rem mereka tanpa benar-benar menekan pedal rem?
Abstraksi memungkinkan "ini tidak sama dengan itu, tetapi karena mereka berdua XI dapat menggunakannya seperti yang saya lakukan pada setiap X" mentalitas. Jika objek Anda mewarisi atau mengimplementasikan abstraksi, konsumen Anda harus mengharapkan implementasi Anda untuk menghasilkan hasil yang sama atau serupa dengan implementasi abstraksi lainnya yang diketahui. Toyota Camry dan Ford Fusion keduanya adalah "mobil". Dengan demikian, mereka memiliki seperangkat fungsi yang diharapkan, seperti setir. Putar berlawanan arah jarum jam, mobil belok kiri. Putar searah jarum jam, mobil ke kanan. Anda dapat masuk ke mobil mana pun di Amerika Serikat dan mengharapkan mobil memiliki setir dan setidaknya dua pedal, yang di sebelah kanan adalah pedal "car goes" dan yang di tengah menjadi pedal "car stops" .
Sebuah akibat wajar dari abstraksi adalah "teori paling takjub". Jika Anda berada di belakang kemudi mobil baru untuk test drive, memutar setir searah jarum jam dan mobil berbelok ke kiri, Anda akan sangat terkejut untuk sedikitnya. Anda akan menuduh penjual menjajakan POS, dan tidak mungkin mendengarkan alasannya mengapa perilaku baru itu "lebih baik" daripada yang biasa Anda lakukan, atau seberapa baik perilaku ini "didokumentasikan" atau bagaimana " transparan "sistem kontrolnya. Meskipun ini mobil baru dan semua yang Anda kendarai masih menjadi "mobil", ketika mengendarai mobil ini Anda harus mengubah beberapa konsep mendasar tentang bagaimana mobil seharusnya dikendarai agar dapat menggerakkan mobil baru dengan sukses. Itu biasanya hal yang buruk, dan itu hanya terjadi ketika ada keuntungan intuitif pada paradigma baru. Mungkin penambahan sabuk pengaman adalah contoh yang bagus; 50 tahun yang lalu Anda baru saja masuk dan pergi, tetapi sekarang Anda harus mengencangkan, keuntungan intuitifnya adalah Anda tidak pergi melalui kaca depan atau ke kursi penumpang jika Anda mengalami kecelakaan. Bahkan kemudian, pengemudi menolak; banyak pemilik mobil memotong sabuk pengaman dari mobil sampai hukum disahkan mengamanatkan penggunaannya.