Pewarisan
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.
Contoh 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;
}
2.
Tambahkan kelas TPipa yang merupakan turunan dari kelas
TLingkaran ini.
Pada kelas TPipa terdapat
anggota data panjang
pipa,
konstruktor penyalinan yang mengisi jejari dan panjang.
3.
Tambahkan fungsi anggota Isi pipa dengan rumus luas lingkaran pipa
kali panjang pipa.
4.
Tambahkan fungsi anggota Tampil (nama pengenal fungsi sama dengan yang ada di
TLingkaran) yang akan menampilkan jari-jari lingkaran pipa, panjang pipa, dan
isi pipa.
5. Tulis fungsi main() yang
menggunakan kelas TPipa ini.
Nah setelah saya kerjakan begini hasilnya :
Mau scriptnya silahkan langsung lihat disini :
#include <conio.h>Ok, Sekian terimakasih semoga bermanfaat.
#include <iostream.h>
#include <math.h>
const double PI = 4 * atan(1);
class TLingkaran
{
protected:
double jejari;
public:
TLingkaran(double jr )
{
jejari = jr;
}
double Jejari() { return jejari; }
double Luas() { return PI * jejari * jejari; }
void TulisInfo()
{
cout << "jari-jari = " << Jejari() << endl
<< "luas = " << Luas() << endl << endl;
}
};
class TPipa : public TLingkaran
{
protected:
double panjang;
public:
TPipa(double jr, double pj): TLingkaran(jr)
{
panjang = pj;
}
double Panjang() {return panjang;}
double Isi() { return PI * jejari * jejari * panjang; }
};
void main()
{
TPipa bl(2, 5);
cout << "jejari = " << bl.Jejari() << endl
<< "panjang = " << bl.Panjang() << endl
<< "isi = " << bl.Isi() << endl;
getch();
}
0 komentar :
Posting Komentar
Give good coment
thank you :-)