laporan hasil praktikum alpro modul 3

Upload: wandy

Post on 07-Jul-2018

248 views

Category:

Documents


0 download

TRANSCRIPT

  • 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