chapter 2 classes & object

25
CHAPTER 2 CLASSES & OBJECT PART 2 CONSTRUCTORS & DESTRUCTORS MALAY VERSION

Upload: thiery

Post on 29-Jan-2016

78 views

Category:

Documents


0 download

DESCRIPTION

CHAPTER 2 CLASSES & OBJECT. PART 2 CONSTRUCTORS & DESTRUCTORS MALAY VERSION. KONSTRUKTOR. Konstruktor merupakan ahli yg memberi nilai awal kpd ahli data semasa sesuatu objek diistiharkan . Ciri-ciri bagi konstruktor adalah seperti berikut : - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CHAPTER 2  CLASSES & OBJECT

CHAPTER 2 CLASSES & OBJECT

PART 2CONSTRUCTORS & DESTRUCTORS

MALAY VERSION

Page 2: CHAPTER 2  CLASSES & OBJECT

KONSTRUKTOR

• Konstruktor merupakan ahli yg memberi nilai awal kpd ahli data semasa sesuatu objek diistiharkan.

• Ciri-ciri bagi konstruktor adalah seperti berikut: konstruktor merupakan ahli fungsi yang namanya sama dengan nama kelas Konstruktor perlu diistiharkan sebagai ahli public Konstruktor tidak mempunyai jenis pulangan fungsi,

(walaupun void), dan oleh itu tidak boleh memulangkan sebarang nilai

Konstruktor dilaksanakan secara automatik apabila sesuatu objek diistiharkan

Page 3: CHAPTER 2  CLASSES & OBJECT

Konstruktor blh mempunyai parameter atau tiada parameter

Pengaturcara boleh menghasilkan beberapa konstruktor kelas yang sama, yg mana setiap konstruktor diberi melalui senarai dan jenis parameter. Ini dikenali sebagai limpahan konstruktor

Konstruktor tidak boleh diwarisi dan juga tidak boleh berjenis virtual.

KONSTRUKTOR samb…

Page 4: CHAPTER 2  CLASSES & OBJECT

KONSTRUKTOR TANPA PARAMETER

• Konstruktor tanpa parameter juga dikenali sebagai konstruktor lalai

• Sekiranya sesuatu atur cara tidak mempunyai konstruktor yang ditakrif pengaturcara, pengkompil akan menghasilkan konstruktor lalainya sendiri dan memberi nilai awal kpd ahli data dengan nilainya yang tidak dpt dijangkakan.

• Walaubagaimanapun,pengaturcara seelok-eloknya menyediakan konstruktor lalainya sendiri seperti dalam aturcara berikut :

Page 5: CHAPTER 2  CLASSES & OBJECT

KONSTRUKTOR TANPA PARAMETER

class tarikh{ int hari, bulan, tahun;

public://pengisytiharan konstruktor tanpa parameter// nama konstruktor mesti sama dengan nama kelastarikh ( );:

};// penakrifan konstruktor

tarikh::tarikh (){ hari = 0;

bulan = 0;tahun = 0;

}

Page 6: CHAPTER 2  CLASSES & OBJECT

• Pernyataan bagi mengisytiharkan objek tarikh :tarikh tlahir;

• Bila dilaksanakan, penyataan ini akan menyebabkan konstruktor lalai tarikh() dipanggil secara automatik.

• Kandungan ingatan bagi objek tlahir:

KONSTRUKTOR TANPA PARAMETER

hari0

bulan0

tahun0

tlahir

Page 7: CHAPTER 2  CLASSES & OBJECT

• Setelah pengisytiharan di atas dilaksanakan, ahli data bg tlahir iaitu hari, bulan dan tahun akan dinilaiawalkan kpd sifar. Walaubagaimanapun, secara logiknya tarikh bagi sesuatu peristiwa tidak terdiri drp nilai sifar. Oleh itu sekiranya nilai awal bagi setiap ahli data bagi setiap objek tarikh mempunyai maklumat yg berbeza-beza dan perlu dimasukkan oleh pengguna, fungsi konstruktor tarikh() boleh ditulis semula seperti berikut :

KONSTRUKTOR TANPA PARAMETER

tarikh::tarikh ( ){ cout<< “\nMasukkan hari”;

cin >> hari;cout<< “\nMasukkan bulan”;cin>>bulan;cout<< “\nM asukkan tahun”;cin>>tahun;

}

Page 8: CHAPTER 2  CLASSES & OBJECT

• Perlaksanaan penyataan, tarikh tlahir; menyebabkan arahan yg meminta pengguna masukkan maklumat tertentu dipaparkan. Nilai yg dimasukkan pengguna akan menjadi nilai awal kepada ahli data tlahir.

KONSTRUKTOR TANPA PARAMETER

Page 9: CHAPTER 2  CLASSES & OBJECT

• Pengaturcara juga blh menghantar argumen kpd konstruktor untuk menilaiawalkan ahli data. Ini ditunjukkan dlm contoh berikut:

KONSTRUKTOR DENGAN PARAMETER

