Menggunakan Obyek dan Class
524
Direktorat Pembinaan SMK | 2008
{
char Sekolah[
20 ];
char Nama[
25 ];
char NIS[
12 ];
char Alamat[
25 ];
char Kelas[
10 ];
};
int mainint argc, char argv[]
{ KartuPelajar data;
cout Pengisian
Data Kartu Pelajar endl;
cout Asal
Sekolah : ;
cin.getlinedata.Sekolah, sizeofdata.Sekolah; cout
Nama Siswa :
;
cin.getlinedata.Nama, sizeofdata.Nama; cout
N I S :
;
cin.getlinedata.NIS, sizeofdata.NIS; cout
Alamat :
;
cin.getlinedata.Alamat, sizeofdata.Alamat; cout
JurusanKelas :
;
cin.getlinedata.Kelas, sizeofdata.Kelas; coutendlendl;
cout
Hasil Pengisian Data
endl; cout
Asal Sekolah :
data.Sekolahendl; cout
Nama Siswa :
data.Namaendl; cout
N I S :
data.NISendl; cout
Alamat :
data.Alamatendl; cout
JurusanKelas :
data.Kelasendl; system
PAUSE ;
return EXIT_SUCCESS; }
Keluaran dari program diatas adalah sebagai berikut: Pengisian
Data Kartu Pelajar Asal
Sekolah : SMA N 1 Yogyakarta Nama
Siswa : Badu Mahir Banget N
I S : 1234 Alamat
: Jl. Antah Berantah 2009 Jurusan
Kelas : X IPA 1
2008 | Direktorat Pembinaan SMK
525 Hasil Pengisian Data
Pengisian Data Kartu Pelajar
Asal Sekolah : SMA N 1 Yogyakarta
Nama Siswa : Badu Mahir Banget
N I S : 1234
Alamat : Jl. Antah Berantah 2009
Jurusan Kelas : X IPA 1
Lebih lanjut, struct dalam program di atas merupakan tipe data
baru yang bernama KartuPelajar, ini sama dengan char, int, float dan
sebagainya. Hal itu lebih diyakinkan pada main ada perintah
KartuPelajar data; dapat dijelaskan bahwa data merupakan variable
dengan tipe KartuPelajar. Keyword struct dalam bahasa C++ dapat
digantikan dengan class seperti contoh di bawah ini:
class
KartuPelajar {
public: char Sekolah[20];
char Nama[25]; char NIS[12];
char Alamat[25]; char Kelas[10];
};
Potongan program di atas merupakan pembuatan tipe data baru
juga namun menggunakan class, bukan struct. Program selengkapnya
seperti berikut:
Program 16.2 include
cstdlib include
iostream
using namespace std;
class
KartuPelajar {
public: char Sekolah[
20 ];
char Nama[
25 ];
char NIS[
12 ];
char Alamat[
25 ];
char Kelas[
10 ];
};
int mainint argc, char argv[]
{ KartuPelajar data;
526
Direktorat Pembinaan SMK | 2008
cout Pengisian
Data Kartu Pelajar endl;
cout Asal
Sekolah : ;
cin.getlinedata.Sekolah, sizeofdata.Sekolah; cout
Nama Siswa :
;
cin.getlinedata.Nama, sizeofdata.Nama; cout
N I S :
;
cin.getlinedata.NIS, sizeofdata.NIS; cout
Alamat :
;
cin.getlinedata.Alamat, sizeofdata.Alamat; cout
JurusanKelas :
;
cin.getlinedata.Kelas, sizeofdata.Kelas; coutendlendl;
cout
Hasil Pengisian Data
endl; cout
Asal Sekolah :
data.Sekolahendl; cout
Nama Siswa :
data.Namaendl; cout
N I S :
data.NISendl; cout
Alamat :
data.Alamatendl; cout
JurusanKelas :
data.Kelasendl; system
PAUSE ;
return EXIT_SUCCESS; }
Keluaran program di atas: Pengisian
Data Kartu Pelajar Asal
Sekolah : SMA N 3 Yogyakarta Nama
Siswa : Badu Pakar Banget N
I S : 1500 Alamat
: Jl. Kemana‐mana 007 Jurusan
Kelas : X IPA 3 Hasil Pengisian Data
Pengisian Data Kartu Pelajar
Asal Sekolah : SMA N 3 Yogyakarta
Nama Siswa : Badu Pakar Banget
N I S : 1500
Alamat : Jl. Kemana‐mana 007
Jurusan Kelas : X IPA 3
Lalu apa bedanya selain keyword struct diganti dengan class
dan ditambah public: dalam class tersebut ? Di sinilah konsep object
oriented programming pemrograman berorientasi obyek seharusnya
2008 | Direktorat Pembinaan SMK
527 berbeda. Dalam pemrograman
berorientasi obyek antara data atau variable dan fungsinya menjadi satu
kesatuan tidak terpisah seperti struct di atas. Sehingga fungsi pengisian
data dan pencetakan data menjadi satu dalam class, contoh lengkap
sebagai berikut:
Program 16.3 include
cstdlib include
iostream
using namespace std;
class
KartuPelajar {
private: char Sekolah[
20 ];
char Nama[
25 ];
char NIS[
12 ];
char Alamat[
25 ];
char Kelas[
10 ];
public: void pengisian
{ cout
Pengisian Data Kartu Pelajar
endl; cout
Asal Sekolah :
;
cin.getlineSekolah, sizeofSekolah; cout
Nama Siswa :
;
cin.getlineNama, sizeofNama; cout
N I S :
;
cin.getlineNIS, sizeofNIS; cout
Alamat :
;
cin.getlineAlamat, sizeofAlamat; cout
JurusanKelas :
;
cin.getlineKelas, sizeofKelas; coutendlendl;
}; void cetak
{ cout
Hasil Pengisian Data
endl; cout
Asal Sekolah :
Sekolahendl; cout
Nama Siswa :
Namaendl; cout
N I S :
NISendl; cout
Alamat :
Alamatendl;
528
Direktorat Pembinaan SMK | 2008
cout JurusanKelas
: Kelasendl;
}; };
int mainint argc, char argv[]
{ KartuPelajar data;
data.pengisian; data.cetak;
system
PAUSE ;
return EXIT_SUCCESS; }
Dalam program di atas dapat dilihat bahwa antara variable dan
method menjadi satu dalam class. Selain itu ada perubahan dari contoh
sebelumnya bahwa variable berubah sifat dari public menjadi private. Hal
ini dimaksudkan untuk penyembunyian data information
hiding dari pengguna, sehingga pengguna tidak dapa mengubah-
ubah data secara langsung tetapi harus melalui pemanggilan class atau
penurunan inheritance class. Sedangkan
method pada class bersifat public, tentunya dimaksudkan
agar dapat dipakai secara umum dari class yang lain atau class
turunannya.
Pada contoh program di atas konten dari method ditulis langsung
dalam class, itu merupakan cara pertama. Ada cara kedua penulisan
konten method di luar class supaya lebih leluasa apabila kontennya
panjang. Program lengkapnya seperti berikut:
Program 16.4 include
cstdlib include
iostream
using namespace std;
class
KartuPelajar {
private: char Sekolah[
20 ];
char Nama[
25 ];
char NIS[
12 ];
char Alamat[
25 ];
char Kelas[
10 ];
public:
2008 | Direktorat Pembinaan SMK
529
void pengisian; void cetak;
};
void
KartuPelajar::pengisian {
cout Pengisian
Data Kartu Pelajar endl;
cout Asal
Sekolah : ;
cin.getlineSekolah, sizeofSekolah; cout
Nama Siswa :
;
cin.getlineNama, sizeofNama; cout
N I S :
;
cin.getlineNIS, sizeofNIS; cout
Alamat :
;
cin.getlineAlamat, sizeofAlamat; cout
JurusanKelas :
;
cin.getlineKelas, sizeofKelas; coutendlendl;
};
void
KartuPelajar::cetak {
cout Hasil
Pengisian Data endl;
cout Asal
Sekolah : Sekolahendl;
cout Nama
Siswa : Namaendl;
cout N
I S : NISendl;
cout Alamat
: Alamatendl;
cout JurusanKelas
: Kelasendl;
};
int mainint argc, char argv[]
{ KartuPelajar data;
data.pengisian; data.cetak;
system
PAUSE ;
return EXIT_SUCCESS; }
530
Direktorat Pembinaan SMK | 2008
Penulisan dalam pemrograman berorientasi obyek lebih lazim contoh
terakhir, walaupun cara pertama tidak salah. Dalam contoh cara kedua lebih
menunjukkan ciri-ciri pemrograman beririentasi obyeknya dibanding cara
pertama.