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();