NAMA
: SUPRIYANDI
NIM
KELAS
:D
MODUL
: III (Polimorfisme)
BAB I
TUJUAN DAN LANDASAN TEORI
I. TUJUAN
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu membuat
polimorfisme.
II. LANDASAN TEORI
Polimorfisme memiliki arti banyak bentuk, melalui hal yang sama
untuk berbagai data yang berbeda, mengirimkan pesan yang sama ke berbagai
objek yang berbeda karena tiap objek memberi respons dengan cara yang
berbeda. Berikut ini merupakan contoh polimorfisme.
Bentuk
luas
Segitiga
Lingkaran
BujurSangkar
luas
luas
luas
BAB II
LANGKAH KERJA
Manusia.cpp
#include Manusia.h
#include <iostream.h>
Void Manusia::Hello () {
cout<<Hallo <<endl;
}
void Pelajar::Hello () {
cout<<Hallo, Saya Pelajar <<endl;
void Pegawai::Hello () {
cout<<Hallo, Saya Pegawai .<<endl;
}
MPoli.cpp
#include Manusia.h
#include <iostream.h>
#include <stdlib.h>
Int main () {
Manusia* m;
Int pilihan;
do {
cout<<1: Manusia, 2: Pelajar, 3: Pegawai >>;
cin>>pilihan;
} while (pilihan < 1|| pilihan > 3 );
Switch (pilihan) {
case 1:m= new Manusia;break;
case 2:m=new Pelajar;break;
case 3:m=new Pegawai;break;
}
m->Hello ();
delete m;
return 0;
}
Bentuk2D.cpp
#include<iostream.h>
#includeBentuk2D.h
Segiempat::Segiempat(float p, float l)
{
Panjang = p;
Lebar = l;
}float Segiempat:: cariLuas()
{
Cout<<Luas segiempat :<<panjang * lebar<<endl;
}
Lingkaran::Lingkaran (float r)
{
Jejari = r;
}
Float Lingkaran::cariLuas()
{
Cout<<Luas lingkaran :<<3.4 * jejari * jejari<<endl;
Segitiga::Segitiga(float a, float t)
{
alas = a;
tinggi = t;
}
Float Segitiga:;cariLuas()
{
Cout<<Luas Segitiga : << 0.5 * alas *tinggi<<endl;
}
MAbstak.cpp
#include Bentuk2D.h
#include<iostream.h>
#include<stdlib.h>
Int main () {
Bentuk2D* b2d;
bool loop = true;
int pilihan;
do {
cout<<1: Segiempat, 2:Lingkaran, 3: Segitiga>>;
cin>> pilihan;
} while (pilihan < 1 || pilihan > 3 );
Switch ( pilihan ) {
Case 1:b2d = new Segiempat(4.0, 5.0); break;
Case 2:b2d = new Lingkaran (7.0 );break;
Case 3:b2d = new Segitiga (2.0, 10.0); break;
Case 4:loop = false;
}
b2d->cariLuas ();
delete b2d;
return 0;
}
Point1.h
#ifndef POINT1_H
#define POINT1_H
#include<iostream>
#includeshape.h
Point1.cpp
#includepoint1.h
point::point (int a, int b) {setPoint (a, b); }
void point::setPoint (int a, int b )
{
x= a;
y = b;
}
Void Point::print () const
{ cout<< [<< x<< , <<y<<];}
Circle1.h
#ifndef CIRCLE1_H
#define CIRCLE_H
#include point1.h
Class Circle : public Point {
Public:
Circle(double r = 0.0, int x = 0, int y = 0);
Void setRadius (double );
Double getRadius () const;
Virtual double area () const;
Virtual void printShapeName () const { cout<<Circle:; }
Virtual void print () const;
Private:
double radius;
};
#endif
Circle1.cpp
#include<iostream>
#includecircle1.h
Circle::Circle(double r, int a, int b )
: point(a, b)
{setRadius ( r ); }
Main.cpp
#include<iostream>
#include<stdlib.h>
#includeshape.h
#includepoint.h
#includecircle1.h
#includecylindr1.h
Void virtual1ViaPointer ( const Shape * );
Int main()
{
Point point(7, 11);
//create a point
//create a Circle
Point.printShapeName();
//static binding
Point.print ();
//static binding
Cout<< \n;
Circle.printShapeName ();
// static binding
Circle.print () ;
// static binding
Cout<< \n;
Shape *array0fShapes [ 2 ]; // array of base-class pointers
array0fShapes [ 0 ] = &point;
array0fShapes [ 1 ] =&circle;
cout<< Virtual function calls made off
<<base-class pointers\n;
For ( int i = 0; i< 2; i++ )
Virtualviapointer (array0fShapes [ i] );
return 0;
}
Void virtualViapointer ( const shape *baseClassptr )
{
baseClassPtr->printShapeName();
baseClass->print ();
cout<<\nArea = << baseClassPtr->area()
<<nVolume = << baseClassPtr->volume() << \n\n;
}
BAB III
PEMBAHASAN
1.
Program Pertama :
#include "Manusia.h"
#include <iostream.h>
#include <stdlib.h>
int main() {
Manusia* m;
int pilihan;
do {
cout <<"1: Manusia, 2: Pelajar, 3: Pegawai >> ";
cin >> pilihan;
} while ( pilihan < 1 || pilihan > 3 );
switch ( pilihan ) {
case 1: m = new Manusia; break;
#include "Manusia.h"
#include <iostream.h>
#include <stdlib.h>
#include "Manusia.cpp"
int main() {
Manusia* m;
int pilihan;
do {
cout <<"1: Manusia, 2: Pelajar, 3: Pegawai >> ";
cin >> pilihan;
} while ( pilihan < 1 || pilihan > 3 );
switch ( pilihan ) {
case 1: m = new Manusia; break;
case 2: m = new Pelajar; break;
case 3: m = new Pegawai; break;
}
m->Hello();
delete m;
return 0;
}
void Manusia::Hello() {
cout <<"Hallo ..."<< endl;
}
void Pelajar::Hello() {
cout <<"Hallo, Saya Pelajar ..."<< endl;
}
void Pegawai::Hello() {
cout <<"Hallo, Saya Pegawai ...."<< endl;
}
2.
Program Kedua :
#include "Bentuk2D.h"
#include <iostream.h>
#include <stdlib.h>
int main() {
Bentuk2D* b2d;
bool loop = true;
int pilihan;
do {
cout <<"1: Segiempat, 2: Lingkaran, 3: Segitiga >> ";
cin >> pilihan;
} while ( pilihan < 1 || pilihan > 3 );
switch ( pilihan ) {
case 1: b2d = new Segiempat(4.0, 5.0); break;
case 2: b2d = new Lingkaran (7.0); break;
case 3: b2d = new Segitiga (2.0, 10.0); break;
case 4: loop = false;
}
b2d->cariLuas();
delete b2d;
return 0;
}
Maksud dari case 4: loop = false; adalah jika kita masukkan angka 4
pada outputnya, maka masukkan tersebut tidak dapat dibaca atau dianggap
salah, dan akan program tersebut akan meminta masukkan lagi nomor 1, atau
nomor 2, atau juga nomor 3.
switch ( pilihan ) {
case 1: b2d = new Segiempat(4.0, 5.0); break;
case 2: b2d = new Lingkaran (7.0); break;
case 3: b2d = new Segitiga (2.0, 10.0); break;
case 4: loop = false;
}
3.
Program Ketiga :
Tujuan dari program ini adalah untuk membuat tampilan point dan
circle dalam fungsi virtual. Program ketiga ini banyak terdapat error atau
terdapat kesalahan. Pada coding shape.h tidak terdapat ada error atau
kesalahan. Pada coding point1.h terdapat error atau kesalahan, yaitu #include
<iosteram>, seharusnya dalam include tersebut ditambahkan (.h) dan setelah
diperbaiki menjadi #include <iosteram.h>. Pada coding point1.cpp tidak
terdapat error atau kesalahan. Pada coding circle1.h tidak terdapat error atau
kesalahan. Pada coding circle1.cpp terdapat error atau kesalahan, yaitu
#include <iosteram>, seharusnya dalam include tersebut ditambahkan (.h)
dan setelah diperbaiki menjadi #include <iosteram.h>. Pada coding main.cpp
ini banyak yang diperbaiki dari pemanggilannya sampai dengan prosesnya.
Coding main.cpp.
#include <iostream>
#include <stdlib.h>
int main()
{
Point point( 7, 11 );
// create a Point
// create a Circle
point.printShapeName();
// static binding
point.print();
// static binding
circle.printShapeNama();
// static binding
circle.print();
// static binding
arrayOfShapes[ 0 ] = &point;
arrayOfShapes[ 1 ] = &circle;
cout
return 0;
}
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include "shape.h"
#include "point1.h"
#include "circle1.h"
<<"\nArea
= "<<baseClassPtr->area()
<<"\nVolume = "<<baseClassPtr->volume()<<"\n\n";
int main()
{
Point point( 7, 11 );
// create a Point
// create a Circle
point.printShapeName();
// static binding
point.print();
// static binding
cout <<'\n';
circle.printShapeName();
// static binding
circle.print();
// static binding
cout <<'\n';
Shape *arrayOfShapes[ 2 ];
arrayOfShapes[ 0 ] = &point;
arrayOfShapes[ 1 ] = &circle;
Maka dengan begitu program ketiga ini sudah dapat dijalankan. Pada
coding ini menggunakan fungsi virtual. Di dalam program ketiga ini terdapat
3 header dan 3 cpp. Return juga berperan untuk mengembalikan nilai balikan
dari nilai Point dan Circle.
BAB IV
KESIMPULAN
BAB V
DAFTAR PUSTAKA
BAB VI
LAMPIRAN
Program 1 :
MANUSIA.H
Manusia.cpp
MPoli.cpp
Output :
Program 2 :
Bentuk2d.h
Bentuk2d.cpp
Mabstrak.cpp
Output :
Program 3 :
Shape.h
Point1.h
point1.cpp
circle1.h
circle1.cpp
Main.cpp
Output :