• Tidak ada hasil yang ditemukan

Object Oriented Programming (OOP)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Object Oriented Programming (OOP)"

Copied!
28
0
0

Teks penuh

(1)

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)

contoh berikut ini:

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;

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; } . . .

(3)

berarti mengisi variabel a yang ada di luar method dengan nilai dari variabela yang berasal dari parameter.

- Baris 11: variabel hasil dideklarasikan dengan tipe data integer.

- Baris 12: mengkalikan variabel a lokal (yang berasal dari parameter) dengan2, lalu hasilnya disimpan ke dalam variabel hasil.

- Baris 13: variabel hasil adalah return value.

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.

Catatan :

Variabel, di dalam OOP sering disebut Data Member dan juga Properties.

Method, di dalam OOP sering disebut Member Function dan juga Karakteristik.

(4)

Nama konstruktor harus sama dengan nama class. Contoh penggunaan Konstruktor adalah :

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 PersegiEmpatadalah : 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;

} }

1 2

PersegiEmpat objBaru = new PersegiEmpat(15,10); textBox1.Text = objBaru.HitungKeliling().ToString();

(5)

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 methodHitungKeliling(), 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)”.

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.

Catatan :

Class Induk, sering juga disebut base class, atau class saja. Class Anak, sering juga disebut derived class, atau subclass.

(6)

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

(7)

letaknya kira-kira seperti pada gambar di bawah ini.

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 Value / Nilai Form1 FormBorderStyle FixedSingle

MaximizeBox False Size 450, 409 StartPosition CenterScreen

Text Menghitung SKS Yang Harus Dibayar Untuk Semester Ini groupBox1 (Name) gbDataMatKul

Font style Bold Location 15, 58

ComboBox GroupBox

(8)

Size 408, 106

Text Data Mata Kuliah Visible False

groupBox2 (Name) gbHasilHitung Font style Bold

Location 15, 177 Size 408, 143

Text Hasil Penghitungan Visible False

label1 Location 12, 22

Text Menang

label2 Location 18, 27

Text Mata Kuliah Nomor label3 (Name) lblNoMatKul

Location 133, 27 Text ? label4 Location 18, 55 Text SKS label5 Location 18, 81 Text Nilai label6 Location 18, 27

Text Indeks Prestasi (IP) label7 Location 18, 55

Text SKS Semester Ini label8 Location 18, 81

Text Harga Per SKS label9 Location 18, 107

Text Total SKS Yang Harus Dibayar label10 Location 184, 81

(9)

label11 Location 184, 107

Text Rp

textBox1 (Name) txtJumlahMatKul Location 127, 15

Size 25, 20

TabIndex 0

textBox2 (Name) txtSKSPerMataKuliah Location 136, 48

Size 50, 20

TabIndex 0 textBox3 (Name) txtIP

BackColor 255, 255, 192 Location 208, 22

Size 63, 20

textBox4 (Name) txtSKSSemesterIni BackColor 255, 255, 192 Location 208, 48

Size 63, 20

textBox5 (Name) txtHargaPerSKS BackColor 255, 255, 192 Location 208, 74

Size 113, 20

textBox6 (Name) txtTotalSKSYangHarusDiBayar BackColor 255, 255, 192

Location 208, 74

Size 113, 20

button1 (Name) cmdOke Font style Bold Location 185, 12

Size 46, 23

TabIndex 1

(10)

button2 (Name) cmdNext Font style Bold Location 231, 71

Size 67, 23

TabIndex 4

Text Next

button3 (Name) cmdHitung Font style Bold Location 318, 71

Size 67, 23

TabIndex 5

Text Hitung

button4 (Name) cmdKeluar Font style Bold Location 356, 342

Size 67, 23

TabIndex 6

Text Keluar

comboBox1 (Name) comboNilaiPerMataKuliah Location 136, 73

Size 50, 21

TabIndex 3

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

Gambar 3 Menambahkan Items pada ComboBox

Untuk tahap selanjutnya kita akan melakukan pengkodean. Langkah-langkahnya adalah sebagai berikut:

