Adsense Indonesia

Sabtu, 30 November 2013

Pewarisan (PBO pert.9)




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>
#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();
}
Ok, Sekian terimakasih semoga bermanfaat.

0 komentar :

Posting Komentar

Give good coment
thank you :-)

 
Copyright © . FreeShare Freelance Blog - Posts · Comments
Theme Template by Izca_design · Powered by Blogger