Kamis, 03 Juni 2010

pemrograman C++

Salah satu fitur C++ yang tidak di miliki oleh kebanyakan bahasa pemrograman lainnya adalah TEMPLATE.
Fitur ini dibuat beberapa tahun yang lalu dan telah didukung oleh semua kompiler C++ modern(standar).DEngan menggunakan templ-
ate,kita dapat membuat fungsi-fungdi atau kelas-kelas generik.Dalam C++,template dibuat dengan menggunakan kata kunci TEMPLATE
template merupakan ide dasar dari pembentukan STL (standard template library) yang digunakan untuk memudahkan dan mempercepat
pembuatan program dengan menggunakan C++.Template di bedakan menjadi dua yaitu Template fungsi dan Template Kelas.
Dengan adanya Template,kita dapat membuat fungsi-fungsi generi.Adapun yang dinamakan fungsi generik di sini adalah fungsi-
yang mempunyai parameter bertipe generik.Artinya,pada saat pemanggilan fungsi tersebut,tipe dari parameter aktual yang dimas-
ukkan dapat bersifat dinamis (berubah-ubah).Fungsi generik juga dapat diartikan sebagai fungsi yang mampu melakukan Overload-
terhadap dirinya sendiri.Dengan demikian,jika kita membuat satu fungsi generik,maka fungsi tersebut dapat di panggil dengan-
tipe parameter yang bebeda.
Cara yang digunakan untuk mendefinisikan suatu Template Fungsi adalah sama seperti pada saat kita membuat fungsi biasa,perbe-
daannya hanya terletak pada jenis parameternya.
Bentuk umum dari pembuatan fungsi generik (Template fungsi) adalah seperti berikut:

template
tipe_data nama_fungsi (parameter1, parameter2, ...) {
statemen_yang_akan_dilakukan;
...
}

kata kunci template diatas berfungsi untuk menunjukkan bahwa fungsi tersebut merupakan fungsi generik. Sedangkan T yang ter-
tulis dalam disebut dengan tipe generik,yang kemudian akan digunakan dalam pendeklarasian parameter dari fungsi ter-
sebut.
Sebuah template fungsi dapat terdiri dari dua atau lebih tipe data generik.Adapun cara untuk mendefinisikannya adalah sama-
seperti kita menuliskan parameter yang lebih dari satu,yaitu dengan memisahkannya dengan tanda koma.
Sama dengan fungsi-fungsi biasa, C++ juga mengizinkan kita untuk melakukan Overload terhadap template fungsi.
Selain proses Overload antar Template fungsi,Kita juga dapat melakukan overload template fungsi dengan fungsi biasa.Hal ini-
dinamakan dengan Explicit Specialization.
Selain meyediakan template untuk fungsi ,C++ juga mengizinkan kita untuk membuat sebuah template kelas.Sama seperti pada fun-
gsi generik,Kelas generik juga dapat digunakan untuk tipe-tipe data yang berbeda.Pendeklarasian datanya dilakukan dengan tipe-
data tertentu sehingga kelas ini hanya dapat digunakan untuk tipe data tersebut saja.Dengan adanya tipe data generik yang-
dideklarasikan dalam sebuah template kelas,maka satu kelas dapat digunakan untuk melakukan manipulasi nilai yang beraneka -
ragam tipe datanya.
Pada prinsipnya pendefinisian sebuah template kelas adalah sama dengan pendefinisian kelas biasa,hanya saja variabel yang-
dideklarasikan di dalamnya bersifat generik.Adapun bentuk umum dari pendefinisian sebuah template kelas (kelas generik)
adalah seperti di bawah ini :

template class nama_kelas {
accses_specifier:
data_data;
fungsi_fungsi;
...
};

Sedangkan proses instansiasi dari template kelas tersebut mempunyai bentuk umum seperti berikut :

nama_kelas nama_instance;

Kelas STACK merupakan sebuah tumpukan data yang dapat kita tambah/tempatkan (push) ataupun kita ambil kembali (pop) dimana-
data yang ditempatkan pertama kali akan diambil terakhir kali.
Data yang ditempatkan (push) paling awal akan diambil (pop) paling akhir.Hal ini sering dikenal dengan sebutan LIFO(Last In-
First Out).
Selain menggunakan kata kunci class untuk mendefinisikan sebuah template (fungsi maupun kelas), kita juga dapat menggunakan-
kata kunci TYPENAME yang telah disediakan oleh C++.Adapun bentuk umum dari pendefinisian template dengan menggunakan kata-
kunci typename adalah sebagai berikut :

untuk pendefinisian template fungsi.
template
tipe_data nama_fungsi(parameter1, parameter2, ...) {
statemen_yang akan dilakukan;
... }

sedangkan untuk pendefinisian template kelas.
template class nama_kelas {
accsess_specifier:
// data_members, dan member_functions
};

0 komentar:

Posting Komentar