- 1. Buatlah program dengan class inheritance untuk merepresentasikan class tabung yang mempunyai data jari2 alas tabung yang berbentuk lingkaran dan tinggi. Class tabung merupakan class turunan dari class lingkaran yang mempunyai data jari2. Function yang ada pada class lingkaran adalah inputjari2, hitung luas dan hitung keliling. Sedangkan function yang ada pada class tabung adalah inputData, hitung volume dan hitung permukaan tabung.
Code:
#include <iostream>
using namespace std;
class lingkaran
{
protected:
float r,l,k;
public:
lingkaran() { r=l=k=0; }
void inputjari() { cout<<“Masukkan jari jari : “; cin>>r; }
float luas() { l=(22 * r * r)/7; return l;}
float keliling() { k=(22 * 2 * r)/7; return k; }
void tampill() { cout<<“Luas lingkaran : “<<luas()<<endl; cout<<“Keliling lingkaran : “<<keliling()<<endl; }
};
class tabung : public lingkaran
{
protected:
float t,v,p;
public:
tabung() { t=v=p=0; }
void inputdata() { cout<<“Masukkan tinggi : “; cin>>t; }
float volume() { v=lingkaran::luas() * t; return v; }
float permukaan() { p=(2 * lingkaran::luas()) + (lingkaran::keliling() * t); return p; }
void tampilt() { cout<<“Volume tabung : “<<volume()<<endl; cout<<“Permukaan tabung : “<<permukaan()<<endl; }
};
int main()
{
tabung tb;
tb.inputjari();
tb.inputdata();
tb.tampill();
tb.tampilt();
system(“pause”);
}
- 2. Buatlah sebuah program dengan menggunakan class dan konsep inheritance (pewarisan sifat).Dengan langkah-langkah sebagai berikut:
a) Deklarasi dan definisikan sebuah class induk dengan data member dan method yang diperlukan.
b) Deklarasi dan definisikan sebuah class anak yang diturunkan secara public dari class induk dan tambahkan method yang merupakan kelebihan class anak yang tidak dimiliki class induk dimana class induk hanya bisa bergerak ke kiri, kanan, atas, dan bawah sedangkan class anak selain bergerak juga bisa ganti warna.
c) Bentuk obyek dari class anak dan lakukan method bergeraknya, gerakkan obyek dengan menggunakan anak panah.
d) Tunggu penekanan tombol ENTER, jika sudah ditekan maka bentuk obyek class anak dan lakukan method bergeraknya, gerakkan obyek dengan menggunakan anak panah, ganti warna obyek dengan menekan tombol spasi.
Code:
#include <cstdlib>
#include <iostream>
#include <conio2.h>
using namespace std;
class induk
{
protected:
int x,y,z;
public:
induk() { x=y=10;z=1; }
void gerak(char *arah);
void setobj(int ax, int ay) {x=ax; y=ay;}
int getx() {return x;}
int gety() {return y;}
};
void induk::gerak(char *arah)
{
gotoxy(x,y); cout << ” “;
if (strcmp(arah, “kiri”)==0 && x >= 2) x = x – z;
else if (strcmp(arah, “kanan”)== 0 && x <= 50) x = x + z;
else if (strcmp(arah, “bawah”)==0 && y <= 20) y = y + z;
else if (strcmp(arah, “atas”)==0 && y >= 2) y = y – z;
}
class anak : public induk
{
protected:
int warna;
public:
anak() { warna=1; }
void ubahwarna();
void tampil();
};
void anak::ubahwarna()
{
warna ++;
if (warna>15) {warna = 1;}
}
void anak::tampil()
{ textcolor(warna); gotoxy(x,y); cout << “*”; }
int main(int argc, char *argv[])
{
int ax,ay;
char tombol=0;
anak *ank;
ank = new anak();
(*ank).tampil();
do
{ if (tombol == 75) (*ank).gerak (“kiri”);
else if (tombol == 77) (*ank).gerak (“kanan”);
else if (tombol == 80) (*ank).gerak (“bawah”);
else if (tombol == 72) (*ank).gerak (“atas”);
else if (tombol == 13)
{ ax = (*ank).getx();
ay = (*ank).getx();
ank = new anak();
(*ank).setobj(ax,ay);
}
else if (tombol == 32) { (*ank).ubahwarna (); }
(*ank).tampil();
tombol = getch();
} while (tombol != 27);
system(“PAUSE”);
return EXIT_SUCCESS;
}
- 3. Buatlah program dengan class inheritance untuk menginputkan dan menampilkan data manager pada suatu perusahaan yang mempunyai data nip, nama, jenjang pendidikan, lulusan, alamat, departement, jumlah bawahan, dan gaji. Program dibuat dengan terlebih dahulu mendeklarasikan class manusia yang mempunyai data nama dan alamat, kemudian class karyawan yang mempunyai data nip, departement dan gaji, selanjutnya class mahasiswa yang mempunyai data nama sekolah, dan jenjang pendidikan. Masing-masing class tersebut mempunyai fungsi inputData dan displayData. Class Hirarkinya adalah sebagai berikut:
Hal –hal yang perlu dibuat adalah:
a.) deklarasi masing-masing class, dengan ketentuan penurunan class karyawan dan class mahasiswa dari class manusia secara public, dan penurunan class manager dari class karyawan dan mahasiswa secara private.
Code:
Hasil:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class manusia
{
protected:
string nama;
string alamat;
public:
manusia() { nama=””; alamat=””; }
void inputmanusia()
{
cout<<“Masukkan nama : “; cin>>nama;
cout<<“Masukkan alamat : “; cin>>alamat;
}
void tampilmanusia()
{
cout<<“\n\nNama : “<<nama<<endl;
cout<<“Alamat : “<<alamat<<endl;
}
};
class karyawan : public manusia
{
protected:
string nip;
string dept;
float gaji;
public:
karyawan() { nip=””; dept=””; gaji=0; }
void inputkaryawan()
{
manusia::inputmanusia();
cout<<“Masukkan NIP : “; cin>>nip;
cout<<“Masukkan departemen : “; cin>>dept;
cout<<“Masukkan gaji : “; cin>>gaji;
}
void tampilkaryawan()
{
manusia::tampilmanusia();
cout<<“NIP : “<<nip<<endl;
cout<<“Departemen : “<<dept<<endl;
cout<<“Gaji : “<<gaji<<endl;
}
};
class mahasiswa : public manusia
{
protected:
string sekolah;
string pendidikan;
public:
mahasiswa() { sekolah=””; pendidikan=””; }
void inputmahasiswa()
{
cout<<“Masukkan nama sekolah : “; cin>>sekolah;
cout<<“Masukkan jenjang pendidikan : “; cin>>pendidikan;
}
void tampilmahasiswa()
{
cout<<“Sekolah : “<<sekolah<<endl;
cout<<“Pendidikan : “<<pendidikan<<endl;
}
};
class manager : private karyawan, private mahasiswa
{
protected:
int jmlbawahan;
public:
manager() { jmlbawahan=0; }
void inputmanager()
{
karyawan::inputkaryawan();
mahasiswa::inputmahasiswa();
cout<<“Masukkan jml bawahan : “; cin>>jmlbawahan;
}
void tampilmanager()
{
karyawan::tampilkaryawan();
mahasiswa::tampilmahasiswa();
cout<<“Jumlah bawahan : “<<jmlbawahan<<endl;
}
};
int main()
{
manager m;
m.inputmanager();
m.tampilmanager();
system(“pause”);
}