Enkapsulasi (Multiple Tipe)
Tipe data abstrak adalah suatu bentuk enkapsulasi yang minimal, yaitu enkapsulasi antara data dan method (data members dan member functions). Diperlukan suatu enkapsulasi multiple tipe (multiple-type encapsulation) untuk memecahkan problem-problem yang ada dalam suatu program yang sangat besar.
Ketika ukuran suatu suatu program menjadi besar hingga ribuan baris kode, maka program ukuran besar tersebut akan menimbulkan dua permasalahan yang perlu dicari solusinya:
- Program besar yang diorganisasi ke dalam sejumlah subprogram atau tipe data abstrak (abstract data types), belum memadai dalam konteks pengelolaan program (managable code). Diperlukan suatu cara pengorganisasian program tertentu, bukan sekedar memecah program menjadi sejumlah subprograms.
- Program besar akan memerlukan waktu yang tidak singkat jika memerlukan kompilasi ulang (recompilation), misalnya setelah mengalami modifikasi. Untuk program-program yang kecil, kompilasi ulang (recompile) seluruh program tidak terlalu kelihatan memakan waktu (boros). Tetapi untuk program-program yang besar, kompilasi ulang akan sangat boros (memakan waktu). Jadi diperlukan suatu cara agar dapat melakukan kompilasi parsial hanya unit yang terdampak oleh modifikasi saja yang memerlukan rekompilasi.
Solusi yang mudah diambil terhadap kedua problem tersebut adalah melakukan pengelompokan (grouping) programs yang kode dan data-nya saling terkait satu sama lain ke dalam suatu unit yang dapat di rekompilasi secara terpisah menjadi satu kompilasi tanpa rekompilasi dari program-program yang lain. Pengelompokan tersebut dinamakan enkapsulasi multiple-tipe (multiple-type encapsulation).
Bahasa Java menerapkan naming encapsulation menggunakan package. Ke dalam suatu package dapat ditempatkan definisi-definisi dari sejumlah class, setiap class di dalam package yang sama adalah partial friends yang artinya adalah bahwa setiap entitas tanpa access specifier di dalam suatu class adalah visible pada keseluruhan package. Pengguna (clients) package dapat menggunakan fully qualified name atau menggunakan import declaration.
Sebagai contoh, suatu abstract data type, mystack, dapat ditempatkan di dalam suatu package, stkpkg, dengan menambahkan deklarasi package pada baris pertama di dalam source file, seperti berikut:
package stkpkg;
Selanjutnya, suatu entitas (dengan nama topsub) yang ada di dalam class mystack tersebut dapat diakses dengan menggunakan fully qualified name, yaitu:
stkpkg.myStack.topSub
atau menggunakan import declaration, seperti:
import stkpkg.myStack;
sehingga dengan demikian entitas di dalam mystack dapat diakses dengan menggunakan nama saja.
Comments
Post a Comment