chapter 2 classes & object

Post on 29-Jan-2016

79 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

CHAPTER 2 CLASSES & OBJECT

PART 2CONSTRUCTORS & 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: 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

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…

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 :

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;

}

• 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

• 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;

}

• 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

• 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;

}

• 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

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);

• 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);

• 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);

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;

}

• 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);

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

• 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

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;

}:

};

• 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;

• 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);

• 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);:

};

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

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

• Contoh penggunaan dan perlaksanaan distruktor spt dalam ac berikut:

DISTRUKTOR

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…

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

top related