250 likes | 400 Vues
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 :
E N D
CHAPTER 2 CLASSES & OBJECT PART 2 CONSTRUCTORS & DESTRUCTORS MALAY VERSION
KONSTRUKTOR • Konstruktormerupakanahliygmemberinilaiawalkpdahli data semasasesuatuobjekdiistiharkan. • Ciri-ciribagikonstruktoradalahsepertiberikut: • konstruktormerupakanahlifungsi yang namanyasamadengannamakelas • Konstruktorperludiistiharkansebagaiahli public • Konstruktortidakmempunyaijenispulanganfungsi, (walaupun void), danolehitutidakbolehmemulangkansebarangnilai • Konstruktordilaksanakansecaraautomatikapabilasesuatuobjekdiistiharkan
KONSTRUKTOR samb… • Konstruktorblhmempunyai parameter atautiada parameter • Pengaturcarabolehmenghasilkanbeberapakonstruktorkelas yang sama, ygmanasetiapkonstruktordiberimelaluisenaraidanjenis parameter. Inidikenalisebagailimpahankonstruktor • Konstruktortidakbolehdiwarisidanjugatidakbolehberjenis virtual.
KONSTRUKTOR TANPA PARAMETER • Konstruktortanpa parameter jugadikenalisebagaikonstruktorlalai • Sekiranyasesuatuaturcaratidakmempunyaikonstruktor yang ditakrifpengaturcara, pengkompilakanmenghasilkankonstruktorlalainyasendiridanmemberinilaiawalkpdahli data dengannilainya yang tidakdptdijangkakan. • Walaubagaimanapun,pengaturcaraseelok-eloknyamenyediakankonstruktorlalainyasendirisepertidalamaturcaraberikut :
KONSTRUKTOR TANPA PARAMETER class tarikh { inthari, bulan, tahun; public: //pengisytiharankonstruktortanpa parameter // namakonstruktormestisamadengannamakelas tarikh ( ); : }; // penakrifankonstruktor tarikh::tarikh () { hari = 0; bulan = 0; tahun = 0; }
KONSTRUKTOR TANPA PARAMETER • Pernyataanbagimengisytiharkanobjektarikh : tarikhtlahir; • Biladilaksanakan, penyataaniniakanmenyebabkankonstruktorlalaitarikh() dipanggilsecaraautomatik. • Kandunganingatanbagiobjektlahir: tlahir hari 0 bulan 0 tahun 0
KONSTRUKTOR TANPA PARAMETER • Setelahpengisytiharandiatasdilaksanakan, ahli data bgtlahiriaituhari, bulandantahunakandinilaiawalkankpdsifar. Walaubagaimanapun, secaralogiknyatarikhbagisesuatuperistiwatidakterdiridrpnilaisifar. Olehitusekiranyanilaiawalbagisetiapahli data bagisetiapobjektarikhmempunyaimaklumatygberbeza-bezadanperludimasukkanolehpengguna, fungsikonstruktortarikh() bolehditulissemulasepertiberikut : tarikh::tarikh ( ) { cout<< “\nMasukkanhari”; cin >> hari; cout<< “\nMasukkanbulan”; cin>>bulan; cout<< “\nMasukkantahun”; cin>>tahun; }
KONSTRUKTOR TANPA PARAMETER • Perlaksanaanpenyataan, tarikhtlahir; menyebabkanarahanygmemintapenggunamasukkanmaklumattertentudipaparkan. Nilaiygdimasukkanpenggunaakanmenjadinilaiawalkepadaahli data tlahir.
KONSTRUKTOR DENGAN PARAMETER • Pengaturcarajugablhmenghantarargumenkpdkonstruktoruntukmenilaiawalkanahli data. Iniditunjukkandlmcontohberikut: class tarikh { inthari, bulan, tahun; public: //pengisytiharankonstruktordengan parameter tarikh(int a, int b, int c); : }; // penakrifankonstruktor tarikh::tarikh (int n1, int n2, int n3) { hari = n1; bulan = n2; tahun = n3; }
KONSTRUKTOR DENGAN PARAMETER • Cara mengisytiharkanobjekygmempunyaikonstruktordengan parameter: tarikhtlahir (11,5,1990); • Setelahobjektlahirdiisytiharkan, nilaiargumen yang dihantarakanditerimaoleh n1, n2 dan n3 padafungsikonstruktor. Olehituahli data bagitlahirakandinilaiawalkandgnnilaiberikut : tlahir hari 11 bulan 5 tahun 1990
KONSTRUKTOR DENGAN ARGUMEN LALAI ARGUMEN LALAI • C++ mempunyaikemudahandimanafungsinyabolehmempunyaiargumenlalai • Argumenlalaimerupakannilaiygakandigunakansbgargumensekiranyasemasapanggilankeatassesuatufungsi, argumensebenartidakdinyatakan. • Argumenlalaiinimestidisenaraikanpadaprototaipfungsiygmempunyaiargumenlalai. • Contohprototaipfungsisetdata() yang mempunyaiargumenlalai : Void setdata (char tk[25], float h, intth=2010);
KONSTRUKTOR DENGAN ARGUMEN LALAI • Penyataanygmemanggilfungsisetdata() diatasperlumenyertakansekurang-kurangnyaduaargumen • Duacaraberbezabagimemanggilfungsisetdata() secarasah: Cara 1 Dalamcontohini, argumenketigatidakdinyatakan, olehitunilailalai yang disediakan, 2002 akandigunakansebagaiargumenketiga. Cara 2 Dalamcontohini, panggilankeatasfungsisetdata() menyertakan 3 argumen. Bilahaliniberlaku, argumensebenar yang disertakanakandigunakan. Setdata (“Dunia Java”, 70.00); Setdata (“SistemPakar”, 700.00, 1998);
KONSTRUKTOR DENGAN ARGUMEN LALAI • Syaratpenggunaanargumenlalaisekiranyafungsimempunyaibeberapa parameter, argumenlalaiperludisenaraikandarikanankekiripadasenarai parameter dalamprototaipfungsi • Contohpengisytiharanprototaipygsah: • Contohpengsiytiharanprototaipygtidaksah: 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 • Konstruktorbolehmempunyaiargumenlalai • Contohkonstruktordenganargumenlalaidanpenakrifankonstruktortersebutdiluarkelas class tarikh { inthari, bulan, tahun; public : : tarikh(int a=1, int b=1, int c=2002); : }; // penakrifankonstruktor tarikh::tarikh (int n1, int n2, int n3) { hari = n1; bulan = n2; tahun = n3; }
ARGUMEN LALAI BAGI FUNGSI KONSTRUKTOR • Contohpengisytiharanobjektarikh yang sah: • pengisytiharanobjek yang menggunakansemuanilailalai: • pengisytiharanobjek yang mengabaikansemuanilailalai : • pengisytiharanobjek yang menggunakansatunilailalai, 2002: 4. pengisytiharanobjek yang mengabaikannilailalaiygpertamadalamsenarai : tarikhtahunBaru; tarikhtahunLahir (22, 11, 2001); tarikhhKebangsaan (31,8); Tarikhtdaftar (20);
KONSTRUKTOR LIMPAHAN • FungsiLimpahan • fungsilimpahanbermaksudsatunamafungsibolehdiisytiharkandanditakrifkanbeberapa kali dalamsatuaturcara. • Setiapfungsilalaimempunyainamaygsamatetapimelaksanakantugasygberbeza • Pengkompilmembezakanpanggilanantarafungsimelaluijenispulanganfungsidanjenissertabilangan parameter fungsi. • Contohprototaiplimpahanfungsicampur(); intcampur(int,int); //prototaip 1 intcampur(int, int, int); //prototaip 2 double campur (double, double); // prototaip 3 double campur (int, double); //prototaip 4 void campur (); //prototaip 5
KONSTRUKTOR LIMPAHAN • Contohpanggilankeatasfungsicampur() ygberbeza : cout << “\nHasilCampur “<<campur (2000,20); //panggilprototaip 1 cout<< “\nHasilCampur” <<campur (1000,1000,20); //panggilprototaip 2 cout << “\nHasilCampur” <<campur(20.20,22.22); //panggilprototaip 3 cout << “\nHasilCampur” <<campur (2000,20.20); //panggilprototaip 4 campur(); //panggilprototaip 5
IMPLEMENTASI LIMPAHAN KONSTRUKTOR • C++ membenarkanbeberapakonstruktorygsamadiisytiharkandalamsatukelas. Contohnya : class tarikh { inthari, bulan, tahun; public: //penakrifankonstruktortanpa parameter tarikh() { hari =0; bulan =0; tahun =0; } // penakrifankonstruktordengan 3 parameter tarikh::tarikh (int n1, int n2, int n3) { hari = n1; bulan = n2; tahun =n3; } : };
IMPLEMENTASI LIMPAHAN KONSTRUKTOR • Semasamengisytiharkansesuatuobjek, pengaturcaraanperlumenentukankonstruktormana yang digunakanbgmenghasilkanobjektersebut. • Berdasarkankpdcontohlimpahankonstruktorygdiberi, objekblhdiisytiharkandgn 2 cara, iaitu : • Pengisytiharanpertama: Menyebabkankonstruktortanpa parameter dipanggil. Ahli data hari, bulandantahunbagiobjektlahirdinilaiawalkandengansifar. tarikhtlahir; atau Tarikhhpekerja (1,5,2010); tarikhtlahir;
IMPLEMENTASI LIMPAHAN KONSTRUKTOR • Pengisytiharankedua Menyebabkankonstruktordengan 3 parameter dipanggil. Ahli data bgobjekhpekerjadinilaiawalkansptberikut : hari = 1, bulan = 5, dantahun = 2002 • Konstruktordenganargumenlalaijugablhdijadikansbglimpahankonstruktorbersama-samadgnkonstruktor lain. • Ttppengacperluberhati-hatiapblmelaksanakanlimpahankonstruktorygmempunyaiargumenlalai. Sekiranyatidakdilaksanakandenganbetul, makaralatkesamaranakanberlaku. tarikhhpekerja(1,5,2002);
IMPLEMENTASI LIMPAHAN KONSTRUKTOR • Contohlimpahankonstruktorygmestidielak: • Compiler akanmengalamikonflikdalammelaksanakanpernyataanberikut: tarikhh_ibu(12,5,2002) tarikhhperiksa(); • Berlakukesamarandiantaraperlaksanaantarikh() dengantarikh(int,int,int). class tarikh { inthari, bulan, tahun; public: tarikh(); tarikh(int n1, int n2, int n3); tarikh(int a=10, b=5,c=1999); : };
DISTRUKTOR • Distruktordigunakanuntukmenghapuskanobjekygtlhdigunakanolehkonstruktor. • Distruktormerupakanahlifungsiygnamanyasamadengannamakelasttpdidahuluidengansimboltilda(~) • Contohdistruktorbgkelastarikh ~tarikh( ) { } • Syarat-syaratpenghasilandistruktor: • tidakbolehmempunyaiargumen • Tidakbolehmemulangkannilai • Tidakbolehmempunyailimpahandistruktor • Tidakbolehdiwarisi
DISTRUKTOR • Distruktorakandilaksanakansecaraautomatikapabilasesuatuobjekkeluardariskopnya • Contohpenggunaandanperlaksanaandistruktorsptdalam ac berikut:
DISTRUKTOR #include <iostream.h> intbil = 0; class test { public: test() { bill++; cout << “\nIDobjek yang dihasilkan :” <<bil; } ~test() { cout<<“\nIDobjek yang dihapuskan:”<<bil; bil--; } }; Bersambung…
DISTRUKTOR main( ) { cout << “\nMemasukiaturcara MAIN\n; test obj1, obj2, obj3; { cout <<“\n Memasukiblok 1\n; test obj4; } { cout <<“\n Memasukiblok2\n; test obj5; } cout << “\nMemasukiaturcara MAIN semula\n”; }