berbagi seputar ilmu pengetahuan dan teknologi

Membuat Templates and Template Classes dengan C++

Apa yang lebih baik daripada memiliki beberapa kelas yang melakukan hal yang sama untuk jenis data yang berbeda? Satu kelas yang memungkinkan Anda memilih tipe data itu bertindak atas.

Template adalah cara untuk membuat kelas Anda lebih abstrak dengan membiarkan Anda menentukan perilaku kelas tanpa benar-benar mengetahui apa datatype akan ditangani oleh operasi kelas. Pada dasarnya, ini adalah apa yang dikenal sebagai pemrograman generik; istilah ini adalah cara yang berguna untuk berpikir tentang template karena membantu mengingatkan programmer yang kelas templated tidak tergantung pada datatype (atau jenis) berhubungan dengan. Untuk gelar besar, kelas templated lebih terfokus pada pemikiran algoritmik daripada nuansa spesifik datatype tunggal. Template dapat digunakan dalam hubungannya dengan tipe data abstrak untuk memungkinkan mereka untuk menangani semua jenis data. Misalnya, Anda bisa membuat templated tumpukan kelas yang dapat menangani setumpuk datatype apapun, daripada harus membuat kelas stack untuk setiap datatype yang berbeda yang Anda ingin stack berfungsi. Kemampuan untuk memiliki kelas tunggal yang dapat menangani beberapa tipe data yang berbeda berarti kode lebih mudah untuk mempertahankan, dan itu membuat kelas lebih dapat digunakan kembali. Sintaks dasar untuk menyatakan kelas templated adalah sebagai berikut:
template  class a_class {...};
Kata kunci 'kelas' di atas hanya berarti bahwa identifier a_type akan berdiri untuk datatype a. NB: a_type tidak kata kunci; itu adalah sebuah identifier yang selama pelaksanaan program ini akan mewakili datatype tunggal. Misalnya, Anda bisa, ketika mendefinisikan variabel di kelas, gunakan baris berikut:
a_type a_var;
dan ketika programmer mendefinisikan tipe data yang 'a_type' adalah menjadi ketika program instantiates contoh khusus dari kelas, perang akan menjadi tipe itu. Ketika mendefinisikan fungsi sebagai anggota dari kelas templated, perlu mendefinisikannya sebagai fungsi templated:
template void a_class::a_function(){...}
Ketika mendeklarasikan sebuah instance dari kelas templated, sintaksnya adalah sebagai berikut:
a_class an_example_class;
Sebuah objek yang dipakai dari kelas templated disebut spesialisasi; spesialisasi jangka berguna untuk diingat karena mengingatkan kita bahwa kelas yang asli adalah kelas generik, sedangkan Instansiasi spesifik dari sebuah kelas khusus untuk datatype tunggal (meskipun ada kemungkinan untuk template beberapa jenis). Biasanya ketika menulis kode itu adalah yang paling mudah untuk mendahului dari beton untuk abstrak; Oleh karena itu, lebih mudah untuk menulis sebuah kelas untuk datatype tertentu dan kemudian melanjutkan ke templated - generik - kelas. Untuk singkatnya yang merupakan jiwa dari kecerdasan, contoh ini akan singkat dan karena aplikasi praktis sedikit. Kami akan menentukan kelas untuk bertindak hanya pada bilangan bulat.
class calc
{
  public:
    int multiply(int x, int y);
    int add(int x, int y);
 };
int calc::multiply(int x, int y)
{
  return x*y;
}
int calc::add(int x, int y)
{
  return x+y;
}
Kami sekarang memiliki kelas kecil tidak berbahaya yang berfungsi dengan baik untuk bilangan bulat; tapi bagaimana jika kami memutuskan kami ingin kelas generik yang akan bekerja sama dengan baik untuk angka floating point? Kami akan menggunakan template.
template  class calc
{
  public:
    A_Type multiply(A_Type x, A_Type y);
    A_Type add(A_Type x, A_Type y);
};
template  A_Type calc::multiply(A_Type x,A_Type y)
{
  return x*y;
}
template  A_Type calc::add(A_Type x, A_Type y)
{
  return x+y;
}
Untuk memahami kelas templated, hanya berpikir tentang mengganti pengenal A_Type mana-mana muncul, kecuali sebagai bagian dari definisi template atau kelas, dengan int kata kunci. Ini akan menjadi sama dengan kelas di atas; sekarang ketika Anda instantiate objek dari kelas calc Anda dapat memilih datatype kelas akan menangani.
calc  a_calc_class;
Template berguna untuk membuat program Anda lebih generik dan memungkinkan kode untuk digunakan kembali nanti.
Tag : C++
0 Komentar untuk "Membuat Templates and Template Classes dengan C++"

Back To Top