1. Klik satu kali pada Form1, lalu tekan tombol F7, ketikkan kode yang berwarna merah seperti dibawah ini.

Keterangan Program:

- Baris 1: mendeklarasikan array bertipe Integer, dengan panjang 10, dengan namasksPerMataKuliah.

- Baris 2: mendeklarasikan array bertipe char, dengan panjang 10, dengan namanilaiPerMataKuliah.

- 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.

1. Ketik huruf A - E 2. Klik OK 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(); }

(12)

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.

Gambar 4 Menambah Item Baru

4. Pada kotak dialog tersebut, pilih Class dan isi dengan nama PembayaranSKS.cs, klik Add.

Gambar 5 Memberi Nama Class Baru

5. Kemudian ketikkan kode berikut ini.

1. Klik di sini

2. Pilih ini

1. Pilih Class

2. Isi Nama Class

(13)

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)

diakses secara langsung dari luar class.

- B a r i s 1 4 - 1 9 : m e m b u a t m e t h o d d e n g a n n a m a HitungSKSYangHarusDibayar(), yang berguna untuk menghitung berapa banyak SKS yang harus dibayar untuk bulan ini. Yang didapat dari rumusjumlahSKSYangDiperoleh 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)

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.

- B a r i s 2 1 - 2 7 : m e m b u a t m e t h o d d e n g a n n a m a 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.

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;

} }

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)

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, int[] 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)

Keterangan Program:

- Baris 2: membuat class dengan nama SKSSemesterIni, yang diturunkan dari class IPSemesterIni.

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

(18)

- 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.

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. 1 2 3 4 5 6 7

private void txtJumlahMatKul_TextChanged(object sender, EventArgs e) { if (int.Parse(txtJumlahMatKul.Text) > 10) txtJumlahMatKul.Text = “10”; else if (int.Parse(txtJumlahMatKul.Text) <= 0) txtJumlahMatKul.Text = “1”; }

(19)

10. Lalu, klik ganda pada Button cmdOke, lalu ketikan kode yang berwarna merah berikut ini.

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 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; } 1 2

private void txtJumlahMatKul_TextChanged(object sender, EventArgs e)

(20)

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. 3 4 5 6 7 if (txtSKSPerMataKuliah.Text == “”) cmdNext.Enabled = false; else cmdNext.Enabled = true; } 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] = int. Parse(txtSKSPerMataKuliah.Text);

(21)

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,

ComboBoxcomboNilaiPerMataKuliah.Enabled, dan Button cmdNext. LaluenablecmdHitung.

- 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.

18 19 20 21 22 23 24 nilaiPerMataKuliah[indexArray] = char. Parse(comboNilaiPerMataKuliah.Text); indexArray++; } txtSKSPerMataKuliah.Text = “”; txtSKSPerMataKuliah.Focus(); comboNilaiPerMataKuliah.Text = “A”; }

(22)

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 SKSSemesterInidengan nama objHitungSKS.

- Baris 7: menghitung total KN dengan menggunakan method 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

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

HitungTotalKNDiperoleh(); HitungTotalSKSDiperoleh(); lSKSDiperoleh, totalKNDiperoleh); txtIP.Text = IPSemesterIni.ToString();

int SKSSemesterIni = objHitungSKS.SKSYangDiperolehSemeste rBaru(IPSemesterIni); txtSKSSemesterIni.Text = SKSSemesterIni.ToString(); rusDibayar(SKSSemesterIni); txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar. ToString() + “,-”; txtHargaPerSKS.Text = hargaPerSKS.ToString() + “,-”; }

(23)

HitungTotalKNDiperoleh(), lalu simpan hasilnya ke variabel totalKNDiperoleh.

- Baris 8: menghitung total SKS yang diperoleh dengan menggunakan methodHitungTotalSKSDiperoleh(), 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 methodHitungSKSYangHarusDibayar(), lalu simpan hasilnya ke variabelSKSYangHarusDibayar.

- 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.

15. Setelah itu tekan tombol F6, untuk melakukan Build Solution. Jika ada 1

2 3 4

private void cmdKeluar_Click(object sender, EventArgs e) {

this.Close(); }

