Struktur dan kelas OPERASI FILE
480
Direktorat Pembinaan SMK | 2008
Class merupakan struktur data dari obyek. Untuk menjelaskan
tentang class, lihat perbandingannya dengan struktur. Untuk lebih jelasnya
mengenai keduanya perhatikan contoh program di bawah ini:
Program 14.4 include
conio.h include
iostream include
string.h
using namespace std;
struct
siswaSMK {
char
nis[ 12
];
char
nama[ 25
];
int
umur; };
void
main {
siswaSMK siswakls3;
strcpysiswakls3.nis, 95514060
; strcpysiswakls3.nama,
Suprapto ;
siswakls3.umur =
20 ;
cout siswakls3.nis endl;
cout siswakls3.nama endl;
cout siswakls3.umur endl;
getch;
return ;
} Setelah program di atas dicompile,
error tidak ada. Berikutnya struktur di atas kita ganti dengan class,
sehingga program menjadi seperti berikut dibawah ini:
Program 14.5 include
conio.h include
iostream include
string.h
using namespace std;
class
siswaSMK
2008 | Direktorat Pembinaan SMK
481 {
char
nis[ 12
];
char nama[
25 ];
int
umur; };
void
main {
siswaSMK siswakls3;
strcpysiswakls3.nis, 95514060
; strcpysiswakls3.nama,
Suprapto ;
siswakls3.umur =
20 ;
cout siswakls3.nis endl;
cout siswakls3.nama endl;
cout siswakls3.umur endl;
getch;
return
; }
Setelah program di atas di compile, ternyata error muncul. Error
tersebut muncul karena class tidak dikenal dalam main. Kesalahan ini
sekaligus menunjukkan perbedaan dengan struktur. Agar program di
atas dapat dicompile, ditambahkan perintah public diikuti dengan tkita
titik dua :, sehingga programnya menjadi:
Program 14.6 include
conio.h include
iostream include
string.h
using namespace std;
class
siswaSMK {
char
nis[ 12
];
char nama[
25 ];
int
umur; };
void
main {
siswaSMK siswakls3;
strcpysiswakls3.nis, 95514060
; strcpysiswakls3.nama,
suprapto ;
siswakls3.umur =
20 ;
482
Direktorat Pembinaan SMK | 2008
cout siswakls3.nis endl;
cout siswakls3.nama endl;
cout siswakls3.umur endl;
getch;
return ;
} Perintah PUBLIC menyatakan
bahwa perintah-perintah yang ada di bawahnya dapat diakses diluar class.
Perintah PUBLIC merupakan termasuk access specifier penentu
akses. Selain PUBLIC, terdapat perintah lain yang termasuk access
specifier, yaitu PRIVATE.
Program 14.7 include
iostream include
conio.h include
string.h
using namespace std;
class
siswaSMK {
private: char
nis[ 12
];
char
nama[ 25
];
int
umur; };
int
main {
siswaSMK siswakls3;
strcpysiswakls3.nis, 95514060
; strcpysiswakls3.nama,
suprapto ;
siswakls3.umur =
20 ;
cout siswakls3.nis endl;
cout siswakls3.nama endl;
cout siswakls3.umur endl;
getch;
return ;
} Setelah dicompile, error yang
sama dengan sebelumnya muncul yaitu class tidak dapat diakses di
main. Perintah PRIVATE memberi pengertian bahwa perintah yang ada
dibawahnya hanya dapat diakses dalam class tersebut, yang dalam hal
ini adalah class siswaSMK. variabel
2008 | Direktorat Pembinaan SMK
483 nis, nama, dan umur dalam class
siswaSMK disebut data anggota. Selain data anggota, kita juga dapat
menambahkan fungsi anggota. Program 14.7
include iostream
include conio.h
include string.h
using namespace std;
class
siswaSMK {
private
:
char
nis[ 12
];
char
nama[ 25
];
int
umur;
public
:
void inisialisasichar NISSIS, char NAMASIS, int UMURSIS
{ strcpynis,
NISSIS; strcpynama,
NAMASIS; umur
= UMURSIS; }
void
tampilkan {
cout nis endl;
cout nama endl;
cout umur endl;
} };
void
main {
siswaSMK siswakls3; siswakls3.inisialisasi
95514060 ,
Suprapto ,
20 ;
siswakls3.tampilkan; }
Pada program di atas, fungsi inisialisasi dan tampilkan
merupakan fungsi anggota dari class siswaSMK. Keduanya dibuat public
karena akan diakses dari luar class, sedangkan data anggotanya nis,
484
Direktorat Pembinaan SMK | 2008
nama, umur dibuat private. Mungkin Kita berpikir mengapa program
terakhir terlalu panjang, padahal akan diperoleh hasil yang sama
dengan program sebelumnya.
Program 14.8 include
iostream.h include
conio.h include
string.h class
sis {
private :
char nis[12];
char nama[25];
int umur;
public :
void inisialisasichar NISSIS,char NAMASIS,int UMURSIS;
void tampilkan;
}; void
main {
sis siswakls3; siswakls3.inisialisasi95514060,Suprapto,20;
siswakls3.tampilkan; }
void sis::inisialisasichar NISSIS, char NAMASIS, int UMURSIS
{ strcpynis,
NISSIS; strcpynama,
NAMASIS; umur
= UMURSIS; }
void sis::tampilkan
{ cout
nis endl; cout
nama endl; cout
umur endl; }
2008 | Direktorat Pembinaan SMK
485 Cara kedua inilah yang sering dipilih
oleh para programmer C++. Berikut ini contoh-contoh program yang
memanfaatkan class Program 14.9. Menyimpan data n siswaSMK kemudian menampilkannya.
include iostream.h
include conio.h
include stdlib.h
class siswaSMK
{ public:
char nis[20];
char nama[50];
int umur;
void tampilkanchar NISSIS, char NAMASIS, int UMURSIS
{ cout
NIS SIS : NISSIS endl; cout
NAMA SIS : NAMASIS endl; cout
UMUR : UMURSIS endl; }
}; void
main {
siswaSMK siswakls3[50];
tipe data array char
temp[10]; int n, i; clrscr;
cout ENTRI DATA SISWASMK D3 endl;
cout endl;
cout Jumlah siswaSMK : ;
cin.getlinetemp, sizeoftemp;
n = atoitemp;
for i=0;i=n‐1;i++
{ cout
DATA ‐ i+1 endl; cout
NIS SISWASMK : ; cin.getlinesiswakls3[i].nis,
sizeofsiswakls3[i].nis; cout
NAMA SISWASMK : ; cin.getlinesiswakls3[i].nama,
sizeofsiswakls3[i].nama; cout
UMUR : ; cin.getlinetemp,
sizeoftemp;
486
Direktorat Pembinaan SMK | 2008
siswakls3[i].umur = atoitemp;
cout endl;
} tampilkan semua data
cout ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ endl;
cout DATA YANG MASUK endl;
cout ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ endl;
for i=0;i=n‐1;i++
{ cout
DATA SISWASMK i+1 endl; siswakls3[i].tampilkansiswakls3[i].nis,
siswakls3[i].nama, siswakls3[i].umur;
cout endl;
} getch;
}