class tarikh{ int hari, bulan, tahun;public:

//pengisytiharan konstruktor dengan parametertarikh (int a, int b, int c);:

};// penakrifan konstruktortarikh::tarikh (int n1, int n2, int n3){ hari = n1;

bulan = n2;tahun = n3;

}

Page 10: CHAPTER 2  CLASSES & OBJECT

• Cara mengisytiharkan objek yg mempunyai konstruktor dengan parameter:

tarikh tlahir (11,5,1990);• Setelah objek tlahir diisytiharkan, nilai argumen yang dihantar akan

diterima oleh n1, n2 dan n3 pada fungsi konstruktor. Oleh itu ahli data bagi tlahir akan dinilaiawalkan dgn nilai berikut :

KONSTRUKTOR DENGAN PARAMETER

hari11

bulan5

tahun1990

tlahir

Page 11: CHAPTER 2  CLASSES & OBJECT

KONSTRUKTOR DENGAN ARGUMEN LALAI

ARGUMEN LALAI

• C++ mempunyai kemudahan di mana fungsinya boleh mempunyai argumen lalai

• Argumen lalai merupakan nilai yg akan digunakan sbg argumen sekiranya semasa panggilan ke atas sesuatu fungsi, argumen sebenar tidak dinyatakan.

• Argumen lalai ini mesti disenaraikan pada prototaip fungsi yg mempunyai argumen lalai.

• Contoh prototaip fungsi setdata() yang mempunyai argumen lalai :Void setdata (char tk[25], float h, int th=2010);

Page 12: CHAPTER 2  CLASSES & OBJECT

• Penyataan yg memanggil fungsi setdata() di atas perlu menyertakan sekurang-kurangnya dua argumen

• Dua cara berbeza bagi memanggil fungsi setdata() secara sah:Cara 1

Dalam contoh ini, argumen ketiga tidak dinyatakan, oleh itu nilai lalai yang disediakan, 2002 akan digunakan sebagai argumen ketiga.Cara 2

Dalam contoh ini, panggilan ke atas fungsi setdata() menyertakan 3 argumen. Bila hal ini berlaku, argumen sebenar yang disertakan akan digunakan.

KONSTRUKTOR DENGAN ARGUMEN LALAI

Setdata (“Dunia Java”, 70.00);

Setdata (“Sistem Pakar”, 700.00, 1998);

Page 13: CHAPTER 2  CLASSES & OBJECT

• Syarat penggunaan argumen lalai sekiranya fungsi mempunyai beberapa parameter, argumen lalai perlu disenaraikan dari kanan ke kiri pada senarai parameter dalam prototaip fungsi

• Contoh pengisytiharan prototaip yg sah:

• Contoh pengsiytiharan prototaip yg tidak sah :

KONSTRUKTOR DENGAN ARGUMEN LALAI

void darab (int x=10, int y=2, int z=19);void darab (int x, int y=2, int z=19);

void darab (int x=10, int y, int z=19);void darab (int x, int y=2, int z);void darab (int x=10, int y, int z);

Page 14: CHAPTER 2  CLASSES & OBJECT

ARGUMEN LALAI BAGI FUNGSI KONSTRUKTOR

• Konstruktor boleh mempunyai argumen lalai• Contoh konstruktor dengan argumen lalai dan penakrifan konstruktor

tersebut di luar kelasclass tarikh{ int hari, bulan, tahun; public :

:tarikh(int a=1, int b=1, int c=2002);:

};// penakrifan konstruktortarikh::tarikh (int n1, int n2, int n3){ hari = n1;

bulan = n2;tahun = n3;

}

Page 15: CHAPTER 2  CLASSES & OBJECT

• Contoh pengisytiharan objek tarikh yang sah:1. pengisytiharan objek yang menggunakan semua nilai lalai:

2. pengisytiharan objek yang mengabaikan semua nilai lalai :

3. pengisytiharan objek yang menggunakan satu nilai lalai, 2002:

4. pengisytiharan objek yang mengabaikan nilai lalai yg pertama dalam senarai :

ARGUMEN LALAI BAGI FUNGSI KONSTRUKTOR

tarikh tahunBaru;

tarikh tahunLahir (22, 11, 2001);

tarikh hKebangsaan (31,8);

Tarikh tdaftar (20);

Page 16: CHAPTER 2  CLASSES & OBJECT

KONSTRUKTOR LIMPAHAN• Fungsi Limpahan

fungsi limpahan bermaksud satu nama fungsi boleh diisytiharkan dan ditakrifkan beberapa kali dalam satu aturcara.

Setiap fungsi lalai mempunyai nama yg sama tetapi melaksanakan tugas yg berbeza

Pengkompil membezakan panggilan antara fungsi melalui jenis pulangan fungsi dan jenis serta bilangan parameter fungsi.

Contoh prototaip limpahan fungsi campur();

int campur(int,int); //prototaip 1int campur(int, int, int); //prototaip 2double campur (double, double); // prototaip 3double campur (int, double); //prototaip 4void campur (); //prototaip 5

