Algorithms and Programming C/C++ SYS Course 3
Object Oriented Programming
Object Oriented Programming atau Pemrograman Berorientasi objek merupakan sebuah paradigma pemrograman yang didasarkan dan dibuat berdasarkan sebuah objek. Contohnya seperti kita memiliki sebuah mainan radio control dimana mobil radio control tersebut merupakan objeknya dan remote controlnya merupakan sebuah alat kendalinya. Mobil RCnya dapat kita kendalikan maju, mundur, kekanan dan kekiri melalui remote controlnya, hal tersebut merupakan contoh konsep dasar dari pemrograman berorientasi objek. Bahasa Pemrograman C/C++ sudah mendukung adanya Object Oriented Programming, yaitu dengan adanya fitur function (fungsi).
Function (Fungsi)
Sebelum mengenal sebuah fungsi, ada baiknya kita kembali ke materi sebelumnya yaitu pengertian tentang variable. Fungsi kegunaannya hampir mirip dengan variable, jika variable digunakan untuk menyimpan sebuah nilai, maka fungsi digunakan untuk menyimpan sebuah potongan blok program. Fungsi dalam C/C++ merupakan suatu bagian (blok program) dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Pada pembuatan program yang kompleks dan memiliki banyak fitur, kita diharuskan menggunakan fungsi. Fungsi diperlukan agar mempermudah kita dalam membaca sebuah kode program dan mempermudah untuk merawat kodenya. Dengan adanya sebuah fungsi, kita tidak perlu menulis kode sepanjang gerbong kereta api di program utama, dan kita dapat memecah atau membaginya lalu tinggal memanggil fungsinya saja didalam program utama. Dan itu juga akan mempersingkat penulisan dari program utama tersebut nantinya.
Fungsi memiliki parameter yang dapat dipergunakan untuk memasukkan atau menampung variabel kedalam sebuah fungsi. Dalam pendeklarasian parameter pada sebuah fungsi, kita juga dapat memasukkan default argument/parameter.
Fungsi juga dapat mengembalikan nilai dengan cara menggunakan keyword return yang di taruh didalam blok program fungsi itu sendiri, untuk mengembalikan nilai yang ingin kita kembalikan kedalam program utama.
Tujuan utama sebuah fungsi adalah bertujuan untuk menghindari terjadinya duplikasi kode. Tujuannya tak lain agar kode tersebut bisa digunakan kembali, hanya dengan memanggil nama fungsinya saja.
Dalam C/C++ terdapat beberapa hal yang perlu diperhatikan dalam mendeklarasikan sebuah fungsi
- Menggunakan keyword return (Fungsi yang mengembalikan nilai)
- Terdapat parameter/argument fungsi
- Fungsi di C/C++ mendukung parameter yang memiliki initial value/default parameter(nilai awal)
Umumnya fungsi dibedakan menjadi 2 kategori
- Fungsi yang tidak mengembalikan Nilai
- Fungsi yang mengembalikan Nilai
Fungsi yang tidak mengembalikan nilai (Fungsi Void)
Merupakan sebuah fungsi yang berguna untuk menampung sebuah blok program dengan tujuan untuk memperpendek baris program saja, biasanya fungsi ini dipanggil secara independen dalam blok program seperti contoh dibawah ini:
1 |
|
Fungsi yang mengembalikan Nilai
Merupakan sebuah fungsi yang akan mengembalikan nilai tertentu. dan biasanya fungsi ini dipanggil lalu disimpan kedalam sebuah variable seperti contoh dibawah ini:
1 |
|
Blok Program di Dalam Fungsi
Setelah mengetahui Fungsi, kategori dan penggunaannya maka yang selanjutnya kita pelajari adalah isi didalam blok program fungsinya. Sebelum mempelajari isi dari blok program didalam sebuah fungsi, ada baiknya anda memahami konsep dasar terkait hal tersebut. Misalkan jika anda memiliki sebuah kartu debit/kredit dengan logo VISA/MASTERCARD maka anda dapat menggunakan kartu tersebut sebagai alat transaksi pembayaran secara nasional ataupun internasional, tetapi jika kartu debit/kredit anda tidak terdapat logo VISA/MASTERCARD, maka anda tidak dapat menggunakan kartu tersebut sebagai alat transaksi pembayaran secara internasional dan hanya berlaku di nasional saja. Dari konsep pembatasan akses dan fitur pada kartu kredit/debit tersebut maka blok program didalam fungsi dan diluar fungsi pun juga memiliki konsep yang sama. Jika sudah memahami konsep tersebut maka selanjutnya kita akan berkenalan dengan variable global dan lokal.
Variable Global
Variable yang dapat digunakan di blok program manapun (didalam blok program fungsi ataupun diluar blok program deklarasi fungsi). karena berlaku secara global, maka variable global dapat dipanggil dan digunakan di manapun entah itu di satu file yang sama ataupun di luar file yang berbeda.
Variable Lokal
Merupakan variable yang hanya dapat digunakan didalam sebuah blok program fungsi/class. karena bersifat terbatas, maka dia hanya dapat digunakan dalam blok program deklarasi fungsi/class dan tidak bisa digunakan diluar blok program fungsi.
Contoh-Contoh Fungsi:
Fungsi dengan parameter yang mengembalikan nilai: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
28
29
30
31
using namespace std;
// Contoh fungsi dengan parameter
int g_int_hasil = 0; // Mendeklarasikan Variable Global
int fg_int_fungsiTambahBerparameter( int l_int_nilai1, int l_int_nilai2 ) { // Deklarasi Fungsi Berparameter
int l_int_hasil = l_int_nilai1 + l_int_nilai2; // Mendeklarasikan Variable lokal untuk menampung hasil
// Mengeluarkan nilai variable lokal dalam sebuah fungsi
// 1. Cara Pertama dengan memindahkannya kedalam variable global (Untuk Bahasa Pemrograman C/C++)
// g_int_hasil = l_int_hasil;
// printf("%i", g_int_hasil);
// 2. Cara Kedua menjadikan fungsi mengembalikan nilai variable lokal tersebut (Berfungsi di Python dan C/C++)
return l_int_hasil;
}
int main() {
// (void) fg_int_fungsiTambahBerparameter(4, 5); // Cara 1 (Menampung nilai penjumlahan di variabel Global)
g_int_hasil = fg_int_fungsiTambahBerparameter(5, 6); // Cara 2 (Memanggil fungsi lalu nilai kembaliannya/return disimpan kedalam variabel g_int_hasil)
printf("%i", g_int_hasil);
return 0;
}
Fungsi dengan default parameter/initial value yang tidak mengembalikan nilai:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using namespace std;
void fg_fungsiKurangBerparameter( int l_int_nilai1 = 1, int l_int_nilai2 = 1 ) { // Deklarasi Fungsi dengan Default parameter
int l_int_hasil = l_int_nilai1 + l_int_nilai2;
printf("%i", l_int_hasil);
}
int main() {
fg_fungsiKurangBerparameter(); // Tanpa diisi dengan nilai, maka si fungsi akan otomatis menggunakan nilai default parameter yaitu nilai1 sebagai 5 dan nilai2 sebagai 1
return 0;
}
Recursive Function
Adalah sebuah fungsi yang memanggil dirinya sendiri ketika dideklarasikan, biasanya digunakan sebagai pengganti perulangan, tetapi jarang digunakan karena memakan cukup banyak resource/sumber daya komputer sehingga komputer akan bekerja lebih keras dibandingkan dengan menggunakan konsep perulangan biasa.
Berikut adalah contoh penggunaan dari fungsi rekursif pada program faktorial:
1 | faktorial(5) = 5 * faktorial(4) |
Maka faktorial(5) = 5 4 3 2 1, akan menghasilkan 120
1 |
|
Class & Object
Dalam C++, kelas dan objek merupakan blok dasar yang mengarah ke pemrograman Berorientasi Objek. Dalam artikel ini, kita akan mempelajari tentang kelas dan objek C++, melihat cara kerjanya, dan cara mengimplementasikannya dalam program C++.
Class
Class adalah prototype, atau blueprint, atau rancangan yang mendefinisikan variable dan method-method pada seluruh objek tertentu. Class berfungsi untuk menampung isi dari program yang akan di jalankan, di dalamnya berisi atribut / type data dan method untuk menjalankan suatu program. Dalam C++ sendiri class didefinisikan dengan keyword class dan diikuti oleh penamaan kelas tersebut “class nama_kelas {}”. Pemanggilan kelas sendiri sama seperti pemanggilan sebuah fungsi/method dalam sebuah program yaitu memanggil nama class tersebut beserta parameter classnya (jika memiliki parameter). Biasanya class berisi banyak method/fungsi yang merupakan turunan sifat dari kelas tersebut.
Class sendiri memiliki banyak bentuk dalam setiap Bahasa pemrograman yang berbeda, seperti abstrak class, data class dan lain sebagainya. Class juga dapat memiliki keterkaitan dengan class lainnya yang dapat disebut sebagai class turunan atau inheritance, Inheritance merupakan sebuah hubungan Parent Class (Kelas Induk) dengan Child Class (Kelas Anak) yang dimana memiliki pewarisan sifat dan pewarisan variabel turunan yang sama.
Contoh sederhana dalam class, kita punya sebuah mobil dimana mobil tersebut memiliki sebuah attribut berupa mesin, roda, aki, dsb. Mobil merupakan sebuah class, sedangkan mesin, roda, aki, dsb merupakan sebuah fungsi.
Ada 2 cara untuk membuat method/fungsi member pada kelas:
- Deklarasi didalam kelas
- Deklarasi diluar kelas
Terdapat 3 Access Specifier pada Class di C++ yaitu:
- Public: Member yang dideklarasikan sebagai publik dapat diakses dari luar kelas.
- Private: Member yang dideklarasikan sebagai privat hanya dapat diakses dalam kelas itu sendiri.
- Protected: Member yang dideklarasikan sebagai protected dapat diakses dalam kelas dan kelas turunan (Inheritance).
Lalu juga terdapat 4 jenis constructor yang digunakan pada class di C++ yaitu:
- Constructor Default: Konstruktor yang tidak mengambil argumen disebut konstruktor default.
- Constructor Berparameter: Jenis konstruktor ini mengambil argumen untuk menginisialisasi anggota data.
- Constructor Salinan: Konstruktor salinan membuat objek dari objek yang sudah ada dengan cara menyalinnya.
- Constructor Pemindahan: Konstruktor pemindahan juga membuat objek dari objek yang sudah ada tetapi dengan cara memindahkannya.
Object
Class dan objek merupakan kedua hal yang tidak dapat dipisahkan. Ketika sebuah kelas dideklarasikan, itu tidak akan berjalan jika tidak membuat sebuah objek. Ketika class dideklarasikan, class merupakan spesifikasi dan hanya sebuah program blueprint. Objek akan menggunakan class sebagai spesifikasinya nanti. Untuk menggunakan dan mengakses data dan fungsi yang dideklarasikan dalam kelas, Anda perlu membuat sebuah objek.
berikut adalah contoh sederhana dalam mendeklarasikan sebuah class dan menggunakannya di objek:
1 |
|
Method Getter
Merupakan sebuah metode untuk melakukan pengambilan data dari class. biasanya method getter digunakan ketika ada data yang perlu di export atau dikeluarkan dari class.
Anda bisa menggunakan method getter dengan membuat dan menggunakan fungsi yang mengembalikan nilai pada deklarasi class
Method Setter
Merupakan sebuah metode untuk mengubah data pada class. Terkadang setter sangat dibutuhkan ketika terdapat data yang bersifat immutable atau data yang perlu diubah
Anda bisa menggunakan metode setter sama seperti melakukan deklarasi fungsi constructor pada class.
Berikut adalah contoh dari implementasi method getter dan setter:
1 |
|
Array/List
List/Array merupakan daftar yang memiliki banyak data didalamnya. Umumnya list memiliki index (sebuah urutan dalam kumpulan data list) yang dimulai dari 0. Untuk mendeklarasikan sebuah list dapat menambahkan kurung siku “[]” setelah nama variabel lalu dideklarasikan dengan kurung kurawal “{}” dan setiap data dalam list dipisahkan dengan koma “,”.
Contoh dasar penggunaan list:
1 |
|
Latihan Object Oriented Programming
Kerjakan Latihan Berikut ini untuk mengetes pemahamanmu tentang Object Oriented Programming.
Latihan Fungsi
Buatlah sebuah fungsi yang mengembalikan nilai hasil tambah, kurang, bagi, kali, dan modulus serta memiliki 2 parameter variable dan memiliki initial value (nilainya bebas). lalu buatlah satu fungsi void untuk mencetak nama dan asal kalian di paling atas program. Buatlah program tersebut berulang hingga dihentikan oleh user. berikut adalah contoh outputnya: (estimasi 30 Menit)
1 | OUTPUT: |
Latihan Class & Object
Latihan Class & Object 1
Buatlah sebuah program yang mengimplementasikan sebuah class yang memiliki nama class mahasiswa dan memiliki method yang dapat digunakan untuk menampilkan biodata mahasiswa yang diinputkan oleh user. (estimasi 15 menit)
Latihan Class & Object 2
Buatlah sebuah kelas yang menerapkan method getter dan setter dimana menggunakan implementasi program percabangan serta perulangan seperti pada Latihan sebelumnya. Program menerima deklarasi nilai inputan dari user dan menampungnya dalam sebuah kelas dan variabel didalam kelas tersebut dapat dimanipulasi serta dirubah sesuai keinginan dan perubahan yang diberikan oleh user melalui inputan user itu sendiri serta dapat ditampilkan menggunakan method getter dan setter. (estimasi 45 menit)
Contoh Output: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
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 2 (Diinput User)
Nama: null
Nilai: null
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 1 (Diinput User)
Masukkan Namamu: ARZ (Diinput User)
Masukkan Nilaimu: 95 (Diinput User)
Data Berhasil Ditambahkan
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 2 (Diinput User)
Nama: ARZ
Nilai: 95
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 3 (Diinput User)
Apa yang ingin diubah (Nama/Nilai): Nilai (Diinput User)
Masukkan Nilai: 100 (Diinput User)
Data Nilai Berhasil Dirubah
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 2 (Diinput User)
Nama: ARZ
Nilai: 100
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 4 (Diinput User)
Data Berhasil Dihapus
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 2 (Diinput User)
Nama: null
Nilai: null
===== Program OOP =====
1. Mendeklarasikan Objek
2. Menampilkan Objek
3. Merubah Nilai Objek
4. Menghapus Objek
5. Keluar Dari Program
Masukkan Pilihan Berupa Angka (1/2/3/4/5): 5 (Diinput User)
Terima Kasih Sudah Menggunakan Program Saya
Latihan List/Array
Buatlah sebuah list daftar nama lalu buat menu yang dapat menampilkan, mengedit dan menghapus list tersebut dan buat program tersebut secara berulang, implementasikan struktur percabangan, perulangan serta fungsi pada program tersebut. Berikut ini adalah outputnya: (estimasi 30 menit)
1 | Menu |