Senin, 04 Januari 2010

Pure x Squasi Virtual Method

Pure Virtual Method hanya mendeklarasikan function prototipes saja
(tidak memiliki implementasi)
Suatu class yang memiliki pure virtual method.
Instance (object) tidak dapat dibuat dari suatu abstract class,
karena masih ada fungsi yang tidak memiliki function body.

Ciri dari pure virtual method adalah pada deklarasi ditulis fungsi() = 0.
ex.
class MyClass {
virtual void foo() = 0;
};



Squasi Virtual Method memiliki fungsi minimal yang harus dikerjakan
oleh suatu method /ada body function.

ex.
class MyClass{
virtual void foo() { ; }
};


Dan pada penggunaannya hanya destructor saja yang dapat dibuat virtual.

Sabtu, 12 Desember 2009

Multiple Inheritance

Multiple inheritance adalah suatu feature dari beberapa bahasa OOP
dimana sebuah class dapat diturunkan dari lebih satu induk class.

Di c++ tidak dapat mengulang inheritance secara eksplisit. Tapi sebuah
single instance dari multiple class dapat dibuat melalui mekanisme inheritance virtual.

sintaks :
class Turunan : jenis_akses Induk1, jenis_akses Induk2
{ };



Hirarki Classnya :

Rabu, 09 Desember 2009

Single Inheritance

Single inheritance adalah proses pembentukan satu class baru (derived class) hanya dari 1 class lainnya (based class).

contoh :
class Nama_Turunan : jenis_akses Nama_Induk
{ }

Contoh :
class Cewe
{ protected: int ani;
};
class Fashion: public Cewe
{ protected: int kalung;

Untuk penentuan jenis derived class harus diperhatikan juga jenis dari based classnya.


Hirarki class untuk single inheritance


Selasa, 01 Desember 2009

Array dan Pointer Di Class

Array Di Class :
- tidak ada cek range
- tidak bisa dibandingkan ( operator ==)
- tidak ada array assignment
- tidak dapat input/ output array


Pointer Di Class :
-Umumnya melalui function yg menggunakan pointers to class data members
-sebagai debuging function yg meng-access 2 bytes pertama dari data member
tiap object & mengambil nilainya


CONTOH PROGRAM PENGGUNAAAN :
#include "iostream.h"

class MyClass
{
private:
int Price;
int Count;
long Total;
public:
void Input(int P,int C)
{
Price=P;
Count=C;
}
void MyClass::Compute()
{
Total=(long) Price*Count;
}
void MyClass::Print(){
cout<<"Price="< }
};

int main()
{
MyClass *ob;

ob=new MyClass[6];
ob[0].Input(5,0);
ob[1].Input(3,5);
ob[2].Input(1,0);
ob[3].Input(5,20);
ob[4].Input(4,0);
ob[5].Input(8,5);

for(int i=0;i<6;i++)
ob[i].Compute();
for(int i=0;i<6;i++)
ob[i].Print();

delete ob;
}

Senin, 26 Oktober 2009

Contructor... next

Ternyata tidak hanya operator saja yang bisa overloading.
Constructor (untuk membangun objek) pun juga dapat overloading.


class Mobil{
private :
char merk[20];
int kec;

public :
// overloading constructor
Mobil(){
setKec(0);
setMerk("");
}

//constructor awal
Mobil(int a, char *b){
setKec(a);
setMerk(b);
}
};

Meskipun memiliki nama yang sama, namun saat pemanggilan dapat diatur sesuai yang diinginkan.

Dan ada pula, copy constructor yang menggunakan alamat dari variabel.

// copy constructor
Mobil(Mobil &obj){
kec = obj.getKec(); // kec = obj.kec;
strcpy(merk,obj.merk);
}

Maka dari itu constructor pun memiliki banyak kegunaan. Dan dibutuhkan pemahaman untuk mengerti seluk beluknya.