320 likes | 473 Views
Pertemuan 23. Object Oriented Programming CLASS, OBJECT METHOD, PROPERTIES. Dasar Pemrograman Renni Angreni, S.Kom. PENDAHULUAN.
E N D
Pertemuan 23 Object Oriented Programming CLASS, OBJECT METHOD, PROPERTIES Dasar Pemrograman Renni Angreni, S.Kom.
PENDAHULUAN • Dalamkonsep OOP, setiapentitas yang terlibatdalampemrogramandianggapsebagaisebuahobjek. Sasaranutamadalamkonsepiniadalahkemudahandalampengembangansistem. Sebuahaplikasibarutidakharusdibangundarinol, tetapibisadibangundengancara “meneruskan” aplikasisebelumnya. • Ilustrasi : Jikaprosessorpentium 4 harusdibangundarinol, berapa lama waktu yang dihabiskan, biaya yang dikeluarkandantenaga yang dikorbankanuntukitu? Adalahlebihefisienjikaprosesor Pentium 4 dibangunberdasarkanrancangan Pentium 3 denganperbaikandanpenambahanfitur.
Masalahdalammetode OOP adalahaplikasi yang dibangunberbasis OOP memerlukanmemoridalamjumlahbesar agar dapatmenampungdanmengolahobjek. Setiapobjekakanmenempatisejumlah area memori, dankebutuhaniniakanterusbertambahseiringdengankehadiranobjekbarumeskipunjenisnyasamadenganobjek yang telahada.
CLASS dan OBJECT • Dalam OOP, dikenalistilahClassdanObject. Dalambahasa Indonesia artinyakelasdanobjek. • Dalam OOP, program dibuatsedekat-dekatnyadengandunianyata. Misalkan program mengenaimobil, makaakandibuatobjekmobil. • Dalamterminologi OOP (pemrogramanberorientasiobjek), objek (object) sebenarnyaadalahanggotadarisuatukelas (class). Dengankata lain, kelasadalahkumpulandaribeberapaobjek yang sama. • Contoh : ayam, sapi, kuda, kerbau, anjingadalahhewan. Dengankata lain hewandisebutkelas / class, danayam, sapi, kuda, kerbau, anjingadalahobjek.
Kelasseringdisebutsebagai blueprint dariobjek. • Jikadibandingkandenganvariabel, makakelasmerupakantipe data, danobjekmerupakanvariabel. Dari satukelasdapatdibuatbanyakobjek. • Misalkandarikelasmobil, dapatdibuatmobilToyota, mobilDaihatsu, mobilSuzuki, mobilHyundai, dll. Ataudarikelaspemain, dapatdibuat pemain1, pemain2, pemain3, pemain4, dst. Jadi, dalam OOP, programmer melakukan abstraction menghasilkan class danobjekdalamprogram. • Saatsebuahobjekdianalisadandikelompokkan, makamuncullahduakomponenutamadarisebuahobjek, yaitustate danbehaviour. Serta empatsifatutama, yaituabstraction, enkapsulasi, pewarisan, danpolymorphism.
Object • Analogi Class : Pohon Object Object Object
METHOD dan PROPERTIES • Setiapobjekdapatmemiliki properties dan method / state dan behavior / istilahlainnya. • Properties adalahvariabelanggotasuatuobjek. MisalkanmobilA.warna, mobilA.kecepatanMax, mobilA.merk, dll. • Method adalahfungsimiliksuatuobjek. Method bisamengembalikannilaidaridalamobjek (getter method), mengubahkondisiobjek (setter method) atauberupasuatu static method (metode yang bisadipakai. • Setiapobjekmemilikisuatuciri-ciri / keadaan (properties / state) danfungsi(method / behaviour) yang dapatmengubah state tersebut.
State merupakansuatuidentitasdariobjek. • Setiapbarangmemilikinama, harga, jenis, dll.. • Diimplementasikansebagaivariabelatau field (data_members) • Behaviourdapatdiartikansebagaikegiatandariobjek. • Diimplementasikandalam program sebagaiproses / method(member_functions) • State = katabenda • Behaviour = katakerja • Contoh : • Class : Manusia • Objek : Tina, Siti, Toni, Iwan, Arief, Angel, dll • State : umur, tinggibadan, beratbadan • Behaviour : makan, tidur, bekerja, berjalan
ABSTRACTION • Prosespembentukankonsepdalammengenaliciri-ciritertentusuatuobjek, danmenciptakansuatukonsepberdasarkanciritersebut. • Konseppenyembunyian detail program / proses yang sangatrumitsehinggakitatidakperlumempermasalahkanpembuatannya. • Misalnya : Objekmobilterhadapsopir. Pembuatmobiltidakperlumendefinisikancarapembuatanmobil yang rumit. Yang pentingbagisopiradalahbagaimanamobiltersebutdapatdigunakansebagaimanamestinya. Dengankata lain pembuatmobilmengabstraksikancarapembuatannya.
ENCAPSULATION • Encapsulation adalahsuatukonsepmengenaipenggabungan properties atau method kedalamsuatuobjek. • Suatuobjekadalahsepertisebuahkapsul yang berisiberbagaimacamobat-obatandidalamnya. • Ketikakitamendeklarasikansuatuobjek, misalnyaobjekmobil, makaobjekituotomatismemiliki (misalkan) warna, kecepatanMax, kapasitasbensin, merkdansebagainya. Dan mobilitujugadapatmengisiBensin, maju, mundur, dihidupkanataudimatikan.
Tujuandarienkapsulasiadalah : • Mengelompokkansejumlah data (properties) kedalamobjek. • Melindungi properties dan method didalamkelas agar tidaksembarangandiaksesolehkelas lain. • Enkapsulasijugaberfungsisebagaipenyederhanaan. Misalkan, untukmaju, sebuahmobilharusmenjalaniprosesmesin 4 tak (injeksi, kompresi, bakar, buang), tetapipengendarahanyatinggalmenginjak pedal gas saja.
INHERITANCE • Konsepatauprosesdalampembuatansuatu class barudimana class baruditurunkandari class induk (Base Class). • Class baruinidisebutdengan class turunan (Derived Class). • Misalnya : Seoranganakpastiakanmewarisibeberapasifatatauperilaku yang dimilikiolehbapakdanibunya. Begitujugadalamsebuahpemrograman, suatu class dapatditurunkanmenjadibeberapasifatatauperilakudarikelasinduknya.
Base Class MANUSIA WANITA PRIA Class Turunan Class Turunan Base Class BINATANG AMPHIBI REPTIL MAMALIA Class Turunan Class Turunan Class Turunan
POLYMORPHISME • Polymorphism (poly = banyak, morph = berubahbentuk). • Dalam OOP, konsepinimemungkinkandigunakannyasuatu interface yang samauntukmemerintahsuatuobjekmelakukansuatuaksi / tindakanyang mungkinsecaraprinsipsamatetapisecaraprosesberbeda. Dalamkonsep yang lebihumum, Polymorphism disebutdalamistilahsatuinterface, banyakaksi. • contoh : Mobil, terdiridariberbagaimerk, namunsemuanyamemiliki interface kemudi yang sama (stir kemudi, tongkattransmisi, pedal gas danrem). • Jikaandadapatmengemudikansatumobilsaja, dapatdipastikanjugadapatmengemudiberbagaimobil.
Class MANUSIA (STATE) berat tinggi usia (BEHAVIOUR) Makan() Minum() Menua() Bekerja() pewarisan Class PRIA (STATE) memiliki_organ_ kelamin_pria (BEHAVIOUR) Class WANITA (STATE) memiliki_organ_ kelamin_wanita (BEHAVIOUR) melahirkan() menyusui() Contoh instance/objek maria debra ruth david rudi robert Gambar : Class & Objek
ACCESS MODIFIER • Access modifier mengaturpengaksesansuatuvariabel. • Adatigajenis access modifier, yaitu : • private (hanyabisadiaksesolehfungsi yang adadidalam class itusendiri). • public (bisadiaksesdarimanapun). • protected (hanyabisadiaksesdarifungsididalamkelasitusendiri, ataufungsididalamkelas lain yang mewarisikelastersebut).
MEMBUAT CLASS dan OBJECT • Class sangatmiripdenganstruktur, kecualipada class, terdapat method, dan class memilikisifat inheritance (pewarisan) dan polymorphism (morph = berubahbentuk, poly = banyak, polymorphism = berubahkebanyakbentuk).
Contoh Program denganStruct #include <iostream> #include <conio.h> #include <string> using namespace std; structBuku { string judul; string pengarang; intjumlah; }; void main() { Buku novel; novel.judul = "RumahBeratapBougenvile"; novel.pengarang = "Agnes Jessica"; novel.jumlah = 12; cout<<novel.judul<<endl; cout<<novel.pengarang<<endl; cout<<novel.jumlah<<endl; _getch(); }
Contoh Program dengan Class #include <iostream> #include <conio.h> #include <string> using namespace std; class Buku { public: string judul; string pengarang; intjumlah; }; void main() { Buku novel; novel.judul = "RumahBeratapBougenvile"; novel.pengarang = "Agnes Jessica"; novel.jumlah = 12; cout<<novel.judul<<endl; cout<<novel.pengarang<<endl; cout<<novel.jumlah<<endl; _getch(); }
Contoh Program dengan Class #include <iostream> #include <conio.h> #include <string> using namespace std; class manusia { private : string nama; intusia; intberat; inttinggi; public : void identitas(string a, int b, int c, int d) { nama = a; usia = b; berat = c; tinggi = d; } Lanjut …
… lanjut void cetak() { cout<<"--------------------------------“; cout<<endl; cout<<"Nama : "<<nama<<endl; cout<<"Usia : "<<usia<<endl; cout<<"Berat Badan : "<<berat<<endl; cout<<"TinggiBadan : "<<tinggi<<endl; cout<<"--------------------------------“; cout<<endl; } }; void main() { manusiamhs; mhs.identitas("Michael", 22, 70, 185); mhs.cetak(); mhs.identitas("Zurich", 35, 61, 177); mhs.cetak(); _getch(); }
Properties yang bersifat private tidakdapatdiaksessecaralangsungpadafungsi main(). Untukmengakses properties ini, biasadigunakangetter methoddansetter method. Setter method bergunauntukmengesetnilaikesuatu properties / member private. Biasanyaditambahkanpengaturankhususpada method ini. Padacontoh, identitasadalah setter method. Karena member private tidakbisadiaksesdariluarkelas, makadisediakan method getter untukmengakses member tersebut. Padacontoh, cetakadalah getter method.
METHOD diLuar CLASS • Suatu method bisadidefinisikandidalamkelasataudiluarkelas. Untukmendefinisikan method diluarkelas, sintaxnya : class namaKelas { public: TipeDatanamaMethod(); }; TipeDatanamaKelas::namaMethod() { blokpernyataan / isi method; } • Operator " :: " disebut operator ruanglingkup, berfungsiuntukmenjelaskanlingkup identifier yang digunakan.
Contoh Program dengan Method diLuar Class #include <iostream> #include <conio.h> #include <string> using namespace std; class manusia { private : string nama; intusia; intberat; inttinggi; public : void identitas(string a, int b, int c, int d); void cetak(); }; Lanjut …
… lanjut void manusia::identitas(string a, int b, int c, int d) { nama = a; usia = b; berat = c; tinggi = d; } void manusia::cetak() { cout<<"--------------------------------"<<endl; cout<<"Nama : "<<nama<<endl; cout<<"Usia : "<<usia<<endl; cout<<"Berat Badan : "<<berat<<endl; cout<<"TinggiBadan : "<<tinggi<<endl; cout<<"--------------------------------"<<endl; }
… lanjut void main() { manusiamhs; mhs.identitas("Michael", 22, 70, 185); mhs.cetak(); mhs.identitas("Zurich", 35, 61, 177); mhs.cetak(); _getch(); }
PenugasanAntarObjek void main() { manusiamhs; mhs.identitas("Michael", 22, 70, 185); mhs.cetak(); manusia mhs2; mhs2 = mhs; mhs2.cetak(); _getch(); }
LATIHAN • Buatlahsebuah program C++ berisisebuahkelasdengannamaBuku yang memilikijudulbuku, namapengarang, tahunterbit, jumlahhalaman, danjumlahbukuserta method-method yang dibutuhkanuntukmengakseskelasitu, lalutampilkan 3 buahobjekdarikelastersebut.
BuatsuatukelasdengannamaKeranjang yang memiliki properties namapemilik, kapasitaskeranjang, jumlahapel, jumlahjeruk, danjumlahmanggis. Tambahkan setter dan getter method seperlunya, lalubuatlahsuatu method untukmenghitungsisakapasitaskeranjangdanmenampilkanisidarikeranjangtersebutsepertitampilandibawahini : (Gunakankelasdalamfungsi main).
Dari soalnomor (2) tambahkanlagi method untukmenghitungjumlahbuahdan total yang harusdibayar. Untukhargaapel 4500, jeruk 3500, danmanggis 2000. Jikajumlahbuahapel >= 15 makaadapotongansebesar 15000, Jikajumlahbuahjeruk >= 15 makapotongansebesar 12500, Jikajumlahbuahmanggis >= 15 makapotongansebesar 7000, danselainitutidakadapotongan. Tampilkansepertidibawahini.
-- Sekian -- Dasar Pemrograman Renni Angreni, S.Kom.