Object Oriented Programming (OOP)
A. Class dan Method A.1. Class Salah satu keunggulan C# dibandingkan bahasa pemrograman lain (yang belum menggunakan konsep OOP), adalah Modular. Dimana routine atau fungsi (istilah dalam pemrograman prosedural) atau Method (istilah dalam OOP), diletakkan secara terpisah-pisah yang disebut dengan Class. Class ini nanti bisa digunakan kembali (reuseable) untuk membuat program lainnya. Bentuk umum dari class adalah: class nama_class { ... ... }
A.2. Method Seperti yang pernah penulis singgung di atas tadi, bahwa Method adalah istilah untuk fungsi atau routine pada OOP. Method harus terletak di dalam class. Bentuk umum dari method adalah: hak_akses tipe_nilai_kembalian nama_method(parameter) { ... ... } Dalam penggunaan method, pemilihan tipe_nilai_kembalian harus benar-benar diperhatikan. Jika method tidak mempunyai nilai kembalian (return value), maka tipe_nilai_kembalian adalah void. Tapi, jika method mempunyai nilai kembalian, maka tipe_nilai_kembalian harus disesuaikan dengan tipe data nilai kembalian tersebut. Untuk lebih jelasnya perhatikan
2
Object Oriented Programming (OOP) contoh berikut ini: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
. . . int a; private void SetNilaiA(int a) { this.a = a; } public int HitungADikaliDua(int a) { int hasil; hasil = a * 2; return hasil; } . . .
Keterangan Program: - Baris 1-3 dan 15-17: jangan diketik, karena contoh di atas adalah potongan dari program. Jadi baris-baris tersebut hanya sebagai penanda bahwa sebelum dan sesudahnya ada baris program lagi. - Baris 5-8: adalah contoh method yang tidak memiliki nilai kembalian (return value). - Baris 9-14: adalah contoh method yang memiliki nilai kembalian (return value). - Baris 5: private adalah hak_akses, void adalah tipe_nilai_kembalian, SetNilaiA() adalah nama_method, int a adalah parameter. - Baris 9: public adalah hak_akses, int adalah tipe_nilai_kembalian, HitungADikaliDua() adalah nama_method, int a adalah parameter. - Baris 7: this.a, artinya variabel a yang di luar method. Jadi this.a = a;
3
E-trik Visual C# 2005
-
berarti mengisi variabel a yang ada di luar method dengan nilai dari variabel a yang berasal dari parameter. Baris 11: variabel hasil dideklarasikan dengan tipe data integer. Baris 12: mengkalikan variabel a lokal (yang berasal dari parameter) dengan 2, lalu hasilnya disimpan ke dalam variabel hasil. Baris 13: variabel hasil adalah return value. Catatan : Variabel, di dalam OOP sering disebut Data Member dan juga Properties. Method, di dalam OOP sering disebut Member Function dan juga Karakteristik.
B. Hak Akses Hak akses dipakai untuk menentukan sebatas atau sejauh mana suatu Variabel dan juga Method bisa digunakan. Jenis hak akses terbagi atas tiga, yaitu:
a. Pubic Ditulis dengan huruf kecil semua, public. Berarti Variabel atau Method bisa digunakan oleh class mana saja.
b. Private Ditulis dengan huruf kecil semua, private. Berarti Variabel atau Method hanya bisa digunakan oleh class itu sendiri. Tidak bisa diakses oleh class manapun termasuk class turunannya sendiri.
c. Protected Ditulis dengan huruf kecil semua, protected. Berarti Variabel atau Method tidak bisa diakses oleh class lain yang bukan class turunannya.
C. Konstruktor Konstruktor pada OOP berguna sebagai method yang akan otomatis dijalankan begitu kita membuat objek baru dari class yang bersangkutan. Jika kita tidak membuat konstruktor, maka compiler secara default akan membuatnya.
4
Object Oriented Programming (OOP) Nama konstruktor harus sama dengan nama class. Contoh penggunaan Konstruktor adalah : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
class PersegiEmpat { int panjang, lebar; public PersegiEmpat(int panjang, int lebar) { this.panjang = panjang; this.lebar = lebar; } public int HitungKeliling() { int hasil; hasil = panjang * lebar; return hasil; } }
Keterangan Program: - Baris 1: membuat class dengan nama PersegiEmpat. - Baris 4-8: membuat konstruktor dengan nama yang sama dengan nama class, yaitu PersegiEmpat.
D. Objek Objek dibuat dengan tujuan sebagai instance atau turunan langsung dari class. Jadi dengan menggunakan objek yang dibuat, kita bisa menggunakan method dari class tersebut. Contoh pembuatan objek dari class PersegiEmpat adalah : 1 2
PersegiEmpat objBaru = new PersegiEmpat(15,10); textBox1.Text = objBaru.HitungKeliling().ToString();
5
E-trik Visual C# 2005 Keterangan Program: - Baris 1: membuat objek dari class PersegiEmpat, dengan nama objBaru. - Baris 1: PersegiEmpat(15,10); dari potongan baris kode tersebut bisa dilihat bahwa ketika kita membuat objek baru dari class, maka program akan memanggil konstruktor. PersegiEmpat() adalah konstruktor, angka 15 adalah panjang dan angka 10 adalah lebar. - Baris 2: objBaru.HitungKeliling() dari potongan baris kode tersebut bisa dilihat bahwa dengan menggunakan objek objBaru, kita bisa mengakses method HitungKeliling(), milik class PersegiEmpat.
E. Karakteristik OOP E.1. Encapsulation (Pembungkusan) Adalah karakteristik OOP dimana suatu informasi (bisa variabel atau method) disembunyikan dari aspek eksternal. Pembungkusan bisa dilakukan dengan menggunakan hak akses private dan protected.
E.2. Inheritance (Pewarisan atau Penurunan) Adalah karakteristik OOP yang memungkinkan suatu class dibuat turunannya. Sehingga class turunan tersebut bisa menggunakan data member ataupun method milik class induk. Hal ini sering dianalogikan sebagai “anak mewarisi sifat orangtuanya (induknya)”. Catatan : Class Induk, sering juga disebut base class, atau class saja. Class Anak, sering juga disebut derived class, atau subclass.
E.3. Polymorphisme Adalah karakteristik OOP yang memungkinkan penggunaan method dengan nama yang sama, dan memiliki parameter yang sama ataupun berbeda. Akan tetapi digunakan pada class yang berbeda. Jika Anda ingin menggunakan Polymorphisme, maka terlebih dahulu Anda harus membuat class Inheritance.
6
Object Oriented Programming (OOP) F. Contoh Program OOP Pada bagian ini kita akan membuat program sederhana yang menerapkan konsep OOP. Berikut deskripsi program yang akan kita buat. Program berguna untuk menghitung berapa banyak jumlah SKS yang harus kita bayar semester ini. Nilai yang diinput oleh user adalah, jumlah mata kuliah, SKS dan nilai per mata kuliah. Program akan menghitung berapa IP yang diperoleh, lalu memutuskan berapa banyak SKS yang diperoleh. Tampilan hasil akhir program yang akan kita buat nanti adalah seperti pada gambar di bawah ini.
Gambar 1 Tampilan Program Yang Akan Dibuat Langkah-langkah membuat tampilan program tersebut adalah sebagai berikut: 1. Buat project baru dengan nama menghitungSKS, simpan di folder e-Trik_2. 2. Masukkan ke dalam Form1 komponen-komponen yang dibutuhkan sebagai berikut. 11 buah Label , 6 buah TextBox , 4 buah Button , 1 buah ComboBox , dan 2 buah GroupBox . Atur tata
7
E-trik Visual C# 2005 letaknya kira-kira seperti pada gambar di bawah ini.
GroupBox ComboBox
Gambar 2 Tata Letak Awal Komponen 3. Untuk langkah selanjutnya, kita akan mengubah semua nilai properties pada masing-masing objek yang ada pada Form1, termasuk nilai properties Form1 itu sendiri. Untuk mengetahui komponen dan properties yang mana yang akan diubah, dan apa nilainya, silahkan Anda lihat pada tabel di bawah ini. Tabel 1. Properties dan Value yang Akan Diubah Nama Kontrol Nama Properties Form1
groupBox1
Value / Nilai
FormBorderStyle MaximizeBox Size
FixedSingle False 450, 409
StartPosition Text
CenterScreen Menghitung SKS Yang Harus Dibayar Untuk Semester Ini
(Name) Font style Location
gbDataMatKul Bold 15, 58
8
Object Oriented Programming (OOP) Size Text Visible
408, 106 Data Mata Kuliah False
(Name) Font style
gbHasilHitung Bold
Location Size Text
15, 177 408, 143 Hasil Penghitungan
Visible Location
False 12, 22
Text Location Text
Menang 18, 27 Mata Kuliah Nomor
(Name) Location
lblNoMatKul 133, 27
Text Location Text
? 18, 55 SKS
label5
Location Text
18, 81 Nilai
label6 label7
Location Text Location
18, 27 Indeks Prestasi (IP) 18, 55
label8
Text Location
SKS Semester Ini 18, 81
Text Location Text
Harga Per SKS 18, 107 Total SKS Yang Harus Dibayar
Location Text
184, 81 Rp
groupBox2
label1 label2 label3
label4
label9 label10
9
E-trik Visual C# 2005 label11 textBox1
textBox2
textBox3
textBox4
textBox5
textBox6
button1
Location Text (Name)
184, 107 Rp txtJumlahMatKul
Location Size
127, 15 25, 20
TabIndex (Name) Location
0 txtSKSPerMataKuliah 136, 48
Size TabIndex
50, 20 0
(Name) BackColor Location
txtIP 255, 255, 192 208, 22
Size (Name)
63, 20 txtSKSSemesterIni
BackColor Location Size
255, 255, 192 208, 48 63, 20
(Name) BackColor
txtHargaPerSKS 255, 255, 192
Location Size (Name)
208, 74 113, 20 txtTotalSKSYangHarusDiBayar
BackColor Location
255, 255, 192 208, 74
Size (Name) Font style
113, 20 cmdOke Bold
Location Size
185, 12 46, 23
TabIndex Text
1 Oke
10
Object Oriented Programming (OOP) button2
button3
button4
comboBox1
(Name) Font style Location
cmdNext Bold 231, 71
Size TabIndex
67, 23 4
Text (Name) Font style
Next cmdHitung Bold
Location Size
318, 71 67, 23
TabIndex Text (Name)
5 Hitung cmdKeluar
Font style Location
Bold 356, 342
Size TabIndex Text
67, 23 6 Keluar
(Name) Location
comboNilaiPerMataKuliah 136, 73
Size TabIndex Text
50, 21 3 A
4. S e t e l a h i t u , k l i k k o m p o n e n C o m b o B o x d e n g a n n a m a comboNilaiPerMataKuliah, pada bagian Properties Items, klik tombol , maka akan muncul kotak dialog String Collection Editor. 5. Masih di kotak dialog yang tadi, pada bagian Enter the strings in the collection (one per line): ketik huruf A, lalu Enter. Ketik huruf B, lalu Enter, dan seterusnya sampai huruf E. Klik OK. Untuk lebih jelasnya silahkan lihat Gambar 3.
11
E-trik Visual C# 2005
1. Ketik huruf A - E
2. Klik OK
Gambar 3 Menambahkan Items pada ComboBox Untuk tahap selanjutnya kita akan melakukan pengkodean. Langkahlangkahnya adalah sebagai berikut: 1. Klik satu kali pada Form1, lalu tekan tombol F7, ketikkan kode yang berwarna merah seperti dibawah ini. 1 2 3 4 5 6 7
private int[] sksPerMataKuliah = new int[10]; private char[] nilaiPerMataKuliah = new char[10]; private int indexArray = 0, noMatKul = 0; public Form1() { InitializeComponent(); }
Keterangan Program: - Baris 1: mendeklarasikan array bertipe Integer, dengan panjang 10, dengan nama sksPerMataKuliah. - Baris 2: mendeklarasikan array bertipe char, dengan panjang 10, dengan nama nilaiPerMataKuliah. - Baris 3: mendeklarasikan variabel indexArray dan noMatkul. - Baris 4-7: baris ini tidak perlu diketik, karena baris ini sudah ada dengan sendirinya pada saat kita membuat project baru.
12
Object Oriented Programming (OOP) 2. Sebelum kita melanjutkan kode untuk di Form1. Terlebih dahulu kita akan membuat class baru yang menerapkan konsep OOP. 3. Klik tombol , pilih Add New Item... Atau bisa dengan menekan kombinasi tombol Ctrl + Shift + A. Maka akan tampil kotak dialog Add New Item. Lihat gambar di bawah ini.
1. Klik di sini 2. Pilih ini
Gambar 4 Menambah Item Baru 4. Pada kotak dialog tersebut, pilih Class dan isi dengan nama PembayaranSKS.cs, klik Add.
1. Pilih Class
3. Klik Add 2. Isi Nama Class
Gambar 5 Memberi Nama Class Baru 5. Kemudian ketikkan kode berikut ini.
13
E-trik Visual C# 2005 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public class PembayaranSKS { private int jumlahSKSYangDiperoleh; public PembayaranSKS() { this.hargaPerSKS = 40000; this.jumlahSKSYangDiperoleh = 0; } { return this.hargaPerSKS; } jumlahSKSYangDiperoleh) { this.jumlahSKSYangDiperoleh = jumlahSKSYangDiperoleh; return hasil; } }
Keterangan Program: - Baris 1: tambahkan public, sebelum perintah class. Karena kita akan membuat lebih dari satu class. - Baris 2: mendeklarasikan variabel hargaPerSKS dan hak akses protected. - Baris 3: mendeklarasikan variabel jumlahSKSYangDiperoleh, dengan tipe data int dan hak akses private. - Baris 5-9: membuat konstruktor untuk class PembayaranSKS(). - Baris 10-13: membuat method dengan nama GetHargaPerSKS(), yang berguna untuk mengambil nilai dari variabel hargaPerSKS. Karena variabel ini tidak menggunakan hak akses public, sehingga tidak bisa
14
Object Oriented Programming (OOP) diakses secara langsung dari luar class. Baris 14-19: membuat method dengan nama HitungSKSYangHarusDibayar(), yang berguna untuk menghitung berapa banyak SKS yang harus dibayar untuk bulan ini. Yang didapat dari rumus jumlahSKSYangDiperoleh dikali hargaPerSKS.
-
6. Selanjutnya kita akan membuat class turunan dari class PembayaranSKS, yaitu class IPSemesterIni. Ketikkan kode berikut tepat di bawah class PembayaranSKS. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// inherit dari class PembayaranSKS public class IPSemesterIni : PembayaranSKS { int JumlahSKSSemesterIni; // constructor public IPSemesterIni() { this.totalSKSDiperoleh = 0; this.totalKNDiperoleh = 0; } totalKNDiperoleh) { this.totalSKSDiperoleh = totalSKSDiperoleh; this.totalKNDiperoleh = totalKNDiperoleh; }
{ return totalKNDiperoleh / totalSKSDiperoleh; }
15
E-trik Visual C# 2005 21 22 23 24 25 26 27 28
{ if (IPSemesterIni <= 2.5) { JumlahSKSSemesterIni = 18; } else if ((IPSemesterIni > 2.5) && (IPSemesterIni < 3)) { JumlahSKSSemesterIni = 21; } else if (IPSemesterIni >= 3) { JumlahSKSSemesterIni = 24; } return JumlahSKSSemesterIni; } }
Keterangan Program: - Baris 2: membuat class dengan nama IPSemesterIni, yang diturunkan dari class PembayaranSKS. - Baris 7-16: pada baris ini terdapat dua bua konstruktor, dimana pada konstructor pertama tidak terdapat parameter. Sedangkan pada konstructor yang kedua terdapat parameter, yaitu totalSKSDiperoleh dan totalKNDiperoleh. - Baris 17-20: membuat method dengan nama HitungIPYangDiperoleh(), yang berguna untuk menghitung berapa besar IP yang diperoleh dengan cara membagi totalKNDiperoleh dengan totalSKSDiperoleh. - Baris 21-27: membuat method dengan nama SKSYangDiperolehSemesterBaru(), yang berguna untuk menghitung berapa SKS yang diperoleh untuk semester berikutnya. Dengan kondisi, jika IP kurang dari atau sama dengan 2,5, SKS semester ini 18. Jika IP antara 2,5 - 3, SKS semester ini 21. Dan jika IP lebih besar dari atau sama dengan 3, SKS semester ini 24. Catatan : Untuk membuat class turunan, bentuk umumnya adalah: class nama_class_turunan : nama_class_induk Untuk menurunkan class pada C# tidak digunakan extends melainkan : (simbol titik dua). Pada setiap class sebaiknya dibuat paling tidak satu konstruktor tanpa parameter. Hal ini berguna jika class tersebut akan diturunkan.
16
Object Oriented Programming (OOP) 7. Kemudian kita akan membuat class turunan dari class IPSemesterIni, yaitu class SKSSemesterIni. Ketikkan kode berikut tepat di bawah class IPSemesterIni. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
// inherit dari class IPSemesterIni public class SKSSemesterIni : IPSemesterIni { private int jumlahMataKuliah; private int[] sksPerMataKuliah = new int[10]; private char[] nilaiPerMataKuliah = new char[10]; private int i, nilaiDalamAngka, temp = 0; // constructor public SKSSemesterIni(int jumlahMataKuliah, sksPerMataKuliah, char[] nilaiPerMataKuliah) { this.jumlahMataKuliah = jumlahMataKuliah; this.sksPerMataKuliah = sksPerMataKuliah; this.nilaiPerMataKuliah = nilaiPerMataKuliah; } { for (i = 0; i < jumlahMataKuliah; i++) { switch (nilaiPerMataKuliah[i]) { case ‘A’: nilaiDalamAngka = 4; break; case ‘B’: nilaiDalamAngka = 3; break;
17
int[]
E-trik Visual C# 2005 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
case ‘C’: nilaiDalamAngka = 2; break; case ‘D’: nilaiDalamAngka = 1; break; case ‘E’: nilaiDalamAngka = 0; break; default: nilaiDalamAngka = 0; break; } temp = sksPerMataKuliah[i] * nilaiDalamAngka; totalKNDiperoleh = totalKNDiperoleh + temp; } return totalKNDiperoleh; } { for (i = 0; i < jumlahMataKuliah; i++) { totalSKSDiperoleh += sksPerMataKuliah[i]; } return totalSKSDiperoleh; } }
Keterangan Program: - Baris 2: membuat class dengan nama SKSSemesterIni, yang diturunkan dari class IPSemesterIni.
18
Object Oriented Programming (OOP) -
Baris 10-15: membuat konstruktor. Baris 16-45: membuat method dengan nama HitungTotalKNDiperoleh(), yang berguna untuk menghitung berapa total KN (Komulatif Nilai) yang diperoleh dengan rumus sksPerMataKuliah dikali dengan nilaiDalamAngka. nilaiDalamAngka, diperoleh dari statement switch, yang bertugas untuk merubah nilai dari bentuk Huruf ke bentuk Angka. Baris 46-53: membuat method dengan nama HitungTotalSKSDiperoleh(), yang berguna untuk menjumlahkan SKS masing-masing mata kuliah (sksPerMataKuliah), lalu hasilnya ditampung di variabel totalSKSDiperoleh.
-
8. Sampai disini kita telah selesai membuat class sendiri yang menerapkan konsep OOP. Selanjutnya kita tinggal menggunakan class-class tersebut. Sekarang kembali ke Form1. 9. Klik ganda pada TextBox txtJumlahMatKul, lalu ketikan kode yang berwarna merah berikut ini. 1 2 3 4 5 6 7
private void txtJumlahMatKul_TextChanged(object EventArgs e) { if (int.Parse(txtJumlahMatKul.Text) > 10) txtJumlahMatKul.Text = “10”; else if (int.Parse(txtJumlahMatKul.Text) <= 0) txtJumlahMatKul.Text = “1”; }
sender,
Keterangan Program: - Baris kode ini berguna untuk membatasi input hanya boleh antara 1-10. -
Baris 3: periksa apakah text yang diinput pada TextBox txtJumlahMatKul, lebih besar dari 10.
-
Baris 4: jika benar, isi TextBox txtJumlahMatKul dengan angka 10. Baris 5: jika salah, periksa lagi apakah text yang diinput pada TextBox txtJumlahMatKul, lebih kecil dari atau sama dengan 0.
-
Baris 6: jika benar, isi TextBox txtJumlahMatKul dengan angka 1.
19
E-trik Visual C# 2005 10. Lalu, klik ganda pada Button cmdOke, lalu ketikan kode yang berwarna merah berikut ini. 1 2 3 4 5 6 7 8 9 10 11 12 13
private void cmdOke_Click(object sender, EventArgs e) { gbDataMatKul.Visible = true; if (int.Parse(txtJumlahMatKul.Text) == 1) { cmdNext.Enabled = false; cmdHitung.Enabled = true; } lblNoMatKul.Text = “1”; noMatKul = 2; txtJumlahMatKul.Enabled = false; cmdOke.Enabled = false; }
Keterangan Program: gbDataMatKul. -
Baris 4-8: periksa apakah text yang diinput pada TextBox txtJumlahMatKul, sama dengan angka 1. Jika benar, maka ubah status Button cmdNext menjadi tidak bisa ditekan (disable). Dan ubah status Button cmdHitung menjadi bisa ditekan (enable). Baris 9: isi TextBox lblNoMatKul, dengan string angka 1. Baris 10: isi variabel noMatKul, dengan integer angka 2.
-
Baris 11 dan 12: disable TextBox txtJumlahMatKul dan Button cmdOke.
-
11. Klik ganda TextBox txtSKSPerMataKuliah, lalu ketikan kode ini. 1 2
private void EventArgs e) {
txtJumlahMatKul_TextChanged(object
20
sender,
Object Oriented Programming (OOP) 3 4 5 6 7
if (txtSKSPerMataKuliah.Text == “”) cmdNext.Enabled = false; else cmdNext.Enabled = true; }
Keterangan Program: -
Baris 3: periksa apakah text yang diinput pada TextBox txtJumlahMatKul, sama dengan kosong, A.K.A belum ada yang diinput.
-
Baris 4: jika benar, disable Button cmdNext.
-
Baris 5-6: jika salah, enable Button cmdNext.
12. Langkah berikutnya, klik ganda Button cmdNext, lalu ketikan kode ini. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
private void cmdNext_Click(object sender, EventArgs e) { if (indexArray < int.Parse(txtJumlahMatKul.Text)) { if (indexArray < int.Parse(txtJumlahMatKul.Text) - 1) { lblNoMatKul.Text = Convert.ToString(noMatKul); noMatKul++; } else { txtSKSPerMataKuliah.Enabled = false; comboNilaiPerMataKuliah.Enabled = false; cmdNext.Enabled = false; cmdHitung.Enabled = true; } sksPerMataKuliah[indexArray] = Parse(txtSKSPerMataKuliah.Text);
21
int.
E-trik Visual C# 2005 nilaiPerMataKuliah[indexArray] Parse(comboNilaiPerMataKuliah.Text); indexArray++;
18 19 20 21 22 23 24
=
char.
} txtSKSPerMataKuliah.Text = “”; txtSKSPerMataKuliah.Focus(); comboNilaiPerMataKuliah.Text = “A”; }
Keterangan Program: - Baris 3: periksa apakah isi variabel indexArray lebih kecil dari isi TextBox txtJumlahMatKul. - Baris 5: jika benar, periksa lagi apakah isi variabel indexArray lebih kecil dari isi TextBox txtJumlahMatKul kurang 1. - Baris 7-8: jika benar, isi Label lblNoMatKul dengan isi dari variabel noMatKul. Lalu tambah isi variabel noMatKul, sebanyak 1 poin. - Baris 12-15: jika salah, disable TextBox txtSKSPerMataKuliah, ComboBox comboNilaiPerMataKuliah.Enabled, dan Button cmdNext. Lalu enable cmdHitung. - Baris 17: isi array sksPerMataKuliah, dengan isi teks dari TextBox txtSKSPerMataKuliah. Untuk posisi indexnya ditentukan oleh nilai variabel indexArray. - Baris 18: isi array nilaiPerMataKuliah, dengan isi teks dari ComboBox comboNilaiPerMataKuliah. Untuk posisi indexnya juga ditentukan oleh nilai variabel indexArray. - Baris 19: tambah isi variabel indexArray, sebanyak 1 poin. - Baris 21 dan 22: kosongkan TextBox txtSKSPerMataKuliah dan fokus atau pindahkan posisi kursor ke TextBox txtSKSPerMataKuliah tersebut. - Baris 23: ubah posisi teks ComboBox comboNilaiPerMataKuliah, ke teks huruf A. 13. Selanjutnya, klik ganda pada Button cmdHitung, lalu ketikan kode yang berwarna merah berikut ini.
22
Object Oriented Programming (OOP) 1 2 3 4 5 6
private void cmdHitung_Click(object sender, EventArgs e) { gbHasilHitung.Visible = true; cmdHitung.Enabled = false; int jumlahMatKul = int.Parse(txtJumlahMatKul.Text); SKSSemesterIni objHitungSKS = new SKSSemesterIni(jumlahM atKul,sksPerMataKuliah,nilaiPerMataKuliah);
7 HitungTotalKNDiperoleh(); 8 HitungTotalSKSDiperoleh(); 9 lSKSDiperoleh, totalKNDiperoleh); txtIP.Text = IPSemesterIni.ToString(); int SKSSemesterIni = objHitungSKS.SKSYangDiperolehSemeste rBaru(IPSemesterIni); txtSKSSemesterIni.Text = SKSSemesterIni.ToString();
10 11 12 13
rusDibayar(SKSSemesterIni); txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar. ToString() + “,-”;
14 15 16 17
txtHargaPerSKS.Text = hargaPerSKS.ToString() + “,-”; }
Keterangan Program: -
gbHasilHitung. Baris 4: disable Button cmdHitung. Baris 5: ambil isi teks TextBox txtJumlahMatKul, lalu simpan ke dalam variabel jumlahMatKul. Baris 6: membuat objek baru dari class SKSSemesterIni dengan nama objHitungSKS. Baris 7: menghitung total KN dengan menggunakan method
23
E-trik Visual C# 2005 HitungTotalKNDiperoleh(), lalu simpan hasilnya ke variabel totalKNDiperoleh. Baris 8: menghitung total SKS yang diperoleh dengan menggunakan method HitungTotalSKSDiperoleh(), lalu simpan hasilnya ke variabel totalSKSDiperoleh. Baris 9: menghitung IP semester ini dengan menggunakan method HitungIPYangDiperoleh(), lalu simpan hasilnya ke variabel IPSemesterIni. Baris 10: menampilkan isi variabel IPSemesterIni melalui TextBox txtIP. Baris 11: menghitung SKS yang diperoleh untuk semester baru berdasarkan besar IP dengan menggunakan method SKSYangDiperolehSemesterBaru(), lalu simpan hasilnya ke variabel SKSSemesterIni. Baris 12: menampilkan isi variabel SKSSemesterIni melalui TextBox txtSKSSemesterIni. Baris 13: menghitung SKS yang harus dibayar dengan menggunakan method HitungSKSYangHarusDibayar(), lalu simpan hasilnya ke variabel SKSYangHarusDibayar. Baris 14: menampilkan isi variabel SKSYangHarusDibayar melalui TextBox txtTotalSKSYangHarusDiBayar. Baris 15: mengambil isi variabel hargaPerSKS milik class PembayaranSKS dengan menggunakan method GetHargaPerSKS(), lalu simpan hasilnya ke variabel lokal hargaPerSKS. Baris 16: menampilkan isi variabel hargaPerSKS melalui TextBox txtHargaPerSKS.
-
-
-
-
-
-
14. Selanjutnya, klik ganda pada Button cmdKeluar, lalu ketikan kode yang berwarna merah berikut ini, untuk keluar dari aplikasi. 1 2 3 4
private void cmdKeluar_Click(object sender, EventArgs e) { this.Close(); }
15. Setelah itu tekan tombol F6, untuk melakukan Build Solution. Jika ada
24
Object Oriented Programming (OOP) error, coba Anda teliti lagi apakah ada kode yang terlewat atau salah dalam pengetikannya. Jika tidak ada error, tekan tombol F5. Maka program akan dijalankan. Berikutnya kita akan melakukan testing atau ujicoba program. Langkah-langkah melakukan ujicoba program adalah sebagai berikut: 1. Setelah program dijalankan, isi Jumlah Mata Kuliah dengan angka 2, lalu tekan Oke. 2.
Data Mata Kuliah. Isi SKS dengan angka 4, lalu pilih Nilai A. Lalu tekan Next.
3. Isi SKS dengan angka 2, lalu pilih Nilai B. Lalu tekan Next. 4. Tekan tombol Hitung Hasil Penghitungan yang berisikan Indeks Prestasi (IP), SKS Semester Ini, Harga Per SKS, dan Total SKS Yang Harus Dibayar.
Gambar 6 Tampilan Running Program Sampai disini kita telah berhasil membuat program yang menerapkan konsep OOP. Selanjutnya, kita akan menambahkan satu buah class lagi untuk lebih memahami apa itu Polymorphisme. Langkah-langkahnya adalah berikut ini:
25
E-trik Visual C# 2005 1. Buka kembali class PembayaranSKS, ketikkan kode berikut di bawah class SKSSemesterIni. 1 2 3 4 5 6 7 8 9 10 11 12 13
// membuat turunan dari class PembayaranSKS // untuk melihat penerapan ciri Polymorphism public class UbahHargaSKS : PembayaranSKS { public UbahHargaSKS() {}
{ base.hargaPerSKS = hargaPerSKS; return hasil; } }
Keterangan Program: -
-
Baris 3: membuat class turunan dari class PembayaranSKS, dengan nama class UbahHargaSKS. Baris 5-6: membuat konstruktor. Baris 7: membuat method dengan nama HitungSKSYangHarusDibayar(). Kalau kita perhatikan nama method tersebut sama dengan nama method yang ada pada class PembayaranSKS, hanya saja parameter yang digunakan berbeda. Hal seperti ini disebut dengan istilah Method Overloading. Baris 9: mengisi variabel hargaPerSKS milik class induk (class PembayaranSKS) dengan isi dari variabel lokal hargaPerSKS. Catatan : Untuk mengakses variabel milik class induk pada C# tidak digunakan perintah super melainkan base.
26
Object Oriented Programming (OOP) 2. Setelah itu, klik ganda pada Button cmdHitung. Lalu hapus kode yang berwana merah. 1 2 3 4 5 6
private void cmdHitung_Click(object sender, EventArgs e) { . . . rusDibayar(SKSSemesterIni); txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar. ToString() + “,-”;
7 8
txtHargaPerSKS.Text = hargaPerSKS.ToString() + “,-”; 9
}
3. Lalu ganti kode tersebut dengan kode berikut ini. 1 2 3 4 5 6 7
private void cmdHitung_Click(object sender, EventArgs e) { . . . UbahHargaSKS objUbahHargaSKS = new UbahHargaSKS(); ngHarusDibayar(SKSSemesterIni, 45000); txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar. ToString() + “,-”;
8 9 10 11
txtHargaPerSKS.Text = hargaPerSKS.ToString() + “,-”; }
27
E-trik Visual C# 2005 Keterangan Program: -
-
Baris 6: membuat objek baru dari class UbahHargaSKS dengan nama objUbahHargaSKS. Baris 7: menghitung SKS yang harus dibayar dengan menggunakan method HitungSKSYangHarusDibayar(), lalu simpan hasilnya ke variabel SKSYangHarusDibayar. Perbedaannya, method HitungSKSYangHarusDibayar(), yang digunakan adalah milik class UbahHargaSKS, dimana method tersebut memiliki dua parameter. Baris-baris yang lain, pada dasarnya sama hanya saja method yang digunakan diakses dari objek yang berbeda yaitu, objUbahHargaSKS.
Sekarang coba jalankan lagi programnya, lakukan langkah-langkah yang sama dengan ujicoba sebelumnya. Lalu apakah hasilnya ? Hasil yang diperoleh hampir sama dengan yang sebelumnya, perbedaannya hanya pada Harga Per SKS,dan Total SKS Yang Harus Dibayar.
Gambar 7 Tampilan Running Program Lalu yang mana yang disebut polymorphisme ? Coba kita perhatikan penggunaan nama method yang sama pada class PembayaranSKS dan class UbahHargaSKS, yaitu method HitungSKSYangHarusDibayar().
28
Object Oriented Programming (OOP) Pada saat kita menggunakan method tersebut, kenapa compiler bisa “Memutuskan” method pada class UbahHargaSKS lah yang harus digunakan, bukannya yang ada pada class PembayaranSKS ? Jawabannya adalah, karena kita memanggil method tersebut dengan menggunakan parameter yang cocok dengan yang ada pada method class UbahHargaSKS. Perhatikan yang berikut ini, kode yang berwarna merah adalah parameternya. Method milik class PembayaranSKS HitungSKSYangHarusDibayar(SKSSemesterIni); Method milik class UbahHargaSKS HitungSKSYangHarusDibayar(SKSSemesterIni, 45000); Kemampuan untuk “Memutuskan” tersebutlah yang disebut dengan Polymorphisme.
29