Pewarisan dalam C++


Teori Singkat

Suatu kelas dapat diciptakan berdasarkan kelas lain. Kelas baru ini mempunyai sifat-sifat yang sama dengan kelas pembentuknya, ditambah sifat-sifat khusus lainnya. Dengan kata lain kelas baru ini mewarisi sifat-siafat kelas dasarnya. Kelas baru ini disebut kelas turunan, sedangkan kelas yang menurunkan kelas turunan disebut kelas dasar. Dengan konsep pewarisan seperti ini kita dapat menciptakan kelas baru yang mempunyai sifat sama dengan kelas lain tanpa harus menulis ulang bagian-bagian yang sama.

Disamping level kenampakan anggota kelas public dan private, dalam kelas dasar seringkali terdapat level kenampakan anggota kelas protected. Anggota kelas yang mempunyai kenampakan protected artinya bahwa anggota kelas ini selain dapat diakses di dalam kelas itu sendiri (seperti private), tetapi juga dapat diakses di dalam kelas turunannya.

Sebagai contoh, kita mempunyai kelas TPersegiPanjang, seperti berikut. Dalam kelas ini terdapat konstruktor penyalinan, fungsi anggota public: Panjang(), Lebar(), Keliling(), dan Luas(). Disamping itu juga terdapat anggota data panjang dan lebar yang bersifat protected. Maka panjang dan lebar nantinya dapat dilihat oleh kelas turunan dari TPersegiPanjang ini.

// file PERSEGPJ.CPP

#include <iostream.h>

class TPersegiPanjang

{

protected:

int panjang;

int lebar;

public:

TPersegiPanjang(int pj, int lb)

{

panjang = pj;

lebar = lb;

}

int  Panjang()   { return panjang; }

int  Lebar()     { return lebar;   }

int  Keliling()  { return ((panjang + lebar)*2); }

int  Luas()      { return (panjang * lebar); }

void Skala(float sk)

{

panjang *= sk;

lebar *= sk;

}

void TulisInfo()

{

cout << “Panjang : ” << panjang    << endl

<< “lebar   : ” << lebar      << endl

<< “Keliling: ” << Keliling() << endl

<< “Luas    : ” << Luas()     << endl

<< endl;

}

};

Kemudian kita akan menciptakan kelas TBalok. Kelas ini sangat mirip dengan kelas TPersegiPanjang, karena juga mempunyai dimensi panjang dan lebar, disamping itu juga mempunyai dimensi tinggi. Oleh karena itu kelas TBalok diturunkan saja dari kelas TPersegiPanjang.

//file BALOK.CPP

#include “PERSEGPJ.CPP”

class TBalok : public TPersegiPanjang

{

protected:

int tinggi;

public:

TBalok(int pj, int lb, int tg): TPersegiPanjang(pj, lb)

{

tinggi = tg;

}

int Isi()   { return panjang * lebar * tinggi; }

};

void main()

{

TBalok bl(5, 3, 2);

cout << “panjang = ” << bl.Panjang() << endl

<< “isi     = ” << bl.Isi() << endl;

getchar();

}

Dari kelas TBalok ini, anggota datanya cukup satu, yaitu tinggi, karena panjang dan lebar diambilkan dari kelas TPersegiPanjang. Anggota data panjang dan lebar dapat dilihat di TBalok karena bersifat protected. Konstruktor TBalok perlu memanggil konstruktor TPersegiPanjang, agar terjadi instan dari kelas ini (dan karena TPersegiPanjang mepunyai konstruktor). Pada konstruktor ini panjang dan lebar diisi dari pj dan lb. Sementara tinggi diisi dari tg. Kelas TBalok mempunyai fungsi anggota baru yaitu Isi(). Dalam fungsi Isi(), diakses anggota panjang dan lebar yang dideklarasikan pada kelas  TPersegiPanjang. Pada penggunaannya, dengan instan bl dapat diakses fungsi anggota Panjang() yang dipunyai oleh TPersegiPanjang. Hal ini dapat dilakukan karena anggota yang public dapat dilihat secara public pula oleh kelas turunannya. Kemudian fungsi Isi() tentu saja dapat dipanggil.

Praktek

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

#include <math.h>

#include <iostream.h>

const double PI = 4 * atan(1);

class TLingkaran

{

protected:

double jejari;

public:

TLingkaran(double jr = 0) { jejari = jr; }

double Jejari()  { return jejari; }

double Luas()  { return PI * jejari * jejari; }

void Tampil();

};

// fungsi anggota Tampil yang ditulis di luar kelas

void TLingkaran::Tampil()

{

cout << “jari-jari = ” << Jejari() << endl

<< “luas      = ” << Luas() << endl << endl;

}

~ 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: