Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Abstraksi Data C++: Sederhanakan Desain dengan Pemisahan Antarmuka-Implementasi

Abstraksi data merujuk pada penyediaan hanya informasi yang diperlukan kepada dunia luar dan menyembunyikan detail latar belakangnya, yaitu, untuk mewakili informasi yang diperlukan dalam program tanpa menyajikan detailnya.

Abstraksi data adalah teknik pemrograman (dan desain) yang bergantung pada pemisahan antarmuka dan implementasi.

Mari kita ambil satu contoh nyata dari TV, yang dapat Anda nyalakan dan matikan, ganti saluran, atur volume, dan tambahkan komponen eksternal seperti speaker, VCR, dan pemutar DVD, TETAPI Anda tidak mengetahui detail internalnya, yaitu, Anda tidak mengetahui bagaimana menerima sinyal melalui udara atau kabel, bagaimana menerjemahkannya, dan akhirnya menampilkannya di layar.

Oleh karena itu, kita dapat mengatakan televisi jelas memisahkan implementasi internalnya dari antarmuka eksternalnya dan Anda dapat bermain dengan antarmukanya seperti tombol daya, pengganti saluran, dan pengatur volume tanpa memiliki pengetahuan tentang internalnya.

Dalam C++, kelas menyediakan tingkat abstraksi data yang luar biasa. Mereka menyediakan metode publik yang cukup bagi dunia luar untuk bermain dengan fungsionalitas objek dan memanipulasi data objek, yaitu, status tanpa sepengetahuan bagaimana kelas telah diimplementasikan secara internal.

Contohnya, program Anda dapat memanggil fungsi sort() tanpa mengetahui algoritma apa yang sebenarnya digunakan fungsi tersebut untuk mengurutkan nilai yang diberikan. Faktanya, implementasi dasar dari fungsionalitas pengurutan dapat berubah antara rilis library, dan selama antarmuka tetap sama, pemanggilan fungsi Anda akan tetap berfungsi.

Dalam C++, kita menggunakan kelas untuk menentukan tipe data abstrak (ADT) kita sendiri. Anda dapat menggunakan objek cout dari kelas ostream untuk streaming data ke output standar seperti ini minus–

Live Demo
 #include <iostream> using namespace std; int main() { cout << "Hello C++" <<endl; return 0; } 

Di sini, Anda tidak perlu memahami bagaimana cout menampilkan teks di layar pengguna. Anda hanya perlu mengetahui antarmuka publik dan implementasi dasar ‘cout’ bebas untuk berubah.

Label Akses Menerapkan Abstraksi

Dalam C++, kita menggunakan label akses untuk mendefinisikan antarmuka abstrak dari kelas. Sebuah kelas mungkin memiliki nol atau lebih label akses minus–

Tidak ada pembatasan seberapa sering label akses dapat muncul. Setiap label akses menentukan tingkat akses dari definisi anggota yang berikutnya. Tingkat akses yang ditentukan tetap berlaku sampai label akses berikutnya ditemukan atau tutup kurung kanan tubuh kelas terlihat.

Manfaat Abstraksi Data

Abstraksi data memberikan dua keuntungan penting minus–

Dengan mendefinisikan anggota data hanya di bagian privat kelas, penulis kelas bebas untuk melakukan perubahan pada data. Jika implementasi berubah, hanya kode kelas yang perlu diperiksa untuk melihat dampak perubahan tersebut. Jika data publik, maka fungsi apa pun yang langsung mengakses anggota data representasi lama mungkin akan rusak.

Contoh Abstraksi Data

Program C++ mana pun di mana Anda mengimplementasikan kelas dengan anggota publik dan privat adalah contoh abstraksi data. Pertimbangkan contoh berikut minus–

Live Demo
 #include <iostream> using namespace std; class Adder { public: // konstruktor Adder(int i = 0) { total = i; } // antarmuka ke dunia luar void addNum(int number) { total += number; } // antarmuka ke dunia luar int getTotal() { return total; }; private: // data tersembunyi dari dunia luar int total; }; int main() { Adder a; a.addNum(10); a.addNum(20); a.addNum(30); cout << "Total " << a.getTotal() <<endl; return 0; } 

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil berikut minus–

 Total 60 

Kelas di atas menambahkan angka bersama, dan mengembalikan jumlahnya. Anggota publik - addNum dan getTotal adalah antarmuka ke dunia luar dan pengguna perlu mengetahuinya untuk menggunakan kelas. Anggota privat total adalah sesuatu yang pengguna tidak perlu ketahui, tetapi diperlukan agar kelas beroperasi dengan benar.

Strategi Desain

Abstraksi memisahkan kode menjadi antarmuka dan implementasi. Jadi saat merancang komponen Anda, Anda harus menjaga antarmuka independen dari implementasi sehingga jika Anda mengubah implementasi dasar maka antarmuka akan tetap utuh.

Dalam hal ini, program apa pun yang menggunakan antarmuka ini tidak akan terpengaruh dan hanya perlu dikompilasi ulang dengan implementasi terbaru.


Bahasa C

  1. Memahami Tipe Data C++: Dasar, Modifikasi, dan Praktik Terbaik
  2. Menguasai Operator C++: Panduan Lengkap dengan Contoh Praktis
  3. Kelas & Objek C++: Panduan Praktis Pemrograman Berorientasi Objek
  4. Menguasai Template Kelas C++: Panduan Praktis
  5. Menguasai Tipe Data Char C++: Deklarasi, ASCII, dan Teknik Konversi
  6. Abstraksi Java Dijelaskan: Sederhanakan Kode & Tingkatkan Keterbacaan
  7. Struktur Data Java: Menjelajahi Kelas Inti & Framework Koleksi
  8. Memahami Kelas Penyimpanan C++: Cakupan, Umur, dan Penggunaan
  9. Struktur Data C++: Membangun Program Efisien dengan Array, Struct, dan Lainnya
  10. Memahami Polimorfisme C++: Panduan Praktis