Laporan Praktikum Alpro II
-
Upload
supriyandi-andy -
Category
Documents
-
view
35 -
download
0
description
Transcript of Laporan Praktikum Alpro II
-
LAPORAN AKHIR PRAKTIKUM
ALGORITMA DAN PEMPROGRAMAN II
NAMA : SUPRIYANDI
NIM : DBC 113 170
KELAS : D
MODUL : III (Polimorfisme)
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2014
-
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
Polimorfisme memiliki syarat-syarat sebagai berikut :
Ada hirarki pewarisan.
Kelas dalam hirarki pewarisan harus memiliki fungsi virtual (virtual
method) dengan signature yang sama.
Menggunakan pointer atau rujukan ke kelas induk. Pointer digunakan
untuk memanggil fungsi virtual.
Polimorfisme dapat diimplementasikan dengan menggunakan dasar
function overriding (melakukan redefinisi suatu fungsi di kelas anak, fungsi
yang di-override memiliki signature sama, : tipe balik, nama fungsi,
parameter sama) dan pewarisan.
-
Suatu kelas disebut abstrak apabila memiliki minimal satu fungsi
abstrak. Fungsi abstrak merupakan fungsi yang tidak memiliki definisi (hanya
deklarasi fungsi) atau menggunakan fungsi virtual (pure virtual).
virtual balikan namaFungsi (parameter) = 0
-
BAB II
LANGKAH KERJA
1. Buatlah program seperti di bawah ini!
#ifndef MANUSIA_H
#define MANUSIA_H
Class Manusia {
public:
virtual void Hello ();
};
Class Pelajar : public Manusia {
Pulic:
Void Hello();
};
Class Pegawai : public Manusia {
Public:
Void Hello();
};
#endif
-
Manusia.cpp
#include Manusia.h
#include
Void Manusia::Hello () {
cout
-
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;
}
2. Buatlah program seperti di bawah ini !
Bentuk2D.h
#ifndef BENTUK2D_H
#define BENTUK_H
Class Bentuk2D {
public:
virtual float cariLuas ()=0;
};
Class Segiempat : public Bentuk2D {
Protected:
Float panjang, lebar;
public:
Segiempat (float, float);
-
float cariLuas ();
};
Class Lingkaran : public Bentuk2D {
Private:
Float jejari;
Public:
Lingkaran(float);
Float cariLuas ();
};
#endif
Bentuk2D.cpp
#include
#includeBentuk2D.h
Segiempat::Segiempat(float p, float l)
{
Panjang = p;
Lebar = l;
}float Segiempat:: cariLuas()
{
Cout
-
Lingkaran::Lingkaran (float r)
{
Jejari = r;
}
Float Lingkaran::cariLuas()
{
Cout
-
MAbstak.cpp
#include Bentuk2D.h
#include
#include
Int main () {
Bentuk2D* b2d;
bool loop = true;
int pilihan;
do {
cout;
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;
}
-
3. Buatlah program seperti di bawah ini!
Shape.h
#ifndef SHAPE_H
#define SHAPE_H
Class Shape {
Public:
Virtual double area () const { return 0.0;}
Virtual double volume () const { return 0.0;}
Virtual void printShapeName () const = 0;
Virtual void print () const = 0;
};
#endif
Point1.h
#ifndef POINT1_H
#define POINT1_H
#include
#includeshape.h
class point : public Shape {
Public:
Point (int = 0, int = 0 );
Void setPoint (int, int );
-
Int getX() const { return x; }
Int getY() const { return y; }
Virtual void printShapeName () const { cout
-
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
-
Void Circle::setRadius (double r) { radius = r> 0 ? r : 0; }
double Circle::area() const { return radius; }
double Circle::area () const
{return 3.14159 * radius *radius; }
Void Circle::print () const
{
Point::print ();
Cout
-
Point.print (); //static binding
Cout
-
BAB III
PEMBAHASAN
1. Program Pertama :
Tujuan dari pembuatan program ini adalah untuk membuat kelompok
manusia, pegawai dan pelajar serta mengirimkan pesan kepada berbagai
objek yang berbeda (Polimorfisme). Pada saat kita memilih kelompok
manusia maka secara otomatis akan tampil kalimat Hallo pada
outputnya, itu menandakan bahwa orang tersebut adalah kelompok dari
masyarakat, dan seterusnya. Fungsi virtual adalah fungsi yang mendukung
adanya polymorphic function, artinta fungsi tersebut dapat didefinisikan ulang
pada kelas-kelas turunannya. Dalam C++ untuk mendefinisikan fungsi
sabagai fungsi virtual adalah dengan menggunakan kata kunci virtual, yaitu
dengan menempatkannya di depan pendeklarasian fungsi tersebut.
Program pertama ini mengalami error atau terjadi kesalahan pada
program MPoli.cpp tersebut.
#include "Manusia.h"
#include
#include
int main() {
Manusia* m;
int pilihan;
do {
cout > 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;
}
Dalam coding MPoli.cpp di atas tidak ada pemanggilan untuk
Manusia.cpp untuk menampilkan hasil dari inputan pada outputnya.
#include "Manusia.h"
#include
#include
#include "Manusia.cpp"
int main() {
Manusia* m;
int pilihan;
do {
cout > 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;
}
-
Manusia.cpp dan MPoli.cpp sangat erat hubungannya, MPoli.cpp juga
berhubungan dengan Manusia.h. Jadi, apabila dalam MPoli.cpp tidak ada
salah satu pun Manusia.cpp dan Manusia.h tidak dipanggil, maka program
tersebut akan terjadi error atau terjadi kesalahan. Untuk proses penampilan
pada outputnya setelah melakukan pilihan adalah :
void Manusia::Hello() {
cout
-
Coding MAbstrak.cpp untuk memanggil segiempat, lingkaran dan
segitiga pada program kedua adalah :
#include "Bentuk2D.h"
#include
#include
int main() {
Bentuk2D* b2d;
bool loop = true;
int pilihan;
do {
cout > 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.
-
Maksud dari switch ( pilihan ) adalah untuk memproses pilihan nomor
1, nomor 2, nomor 3 dan nomor 4. Untuk nomor 4 tidak dibaca atau dianggap
salah.
Maksud dari penambahan return 0; adalah mengembalikan nilai balikan
dari nilai segiempat, lingkaran dan segitiga.
Untuk proses masukkan pilihan kelompok adalah :
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
, seharusnya dalam include tersebut ditambahkan (.h) dan setelah
diperbaiki menjadi #include . 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 , seharusnya dalam include tersebut ditambahkan (.h)
dan setelah diperbaiki menjadi #include . Pada coding main.cpp
ini banyak yang diperbaiki dari pemanggilannya sampai dengan prosesnya.
Coding main.cpp.
-
Sebelum diperbaiki sbb :
#include
#include
#include " shape.h"
#include " point.h"
#include " circle1"
#include " cylindr1.h"
void virtualViaPointer( const Shape * );
int main()
{
Point point( 7, 11 ); // create a Point
Circle circle( 3.5, 22, 8 ); // create a Circle
point.printShapeName(); // static binding
point.print(); // static binding
cout
-
for ( int i = 0; i < 2; i++ )
virtualViaPointer( arrayOfShapes[ i ] );
return 0;
}
void virtualViaPointer( const Shape *baseClassPtr )
{
baseClassPtr->printShapeName();
baseClassPtr->print();
cout
-
}
int main()
{
Point point( 7, 11 ); // create a Point
Circle circle( 3.5, 22, 8 ); // create a Circle
point.printShapeName(); // static binding
point.print(); // static binding
cout
-
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
1. Polimorfisme adalah kemampuan 2 buah object yang berbeda untuk
merespon pesan permintaan yang sama dalam suatu cara yang unik.
2. Dalam OOP, konsep polimorfisme memungkinkan digunakannya suatu
interface yang sama untuk memerintah suatu objek agar melakukan suatu
aksi/tindakan yang mungkin secara prinsip sama tetapi secara proses
berbeda.
-
BAB V
DAFTAR PUSTAKA
2014.Modul Algoritma dan Pemrograman II . Palangkaraya:Universitas
Palangkaraya.
http://www.adityarizki.net/2011/04/tutorial-pemrograman-berorientasi-obyek-
dengan-c-polimorfisme-studi-kasus/
http://fillavigne.blogspot.com/2009/09/c-polimorfisme-polymorphism-
adalah.html
-
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 :