Jawaban:
Secara umum, kelas pembungkus adalah setiap kelas yang "membungkus" atau "merangkum" fungsi dari kelas atau komponen lain. Ini berguna dengan memberikan tingkat abstraksi dari implementasi kelas atau komponen yang mendasarinya; misalnya, kelas wrapper yang membungkus komponen COM dapat mengelola proses memanggil komponen COM tanpa mengganggu kode panggilan dengannya. Mereka juga dapat menyederhanakan penggunaan objek yang mendasarinya dengan mengurangi jumlah titik antarmuka yang terlibat; sering, ini membuat penggunaan komponen yang mendasarinya lebih aman.
Seperti apa kedengarannya: kelas yang "membungkus" fungsionalitas kelas lain atau API dalam API yang lebih sederhana atau hanya berbeda.
Kelas wrapper menyediakan cara untuk menggunakan tipe primitif sebagai objek. Untuk setiap primitif, kami memiliki kelas pembungkus seperti,
int Integer
byte Byte
Integer dan Byte adalah kelas pembungkus dari int dan byte primitif. Ada waktu / batasan ketika Anda perlu menggunakan primitif sebagai objek sehingga kelas pembungkus menyediakan mekanisme yang disebut tinju / unboxing.
Konsep dapat dipahami dengan baik dengan contoh sebagai berikut
double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
jadi begini caranya, kita bisa menggunakan tipe kelas wrapper untuk mengubahnya menjadi tipe primitif lainnya juga. Jenis konversi ini digunakan ketika Anda perlu mengkonversi tipe primitif ke objek dan menggunakannya untuk mendapatkan primitif lainnya juga. Meskipun untuk pendekatan ini, Anda perlu menulis kode besar. Namun, hal yang sama dapat dicapai dengan teknik casting sederhana karena potongan kode dapat dicapai seperti di bawah ini
double d = 135.0;
int integerValue = (int) d ;
Meskipun nilai ganda secara eksplisit dikonversi ke nilai integer juga disebut sebagai downcasting.
Kelas wrapper tidak perlu membungkus kelas lain. Mungkin fungsionalitas pembungkus kelas API misalnya file dll.
Sebagai contoh mungkin sangat berguna untuk membuat kelas wrapper dll, yang menangani semua inisialisasi dan pembersihan dll dan membuat metode kelas yang membungkus pointer fungsi yang dibuat dari mis GetProcAddress()
.
Bersulang !
Kelas pembungkus adalah kelas yang "membungkus" sesuatu yang lain, seperti namanya.
Definisi yang lebih formal adalah kelas yang mengimplementasikan Pola Adaptor . Ini memungkinkan Anda untuk memodifikasi satu set API menjadi bentuk yang lebih dapat digunakan dan dapat dibaca. Misalnya, dalam C #, jika Anda ingin menggunakan API Windows asli, ada baiknya membungkusnya dengan kelas yang sesuai dengan pedoman desain .NET.
Ada beberapa pola desain yang bisa disebut kelas wrapper.
Lihat jawaban saya untuk " Bagaimana Proxy, Dekorator, Adaptor, dan Pola Jembatan berbeda? "
Mungkin juga berharga untuk dicatat bahwa di beberapa lingkungan, sebagian besar dari apa yang kelas bungkus mungkin lakukan digantikan oleh aspek.
EDIT:
Secara umum pembungkus akan memperluas apa yang dilakukan wrappee, tanpa khawatir tentang implementasi wrappee, jika tidak tidak ada gunanya membungkus versus memperluas kelas yang dibungkus. Contoh khas adalah menambahkan informasi waktu atau fungsi logging di sekitar beberapa antarmuka layanan lain, sebagai lawan menambahkannya ke setiap implementasi antarmuka itu.
Ini kemudian menjadi contoh khas untuk pemrograman Aspect. Daripada melalui fungsi antarmuka dengan fungsi dan menambahkan logging boilerplate, dalam pemrograman aspek Anda mendefinisikan titik potong, yang merupakan semacam ekspresi reguler untuk metode, dan kemudian menyatakan metode yang ingin Anda jalankan sebelumnya, setelah atau sekitar semua metode yang cocok potongannya. Mungkin adil untuk mengatakan bahwa aspek pemrograman adalah semacam penggunaan pola Decorator, yang juga dapat digunakan oleh kelas wrapper, tetapi kedua teknologi memiliki kegunaan lain.
Kelas wrapper adalah kelas yang membungkus kelas lain dan memberikan abstraksi antara klien dan kelas asli yang dibungkus.
kelas wrapper biasanya kelas yang memiliki objek sebagai properti pribadi. pembungkus mengimplementasikan objek pribadi itu API dan sehingga dapat dilewatkan sebagai argumen di mana objek pribadi akan.
katakanlah Anda memiliki koleksi, dan Anda ingin menggunakan semacam terjemahan ketika objek ditambahkan ke dalamnya - Anda menulis kelas pembungkus yang memiliki semua metode pengumpulan. ketika add () dipanggil, wrapper menerjemahkan argumen alih-alih hanya meneruskannya ke koleksi pribadi.
pembungkus dapat digunakan di mana saja koleksi dapat digunakan, dan objek pribadi masih dapat memiliki objek lain yang merujuk padanya dan membacanya.
Kelas wrapper adalah kelas yang digunakan untuk membungkus kelas lain untuk menambahkan lapisan tipuan dan abstraksi antara klien dan kelas asli yang sedang dibungkus.
Kelas wrapper adalah pembungkus di sekitar tipe data primitif. Ini mewakili tipe data primitif dalam instance kelas yang sesuai misalnya, tipe data boolean dapat direpresentasikan sebagai instance kelas Boolean. Semua kelas pembungkus primitif di Jawa tidak dapat diubah yaitu sekali diberi nilai ke instance kelas pembungkus tidak dapat diubah lebih lanjut.
Pemrograman Java menyediakan kelas wrapper untuk setiap tipe data primitif, untuk mengkonversi tipe data primitif ke objek yang sesuai dari kelas wrapper.
Kelas Wrapper muncul untuk memenuhi kebutuhan dasar programmer - yaitu menggunakan nilai-nilai primitif di mana pun hanya Objek yang diizinkan. Seperti namanya, kelas wrapper membungkus nilai primitif dan menyimpan nilai dalam Object. Jadi, semua tempat di mana primitif tidak diizinkan - seperti generik, kunci-hashmap, Arraylists dll - programmer sekarang memiliki opsi untuk memberikan nilai-nilai primitif ini sebagai jenis pembungkus yang sesuai.
Selain itu jenis pembungkus ini memiliki sejumlah metode utilitas untuk mengkonversi dari jenis primitif ke jenis pembungkus yang sesuai dan kembali, dan juga dari Strings ke jenis pembungkus dan kembali.
Saya telah menulis artikel terperinci tentang kelas wrapper di blog saya yang menjelaskan konsep tipe wrapper secara mendalam - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Pengungkapan - Blog ini milik saya)
Saat ini saya menggunakan kelas pembungkus untuk proyek saya dan manfaat utama yang saya dapatkan (hanya satu manfaat untuk memperluas penjelasan topik):
Penanganan pengecualian: Kelas utama saya, yang dibungkus kelas lain, memiliki metode yang melempar pengecualian jika ada, jadi saya membuat kelas pembungkus yang menangani pengecualian dan segera mencatatnya. Jadi, dalam ruang lingkup utama saya, tidak ada penanganan pengecualian. Saya hanya memanggil metode dan melakukan sesuatu.
Penggunaan Mudah: Saya dapat dengan mudah memulai objek. Biasanya fase inisiasi dibangun dari banyak langkah.
Keterbacaan Kode: Ketika programmer lain membuka kode saya, kode itu akan tampak sangat jelas dan mudah dimanipulasi.
Menyembunyikan Detail: Jika Anda membuat kelas yang akan digunakan oleh programmer lain, maka Anda dapat membungkus detail seperti "penanganan kesalahan, penanganan pengecualian, mencatat pesan dan lain-lain ..." sehingga programmer tidak harus menangani kekacauan, hanya cukup menggunakan metode.
Kelas wrapper adalah kelas yang melayani tujuan tunggal memegang sesuatu dan menambahkan beberapa fungsionalitas ke dalamnya. Di Jawa karena primitif (seperti int, mengapung, karakter ...) bukan objek jadi jika Anda ingin memperlakukan mereka seperti satu maka Anda harus menggunakan kelas pembungkus. Misalkan Anda ingin membuat Vektor int, masalahnya adalah Vektor hanya menampung Objek bukan primitif. Jadi apa yang akan Anda lakukan adalah meletakkan semua int di bungkus Integer dan menggunakannya. Contoh:
int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();
wrapper adalah kelas yang digunakan untuk berkomunikasi antara dua aplikasi berbeda antara platform yang berbeda