Page 17: CHAPTER 2  CLASSES & OBJECT

• Contoh panggilan ke atas fungsi campur() yg berbeza :

KONSTRUKTOR LIMPAHAN

cout << “\nHasil Campur “<<campur (2000,20); //panggil prototaip 1

cout<< “\nHasil Campur” <<campur (1000,1000,20); //panggil prototaip 2

cout << “\nHasil Campur” <<campur(20.20,22.22); //panggil prototaip 3

cout << “\nHasil Campur” <<campur (2000,20.20); //panggil prototaip 4

campur(); //panggil prototaip 5

Page 18: CHAPTER 2  CLASSES & OBJECT

IMPLEMENTASI LIMPAHAN KONSTRUKTOR

• C++ membenarkan beberapa konstruktor yg sama diisytiharkan dalam satu kelas. Contohnya :

class tarikh{ int hari, bulan, tahun;public:

//penakrifan konstruktor tanpa parameter tarikh(){ hari =0;

bulan =0;tahun =0;

}// penakrifan konstruktor dengan 3 parameter tarikh::tarikh (int n1, int n2, int n3){ hari = n1;

bulan = n2;tahun =n3;

}:

};

Page 19: CHAPTER 2  CLASSES & OBJECT

• Semasa mengisytiharkan sesuatu objek, pengaturcaraan perlu menentukan konstruktor mana yang digunakan bg menghasilkan objek tersebut.

• Berdasarkan kpd contoh limpahan konstruktor yg diberi, objek blh diisytiharkan dgn 2 cara, iaitu :

• Pengisytiharan pertama:

Menyebabkan konstruktor tanpa parameter dipanggil. Ahli data hari, bulan dan tahun bagi objek tlahir dinilaiawalkan dengan sifar.

IMPLEMENTASI LIMPAHAN KONSTRUKTOR

tarikh tlahir; atauTarikh hpekerja (1,5,2010);

tarikh tlahir;

Page 20: CHAPTER 2  CLASSES & OBJECT

• Pengisytiharan kedua

Menyebabkan konstruktor dengan 3 parameter dipanggil. Ahli data bg objek hpekerja dinilaiawalkan spt berikut :hari = 1, bulan = 5, dan tahun = 2002

• Konstruktor dengan argumen lalai juga blh dijadikan sbg limpahan konstruktor bersama-sama dgn konstruktor lain.

• Ttp pengac perlu berhati-hati apbl melaksanakan limpahan konstruktor yg mempunyai argumen lalai. Sekiranya tidak dilaksanakan dengan betul, maka ralat kesamaran akan berlaku.

IMPLEMENTASI LIMPAHAN KONSTRUKTOR

tarikh hpekerja(1,5,2002);

Page 21: CHAPTER 2  CLASSES & OBJECT

• Contoh limpahan konstruktor yg mesti dielak:

• Compiler akan mengalami konflik dalam melaksanakan pernyataan berikut:tarikh h_ibu(12,5,2002)tarikh hperiksa();

• Berlaku kesamaran di antara perlaksanaan tarikh() dengan tarikh(int,int,int).

IMPLEMENTASI LIMPAHAN KONSTRUKTOR

class tarikh{ int hari, bulan, tahun; public:

tarikh();tarikh(int n1, int n2, int n3);tarikh(int a=10, b=5,c=1999);:

};

Page 22: CHAPTER 2  CLASSES & OBJECT

DISTRUKTOR

• Distruktor digunakan untuk menghapuskan objek yg tlh digunakan oleh konstruktor.

• Distruktor merupakan ahli fungsi yg namanya sama dengan nama kelas ttp didahului dengan simbol tilda(~)

• Contoh distruktor bg kelas tarikh~tarikh( ) { }

• Syarat-syarat penghasilan distruktor: tidak boleh mempunyai argumen Tidak boleh memulangkan nilai Tidak boleh mempunyai limpahan distruktor Tidak boleh diwarisi

Page 23: CHAPTER 2  CLASSES & OBJECT

• Distruktor akan dilaksanakan secara automatik apabila sesuatu objek keluar dari skopnya

• Contoh penggunaan dan perlaksanaan distruktor spt dalam ac berikut:

DISTRUKTOR

Page 24: CHAPTER 2  CLASSES & OBJECT

DISTRUKTOR

#include <iostream.h>int bil = 0;class test {public:

test(){ bill++;

cout << “\nID objek yang dihasilkan :” <<bil;}~test(){ cout<<“\nID objek yang dihapuskan:”<<bil;

bil--;}

};

Bersambung…

Page 25: CHAPTER 2  CLASSES & OBJECT

main( ){ cout << “\nMemasuki aturcara MAIN\n;

test obj1, obj2, obj3;{

cout <<“\n Memasuki blok 1\n;test obj4;

}{ cout <<“\n Memasuki blok 2\n;

test obj5;}cout << “\nMemasuki aturcara MAIN semula\n”;

}

DISTRUKTOR