1 / 18

Constructor dan Destructor Pertemuan 17

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.

elisa
Download Presentation

Constructor dan Destructor Pertemuan 17

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Constructor dan DestructorPertemuan 17 Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007

  2. 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

  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

  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

  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

  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

  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

  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

  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

  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

  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

  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

  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

  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

  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

  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

  17. Diskusi dan Tanya JawabLatihan soal 18

More Related