CLASS
Analogi Struktur dan Kelas Kelas merupakan struktur data dari obyek.
#include <iostream.h> #include <conio.h> #include <string.h> struct buku { char judul[35]; char pengarang[25]; int jumlah; }; void main() clrscr(); buku novel; strcpy(novel.judul, “Meriam Benteng Navarone”); strcpy(novel.pengarang, “Alistair MacLean”); novel.jumlah = 12; cout << novel.judul << endl; cout << novel.pengarang << endl; cout << novel.jumlah << endl; }
sebuah kelas (class) dapat dibuat seperti struktur, dengan mengantikan kata struct menjadi class class ditambah baris yang berisi public diikuti tanda “ : “
#include <iostream.h> #include <conio.h> #include <string.h> class buku { public : char judul[35]; char pengarang[25]; int jumlah; }; void main() clrscr(); buku novel; strcpy(novel.judul, “Meriam Benteng Navarone”); strcpy(novel.pengarang, “Alistair MacLean”); novel.jumlah = 12; cout << novel.judul << endl; cout << novel.pengarang << endl; cout << novel.jumlah << endl; }
Kata kunci public pada kelas buku didepan biasa disebut sebagai penentu akses (access specifer). Selain public juga terdapat penentu akses berupa private dan protected. Penentu akses privete biasa digunakan pada kelas untuk memproteksi anggota-anggota tertentu, agar tidak dapat diakses diluar kelas secara langsung.
Misalnya bila terdapat data judul buku, nama pengarang, jumlah buku diawal perancangan harus dipikirkan fungsi-fungsi dasar yang digunakan untuk mengakses ketiga data tersebut. Fungsi-fungsi tersebut berupa mengisikan data dan menampilkan data. Kemudian juga perlu direncanakan, data atau fungsi mana yang boleh diakses diluar obyek dan hanya dipergunakan secara internal oleh obyek itu sendiri. Dalam hal ini penentu akses public atau privete yang menentukannya.
#include <iostream.h> #include <conio.h> #include <string.h> class buku { privete : char judul[35]; char pengarang[25]; int jumlah; public : void inisialisasi ( char *judul, char *pengarang, int *jumlah) strcpy(judul, Judul ); strcpy(pengarang, Pengarang ); jumlah = Jumlah ; } void info () cout << “Judul : “ << judul << endl; cout << “Pengarang : “ << pengarang << endl; cout << “Jumlah Buku : “ << jumlah << endl; };
void main() { clrscr(); buku novel; novel.inisialisasi ( “Meriam Benteng Navarone”, “Alistair MacLean”,12 ); novel.info (); }
jika terdapat lebih dari satu obyek dan obyek-obyek tersebut mempunyai kelas yang sama, data anggota pada masing-masing obyek bersifat terpisah.
void main() { clrscr(); buku novel, fiksi novel.inisialisasi ( “Meriam Benteng Navarone”, “Alistair MacLean”,12 ); fiksi.inisialisasi ( “Jurassic Park”, Michael Crichton”, 3); novel.info (); fiksi.info (); }
C++ memungkinkan penyalinan nilai antarobyek dapat dilakukan dengan mudah, yaitu cukup menggunakan operator sama dengan ( = ).
void main() { clrscr(); buku novel, fiksi novel.inisialisasi ( “Meriam Benteng Navarone”, “Alistair MacLean”,12 ); fiksi = novel; fiksi.info (); }
Cara pendefinisian fungsi anggota ada dua macam yakni : Bentuk pertama, fungsi anggota didefinisikan didalam deklarsi kelas. Bentuk kedua, pada kelas hanya terdapat fungsi anggota (prototipe).
#include <iostream.h> #include <conio.h> #include <string.h> class buku { privete : char judul[35]; char pengarang[25]; int jumlah; public : void inisialisasi ( char *judul, char *pengarang, int *jumlah) void info (); };
void main() { clrscr(); buku novel; // Pendefinisian obyek novel.inisialisasi ( “Meriam Benteng Navarone”, “Alistair MacLean”,12 ); novel.info(); } void buku::inisialisasi ( char *judul, char *pengarang, int *jumlah) strcpy(judul, Judul ); strcpy(pengarang, Pengarang ); jumlah = Jumlah ; void buku::info () cout << “Judul : “ << judul << endl; cout << “Pengarang : “ << pengarang << endl; cout << “Jumlah Buku : “ << jumlah << endl;