Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Generic Data Type Pertemuan 25

Presentasi serupa


Presentasi berjudul: "Generic Data Type Pertemuan 25"— Transcript presentasi:

1

2 Generic Data Type Pertemuan 25
Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007 Generic Data Type Pertemuan 25

3 Pada akhir pertemuan ini, diharapkan:
Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menguraikan konsep generic data type pada class dan function. Buku Referensi: C++ - How to program, Deitel & Deitel, Prentice Hall, 2001. Websites: 3 Bina Nusantara

4 Outline Materi Pengertian Generic data type Manfaat template
Fungsi Template Class Template Contoh program template 4 Bina Nusantara

5 Template C++ mendukung penggunaan kembali kode program dengan berbagai cara, seperti inheritance, composition (nested object) merupakan metode penggunaan kembali kode object. Template merupakan fasilitas C++ yang mendukung penggunaan kembali kode program. Bina Nusantara

6 Template Template dapat diartikan sebagai blanko merupakan teknik membuat tipe data yang berupa parameter, artinya tipe data tersebut dapat berubah-ubah tergantung parameter yang diberikan pada saat inisialisasi. Contoh pada dunia nyata: cetakan patung logam -> gips, lilin Gunting -> benang, kertas Bina Nusantara

7 Template Fungsi Dengan overloading terhadap fungsi dapat diciptakan beberapa fungsi dengan nama sama yang menangani proses dengan tipe data yang berlainan. Contoh fungsi tukar bilangan bulat: void Tukar(int &x, int &y) { int temp = x; x = y; y = temp; } Bina Nusantara

8 Template Fungsi Untuk menukar bilangan real perlu Menuliskan:
void Tukar(double &x, double &y){ double temp = x; x = y; y = temp; } Demikian juga jika diinginkan untuk menukar karakter atau data lainnya, maka harus dituliskan kembali definisi dari fungsi tukar tsb. Bina Nusantara

9 Template Fungsi Kekurangan overloading adalah kode dari sejumlah fungsi dengan nama yang sama tersebut harus dituliskan. Dengan template, hal tersebut tidak perlu dilakukan, sehingga program menjadi lebih sederhana. Template fungsi sangat bermanfaat untuk fungsi-fungsi yang menangani tugas yang sama dan hanya berbeda pada tipe data. Bina Nusantara

10 Contoh template <class T> void Swap (T &x, T &y) { T temp = x;
x = y; y = temp; } Bina Nusantara

11 Pengenal T ini biasa disebut sebagai template argument.
Kata kunci template memberitahukan pada compiler bahwa pernyataan setelah kata ini merupakan template. Sesudah kata class dalam tanda < > terdapat pengenal T, yang digunakan sebagai penganti tipe data. Pengenal T ini biasa disebut sebagai template argument. Pengenal T tidak harus berupa karakter tunggal dan biasanya dituliskan dengan huruf besar. Bina Nusantara

12 Contoh Program Tempalte Function
// Contoh program c++ dengan fungsi template #include <iostream.h> template <class T> void Swap (T &x, T &y) { T temp = x; x = y; y = temp; } void main() { double x = 4.50, y = 7.54; cout << "X = " << x << " Y = " << y << endl; Swap( x, y); int p = 25, q = 10; cout << "P = " << p << " Q = " << q << endl; Swap( p, q); Bina Nusantara

13 Template fungsi dengan argument lebih dari satu
Template argumen bisa lebih dari satu jika menggunakan tipe data lebih dari satu Template yang menggunakan lebih dari satu tipe data dapat didefinisikan dengan menuliskannya pada tanda < >. Misalkan: template <class A, class B> Bina Nusantara

14 int GTSum(int *Data, long x, int size) { long sum = 0;
// Contoh fungsi GTSum int GTSum(int *Data, long x, int size) { long sum = 0; for (int i=0; i < size; i++) sum += Data[i]; return ((sum > x) ? 1 : 0); } int GTSum(float *Data, double x, int size) { double sum = 0; Bina Nusantara

15 // Dapat ditulis dengan template: template <class A, class B>
int GTSum(A *Data, B x, int size) { B sum = 0; for (int i=0; i < size; i++) sum += Data[i]; return ((sum > x) ? 1 : 0); } Bina Nusantara

16 // contoh program dengan template lebih dari satu tipe
#include <iostream.h> template <class A, class B> int GTSum(A *Data, B x, int size) { B sum = 0; for (int i=0; i < size; i++) sum += Data[i]; return ((sum > x) ? 1 : 0); } void main() { int Data1[5] = {2, 3, 4, 5, 6}; float Data2[4] = {1.5, 2.6, 3.2, 5.1}; if ( GTSum(Data1, 20, 5) ) cout << “Total nilai Data1 lebih dari 20” << endl; else cout << “Total nilai Data1 tidak lebih dari 20 \n”; if ( GTSum(Data2, 10.5, 4) ) cout << “Total nilai Data2 lebih dari 10.5 \n”; cout << “Total nilai Data2 tidak lebih dari 10.5”; Bina Nusantara

17 Template Class Template juga dapat diterapkan pada class
dengan format: template <class T> class nama_class { // deklarasi class }; Bina Nusantara

18 // program template pada class stack #include <iostream.h>
#include <stdlib.h> #include <conio.h> // template definition template <class T> class Stack { private: T *Data; int Size; int CountData; public: Stack(int Size = 25); ~Stack(); void Push (T nilai); T Pop(); int stackEmpty(); int stackFull(); }; Bina Nusantara

19 template <class T>
Stack<T> :: Stack( int Size ) { //constructor Stack::Size = Size; CountData = 0; Data = new T [Size]; } Stack<T> :: ~Stack() { // destructor delete [ ] Data; int Stack<T> :: stackEmpty() { return ( (CountData == 0)? 1: 0 ); int Stack<T> :: stackFull () { return ( (CountData == Size)? 1: 0 ); Bina Nusantara

20 template <class T> void Stack<T> :: Push (T nilai) {
if ( !stackFull() ) Data[CountData++] = nilai; else cerr << “Stack penuh” << endl; } T Stack<T> :: Pop() { if ( stackEmpty() ) { cerr << “Stack kosong” << endl; exit(1); return ( Data[--CountData] ); Bina Nusantara

21 Stack<float> s1; s1.Push(10.85); s1.Push(25.2);
void main() { clrscr(); Stack<float> s1; s1.Push(10.85); s1.Push(25.2); cout << "Isi stack bilangan real: "<< endl; cout << "s1 ->1 = " << s1.Pop() << endl; cout << "s1 ->2 = " << s1.Pop() << endl; Stack<int> s2; s2.Push(100); s2.Push(10); s2.Push(5); cout << "Isi stack bilangan bulat: "<< endl; cout << "s2 ->1 = " << s2.Pop() << endl; cout << "s2 ->2 = " << s2.Pop() << endl; cout << "s2 ->3 = " << s2.Pop() << endl; } Bina Nusantara

22 Diskusi dan Tanya Jawab Latihan soal
22 Bina Nusantara


Download ppt "Generic Data Type Pertemuan 25"

Presentasi serupa


Iklan oleh Google