Download - Laporan Hasil Praktikum ALPRO Modul 3
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
1/28
LAPORAN HASIL PRATIKUM
ALGORITMA DAN PEMROGRAMAN II
Nama : WANDY SUPRIADI
NIM : DBC 114 121
Kelas : F
M !"l : III # POLIMORFISME $
%URUSAN TEKNIK INFORMATIKAFAKULTAS TEKNIK
UNI&ERSITAS PALANGKARAYA2'1(
BAB I
TU%UAN DAN LANDASAN TEORI
1) T"*"a+
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
2/28
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu membuat
polimorfisme.
2) La+!asa+ Te ,-Polimorfisme Memiliki arti "banyak bentuk", melakukan 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.
Polimorfisme memiliki syarat-syarat sebagai berikut
!da hirarki pewarisan
elas dalam hirarki pewarisan barus memiliki fungsi #irtual $#irtual method%
dengan signature yang sama.
Menggunakan pointer atau rujukan ke kelas induk. Pointer digunakan untuk
memanggil fungsi #irtual
Polimorfisme dapat diimplementasikan dengan menggunakan dasar functiono#erriding $melakukan redefinisi suatu fungsi di kelas anak, fungsi yang di-
o#erride memiliki signature sama, signature sama tipe batik, nama fungsi,
parameter sama% dan pewarisan.
Suatu kelas disebut abstrak apabila memiliki minimal satu fungsi abstrak. &ungsi
abstrak merupakan fungsi yang tidak memiliki definisi $hanya deklarasi
fungsi%'menggunakan fungsi #irtual $pure #irtual%.
Bentuk
Luas
Bujursangkar LingkaranSegitigaLuasLuas
Luas
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
3/28
&-,."al /al-0a+ +amaF"+ s- # a,ame.e,$ 3 '
BAB II
LANGKAH KER%A
(. Buatlah program seperti dibawah ini)
1 Ma+"s-a)
*ifndef M!+ S ! /
*define M!+ S ! / class Manusia 0class Manusia 0
public#irtual #oid /ello$%1
2 1class Pelajar public Manusia 0
public#oid /ello$%1
2class Pegawai public Manusia 0
public
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
4/28
#oid /ello$%121*endif
Ma+"s-a)5*include "Manusia.h"*include 3iostream.h4
#oid Manusia /ello$% 0cout 33"/allo ..."33 endl1
2#oid Pelajar /ello$% 0
cout 33"/allo, Saya Pelajar ..."33 endl12#oid Pegawai /ello$% 0
cout 33"/allo, Saya Pegawai ...."33 endl12
MP l-)5*include "Manusia.h"*include 3iostream.h4*include 3stdlib.h4int main$2 0 Manusia5 m1 int pilihan1 do 0 cout 33"( Manusia, 6 Pelajar, 7 Pegawai 44 8
cin 44 pilihan12 while $ pilihan 3 ( 99 pilihan 4 71switch $ pilihan % 0case ( m : new Manusia1 break1case 6 m : new Pelajar1 break1case 7 m : new Pegawai1 break12
m-4/ello$%1delete m1return ;12
6. Buatlah program seperti di bawah ini)
Be+."02D)*ifndef B /*define B /
class Bentuk6> 0 public
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
5/28
#irtual float cari?uas$%:;121
class Segiempat public Bentuk6> 0
protectedfloat panjang, lebar1
publicSegiempat$float, float%1float cari?uas$%121
class ?ingkaran public Bentuk6> 0
pri#atefloat jejari1
public?ingkaran $float%1float cari?uas$%121
class Segitiga public Bentuk6> f pri#atefloat alas, tinggi1
publicSegitiga$float, float%1float cari?uas$%1*endif
*include 3iostream.h4*include "Bentuk6>.h"
Segiempat Segiempat$float p, float l%0
panjang : p1 lebar : l12
float Segiempat cari?uas$%
0cout 33 "?uas segiempat 8 33 panjang5lebar 33 endl12
?ingkaran ?ingkaran $float r%0
jejari : r12float ?ingkaran cari?uas$%0cout 33 "?uas lingkaran 8 33 7.@5jejari5jejari 33 endl1
2
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
6/28
SegitiAa Segitiga$float a, float t%0alas : a1
tinggi : t12
float Segitiga cari?uas$%0cout 33 "?uas Segitiga 8 33 ;. 5alas5tinggi 33 endl12
MA/s.,a0)5*include "Bentuk6>.h"*include 3iostream.h4*include 3stdlib.h4
int main$% 0
Bentuk6>5 b6d1 bool loop : true1int pilihan1do 0 cout 33"( Segiempat, 6 ?ingkaran, 7 Segitiga 44 81
cin 44 pilihan1 2 while $ pilihan 3 ( 66 pilihan 4 7 %1
Switch $ pilihan % 0case ( b6d : new Segiempat$@.;, .;%1 break1case6 b6d : new ?ingkaran $C.;%1 break1case 7 b6d : new Segitiga $6.;, (;.;%1 break1case@ loop: false12
b6d-4cari?uas$%1delete b6d1return ;12
7. Buatlah program seperti dibawah ini)
s a e) *ifndef S/!P< /
*define S/!P< /
class Shape 0 public #irtual double area$% const 0 return ;.;1 2 #irtual double #olume$% const 0 return ;.;1 2
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
7/28
#irtual #oid printShape+ame$% const : ;1 #irtual #oid print$% const : ;1 21 *endif
P -+.1)*ifndef PD +=( /*define PD +=( /
*include 3iostream4*include "shape.h"
class Point public Shape 0 public Point$ int : ;, int : ; %1
#oid setPoint$ int, int %1 int getED$% const 0 return F1 2
int getGD$% const 0 return y1 2#irtual #oid printShape+ame$% const 0 cout 33 "Point 81 2#irtual #oid print$% const1 Pri#ate int F, y1 21
*endif
-+.l)5 *include "pointl.h"
Point Point$ int a, int b% 0 setPoint $ a, b %1 2
#oid Point setPoint$ int a, int b %
0E : a1G : b12
#oid Point print$% const0 cout 33 H IH 33 F 33 ", " 33 y 33 JKL1 2
5-,5lel)*ifnde N ?
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
8/28
#oid setNadius$ double %1double getNadius$% const1#irtual double area$% const1
#irtual #oid printShape+ame$% const cout 33 " ircle 81 2 #irtual
#oid print02 const1 pri#ate
double radius121
*ifendif
5-,5le1)5*include 3iostream4*include "circlel.h"
ircle ircle$ double r, int a, int b % Point$ a, b %
0 setNadius$ r %1 2
#oid ircle setNadius$ double r % 0 radius : r 4 ; O r ;1 2
double ircle getNadius$% const 0 return radius1 2double ircle getNadius$% const0 return 7.(@( 5radius5radius1 2
#oid ircle print$% const0Point print$%1cout 33 "1 Nadius : 8 33 radius12
ma-+)5*include 3iostream4*include 3stdlib.h4
*include "shape.h"
*include "point(.h"*include "circle(.h"*include "cylindr(.h"
#oid #irtualQiaPointer $ const Shape 5 %1int main$%2
Point point$ C, (( %1 '' create a Pointircle circle$ 7. , 66, R %1 '' create a ircle
point.printShape+ame$%1 '' static binding point.printo$%1 '' static binding
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
9/28
cout 33 ( nH1
circle.printShape+ame$%1 '' static bindingcircle.printo$%1 '' static binding
cout 33 H nH1 cout 33 "Qirtual function calls made off 8
33 "base-class pointers n"1
for $ int i : ;1 i 3 61 iTT %#irtualQiaPointer$ arrayDfShapesI i K %1
return ;1
2
#oid #irtualQiaPointer$ const Shape 5base lassPtr %
0 base lassPtr-4printShape+ame$%1 base lassPtr-4print$%1 cout 33 " n!rea : " 33 base lassPtr-4area$%
33 " #olume : 8 33 base lassPtr-4#olume$% 33" n n"1 2
BAB III
PEMBAHASAN
Program pertama di atas terdiri dari 7 file, yaitu ( file header, dan 6 file source.>an diberi nama Manusia.h, Manusia.cpp, MPoli.cpp.
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
10/28
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
11/28
Pada penulisan 5lass Pela*a, : "/l-5 Ma+"s-a !a+ 5lass Pe a=a- : "/l-5
Ma+"s-a , menandakan bahwa kelas Pelajar dan kelas Pegawai merupakan kelas
turunan dari kelas Manusia.
Pada kedua kelas turunan tersebut menggunakan #ariabel < -! ell #$ dari kelasinduk kelas Manusia. >an ketiga kelas ini menggunakan perubah akses $anggota
kelas% public.
Ma+"s-a) ? berfungsi untuk
memasukkan file header Manusia.h ke dalam Manusia.cpp .Pernyataan 7-+5l"!e8- s.,eam) 9 .diperlukan untuk melibatkan objek 5 ".
$ digunakan pada proses input dan output%.Pada penulisan < -! Ma+"s-a::Hell #$ @ < -! Pela*a,::Hell #$ @ < -!
Pe a=a-::Hell #$ yang menggunakan fungsi COUT untuk menampilkan masing-
masing perintah yang ada pada script.
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
12/28
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
13/28
an
fungsi !ele.e berfungsi untuk menghapus memori yang tersimpan pada saat
program selesai di jalankan, maka apabila terhapus ruang di memori dapat
digunakan untuk keperluan yang lainnya. ,e.",+ ' digunakan untuk mengembalikan nilai fungsi, dan nilai balikannya adalah ;.Pada program kedua terdiri dari 7 file, ( file header, dan 6 file source. >an diberi
nama Bentuk6>.h, Bentuk6>.cpp, M!bstrak.cpp.
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
14/28
Pada program ini terdapat @ kelas yaitu kelas Be+."02D@ Se -em a.@ L-+ 0a,a+@
!a+ Se -.- a . >an kelas utama pada program ini adalah kelas Be+."02D . Pada
langkah kerja program kedua, #ariabel 5a,-L"as adalah bertipe ;l a. $/-la+ a+
e5a a+$ , tapi diganti menjadi bertipe < -! , karena melakukan percetakan sebuah
data, maka tipe #oid lah yang cocok untuk digunakan.Pada kelas utama yaitu Bentuk6>, menggunakan fungsi #irtual, yaitu
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
15/28
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
16/28
disebut -+.e, .
Pointer $#ariabel penunjuk% adalah suatu #ariabel yang berisi alamat memori dari
suatu #ariabel lain. !lamat ini merupakan lokasi dari obyek lain $biasanya
#ariabel lain% di dalam memori. >alam hal ini pointer menunjuk kelas Bentuk6>,
jadi pointer ini menghasilkan nilai yang berada pada kelas alamat yaitu #ariabel
< -! 5a,-L"as#$ .Pada program utama ini di buat #ariabel baru yaitu #ariabel pilihan yang bertipe
-+.e e, #/-la+ a+ /"la.$ dan l yang bertipe B lea+ #me+ a.a0a+
.,"e ;alse$ yang bernilai true. Qariabel ini digunakan untuk #ariabel inputan untuk
memilih pilihan pada
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
17/28
Pada pengulangan menggunakan struktur ! = -le , dan pengulangan yang
dilakukan adalah perinaht pada fungsi cout yaitu 88 1: Se -em a.@ 2: L-+ 0a,a+@
: Se -.- a 99 > , dan fungsi C-+ untuk menggunakan #ariabel pilihan sebagai
#ariabel inputan.Pada s.,"0.", = -le , = -le # -l- a+ 8 1 66 -l- a+ 9 , pengulangan akan terus
dilakukan apabila inputan yang dimasukkan kurang dari ( atau lebih dari 7.
Pada bagian s=-.5 # -l- a+$@Setelah #ariabel -l- a+ ditentukan nilainya, maka
akan terpilih sesuai isi yang ada pada struktur switch. Pada pilihan ini sudah terisi
nilai-nilai pada masing-masing #ariabel kelasnya.
pointer /2! mengarah kepada fungsi 5a,-L"as#$ yang ada pada pilihan yang kita
tentukan.Pada saat kita memasukan 6, maka akan di eksekusi untuk menuju ke kelas
lingkaran yang berisi argument nilai ?uas ?ingkaran yang di dapat dari rumus di
dalamnya.fungsi !ele.e di atas digunakan untuk menghapus memori yang tersimpan pada
saat program selesai di jalankan, sehingga apabila terhapus ruang di memoridapat digunakan untuk keperluan yang lainnya.,e.",+ ' digunakan untuk mengembalikan nilai fungsi, dan nilai balikannya
adalah ;.Pada program ketiga terdiri dari V file, terdiri dari 7 buah file header, dan 7 buah
source file. pada coding program, terdapat beberapa kesalahan. !gar program
dapat berjalan, maka ada perbaikan pada coding program !ntara lain pada
pengisian file header yang akan digunakan. Pada -+.1) , 5-,5le1)5 @ ma-+)5
terdapat 7-+5l"!e8- s.,eam9 . oding tersebut tidak dapat digunakan karena tidak
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
18/28
ada ekstensi ) # ea!e,$ di bagian sesudah - s.,eam -nya sehingga program tidak
dapat berjalan. Selain itu, pada bagian ma-+)5 , terdapat pemanggilan terhadap
fungsi 8 5 l-+!e,) ? sedangkan pada coding program di modul tidak terdapat
source file untuk cylinder. Uadi pada pemanggilan terhadap 5 l-+!e, dihilangkan.(. file S a e) yang berisikan sebuah deklarasi kelas induk $dasar% program. oding
yang terdapat pada file header ini berisikan deklarasi kelas, yaitu 0elas s a e
yang merupakan kelas dasar dari kelas point yang ada. !ttribute yang digunakan
dari fungsi pada coding yang terdapat pada file header ini merupakan fungsi
#irtual yang merupakan fungsi #irtual murni karena tidak mempunyai definisi
sama sekali. !gar &ungsi yang terdapat pada kelas induk dapat di o#erride
#me+ -m leme+.as-0a+ l-m ,;-sme$ oleh kelas turunannya, maka fungsitersebut harus bersifat #irtual dan untuk melakukan ini adalah dengan
menambahkan keyword
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
19/28
=erdapat 3a , dan 3/ ini menandakan bahwa untuk nilai x diisi dengan nilaiyang telah ditentukan pada nilai a , serta nilai yang terdapat pada y adalah nilaiyang dihasilkan atau sama dengan nilai yang terdapat pada / .
@. Pada program 5-,5le1) berisikan deklarasi kelas yang berasal dari kelas turunan
point #0elas C-,5le$ . !ttribute pada kelas ini memiliki fungsi #irtual yang berguna
untuk mengakses fungsi sebelumnya.. C-,5le1)5 nilai menuju source file dan berisikan fungsi-fungsi yang berasal
dari kelas circle. fungsi-fungsi yang diakses oleh kelas circle terhadap fungsi
#irtual pada dekalrasi kelas sebelumnya. Pada file ini, terdapat rumus untuk
perhitungan yang berguna untuk memberikan nilai pada saat program 7 ini
dijalankan.V. ma-+)5 merupakan sebuah progam utama dari keseluruhan file pada program
ketiga ini.
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
20/28
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
21/28
BAB &DAFTAR PUSTAKA
Modul Praktikum Algoritma dan Pemrograman II . Palangka Naya ni#ersitas
Palangka Naya &akultas =eknik Uurusan =eknik nformatika. 6;( .
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
22/28
BAB &ILAMPIRAN
(. Program pada langkah kerja pertama
Ma+"s-a) :
Ma+"s-a)5 :
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
23/28
MP l-)5 :
Dutputnya
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
24/28
6. Program pada langkah kerja keduaBe+."02D) :
Be+."02D)5 :
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
25/28
Ma/s.,a0)5 :
Dutputnya
7. Program pada langkah kerja ketiga s a e) :
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
26/28
-+.1) :
-+.1)5 :
5-,5le1) :
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
27/28
5-,5le1)5 :
ma-+)5 :
-
8/18/2019 Laporan Hasil Praktikum ALPRO Modul 3
28/28
Dutputnya