Struktur dan kelas
14.4. Struktur dan kelas
Dalam C++, tipe data struktur struktur kotak menjadi lebih jelas yang dideklarasikan dengan kata bentuknya. kunci struct, dapat mempunyai komponen dengan sembarang tipe struct tkotak data, baik tipe data dasar maupun { tipe data turunan, termasuk fungsi.
double panjang;
Dengan kemampuan ini, tipe data
double lebar;
struktur menjadi sangat berdaya void SetUkuran(double pj, double lb) guna.
Misalnya, pada masalah ketika
panjang = pj;
kita ingin membentuk tipe data
lebar = lb;
struktur yang namanya kotak. Maka
dapat dideklarasikan sebagai berikut:
struct tkotak tkotak kotak;
double panjang; dengan tipe struktur kotak seperti itu, untuk memberi nilai panjang dan
double lebar; lebar hanya dengan memanggil };
fungsi SetUkuran()
tkotak kotak;
kotak.SetUkuran(10,7); Untuk memberi nilai ukuran kotak
tersebut, kita dapat menggunakan Selain punya ukuran panjang perintah-perintah ini:
dan lebar, kotak juga mempunyai keliling dan luas. Dengan demikian,
kotak.panjang = 10; kita dapat memasukkan fungsi untuk
kotak.lebar = 7; menghitung keliling dan luas ke
dalam struktur kotak. Sebagai Untuk memberi nilai panjang dan
catatan, bahwa definisi fungsi yang lebar kotak, salah satu caranya menjadi anggota struktur dapat
adalah seperti diatas. Cara lain untuk ditempatkan di luar tubuh struktur. memberi nilai panjang dan lebar
Dengan cara ini maka deklarasi adalah dengan membentuk suatu struktur kotak menjadi seperti berikut:
fungsi. Karena fungsi ini hanya digunakan untuk memberi nilai data struct tkotak panjang dan lebar suatu kotak, { tentunya fungsi ini khusus milik objek
double panjang;
kotak, sehingga harus dianggap
double lebar;
sebagai truktur kotak. C++ sebagai void SetUkuran(double pj, double lb); bahasa pemrograman dapat
double Keliling();
mendefinisikan anggota tipe struktur yang berupa fungsi. Dengan
double Luas();
menambah fungsi tersebut, maka };
tkotak kotak;
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
Class merupakan struktur data dengan struktur. Untuk lebih jelasnya dari obyek. Untuk menjelaskan mengenai keduanya perhatikan tentang class, lihat perbandingannya
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;
strcpy(siswakls3.nis, "95514060" ); strcpy(siswakls3.nama, "Suprapto" ); siswakls3.umur = 20 ;
cout << siswakls3.nis << endl; cout << siswakls3.nama << endl; cout << siswakls3.umur << endl; getch();
return 0 ; }
Setelah program di atas dicompile, sehingga program menjadi seperti error tidak ada. Berikutnya struktur di
berikut dibawah ini:
atas kita ganti dengan class,
Program 14.5 #include <conio.h> #include <iostream> #include <string.h>
using namespace std;
class siswaSMK 480
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman
char nis[ 12 ]; char nama[ 25 ];
int umur; };
void main() {
siswaSMK siswakls3;
strcpy(siswakls3.nis, "95514060" ); strcpy(siswakls3.nama, "Suprapto" ); siswakls3.umur = 20 ;
cout << siswakls3.nis << endl; cout << siswakls3.nama << endl; cout << siswakls3.umur << endl; getch();
return 0 ; }
Setelah program di atas di dengan struktur. Agar program di compile, ternyata error muncul. Error
atas dapat dicompile, ditambahkan tersebut muncul karena class tidak perintah public diikuti dengan tkita dikenal dalam main(). Kesalahan ini titik dua (:), sehingga programnya sekaligus menunjukkan perbedaan 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;
strcpy(siswakls3.nis, "95514060" ); strcpy(siswakls3.nama, " suprapto" ); siswakls3.umur = 20 ;
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
cout << siswakls3.nis << endl; cout << siswakls3.nama << endl; cout << siswakls3.umur << endl; getch();
return 0 ; }
Perintah PUBLIC menyatakan termasuk access specifier (penentu bahwa perintah-perintah yang ada di
akses). Selain PUBLIC, terdapat bawahnya dapat diakses diluar class.
perintah lain yang termasuk access Perintah PUBLIC merupakan 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;
strcpy(siswakls3.nis, "95514060" ); strcpy(siswakls3.nama, "suprapto" ); siswakls3.umur = 20 ;
cout << siswakls3.nis << endl; cout << siswakls3.nama << endl; cout << siswakls3.umur << endl; getch();
return 0 ; }
Setelah dicompile, error yang pengertian bahwa perintah yang ada sama dengan sebelumnya muncul dibawahnya hanya dapat diakses yaitu class tidak dapat diakses di dalam class tersebut, yang dalam hal main(). Perintah PRIVATE memberi ini adalah class siswaSMK. variabel
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman
nis, nama, dan umur dalam class Selain data anggota, kita juga dapat siswaSMK disebut data anggota. 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 inisialisasi(char *NISSIS, char *NAMASIS, int UMURSIS) {
strcpy(nis, NISSIS); strcpy(nama, 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 siswaSMK. Keduanya dibuat public inisialisasi() dan tampilkan() karena akan diakses dari luar class, merupakan fungsi anggota dari class
sedangkan data anggotanya (nis,
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
nama, umur) dibuat private. Mungkin akan diperoleh hasil yang sama Kita berpikir mengapa program dengan program sebelumnya. terakhir terlalu panjang, padahal
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 inisialisasi(char *NISSIS,char *NAMASIS,int UMURSIS); void tampilkan();
void main() { sis siswakls3; siswakls3.inisialisasi("95514060","Suprapto",20); siswakls3.tampilkan(); }
void sis::inisialisasi(char *NISSIS, char *NAMASIS, int UMURSIS) {
strcpy(nis, NISSIS); strcpy(nama, NAMASIS); umur = UMURSIS;
void sis::tampilkan() {
cout << nis << endl; cout << nama << endl; cout << umur << endl;
Direktorat Pembinaan SMK | 2008
Class Bahasa Pemrorgraman
Cara kedua inilah yang sering dipilih ini contoh-contoh program yang oleh para programmer C++. Berikut 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 tampilkan(char *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.getline(temp, sizeof(temp)); n = atoi(temp); for (i=0;i<=n‐1;i++) {
cout << "DATA ‐ " << i+1 << endl; cout << "NIS SISWASMK : " ; cin.getline(siswakls3[i].nis, sizeof(siswakls3[i].nis)); cout << "NAMA SISWASMK : " ; cin.getline(siswakls3[i].nama, sizeof(siswakls3[i].nama)); cout << "UMUR : "; cin.getline(temp, sizeof(temp));
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Class
siswakls3[i].umur = atoi(temp); 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].tampilkan(siswakls3[i].nis, siswakls3[i].nama,
siswakls3[i].umur); cout << endl; } getch();