Struktur dan Kelas dalam C++


Teori Singkat

Seringkali terjadi sejumlah data yang saling berkaitan, misalnya, kode barang, jumlah barang, dan harga satuan. Masing-masing data ini biasanya berbeda tipenya. Sejumlah data dengan tipe berbeda seperti ini dapat dikumpulkan menjadi satu kesatuan membentuk struktur. Data itu di dalam struktur disebut field. Deklarasi struktur:

struct TipeStruktur

{

tipe field1;

tipe field2;

. . .

};

Untuk kasus barang di atas deklarasinya adalah:

struct TBarang

{

char kode[6];  // kode barang bertipe string 5 karakter

int jumlah;

int harga;

};

Sedangkan deklarasi variabel adalah:

TBarang barang;

Untuk mengakses variabel barang ini, misalnya:

barang.jumlah = 8;

strcpy(barang.kode, “BRG01”); // mengisi field kode dengan BRG01

cout << barang.harga << endl;

Tipe struktur (struct) dapat digantikan dengan tipe kelas (class) dengan fieldnya diberi sifat public. Untuk kelas, istilah field diganti dengan anggota. Deklarasi struktur TBarang di atas bila digantikan dengan tipe kelas menjadi:

class TBarang

{

public:

char kode[6];  // kode barang bertipe string 5 karakter

int  jumlah;

int  harga;

};

Sedangkan untuk deklarasi variabel kelas dan cara mengaksesnya sama dengan tipe struktur.

Jadi antara struktur dengan kelas dapat saling menggantikan. Jika anggota anggota hanya berupa data (seperti contoh di atas) dipakai tipe struktur. Secara umum penggunaan kelas adalah bila anggotanya juga berupa fungsi. Anggota berupa data seringkali diberi sifat private, sedangkan bila anggota berupa fungsi seringkali diberi sifat public. Anggota dengan sifat private, artinya bahwa data itu hanya dapat diakses di dalam kelas itu sendiri, tidak dapat diakses lewat variabel kelas. Sedangkan anggota yang diberi sifat public dapat juga diakses dari luar keas itu, misalnya lewat variabel kelas itu.

Untuk kasus kelas TBarang di atas, jika ditambahkan anggota berupa fungsi IsiData, yaitu untuk mengisi anggota data adalah:

class TBarang

{

private:

char kode[6];  // kode barang bertipe string 5 karakter

int  jumlah;

int  harga;

public:

void IsiData(char kd[], int jml, int hrg)

{

strcpy(kode, kd);

jumlah = jml;

harga = hrg;

}

};

Fungsi anggota IsiData juga dapat ditulis definisi fungsinya di luar kelas, yaitu:

class TBarang

{

private:

char kode[6];  // kode barang bertipe string 5 karakter

int  jumlah;

int  harga;

public:

void IsiData(char kd[], int jml, int hrg);

};

void TBarang::IsiData(char kd[], int jml, int hrg)

{

strcpy(kode, kd);

jumlah = jml;

harga = hrg;

}

Variabel bertipe kelas (dalam pemrograman berorientasi objek disebut instan) dapat ditunjuk oleh pointer. Sedangkan untuk mengakses anggota digunakan notasi:

pointer->anggota

Perhatikan contoh berikut.

TBarang barang;  // instan kelas TBarang

TBarang* brg;    // pointer ke kelas TBarang

brg = &barang;   // brg disuruh menunjuk ke barang

// mengakses fungsi IsiData dari instan barang

barang.IsiData(“BRG01”, 8, 2000);

// mengakses fungsi IsiData dari pointernya

brg->IsiData(“BRG01”, 8, 2000);

Praktek

1. Tulislah program berikut lewat ConsoleWizard pada C++Builder.

#include <string.h>

#include <iostream.h>

//——————————————————-

#pragma argsused

class TBarang

{

private:

char kode[6];  // kode barang bertipe string 5 karakter

int  jumlah;

int  harga;

public:

void IsiData(char kd[], int jml, int hrg);

void Cetak();

};

void TBarang::IsiData(char kd[], int jml, int hrg)

{

strcpy(kode, kd);

jumlah = jml;

harga = hrg;

}

void TBarang::Cetak()

{

cout << “kode barang   = ” << kode << endl

<< “jumlah barang = ” << jumlah << endl

<< “harga barang  = ” << harga << endl;

}

void main()

{

TBarang barang;

barang.IsiData(“BRG01”, 8, 2000);

barang.Cetak();

getchar();

}

~ oleh 12puby pada 9 Juni 2010.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: