download

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