14 Des 2009

Inheritance

Pada pertemuan ini, mari kita bahas mengenai Inheritance

Apa itu Inheritance?
Inheritance merupakan salah satu sifat dalam Class yang memungkinkan suatu class mewarisi attribute dan method class lain.




Class yang mewariskan sifat disebut dengan Class Induk (base class), sedangkan class yang mewarisi sifat class lain disebut class Turunan (derived class).

Keuntungan dengan adanya Inheritance yaitu memungkinkan suatu kode-kode yang telah ditulis bisa digunakan kembali (reusability) dan pengembangan program (extenability) menjadi lebih efisien dan menghemat waktu karena kita tinggal menambahkan sifat-sifat baru yang dibutuhkan dalam Class Turunannya.

Cara pendeklarasian inheritance   :   class Turunan : type_access Induk

Ada 3 jenis type access, yaitu public, protected, dan private.
Pemakaian type access tersebut memiliki perbedaan dalam hak pengaksesan attribute dan method dalam class.




Contoh coding

#include "iostream.h"

class Induk
{
       public :
              void info_induk()
              {
                   cout <<  "method info_induk jalan" << endl;
              }
};

class Anak : public Induk
{
       public :
            void info_anak()
              {
                   cout <<  "method info_anak jalan" << endl;
              }
};

void main()
{
       Anak obj;

       obj.info_induk();         // mewarisi method dari class Induk
       obj.info_anak();

       cin.get();
}

Hasil eksekusi :
method info_induk jalan
method info_anak jalan

Constructor dan Destructor pada Inheritance
Pada saat objek di class Turunan dibuat, constructor kelas Induk dengan sendirinya akan dijalankan, setelah itu baru constructor class Turunan, sedangkan untuk destructor, destructor class Turunan akan dijalankan dahulu, baru setelah itu destructor class Induk.

Inheritance juga bisa dilakukan dalam beberapa tingkat





Multiple Inheritance
adalah sebuah class yang mewarisi lebih dari satu class Induk.
Dalam multiple Inheritance bisa terjadi kerancuan apabila terdapat dua method pada class Induk dengan nama yang sama.







contoh coding

#include
"iostream.h"

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

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

class Anak : public IndukSatu, public IndukDua
{

};

void main()
{
       Anak obj;

       // obj.info();   --> menimbulkan error, compiler kebingungan karena ada 2 class Induk yang mewariskan method dengan nama yang sama

      obj.IndukSatu::info();     //memanggil method info dari class IndukSatu

      obj.IndukDua::info();     //memanggil method info dari class IndukDua
}

Hasil eksekusi
Info class IndukSatu
Info class IndukDua



30 Nov 2009

Pertemuan 8 PBO


Pada pertemuan ini, saya akan membahas mengenai Friend dan Operator Overloading dalam Class ..


Apa itu friend ??? 

Friend adalah fungsi yang bukan merupakan anggota dari suatu class, tapi dapat mengakses anggota kelas yg bersifat private dan protected.
Pemakaian friend merupakan suatu kontradiksi, mengapa??
Karena tujuan utama dari pbo adalah pengkapsulan dan pembatasan akses data, sedangkan dengan adanya friend, semua data dalam class menjadi bisa diakses oleh fungsi yang bukan merupakan anggota class itu sendiri.


Cara pemakaian friend cukup mudah, kita tinggal menambahkan kata “friend” di depan nama fungsi yang akan kita buat, dan deklarasikan prototype fungsi di dalam class (public).


// contoh codingan pemakaian friend


#include

class mahasiswa
{
   private :
       int nilai;
       char nama[20];

   public :
       mahasiswa(); // constructor

       void inisialisasi(int nilai1, char *nama1);



       //prototype friend function dideklarasikan dalam class
       friend void show(mahasiswa satu, int a);

        ~mahasiswa() // destructor
        {}
};


void main()
{
   mahasiswa satu,dua;

   satu.inisialisasi(100, "aku");
   dua.inisialisasi(90, "kamu");

   show(satu,1);
   show(dua,2);

   cin.get();
}

mahasiswa::mahasiswa()
{
   nilai = 0;
   strcpy(nama,"");
}

void mahasiswa::inisialisasi (int nilai1, char *nama1)
{
   nilai = nilai1;
   strcpy(nama, nama1);
}

//friend function
void show(mahasiswa satu, int a)
{
   cout << "Nama mahasiswa " << a << " : " << satu.nama << endl; 

   cout << "Nilai mahasiswa " << a << " : " << satu.nilai << endl << endl;
}

Overloading Operator 

Tujuannya adalah untuk memudahkan operasi terhadap data, khususnya yang melibatkan objek. Perlu diingat, meskipun operator sudah dioverload, kaidah pemakaian operator dan prioritas operator tidak berubah. 

Operator yang tidak dapat di overload 
.           .*          ::           ?:           sizeof 


// contoh codingan pemakaian overloading operator

#include

class parkir
{
     private :
         int mobil;
         int motor;

     public :
         parkir(int mob=0, int mot=0);

         void get(int a);

         parkir operator + (parkir ob);
};

void main()
{
    parkir obj1(10,20);
    parkir obj2(45,25);
    parkir obj3;

    obj3 = obj1 + obj2;

    obj1.get(1);
    obj2.get(2);
    obj3.get(3);

    cin.get();
}

parkir::parkir(int mob, int mot)
{
     mobil = mob;
     motor = mot;
}

void parkir::get(int a)
{
    cout << "mobil " << a << " : " << mobil << endl;
    cout << "motor " << a << " : " << motor << endl << endl;
}

parkir parkir::operator + (parkir ob)
{
     parkir tmp; // objek penampung

    tmp.mobil = mobil + ob.mobil;
    tmp.motor = motor + ob.motor;

    return(tmp);
}

4 Nov 2009

Pertemuan 5 PBO


Dalam class, dikenal dengan istilah encapsulation.
Encapsulation adalah pengelompokkan yang dimaksudkan untuk melindungi informasi/data agar tidak dapat diakses secara sembarangan.

Ada 3 jenis tipe data dalam class, yaitu
  1. Public, bisa diakses dimana saja.
  2. Private, hanya bisa diakses class itu sendiri.
  3. Protected, bisa diakses class itu sendri dan kelas turunannya.

Contoh :

misalkan ada 3 class, yaitu class A, B, dan C (turunan class A)
A memiliki 3 type data, yaitu :
X = public
Y = private
Z = protected

nilai X = bisa diakses class A B dan C
nilai Y = bisa diakses class A saja
nilai Z = bisa diakses A dan C (kelas turunan dari A)

Dalam class, ada istilah constructor dan destructor.
Constructor biasanya dijalankan saat object di create, sedangkan destructor dijalankan sesaat sebelum object di delete.

Contoh :

class mobil
{
      public :

//constructor
             mobil()
             {
                  a = 10;
             }

//destructor
            ~mobil()
            {
                  a = 0;
            }