Abstraksi, Enkapsulasi, dan Penyembunyian Informasi

perancangan dan pemrograman berorientasi obyek(OO) adalah sebuah cara berpikir tentang program sebagai sebuah kumpulan obyek yang salain berinteraksi, yang mana tiap-tiapnya memodelkan beberapa entitas komputasi, riil atau imajiner.
Pemrograman OO telah tinggal landas karena terdapat persepsi umum di antara para pengembang perangkat lunak bahwa bahasa ini, semua dengan sekumpulan fitur abstraksi umum mendasar, dan tiap fitur dengan sekumpulan fitur dan nuansa yang uniknya.

 

Desain

Desain

C++ secara luas digunakan karena dianggap sebagai sebuah bahasa pemrograman yang praktis (makna efisien) untuk penggunaan oleh pengembang perangkat lunak. Namun, bahasa tersebut mempunyai sekumpulan fitur yang kompleks, dan interaksi yang kurang terdefinisi dari fitur-fitur yang membutuhkan beberapa tahun dari pengembangan compiler untuk menerapkan bahasa sepenuhnya.

Sebuah Bahasa OO yang independen seperti C++, pemrograman OO mendikte sebuah gaya yang membentuk prinsip rekayasa perangkat lunak yang secara umum diterima sebagai sesuatu yang baik oleh beberapa ukuran kebaikan. Prinsip-prinsip tersebut antara lain abstraksi, enkapsulasi, dan penyembunyian informasi, yang mengatur bagaimana program dibangun. Ukuran kebaikan biasanya berupa ukuran ekonomi. Pengembang perangkat lunak, seperti insinyur lainnya, berkutat dengan kualitas dan kehandalan dari perangkat dan biaya pengembangan dan pemeliharaan sebuah produk perangkat lunak. insinyur mungkin menginginkan pengembangan dan pemeliharaan yang berkualitas  dan kehandalan tinggi, yang berbiaya rendah. Namun sayangnya, sebagai sebuah profesi, insinyur perangkat lunak belum mencapai sasaran tersebut.
C++ menyediakan mekanisme bahasa, seperti kelas,yang memungkinkan programer untuk menggunakan dalam praktiknya prinsip enkapsulasi dan penyembunyian informasi.
Abstraksi sulit untuk didefinisikan secara presisi, namun dalam konteks OO, abstraksi berarti mempunayi sebuah mekanisme bahasa yang memberikan anda kemampuan utnuk mendefinisikan sebuah struktur konseptual yang mewakili hanya aspek komputasi yang menarik dari beberapa entitas eksternal, riil atau jika tidak yang sedang dimodelkan.
Enkapsulasi adalah pengelompokan data dan operasi yang mengubah data tersebut menjadi sebuah struktur data. Enkapsulasi mencapai lokalitas spasial dalam dua bentuk: lokalitas konspetual dan lokalitas waktu-jalan(run-time). Lokalitas konseptual membantu otak kita menangani kompleksitas dengan memungkinkan ktia untuk meletakkan data dan operasi yang berhubungan bersama dalam struktur sintak yang sama, dan lokalitas waktu-jalan berarti sebuah mesin kemudian bisa melakukan hal-hal secara efisien dengan struktur kita yang terdefinisi.
Penyembunyian informasi berkutat dengan cakupan atau visibilitas dari bagian dari sebuah implementasi. Kunci realisasi dari penyembunyian informasi dalam C++, seperti yang akan kita pelajari, adalah kemampuan utnuk memisahkan interface (antarmuka) dari sebuah abstraksi yang merepresentasikan sebuah obyek dari implementasi.
Interface dari sebuah obyek mendefinisikan bagaimana obyek tersebut digunakan dan mungkin hanya memberi petunjuk  untuk implementasi. Implementasi terpisah dari antarmuka yang menggunakan mekanisme scope control atau dengan mendefinisikan abstraksi antarmuka dan abstraksi implementasi terpisah , dan kemudian menghubungkan abstraksi tersebut menggunakan mekanisme bahasa lainnya.
Kemampuan untuk secara bersih memisahkan definisi dari antarmuka dari sebuah implementasi dari antarmuka tersebut, dan kemampuan untuk mendapatkan beberapa implementasi untuk interface yang sama mungkin adalah peran terpenting saat ini dari paradigma OO. Kelas, templat, dan pewarisan merupakan mekanisme bahasa saat kompilasi yang memungkinkan kita untuk mendefinisikan dan menyusun antarmuka abstrak dan mengenkapsulasi implementasi dalam bentuk yang aman.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>