Matakuliah Tahun : T0456 / Algoritma dan Metode Object Oriented Programming : 2007 Constructor dan Destructor Pertemuan 17 Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat mendemonstrasikan penggunaan constructor dan destructor pada sebuah class Buku Referensi: C++ - How to program, Deitel & Deitel, Prentice Hall, 2001. Websites: http://www.deitel.com 3 Bina Nusantara Outline Materi • • • • • • • • Penggunaan Constructor Syntax constructor dan contoh program Macam - macam Constructor Constructor dengan parameter default Penggunaan Destructor Syntax destructor dan contoh program Pemanggilan constructor & destructor Latihan dan diskusi 4 Bina Nusantara Constructor • Adalah method yang pertama kali dikerjakan ketika suatu class diciptakan • Bertugas melakukan proses inisialisasi • Nama constructor = nama class • Constructor harus dideklarasi sebagai public • Dapat memiliki parameter, tetapi tidak mengembalikan nilai (biarpun void) • Tiap class harus mempunyai minimal 1 (satu) constructor, bila tidak dideklarasikan oleh user,maka kompiler akan secara otomatis membuat default constructor. 5 Bina Nusantara Macam-macam Constructor: 1. Default constructor • Costructor yang digunakan untuk inisialisasi dan didefinisikan tanpa argumen (parameter) 2. Constructor dengan parameter • Constructor yang digunakan untuk inisialisasi object dan didefinisikan dengan argumen (parameter) 3. Copy constructor • Contructor khusus yang digunakan untuk meng-copy isi dari suatu object ke dalam obyek baru yang sedang diciptakan. 6 Bina Nusantara Contoh Default Constructor #include <constrea.h> class Point{ int x, y; public: Point(); void move(int, int); void print(); }; //deklarasi kelas Point //data koordinat x dan y //deklarasi konstruktor default //fungsi untuk menggerakan titik //fungsi untuk mencetak di layar Point::point(){ // definisi default constructor cout << “Constructor is called…” << endl; x = y = 0; //inisialisasi nilai x dan y } void main(){ Point P1, P2; } //constructor dipanggil dua kali 7 Bina Nusantara Constructor dengan parameter • Seperti anggota fungsi yang lain, kontruktor juga dapat dideklarasikan dengan argumen atau parameter. • Contoh fungsi dengan argumen: Argumen atau parameter int luasPersegi(int P, int L){ int hasil; hasil = P*L; return(hasil); } 8 Bina Nusantara Contoh Constructor dengan parameter class Point{ //deklarasi kelas Point int x, y; //data koordinat x dan y public: Point(int, int); //constructor declaration void move(int, int); //fungsi untuk menggerakan titik void print(); //fungsi untuk mencetak di layar }; Point::point(int x1, int y1){ cout << “Constructor is called…” << endl; if (x1 < 0) x = 0; else x = x1; if (y1 < 0) y = 0; else y = y1; } void main(){ Point P1(20,50), P2(-10,8); //constructor dipanggil dua kali Point p3; //ERROR } Bina Nusantara 9 Constructor dengan parameter Default • Parameter dari kontruktor dapat memiliki nilai default • Contoh: Nilai default dari y adalah 0 Point::point(int x1=0, int y1=0){ cout <<“Constructor is called…” <<“\n”; if (x1 < 0)x = 0; else x = x1; if (y1 < 0) y = 0; else y = y1; } 10 Bina Nusantara Constructor dengan parameter default … • Dengan konstruktor ini obyek dapat dicipta dengan parameter ataupun tidak dengan parameter: • Contoh dengan parameter: Point P1(15, 75); //x=15, y=75 Point P2(100); //x=100, y=0 • Contoh tanpa parameter: Point P3; //x=0, y=0 11 Bina Nusantara Copy Constructor • Merupakan kontruktor khusus yang digunakan untuk mengcopi isi dari suatu object ke dalam obyek baru yang sedang diciptakan. • Tipe data dari parameter input adalah referance (alamat) dari obyek dengan tipe yang sama. 12 Bina Nusantara Contoh Copy Constructor class String { int size; char *contents; public: String(const char *); String(cont String &); void Print(); }; //contructor dengan parameter //copy contructor //definisi fungsi copy contructor String::String(const String &object_in) { cout << ”copy constructor has been invoked” << endl; size = object_in.size; contents = new char[size+1]; strcpy(contents, object_in.contents); } void main() { String my_string(“string 1”); My_string.Print(); String other = my_string; String more(my_string); } Bina Nusantara //copy constructor dipanggil //copy constructor dipanggil 13 Dectructor • Adalah method yang terakhir kali dikerjakan sebelum siklus hidup object berakhir • Bertugas melakukan proses deinisialisasi, clean up, dealokasi memory, dll • Seperti kontruktor nama destructor sama dengan nama class dengan diberi tanda ~ di depan nama destructor • Nama constructor = ~nama class • Didefinisikan tanpa return type dan tanpa argument (parameter). • Destructor dideklarasi sebagai public 14 Bina Nusantara Contoh Destructor class String { int size; char *contents; public: String(const char *); void Print(); ~String(); }; //contructor //definisi contructor String::String(const char *in_data) { cout <<”contructor has been call” << endl; size = strlen(in_data); contents = new char[size+1]; strcpy(contents, in_data); } 15 Bina Nusantara Contoh Destructor Lanjutan … void String::Print(){ cout << contents << “ “ << size << endl; } //definisi destructor String::~String(){ Cout << “Destructor has been invoked” << endl; Delete [] contents; } void main() { String string1(“String 1”); String string2(“String 2”); string1.Print(); string2.Print(); Return 0; //destructor dipanggil 2 kali } Bina Nusantara 16 Pemanggilan constructor & destructor • Constructor & destructor dipanggil secara otomatis. • Constructor pada object global dipanggil sebelum fungsi main dieksekusi dan destructor dikerjakan setelah fungsi main selesai dieksekusi. • Constructor pada object lokal dipanggil otomatis saat object dedefinisikan dan destructornya dieksekusi setelah proses object selesai. • Pada object static lokal, constructor dipanggil sekali pada saat object didefinisikan dan destructornya dipanggil setelah fungsi main selesai. 17 Bina Nusantara Diskusi dan Tanya Jawab Latihan soal 18 Bina Nusantara
© Copyright 2024 Paperzz