200 likes | 591 Views
Constructor dan Destructor Pertemuan 17. Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007. Learning Outcomes. Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat mendemonstrasikan penggunaan constructor dan destructor pada sebuah class.
E N D
Constructor dan DestructorPertemuan 17 Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007
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
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
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
Macam-macam Constructor: • Default constructor • Costructor yang digunakan untuk inisialisasi dan didefinisikan tanpa argumen (parameter) • Constructor dengan parameter • Constructor yang digunakan untuk inisialisasi object dan didefinisikan dengan argumen (parameter) • Copy constructor • Contructor khusus yang digunakan untuk meng-copy isi dari suatu object ke dalam obyek baru yang sedang diciptakan. 6
Contoh Default Constructor #include <constrea.h> class Point{ //deklarasi kelas Point int x, y; //data koordinat x dan y public: Point(); //deklarasi konstruktor default void move(int, int); //fungsi untuk menggerakan titik void print(); //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
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
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 } 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
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
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
Contoh Copy Constructor class String { int size; char *contents; public: String(const char *); //contructor dengan parameter String(cont String &); //copy contructor void Print(); }; //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; //copy constructor dipanggil String more(my_string); //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
Contoh Destructor class String { int size; char *contents; public: String(const char *); //contructor void Print(); ~String(); }; //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
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 } 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