Menu
CoddyTech

Konsep Opaque Pointer

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 17 dari 61.

Sejauh ini, saat kita mendefinisikan struct di file header, siapa pun yang menyertakan header tersebut dapat melihat dan mengakses semua anggotanya secara langsung. Ini melanggar enkapsulasi: prinsip menyembunyikan detail internal dari kode di luar.

C menyediakan teknik yang ampuh bernama opaque pointers untuk mengatasi masalah ini. Idenya sederhana: nyatakan bahwa sebuah struct ada di header, tetapi jangan ungkapkan isinya. Ini dilakukan dengan menggunakan tipe tidak lengkap:

// wallet.h
typedef struct Wallet Wallet;  // Hanya deklarasi, tanpa isi!

Wallet *create_wallet(int initial_balance);
void free_wallet(Wallet *w);

Perhatikan bahwa tidak ada kurung kurawal. Kita tidak pernah mendefinisikan isi Wallet. Compiler mengetahui bahwa tipe ini ada, tetapi tidak mengetahui ukurannya atau anggotanya. Artinya, kode yang menyertakan header ini hanya dapat menggunakan pointer ke Wallet, tidak pernah struct itu sendiri secara langsung.

Mengapa ini penting? Karena definisi struct yang sebenarnya tersembunyi di file .c, kode apa pun yang menggunakan header-mu tidak dapat menulis w->balance atau sizeof(Wallet). Kode tersebut harus menggunakan fungsi yang kamu sediakan. Kamu mengendalikan semua akses ke data, dan kamu dapat mengubah struktur internalnya nanti tanpa merusak kode apa pun yang bergantung pada header-mu.

Di pelajaran berikutnya, kamu akan berlatih mendefinisikan isi struct yang sebenarnya di dalam file sumber, sehingga pola pointer opaque menjadi lengkap.

Coba sendiri

Pelajaran ini tidak memiliki tantangan kode.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online