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:
Posting Komentar