Polymorphism

9 May 2011 at 12:29 (Algoritma & Metode OOP (C++))

Week 9 – Tugas Individu 9 – 0454T

Soal Algoritma dan MOOP

Pertemuan 9

  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;

}

b.)    apa output dari main program berikut:

void main(){

Induk *B; B=new Anak;

cout << “nilai Q(2,5) = “ << B->Q(2,5) << endl;

}

c.)    apa output dari main program berikut:

void main(){

Anak C;

cout << “nilai Q(5) = “ << C.Q(5) << endl;

}

  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

  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).

  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;

}

Jawaban Outputnya:

a.)    apa output dari main program berikut:

void main(){

Induk *B; B=new Anak;

cout << “nilai Q(2,5) = “ << B->Q(2,5) << endl;

}

Jawaban Outputnya:

a.)    apa output dari main program berikut:

void main(){

Anak C;

cout << “nilai Q(5) = “ << C.Q(5) << endl;

}

Jawaban Outputnya:

  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

Jawaban Programnya:

// progam c++ dengan polymorphism

#include <iostream>

#include <conio.h>

#include <math.h>

#include <iomanip>

using namespace std;

class Shape

{

public:

virtual double Luas()=0; //pure virtual

};

class Circle : public Shape

{

private:

float radius;

public:

Circle (float r)

{

radius=r;

}

double Luas() { return(3.14*radius*radius);}

};

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 = “<< setprecision(0) << fixed <<MyCircle.Luas();

Triangle MyTriangle(10, 5);

cout<<“\nLuas MyTriangle = “<<MyTriangle.Luas();

Shape *ptr; ptr = &MyCircle;

cout<<“\nLuas Pointer Shape = “<< ptr->Luas();

cout <<“\n”;

system (“Pause”);

}

Jawaban Hasil Output Programnya:

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).

 Jawaban Programnya:

// progam c++ dengan polymorphism

#include <iostream>

#include <conio.h>

#include <math.h>

#include <iomanip>

using namespace std;

class Figure

{

      public:

             virtual double Luas()=0; //pure virtual

             virtual double Keliling()=0; //pure virtual

};

class Lingkaran : Figure

{

      private:

              double radius;

      public:

             Lingkaran (double r)

              {

                     radius=r;

              }

             double Luas(){ return(3.14*radius*radius);}

             double Keliling() {return (2*3.14*radius);}

};

class BujurSangkar:Figure

{

      private:

              double panjang_sisi;

      public:

              BujurSangkar (double s)

              {

                     panjang_sisi=s;

              }

              double Luas(){ return(panjang_sisi*4);}

              double Keliling() {return (panjang_sisi*panjang_sisi);}

};

class SegiTiga:Figure

{

      private:

              double panjang_sisi;

      public:

              SegiTiga (double s)

              {

                     panjang_sisi=s;

              }

              double Luas(){ return(0.5*panjang_sisi*panjang_sisi);}

              double Keliling() {return (panjang_sisi+panjang_sisi+panjang_sisi);}

};

Save to PDF

1 Comment

  1. Ardhi Aja said,

    Nice Post..

    Keep Posting
    🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: