Kamis, 11 Juli 2013

PEWARISAN


Dalam PBO, kita mengambil realita kehidupan sehari-hari. Kita melakukan pengamatan bahwa manusia secara alami sering melakukan pengelompokan atas objek atau benda. Sejauh ini kita mengetahui cara untuk melakukan pengelompokan-pengelompokan atas objek-objek yang serupa (menjadi kelas objek).
Selain melakukan katagorisasi terhadap objek yang memiliki sekumpulan atribut dan perilaku yang sama, manusia sering melakukan pengelompokan terhadap objek yang memiliki kesamaan atas beberapa (tidak semua) atribut/perilaku. Contoh : Pengelompokan atas kendaraan bermotor, kemudian menggrupkannya berdasarkan suatu tipe atau jenis (mobil, truk, sepeda motor, dll). Setiap subkatagori ini merupakan kelas atas objek-objek yang serupa.
Ada beberapa karakteristik yang di-share oleh semua kelompok. Relasi antar kelas-kelas ini disebut dengan relasi “is-a”. Dalam setiap kasus, objek yang dikelompokkan bersama dalam satu sub-katagori merupakan anggota dari kategori yang lebih umum. Contohnya adalah seperti di bawah ini.
·      Mobil adalah (“is-a”) kendaraan bermotor.
·      Truk adalah (“is-a”) kendaraan bermotor.
·      Sepeda Motor adalah (“is-a”) kendaraan bermotor.

   Objek yang dikelompokan dalam satu kelas men-share sekumpulan atribut dan perilaku. Jadi, seluruh objek kendaraan bermotor memiliki sekumpulan atribut dan perilaku yang juga dimiliki objek dari mobil. Keterkaitan antar kelas dalam relasi “is-a” berasal dari kenyataan bahwa sub kelas memiliki atribut dan perilaku yang dimiliki kelas induk, ditambah atribut dan perilaku yang dimiliki oleh sub kelas tersebut.
Superclass (“kelas dasar” atau “kelas induk”) merupakan kelas yang lebih general dalam relasi “is-a”. Subclass (“kelas turunan” atau “kelas anak”) merupakan kelas yang lebih spesifik dalam relasin”is-a”. Objek yang dikelompokkan dalam sub kelas memiliki atribut dan perilaku kelas induk, dan juga atribut dan perilaku tambahan. (Jadi, kumpulan atribut dan perilaku sub kelas lebih besar dari super kelas-nya). Relasi “is-a” antar superclasses-nya disebut dengan pewarisan atau inheritance.
Subclass “mewarisi” suatu superclass (atau juga bisa dikatakan sebuah subclass “turuanan dari” suatu superclass) karena reusabilitas Perangkat Lunak, membuat kelas baru (kelas turunan) dari kelas yang sudah ada (kelas dasar), kelas turunan mewarisi kelas induk yang mendapatkan data dan perilaku, merupakan bentuk spesial dari kelas induk, dan diperluas dengan perilaku tambahan.
Pewarisan ada dua jenis yaitu pewarisan tunggal dan pewarisan jamak. Pada protected access, protected members dapat diakses oleh member kelas dasar, friend kelas dasar, member kelas turunan, friend kelas turunan. Kelas turunan dapat merujuk/mengakses langsung public dan protected data member kelas induk dengan menggunakan nama atribut yang diakses.
 
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.

contoh program :

#include
#include

class Point {
public:
         Point (float = 0.0, float = 0.0);
void cetakPoint ( );
            protected:
                     float x, y;
            };
Point::Point (float a, float b)
{
          cout<< “Konstruktur Point dijalankan”<
          x = a;
          y = b;
}
void Point::cetakPoint ( )
{
          cout<< “Point : “<<’[‘<
}
class Circle : public Point {
public:
          Circle (float r = 0.0, float a = 0.0, float b = 0.0);//konsturktor
          float area ( );
          void cetakPoint ( );
protected:
          float radius, l;
};
Circle::Circle (float r, float a, float b)
: Point (a, b) {
          cout<< “Konstruktor Circle dijalankan”<
          radius = r;
}
float Circle::area ( )
{
          l=3.14*radius*radius;
          return l;
}
void Circle::cetakPoint ( )
{
          Point::cetakPoint ( );
          cout<< “Circle dgn r : “<
          cout<< “Luas circle : “<
}
class Cylinder : public Circle {
public:
          Cylinder (float h = 0.0, float r = 0.0, float a = 0.0, float b = 0.0);//konstruktor
          float area ( );
          float vol ( );
          void cetakPoint ( );
protected:
          float height, l, v;
};
Cylinder::Cylinder (float h, float r, float a, float b)
: Circle (r, a, b)
{
          cout<< “Konstruktor Cylinder dijalankan”<
          height = h;
}
float Cylinder::area ( )
{
          l= ( 2*Circle::area ( ) + 2*3.14*radius*height);
          return l;
}
float Cylinder::vol ( )
{
          v= (Circle::area ( )*height);
          return v;
            }
            void Cylinder::cetakPoint ( )
{
          Circle::cetakPoint ( );
          cout<< “Tinggi tabung (h) : “<
          cout<< “Luas tabung          : “<
          cout<< “Volume tabung     : “<
}
int main ( )
{
          Point p (1.1, 2.2);
          cout<
          Circle lingkaran (10, 5, 5);
          lingkaran.area ( );
          lingkaran.cetakPoint ( );
          cout<
          Cylinder tabung (20, 30, 3, 4);
          tabung.area ( );
          tabung.vol ( );
          tabung. cetakPoint ( );
          getch ( );
          return 0;
            }

Tidak ada komentar:

Domo-kun Staring