Kamis, 21 Februari 2013

IPLEMENTASI OOP DENGAN MENGGUNAKAN BAHASA C++


Irvan Faturrahman
1112091000035 / TI  1A

IPLEMENTASI OOP DENGAN MENGGUNAKAN BAHASA C++
Struktur dan kelas
Dalam C++, tipe data struktur yang dideklarasikan dengan kata kunci struct, dapat mempunyai komponen dengan sembarang tipe data, baik tipe data dasar maupun tipe data turunan, termasuk fungsi. Dengan kemampuan ini, tipe data struktur menjadi sangat berdaya guna.
Misalnya, kita ingin membentuk tipe data struktur yang namanya kotak. Maka dapat dideklarasikan sebagai berikut:
struct tkotak
{
double panjang;
double lebar;
}; tkotak kotak;
Untuk memberi nilai ukuran kotak tersebut, kita dapat menggunakan perintahperintah ini:
kotak.panjang = 10;
kotak.lebar = 7;
Untuk memberi nilai panjang dan lebar kotak, salah satu caranya adalah seperti di atas. Cara lain untuk memberi nilai panjang  dan lebar adalah dengan membentuk suatu fungsi. Karena fungsi ini hanya digunakan untuk memberi nilai data panjang dan lebar suatu kotak, tentunya fungsi ini khusus milik objek kotak, sehingga harus dianggap sebagai anggota struktur kotak. C++ sebagai bahasa pemrograman dapat mendefinisikan anggota tipe struktur yang berupa fungsi.
Dengan menambah fungsi tersebut, maka struktur kotak menjadi lebih jelas bentuknya.
struct tkotak {
double panjang;
double lebar;
void SetUkuran(double pj, double lb)
{
panjang = pj;43
lebar = lb; }; };
tkotak kotak;
dengan tipe struktur kotak seperti itu, untuk memberi nilai panjang dan lebar hanya dengan memanggil fungsi SetUkuran() kotak.SetUkuran(10,7);
Selain punya ukuran panjang dan lebar, kotak juga mempunyai keliling dan luas. Dengan demikian, kita dapat memasukkan fungsi untuk menghitung keliling dan luas ke dalam struktur kotak.
Sebagai catatan, bahwa definisi fungsi yang menjadi anggota struktur dapat ditempatkan di luar tubuh struktur. Dengan cara ini maka deklarasi struktur kotak menjadi seperti berikut:
struct tkotak {
double panjang;
double lebar;
void SetUkuran(double pj, double lb);
double Keliling();
double Luas(); };
tkotak kotak;
contoh penerapan struktur kotak dapat dilihat dalam program berikut:
#include<iostream.h>
#include<conio.h>
struct tkotak {
double panjang;
double lebar;
void SetUkuran(double pj, double lb);
double Keliling();
double Luas();
};
int main() {
tkotak kotak;
kotak.SetUkuran(10,7);
cout<<"Panjang : "<<kotak.panjang<<endl;
cout<<"Lebar : "<<kotak.lebar<<endl;
cout<<"Keliling : "<<kotak.Keliling()<<endl;
cout<<"Luas : "<<kotak.Luas()<<endl;
getch();
return 0;
}
void tkotak::SetUkuran(double pj, double lb) {
panjang = pj;
lebar = lb;
}
double tkotak::Keliling() {
return 2*(panjang+lebar); }
double tkotak::Luas() {
return panjang*lebar; }
Tampilan Output:
Panjang : 10
Lebar : 7
Keliling : 34
Luas : 70
Bentuk program di atas, adalah contoh gaya pemrograman berorientasi prosedur (terstruktur) yang sudah mengubah pola pikirnya menjadi berorientasi objek. Dalam pemrograman berorientasi objek, jika kita telah menentukan suatu objek tertentu, maka objek tersebut kita definisikan dalam bentuk tipe baru yang namanya kelas.
Tipe data kelas didefinisikan dengan kata kunci (keyword) class, yang merupakan generalisasi dari pernyataan struct. Pernyataan struct secara umum digantikan dengan pernyataan class.
Untuk dapat mengakses data panjang dan lebar pada kelas tkotak harus dilakukan oleh fungsi yang menjadi anggota kelas dan bersifat public. Pada deklarasi kelas tkotak, satu-satunya jalan untuk memberi nilai panjang dan lebar adalah dengan menggunakan fungsi SetUkuran(). Untuk mengambil nilai panjang dan lebar juga harus dilakukan oleh fungsi yang menjadi anggota kelas.
Salah satu keistimewaan C++ adalah pengkapsulan. Pengkapsulan adalah mengkombinasikan suatu struktur dengan fungsi yang memanipulasinya untuk membentuk tipe data baru yaitu kelas(class).
Kelas akan menutup rapat baik data maupun kode. Akses item di dalam kelas dikendalikan. Pengendalian ini tidak hanya berupa data tetapi juga kode. Saat kelas akan digunakan, kelas harus sudah dideklarasikan. Yang penting, pemakai kelas mengetahui deskripsi kelas, tetapi bukan implementasinya. Bagi pemakai, detail internal kelas tidak penting. Konsep ini disebut penyembunyian informasi (information hiding).
Untuk menggunakan kelas, kita perlu mengetahui sesuatu tentangnya. Kita perlu mengetahui fungsi apa yang bisa digunakan dan data apa saja yang dapat diakses. Fungsi yang dapat digunakan dan data yang dapat diakses disebut antarmuka pemakai (user interface). Antarmuka pemakai menceritakan bagaimana kelas berperilaku, bukan bagaimana kelas dibuat. Kita tidak perlu mengetahui implementasi kelas. Sekali kelas dibuat, kita bisa memakainya berulang-ulang. Bagi
pandangan pemakai, kelas adalah kotak hitam dengan perilaku tertentu. Kendali Akses terhadap Kelas Tugas   kelas   adalah   untuk   menyembunyikan   informasi   yang   tidak diperlukan oleh pemakai. Ada tiga macam pemakai kelas: 1.  kelas itu sendiri 2. pemakai umum 3. kelas turunan Setiap macam pemakai mempunyai hak aksesnya masingmasing. Hak akses ini ditandai dengan kenampakan anggota kelas. Kelas pada C++ menawarkan tiga atas kenampakan anggota kelas (baik anggota data maupun fungsi anggota):
1. private
Anggota kelas private mempunyai kendali akses yang paling ketat. Dalam bagian private, hanya fungsi anggota dari kelas itu yang dapat mengakses anggota private atau kelas yang dideklarasikan sebagai teman (friend).
2. public
Dalam bagian public, anggotanya dapat diakses oleh fungsi anggota kelas itu sendiri, instance kelas, fungsi anggota kelas turunan. Suatu kelas agar bisa diakses dari luar kelas, misalnya dalam fungsi main(), perlu mempunyai hak akses publik. Hak akses ini yang biasanya digunakan sebagai perantara antara kelas dengan dunia luar.
3. protected
Suatu kelas dapat dibuat berdasarkan kelas lain. Kelas baru ini mewarisi sifat-sifat dari kelas dasarnya. Dengan cara ini bisa dibentuk kelas turunan dari beberapa tingkat kelas dasar. Bila pada kelas dasar mempunyai anggota dengan hak akses terproteksi, maka anggota kelas ini akan dapat juga diakses oleh kelas turunannya. Anggota kelas terproteksi dibentuk dengan didahului kata kunci protected. Pada bagian protected, hanya fungsi anggota dari kelas dan kelas-kelas turunannya
yang dapat mengakses anggota.

