Algoritma & MOOP [X]

  1. 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:

  1. 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:

  1. 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”);

}

This entry was posted in Algoritma & MOOP. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *