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;
            }