Tuesday, May 20, 2014

Polymorphism - Overriding (tugaspbo_seksi3_sitiafifah_201381076)


Sourcecode

Keterangan:
  • Pada sourcecode main (mahasiswa mhs1(…..)) variable di dalam class yaitu nim, nama, alamat, dan jurusan diisi dengan nilai yang ada dalam mhs1() begitu juga dengan sourcecode pegawai peg1(…..)
  • Pada sourcecode main (manusia *man) pointer man menunjuk alamat subclass (mahasiswa dan pegawai)
  • Sourcecode class manusia (virtual void tampil_data()), perintah “virtual” digunakan untuk overriding. Apa maksudnya? Setiap main memanggil fungsi tampil_data() maka yang terpanggil adalah fungsi yang berada di subclass baik class mahasiswa maupun pegawai tergantung alamat yang ditunjuk pointer *man. Hal ini dapat dilakukan karena fungsi tampil data di setiap subclass memiliki nama dan aksi yang sama, dalam kata lain fungsi tampil data pada subclass meng”overriding” fungsi tampil data pada superclass




Pada tampilan running di atas dapat dilihat bahwa data yang terisi pada fungsi tampil_data() disesuaikan dengan nilai yang dijadikan parameter. Tapi kenapa nama kelasnya masih kelas manusia (superclass) ??
Silahkan cek kembali sourcecode di atas....

Lihat pada bagian superclassnya terdapat code
Void judul(){cout<<……..)

Karena fungsi tersebut tidak di override maka yang terpanggil adalah fungsi yang berpada di dalam superclass. Perhatikan fungsi tampil_data yang memakai perintah “virtual”, data yang ditampilkan disesuaikan dengan variable yang ditunjuk pointer *man. Maka dari itu, pada code void judul() di superclass perlu ditambahkan perintah “virtual” agar ia dapat di override oleh subclassnya.


Berikut code yang telah diedit bagian void judul() nya




Berikut  tampilan runningnya



Kesimpulan:

Perintah virtual digunakan untuk men”override” fungsi pada superclass dengan fungsi pada subclassnya. Dengan catatan fungsi pada subclass harus mempunyai kesamaan dengan superclass,yaitu:
  • Nama
  • Return type
  • Daftar parameter (jumlah, tipe, dan urutan)
Manfaat dari overriding adalah programmer dapat membuat 1 fungsi pada superclass yang bisa dipakai dengan aksi yang berbeda pada subclass asalkan memenuhi syarat yang tertera di atas.


terima kasih.. :)

Tuesday, May 6, 2014

INHERITANCE-PROGRAM MENGHITUNG LUAS BIDANG DATAR

(Tugas PBO3_Siti Afifah_201381076)

Soal
Buatlah program dengan inheritance berisi menu penghitungan luas bidang datar di bawah ini:
1. Persegi
2. Persegi Panjang
3. Segitiga
4. Lingkaran
5. Jajar Genjang

SourceCode (using Dev C++)

#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;

class nilai
{
    protected:
        int var1,var2,var3;
    public:
        void set_nilai2(int x,int y)
        {
            var1=x;var2=y;
        }
        void set_nilai1(int s)
        {
            var3=s;
        }
};

class persegi:public nilai
{
    public:
        int luas()
        {return var3*var3;}
};

class segitiga:public nilai
{
    public:
        float luas()
        {return var1*var2/2;}
};

class persegipjg:public nilai
{
    public:
        int luas()
        {return var1*var2;}
};

class lingkaran:public nilai
{
    public:
        float luas()
        {return var3*var3*3.14;}
};

class jajar:public nilai
{
    public:
        int luas()
        {return var1*var2;}
};

void menu()
{
    cout<<"Program Menghitung Luas Bidang Datar\n";
    cout<<"_______________________________________\n\n";
    cout<<"Menu:\n";
    cout<<"1) Persegi\n2) Segitiga\n3) Persegi Panjang\n4) Lingkaran\n5) Jajar Genjang\n\n";
    cout<<"Pilihan anda = ";
}

main()
{
    int a,b,c,pilih,balik;
    persegi kotak;
    persegipjg panjang;
    segitiga segi3;
    lingkaran bulat;
    jajar genjang;
    do{
        menu();
        cin>>pilih;
        if(pilih==1)
        {
            cout<<"\nSisi    = ";
            cin>>c;
            kotak.set_nilai1(c);
            cout<<"\nLuas    = "<<kotak.luas()<<endl;
        }
        else if(pilih==2)
        {
            cout<<"\nAlas    = ";
            cin>>a;
            cout<<"Tinggi    = ";
            cin>>b;
            segi3.set_nilai2(a,b);
            cout<<"Luas     = "<<segi3.luas()<<endl;
        }
        else if(pilih==3)
        {
            cout<<"\nPanjang    = ";
            cin>>a;
            cout<<"Lebar    = ";
            cin>>b;
            panjang.set_nilai2(a,b);
            cout<<"Luas    = "<<panjang.luas()<<endl;
        }
        else if(pilih==4)
        {
            cout<<"\nJari-jari = ";
            cin>>c;
            bulat.set_nilai1(c);
            cout<<"Luas    = "<<bulat.luas()<<endl;
        }
        else if(pilih==5)
        {
            cout<<"\nAlas    = ";
            cin>>a;
            cout<<"Tinggi    = ";
            cin>>b;
            genjang.set_nilai2(a,b);
            cout<<"Luas    = "<<genjang.luas()<<endl;
        }
        else
        cout<<"input salah";
        cout<<"\n\nKembali ke menu? (1=ya/0=tidak) ";
        cin>>balik;
        system("cls");
    }while(balik==1);
    cout<<"\n\n\n\nTerima kasih..";
}

Tampilan Running

1.  Menghitung luas lingkaran





2. Menghitung luas persegi panjang





Terima kasih..