Konstruktor dan Destruktor
Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance). Konstruktor ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktor tidak mempunyai tipe hasil, bahkan juga bukan bertipe void. Biasanya konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi memori secara dinamis. Meskipun konstruktor tidak harus ada di dalam kelas, tetapi jika diperlukan konstruktor dapat lebih dari satu. Tiga jenis konstruktor:
1. Konstruktor default : tidak dapat meneriman argumen, anggota data diberi nilai awal tertentu
2. Konstruktor penyalinan dengan parameter : anggota data diberi nilai awal berasal dari parameter.
3. Konstruktor penyalinan objek lain : parameter berupa objek lain, anggota data diberi nilai awal dari objek lain.

Destruktor
Destruktor adalah pasangan konstruktor. Pada saat program menciptakan objek secara otomatis konstruktor akan dijalankan, yang biasanya dimaksudkan untuk memberi nilai awal variabel private. Sejalan dengan ini, C++ menyediakan fungsi destruktor (penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya kehidupan objek. Fungsi destruktor adalah untuk
mendealokasikan memori dinamis yang diciptakan konstruktor. Nama destructor sama dengan nama kelas ditambah awalan karakter tilde(~).

Pewarisan (Inheritance)
Suatu kelas dapat diciptakan berdasarkan kelas lain. Kelas baru ini mempunyai sifat-sifat yang sama dengan kelas pembentuknya, ditambah sifat-sifat khusus lainnya. Dengan pewarisan kita dapat menciptakan kelas baru yang mempunyai sifat sama dengan kelas lain tanpa harus menulis ulang bagian-bagian yang sama. Pewarisan merupakan unsur penting dalam pemrograman berorientasi
objek dan merupakan blok bangunan dasar pertama penggunaan kode ulang (code reuse).
Jika tidak ada fasilitas pewarisan ini, maka pemrograman dalam C++ akan tidak banyak berbeda dengan pemrograman C, hanya perbedaan dalam pengkapsulan saja yang menggunakan kelas sebagai pengganti struktur. Yang perlu menjadi catatan di sini adalah bahwa data dan fungsi yang dapat diwariskan hanya yang bersifat public dan protected. Untuk data dan fungsi private tetap tidak dapat diwariskan. Hal ini disebabkan sifat protected yang hanya dapat diakses dari dalam kelas saja.
Sifat pewarisan ini menyebabkan kelas-kelas dalam pemrograman berorientasi objek membentuk hirarki kelas mulai dari kelas dasar, kelas turunan pertama, kelas turunan kedua dan seterusnya. Sebagai gambaran misalnya ada hirarki kelas unggas.
Unggas
Ayam Burung Bebek
Ayam Kampung Ayam Hutan
Sebagai kelas dasar adalah Unggas. Salah satu sifat Unggas adalah bertelur dan bersayap. Kelas turunan pertama adalah Ayam, Burung dan Bebek. Tiga kelas turunan ini mewarisi sifat kelas dasar Unggas yaitu bertelur dan bersayap. Selain mewarisi sifat kelas dasar, masing-masing kelas turunan mempunyai sifat khusus, Ayam berkokok, Burung terbang dan Bebek berenang. Kelas Ayam punya kelas turunan yaitu Ayam Kampung dan Ayam Hutan. Dua kelas ini mewarisi sifat kelas Ayam yang berkokok. Tetapi dua kelas ini juga punya sifat yang berbeda, yaitu: Ayam Kampung berkokok panjang halus sedangkan Ayam hutan berkokok pendek dan kasar.

1 komentar: