Menggunakan Obyek dan Class
16.1. Menggunakan Obyek dan Class
Untuk memahami tentang Class menjadi satu tidak terpisah-pisah ada baiknya kita bahas mengenai (Identitas Sekolah sendiri, Nama Struct yang merupakan suatu Siswa sendiri, dan sebagainya). perintah dalam bahasa C++ sebagai
Jadi seakan-akan persis seperti pembentuk tipe data baru. Sebuah kalau kita melihat kartu pelajar di contoh misal tentang kartu pelajar. Di
atas, dalam satu kartu terdapat dalam kartu pelajar terdapat beberapa informasi sekaligus. Untuk keterangan tentang Identitas mewujudkan hal tersebut bahasa Sekolah, Nama Siswa, Nomor Induk
C++ menyediakan keyword yang Siswa, Alamat Siswa, Jurusan/Kelas.
disebut Struct. Contoh penggunaan Pengertian data-data tersebut harus sebagai berikut:
Program 16.1 #include <cstdlib> #include <iostream>
using namespace std;
struct KartuPelajar
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends
{ char Sekolah[ 20 ]; char Nama[ 25 ]; char NIS[ 12 ]; char Alamat[ 25 ]; char Kelas[ 10 ]; };
int main(int argc, char *argv[]) { KartuPelajar data;
cout<< "Pengisian Data Kartu Pelajar" <<endl; cout<< "Asal Sekolah : " ; cin.getline(data.Sekolah, sizeof(data.Sekolah)); cout<< "Nama Siswa : " ; cin.getline(data.Nama, sizeof(data.Nama)); cout<< "N IS:" ; cin.getline(data.NIS, sizeof(data.NIS)); cout<< "Alamat :" ; cin.getline(data.Alamat, sizeof(data.Alamat)); cout<< "Jurusan/Kelas :" ; cin.getline(data.Kelas, sizeof(data.Kelas)); cout<<endl<<endl;
cout<< "Hasil Pengisian Data " <<endl; cout<< "Asal Sekolah : " <<data.Sekolah<<endl; cout<< "Nama Siswa : " <<data.Nama<<endl; cout<< "N IS:" <<data.NIS<<endl; cout<< "Alamat :" <<data.Alamat<<endl; cout<< "Jurusan/Kelas :" <<data.Kelas<<endl; 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
Direktorat Pembinaan SMK | 2008
Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman
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
public:
baru yang bernama KartuPelajar, ini char Sekolah[20]; sama dengan char, int, float dan char Nama[25];
sebagainya. Hal itu lebih diyakinkan char NIS[12]; pada main() ada perintah char Alamat[25]; KartuPelajar data; dapat dijelaskan char Kelas[10]; bahwa data merupakan variable }; dengan tipe KartuPelajar. Keyword
struct dalam bahasa C++ dapat Potongan program di atas digantikan dengan class seperti merupakan pembuatan tipe data baru contoh di bawah ini: juga namun menggunakan class,
bukan struct. Program selengkapnya class KartuPelajar 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 main(int argc, char *argv[]) { KartuPelajar data;
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends
cout<< "Pengisian Data Kartu Pelajar" <<endl; cout<< "Asal Sekolah : " ; cin.getline(data.Sekolah, sizeof(data.Sekolah)); cout<< "Nama Siswa : " ; cin.getline(data.Nama, sizeof(data.Nama)); cout<< "N IS:" ; cin.getline(data.NIS, sizeof(data.NIS)); cout<< "Alamat :" ; cin.getline(data.Alamat, sizeof(data.Alamat)); cout<< "Jurusan/Kelas :" ; cin.getline(data.Kelas, sizeof(data.Kelas)); cout<<endl<<endl;
cout<< "Hasil Pengisian Data" <<endl; cout<< "Asal Sekolah : " <<data.Sekolah<<endl; cout<< "Nama Siswa : " <<data.Nama<<endl; cout<< "N IS:" <<data.NIS<<endl; cout<< "Alamat :" <<data.Alamat<<endl; cout<< "Jurusan/Kelas :" <<data.Kelas<<endl; 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 tersebut ? Di sinilah konsep object keyword struct diganti dengan class oriented programming (pemrograman dan ditambah public: dalam class berorientasi obyek) seharusnya
Direktorat Pembinaan SMK | 2008
Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman
berbeda. Dalam pemrograman di atas. Sehingga fungsi pengisian berorientasi obyek antara data atau data dan pencetakan data menjadi variable dan fungsinya menjadi satu
satu dalam class, contoh lengkap kesatuan tidak terpisah seperti struct
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.getline(Sekolah, sizeof(Sekolah)); cout<< "Nama Siswa : " ; cin.getline(Nama, sizeof(Nama)); cout<< "N IS:" ; cin.getline(NIS, sizeof(NIS)); cout<< "Alamat :" ; cin.getline(Alamat, sizeof(Alamat)); cout<< "Jurusan/Kelas :" ; cin.getline(Kelas, sizeof(Kelas)); cout<<endl<<endl; }; void cetak() { cout<< "Hasil Pengisian Data" <<endl; cout<< "Asal Sekolah : " <<Sekolah<<endl; cout<< "Nama Siswa : " <<Nama<<endl; cout<< "N IS:" <<NIS<<endl; cout<< "Alamat :" <<Alamat<<endl;
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends
cout<< "Jurusan/Kelas :" <<Kelas<<endl; }; };
int main(int argc, char *argv[]) { KartuPelajar data;
data.pengisian(); data.cetak(); system( "PAUSE" ); return EXIT_SUCCESS; }
Dalam program di atas dapat Sedangkan method pada class dilihat bahwa antara variable dan bersifat public, tentunya dimaksudkan method menjadi satu dalam class. agar dapat dipakai secara umum dari Selain itu ada perubahan dari contoh
class yang lain atau class sebelumnya bahwa variable berubah
turunannya.
sifat dari public menjadi private. Hal Pada contoh program di atas ini dimaksudkan untuk konten dari method ditulis langsung penyembunyian data (information
dalam class, itu merupakan cara hiding) dari pengguna, sehingga pertama. Ada cara kedua penulisan pengguna tidak dapa mengubah-
konten method di luar class supaya ubah data secara langsung tetapi lebih leluasa apabila kontennya harus melalui pemanggilan class atau
panjang. Program lengkapnya seperti penurunan (inheritance) class. 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: 528
Direktorat Pembinaan SMK | 2008
Inheritance, Polymorphism,Overloading dan Friends Bahasa Pemrorgraman
void pengisian(); void cetak(); };
void KartuPelajar::pengisian() { cout<< "Pengisian Data Kartu Pelajar" <<endl; cout<< "Asal Sekolah : " ; cin.getline(Sekolah, sizeof(Sekolah)); cout<< "Nama Siswa : " ; cin.getline(Nama, sizeof(Nama)); cout<< "N IS:" ; cin.getline(NIS, sizeof(NIS)); cout<< "Alamat :" ; cin.getline(Alamat, sizeof(Alamat)); cout<< "Jurusan/Kelas :" ; cin.getline(Kelas, sizeof(Kelas)); cout<<endl<<endl; };
void KartuPelajar::cetak() { cout<< "Hasil Pengisian Data" <<endl; cout<< "Asal Sekolah : " <<Sekolah<<endl; cout<< "Nama Siswa : " <<Nama<<endl; cout<< "N IS:" <<NIS<<endl; cout<< "Alamat :" <<Alamat<<endl; cout<< "Jurusan/Kelas :" <<Kelas<<endl; };
int main(int argc, char *argv[]) { KartuPelajar data;
data.pengisian(); data.cetak();
system( "PAUSE" ); return EXIT_SUCCESS; }
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Inheritance, Polymorphism,Overloading dan Friends
Penulisan dalam pemrograman menunjukkan ciri-ciri pemrograman berorientasi obyek lebih lazim contoh
beririentasi obyeknya dibanding cara terakhir, walaupun cara pertama tidak
pertama.
salah. Dalam contoh cara kedua lebih