12 Jan 2010

latiian lagii :)

- inheritance -

#include"iostream.h"
#include"string.h"

class Old
{
    protected :
       char nama[25];
       char hp[20];
    public :
      void setNama(char *nama)
      {
          strcpy(this->nama,nama);
      }
      void setHp(char *hp)
      {
          strcpy(this->hp,hp);
      }
      char *getNama()
      { return nama; }
      char *getHp()
      { return hp; }
};

class New : public Old
{
    private :
       char add[30];
      char email[30];
    public :
      void setAdd(char *add)
      {
          strcpy(this->add,add);
      }
      void setEmail(char *email)
      {
          strcpy(this->email,email);
      }
      char *getAdd()
      { return add; }
      char *getEmail()
      { return email; }
};

void menu()
{
   cout << "My Phonebook" << endl;
   cout << "============" << endl << endl;
   cout << "1. Isi Phonebook Seri Lama" << endl;
   cout << "2. Lihat Phonebook Seri Lama" << endl;
   cout << "3. Isi Phonebook Seri Baru" << endl;
   cout << "4. Lihat Phonebook Seri Baru" << endl;
   cout << "5. Keluar" << endl << endl;
}

void main()
{
   char nama[25];
   char hp[20];
   char add[30];
   char email[30];
   int pilih;
   int flag;
   int i=0;
   int j=0;
   int k;
   Old *book1[10];
   New *book2[10];

   do{
           menu();
           do{
               cout << "Masukkan pilihan anda : ";
               cin >> pilih;
               cin.clear();
               cin.sync();
            }while(pilih<1||pilih>5);

         switch(pilih)
         {
             case 1 : book1[i] = new Old;
                          do{
                           cout << "\n\n" << "Masukkan nama [5-20 karakter] : ";
                           cin >> nama;
                           cin.clear();
                           cin.sync();
                          }while(strlen(nama)<5||strlen(nama)>20);
                         do{
                           cout << "\n\n" << "Masukkan nohp [10 - 12 karakter dan harus angka] : ";
                           cin >> hp;
                           cin.clear();
                           cin.sync();
                           flag=1;
                           for(int k=0;k
                           {
                               if(hp[i]<'0'||hp[i]>'9')
                              { flag=0; }
                           }
                         }while(flag==0||strlen(hp)<10||strlen(hp)>12);
                         book1[i]->setNama(nama);
                         book1[i]->setHp(hp);
                         i++;
                         break;

            case 2 : for(k=0;k
                        {
                           cout << "\n" << book1[k]->getNama() << "\t: " << book1[k]->getHp() << "\n";
                        }
                        break;

            case 3 : book2[j] = new New;
                         do{
                           cout << "\n\n" << "Masukkan nama [5-20 karakter] : ";
                           cin >> nama;
                           cin.clear();
                           cin.sync();
                         }while(strlen(nama)<5||strlen(nama)>20);
                         do{
                           cout << "\n\n" << "Masukkan nohp [10 - 12 karakter dan harus angka] : ";
                           cin >> hp;
                           cin.clear();
                           cin.sync();
                           flag=1;
                           for(int k=0;k
                           {
                               if(hp[i]<'0'||hp[i]>'9')
                              { flag=0; }
                           }
                         }while(flag==0||strlen(hp)<10||strlen(hp)>12);
                         do{
                           cout << "\n\n" << "Masukkan alamat [5-30 karakter] : ";
                           cin >> add;
                           cin.clear();
                           cin.sync();
                         }while(strlen(add)<5||strlen(add)>30);
                         do{
                           cout << "\n\n" << "Masukkan email [5 - 20 karakter dan harus angka] : ";
                           cin >> email;
                           cin.clear();
                           cin.sync();
                         }while(strlen(email)<5||strlen(email)>20);
                         book2[j]->setNama(nama);
                         book2[j]->setHp(hp);
                         book2[j]->setAdd(add);
                         book2[j]->setEmail(email);
                         j++;
                         break;

            case 4 : for(k=0;k
                        {
                           cout << "\nNama\t: " << book2[k]->getNama() <<"\nNo.\t: " <<

                           book2[k]->getHp() << "\nAlamat\t: " << book2[k]->getAdd() 
                           << "\nEmail\t: " << book2[k]->getEmail() << "\n";
                        }
                        break;
         }

           cin.get();
         cout << "\n\n\n";
   }while(pilih!=5);

   for(int k=0;k
   {
       delete(book1[k]);
   }
   for(int l=0;l
   {
       delete(book2[l]);
   }
}

latiiiiaan ngoding :)


- soal lab polymorphism -


#include"iostream.h"
#include"string.h"

class Tempat
{
    protected :
      char nama[25];
      int ttl_pD;
      int ttl_pA;
      int ttl;

   public :
       Tempat()
      {
         int ttl_pD=0;
         int ttl_pA=0;
         int ttl=0;
      }
       void setN(char nama[])
      {
          strcpy(this->nama,nama);
      }

      virtual void ttl_PD(int x)=0;
      virtual void ttl_PA(int y)=0;
      int get_pajakD(){return ttl_pD;}
      int get_pajakA(){return ttl_pA;}
      int get_Ttl()
      { return ttl = ttl_pD + ttl_pA; }
      char *getN()
      { return nama; }
};

class Apartemen : public Tempat
{
   public :
      void ttl_PD(int x)
      {
         ttl_pD = x*50000;
      }
      void ttl_PA(int y)
      {
         ttl_pA = y*30000;
      }
};

class Rumah : public Tempat
{
   public :
      void ttl_PD(int x)
      {
         ttl_pD = x*10000;
      }
      void ttl_PA(int y)
      {
         ttl_pA = y*5000;
      }
};

void menu()
{
   cout << endl << "\t\t\t\tLife Style" << endl << endl;
   cout << " Pilih Tempat Tinggal :" << endl;
   cout << " 1. Apartemen" << endl;
   cout << " 2. Rumah" << endl;
   cout << " 3. Quit" << endl;
}

void main()
{
   int pilih;
   int d,a;
   char nama[25];
   Tempat *obj;

   do{
         menu();
         do{
               cout << " Pilihan : ";
               cin >> pilih;
               cin.clear();
               cin.sync();
         }while(pilih<1||pilih>3);

         switch(pilih)
         {
             case 1 : obj = new Apartemen;
                         cout << endl << " Masukkan nama Anda [max 20 char] : ";
                         cin >> nama;
                         cin.clear();
                         cin.sync();
                         obj->setN(nama);
                         cout << endl << " \03 Apartemen \03" << endl;
                         cout << " Selamat Datang " << obj->getN() << " " <<

                         (char)1 << endl << endl;
                         cout << " Masukkan jumlah orang dewasa [1-5] : ";
                         cin >> d;
                         cin.clear();
                         cin.sync();
                         cout << " Masukkan jumlah anak-anak [0-5]    : ";
                         cin >> a;
                         cin.clear();
                         cin.sync();
                         obj->ttl_PD(d);
                         obj->ttl_PA(a);
                         cout << endl << " Pajak orang dewasa : Rp 50000/orang"

                         << endl;
                         cout << " Pajak anak-anak    : Rp 30000/anak" << endl <<

                         endl;
                         cout << " Total pajak hidup orang dewasa : Rp. " <<

                         obj->get_pajakD() << endl;
                         cout << " Total pajak hidup anak-anak    : Rp. " <<

                         obj->get_pajakA() << endl;
                         cout << " Total pajak keseluruhan        : Rp. " <<

                         obj->get_Ttl() << endl;
                         cout << endl << " Tekan enter untuk lanjut...";
                         delete (obj);
                         cin.get();
                         break;

            case 2 : obj = new Rumah;
                        cout << endl << " Masukkan nama Anda [max 20 char] : ";
                        cin >> nama;
                        cin.clear();
                        cin.sync();
                        obj->setN(nama);
                        cout << endl << " \03 Rumah \03" << endl;
                        cout << " Selamat Datang " << obj->getN() << " " << "\01"

                        << endl << endl;
                        cout << " Masukkan jumlah orang dewasa [1-5] : ";
                        cin >> d;
                        cin.clear();
                        cin.sync();
                        cout << " Masukkan jumlah anak-anak [0-5]    : ";
                        cin >> a;
                        cin.clear();
                        cin.sync();
                        obj->ttl_PD(d);
                        obj->ttl_PA(a);
                        cout << endl << " Pajak orang dewasa : Rp 10000/orang"

                        << endl;
                        cout << " Pajak anak-anak    : Rp 5000/anak" << endl << endl;
                        cout << " Total pajak hidup orang dewasa : Rp. " <<

                        obj->get_pajakD() << endl;
                        cout << " Total pajak hidup anak-anak    : Rp. " <<

                        obj->get_pajakA() << endl;
                        cout << " Total pajak keseluruhan        : Rp. " <<

                        obj->get_Ttl() << endl;
                        cout << endl << " Tekan enter untuk lanjut...";
                        delete (obj);
                        cin.get();
                        break;
         }
         cout << "\n\n\n\n\n";
   }while(pilih!=3);

    cout << "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

    << endl;
    cout << "\t                    Enjoy Your Life Style" << endl;
    cout << "\t                \03 Tekan enter untuk keluar \03" << endl;
    cout << "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

    << endl;
    cin.get();
}

23 Des 2009

Polymorphism


Polymorphism yang berarti “mempunyai banyak bentuk” juga merupakan salah satu sifat class yang memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda.




Perbedaan Trivial dan True Polymorphism



Overloading

3 signature yang perlu diperhatikan dalam melakukan overloading :
  • Jumlah argument
  • Letak argument
  • Type argument


Contoh function overloading
Void hitung (int x, int y);
Void hitung(float x, float y);

Overriding

ada 2 jenis virtual method dalam overriding, yaitu :

Pure Virtual Method (tanpa function body)
contoh : virtual void suara() = 0;

Squasi Virtual Method (ada function body)
contoh : virtual void info() {;} 

contoh coding

#include "iostream.h"

class Hewan
{
    public :
       void info()
      {
          cout << "info() class Hewan" << endl;
      }

      virtual void suara()
      {
          cout << "suara() class Hewan" << endl;
      }
};

class Piaraan : public Hewan
{
    public :
    void info()
   {
       cout << "info() class Piaraan" << endl;
   }

   void suara()
   {
       cout << "suara() class Piaraan" << endl;
   }
};

void main()
{
    Piaraan pet;

   Hewan *satu;

   satu = &pet;    //menunjuk ke objek pet

   satu->info();
   satu->suara();

   cin.get();
}



hasil eksekusi





Penjelasan