(24)

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 NilaiA. Lalu tekan Next.

3. IsiSKS dengan angka 2, lalu pilih NilaiB. Lalu tekan Next.

4. Tekan tombol Hitung Hasil Penghitungan yang berisikan Indeks Prestasi (IP), SKS Semester Ini, Harga Per SKS, danTotal 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.

(25)

1. Buka kembali class PembayaranSKS, ketikkan kode berikut di bawah classSKSSemesterIni.

Keterangan Program:

- Baris 3: membuat class turunan dari class PembayaranSKS, dengan nama classUbahHargaSKS.

- 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. 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; } } Catatan :

Untuk mengakses variabel milik class induk pada C# tidak digunakan perintahsuper melainkan base.

(26)

2. Setelah itu, klik ganda pada Button cmdHitung. Lalu hapus kode yang berwana merah.

3. Lalu ganti kode tersebut dengan kode berikut ini. 1 2 3 4 5 6 7 8 9

private void cmdHitung_Click(object sender, EventArgs e) { . . . rusDibayar(SKSSemesterIni); txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar. ToString() + “,-”; txtHargaPerSKS.Text = hargaPerSKS.ToString() + “,-”; } 1 2 3 4 5 6 7 8 9 10 11

private void cmdHitung_Click(object sender, EventArgs e) {

. . .

UbahHargaSKS objUbahHargaSKS = new UbahHargaSKS(); ngHarusDibayar(SKSSemesterIni, 45000);

txtTotalSKSYangHarusDiBayar.Text = SKSYangHarusDibayar. ToString() + “,-”;

txtHargaPerSKS.Text = hargaPerSKS.ToString() + “,-”; }

(27)

Keterangan Program:

- Baris 6: membuat objek baru dari class UbahHargaSKSdengan 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,danTotal 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)

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 parameter-nya.

Method milik class PembayaranSKS

HitungSKSYangHarusDibayar(SKSSemesterIni);

Method milik class UbahHargaSKS

HitungSKSYangHarusDibayar(SKSSemesterIni,45000);

Kemampuan untuk “Memutuskan” tersebutlah yang disebut dengan Polymorphisme.

Gambar

Gambar 1   Tampilan Program Yang Akan Dibuat
Tabel 1. Properties dan Value yang Akan Diubah Nama Kontrol Nama Properties Value / Nilai Form1 FormBorderStyle FixedSingle
Gambar 3   Menambahkan Items pada ComboBox
Gambar 5   Memberi Nama Class Baru
+3

Referensi

Dokumen terkait

Rapat Koordinasi Protokol adalah rapat yang diselenggarakan oleh Biro Protokol dan Persidangan, Sekretariat Wakil Presiden bersama-sama dengan Direktorat Jenderal Protokol

Namun demikian virus dan bakteri berkapsul dapat diambil oleh sel dendritik dengan proses makropinositosis yang tidak tergantung pada reseptor, sehingga molekul yang

Transito Adiman Jati/Jashinta Maria

Sampel yang digunakan dalam penelitian ini sebanyak 4 perusahaan Tobacco Manufacturers yang go public dan terdaftar di PT Bursa Efek Indonesia tahun 2005 – 2008, sedangkan jenis

Passing adalah salah satu metode mengoper bola dari obyek satu ke obyek yang lain di lapangan dengan menggunakan kaki. Tujuan mengoper bola antara lain untuk menyerang, bertahan

Apabila dilihat dari nilai Ketertiban dan nilai ketentraman pelaksanaan Undang-Undang Nomor 52 Tahun 2009 Tentang Perkembangan Kependudukan Dan Pembangunan Keluarga

(4) Penentuan masa manfaat Aset Tetap sebagaimana dimaksud pada ayat (1) dilakukan dengan berpedoman pada masa manfaat Aset Tetap yang disajikan dalam tabel masa

ABSTRAK' Penelitian ini bertujuan untuk mengetahui pengaruh Lokasi, Harga dan Label Halal Terhadap Keputusan Pembelian Produk Wardah Malang. Jenis penelitian ini adalah