T 0456 Algoritma dan Metode Object Oriented Programming
T 0456 – Algoritma dan Metode Object Oriented Programming Week 7 – Constructor dan Destructor
Learning Outcome 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
Outline Materi • • Penggunaan Constructor Syntax constructor dan contoh program Macam - macam Constructor dengan parameter default Penggunaan Destructor Syntax destructor dan contoh program Pemanggilan constructor & destructor Latihan diskusi
CONSTRUCTOR
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. Bina Nusantara 5
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. Bina Nusantara 6
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 P 1, P 2; } Bina Nusantara //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 luas. Persegi(int P, int L){ int hasil; hasil = P*L; return(hasil); } Bina Nusantara 8
Contoh Constructor dengan parameter class Point{ //deklarasi kelas Point 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 x 1, int y 1){ cout << “Constructor is called…” << endl; if (x 1 < 0) x = 0; else x = x 1; if (y 1 < 0) y = 0; else y = y 1; } void main(){ Point P 1(20, 50), P 2(-10, 8); //constructor dipanggil dua kali Point p 3; //ERROR } 9 Bina Nusantara
Constructor dengan parameter Default • Parameter dari kontruktor dapat memiliki nilai default • Contoh: Nilai default dari y adalah 0 Point: : point(int x 1=0, int y 1=0){ cout <<“Constructor is called…” <<“n”; if (x 1 < 0)x = 0; else x = x 1; if (y 1 < 0) y = 0; else y = y 1; } Bina Nusantara 10
Constructor dengan parameter default … • Dengan konstruktor ini obyek dapat dicipta dengan parameter ataupun tidak dengan parameter: • Contoh dengan parameter: Point P 1(15, 75); //x=15, y=75 Point P 2(100); //x=100, y=0 • Contoh tanpa parameter: Point P 3; Bina Nusantara //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. Bina Nusantara 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 } Bina Nusantara 13
DESTRUCTOR
Desctructor • 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 Bina Nusantara 15
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); } Bina Nusantara 16
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 string 1(“String 1”); String string 2(“String 2”); string 1. Print(); string 2. Print(); Return 0; //destructor dipanggil 2 kali } Bina Nusantara 17
Pemanggilan Constructor dan 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 destructornya dieksekusi setelah proses object selesai. • Pada object static lokal, constructor dipanggil sekali pada saat object didefinisikan destructornya dipanggil setelah fungsi main selesai. Bina Nusantara 18
Thank You
- Slides: 19