laporan praktikum alpro ii

31
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

Upload: supriyandi-andy

Post on 18-Dec-2015

34 views

Category:

Documents


0 download

DESCRIPTION

Modul 3

TRANSCRIPT

  • 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 :