- Diberikan penggalan program sebagai berikut:
#include <constrea.h>
class Induk{
public:
virtual int P(int x){return(x*x);}
int Q(int x, int y){return(y*P(x));}
};
class Anak : public Induk{
public:
int P(int x){return(x*x*x);}
int Q(int x){return(10*P(x));}
};
Ditanyakan:
a.) apa output dari main program berikut:
void main(){
Induk A;
cout << “nilai Q(2,5) = “ << A.Q(2,5) << endl;
}
Jawab:
b.) apa output dari main program berikut:
void main(){
Induk *B; B=new Anak;
cout << “nilai Q(2,5) = “ << B->Q(2,5) << endl;
}
Jawab:
c.) apa output dari main program berikut:
void main(){
Anak C;
cout << “nilai Q(5) = “ << C.Q(5) << endl;
}
Jawab:
- Buatlah bagian program dengan ketentuan berikut.
3 (Tiga) class yang memiliki informasi sebagai berikut:
– Class Shape, sifatnya abstract memiliki 1 public function: double luas();
– Class Circle, derived dari Shape secara public, memiliki 1 member private: float radius; 1 function public: double luas() yang berisi rumus luas lingkaran; dan 1 contructor dengan 1 parameter yang langsung memberi isi pada radius. (Rumus luas lingkaran: luas = pi*r*r)
– Class Triangle, derived dari Shape secara public, memiliki 2 member private: float alas dan tinggi; 1 function public: double luas() yang berisi rumus luas segitiga yaitu 0.5*alas*tinggi, dan 1 constructor dengan 2 parameter yang memberi nilai awal alas dan tinggi.
– Apabila ditambah potongan program berikut:
void main(){
Circle MyCircle(7);
Cout<<”Luas MyCircle = ”<<MyCircle.luas();
Triangle MyTriangle(10, 5);
Cout<<”\nLuas MyTriangle = ”<<MyTriangle.luas();
Shape *ptr; ptr = &MyCircle;
Cout<<”\nLuas Pointer Shape = ”<< ptr->luas();
}
Akan menghasilkan tampilan:
Luas MyCircle = 154
Luas MyTriangle = 25
Luas Pointer Shape = 154
Jawab:
Code:
#include <iostream.h>
class shape
{
public:
virtual double luas()=0;
};
class circle : public shape
{
private:
float radius;
public:
circle(float r){radius=r;}
double luas() {return ((22 * radius *radius)/7);}
};
class triangle : public shape
{
private:
float alas,tinggi;
public:
triangle(float a,float t) {alas=a; tinggi=t;}
double luas() {return (0.5 * alas * tinggi); }
};
int main()
{
circle MyCircle(7);
cout<<“Luas MyCircle = “<<MyCircle.luas();
triangle MyTriangle(10, 5);
cout<<“\nLuas MyTriangle = “<<MyTriangle.luas();
shape *ptr; ptr = &MyCircle;
cout<<“\nLuas Pointer Shape = “<< ptr->luas()<<endl;
system(“pause”);
}
Hasil:
- Dengan menggunakan kelas inheritance dan polymorphism, buatlah class declaration dan function definition dari kelas hierarky (hierarchy class) di bawah: (petunjuk: gunakan virtual method untuk polymorphism).
Jawab:
Code:
#include <iostream.h>
#include <math.h>
class figure
{
public:
virtual void inputData()=0;
virtual double luas()=0;
virtual double keliling()=0;
};
class lingkaran : public figure
{
private:
double radius;
public:
void inputData(){cout << “\nMasukkan radius lingkaran : “; cin >> radius;}
double luas() {return (3.14 * radius * radius);}
double keliling() {return (2 * 3.14 * radius);}
};
class bujursangkar : public figure
{
private:
double panjangsisi;
public:
void inputData(){cout << “\nMasukkan Panjang sisi bujursangkar : “; cin >> panjangsisi;}
double luas() {return (panjangsisi * panjangsisi);}
double keliling() {return (2 *(panjangsisi + panjangsisi));}
};
class segitiga : public figure
{
private:
double panjangsisi;
public:
void inputData(){cout << “\nMasukkan Panjang sisi segitiga : “; cin >> panjangsisi;}
double luas() {return ((panjangsisi * panjangsisi * sqrt(3))/4);}
double keliling() {return (3 * panjangsisi);}
};
int main()
{
figure *f[3]={new lingkaran,new bujursangkar,new segitiga};
for (int i=0;i<3;i++)
{
f[i]->inputData();
cout<<“Luas : “<<f[i]->luas()<<endl;
cout<<“Keliling : “<<f[i]->keliling()<<endl<<endl;
}
system(“pause”);
}