Fransisca's Blog

blog buat tugas PBO..^^

pesanqu menjelang natal

Diposting oleh sisqa

ga k'rasa bntr lagi kita taon baruan lagiiiii..
bnr2 waktu itu terasa bnr2 cepat...
karna ud di penghujung taon skrg ni ud mulai musim libuuuuuuuuuur
hohohoho
mari qta smua isi liburan ini dgn hal2 yang positif
manfaatin waktu libur dengan hal hal yang berguna^^
soalnya waktu lagi berputar dengan cepatnya
hehehehehe


have a bless holyday everyone^^

polymorphism(ringkasan pertemuan 11)

Diposting oleh sisqa

Polymorphism adalah kemampuan object-object yang berbeda dalam sebuah class hiraiki untuk melakukan fungsi(behavior) unik terhadap suatu respon massage. Selain itu polymorphism adalah juga kemampuan class menyembunyikan implementasi yang berbeda dalam interface yang sama, polymorphisem juga memungkinkan method memiliki nama yang sama dengan tugas tugas yang berbeda. Tidak hanya itu, polymorphism juga memungkinkan suatu fungsi yang implementasi detailnya belum ada.

Polymorphism juga tergantung pada inheritance, karna dalam pembuatan polymorphism digunakanlah abstract class, yang bisa dibuat menjadi abstract class hanyalah base class dan tidak bisa dibuat instace dari base class tersebut.

Cara membuat abstract class aalah dengan membuat virtual function, yang bermanfaat agat virtual method table(VMT) yang menentukan type runtime object bukan programmer dengan statements switchnya, karna pada program besar statement switch akan sulit dimaintain.dengan menggunakan VMT akan menentukan tipe runtime dari object agar ketik membuat object, object akan secara dinamis dapat dipetakan secara strukturnya.

Polymorphism dibagi menjadi dua, yaitu:

1. Trivial polymorphism

Yaitu dengan menggunakan early binding yang menggunakan bahasa c style, dan function didefinisikan sebelum compiling, dan juga menggunakan link body function dan function header / prototype.

Pengimplementasiannya menggunakan function overloading, yaitu penggunaan kembali nama fungsi yang sama tapi dengan 3 ciri yang membedakannya, yaitu :

- Jumlah argument

- Letak argument

- Tipe argument

2. True polymorphism

Yaitu dengan menggunakan dynamic binding, yang merupakan implementasi dengan menggunakan C++ style, function definition juga dilakukan pada sat runtime, compiler yang membuat VMT untuk class yang mengandung polymorphism, jika derived class memiliki fungsi yang sama (overriding) dengan base class, VMT akan menunjuk ke base class function.

Pembuatannya dilakukan dengan menggunakan function overriding, yaitu fungsi yang namanya sama tapi tidak berada pada kelas yang sama. Hal ini diimplementasikan dengan virtual method yang dibagi menjadi 2, yaitu:

1. Pure virtual method, hanya mendeklarasikan function prototypes saja(tidak memiliki body function), class yang memiliki pure virtual method disebut abstrak class.

Instance / object tidak dapat dibuat dari suatu abstract class, karna masih ada function yang tidak memiliki function body.

Cirri dari pure virtual method adalah pada deklarasi ditulis fungsi() = 0.

Contoh:

class myclass

{

Virtual void tes() = 0;

};

2. Squasi virtual method, memiliki fungsi yang minimal harus dikerjakan oleh suatu method atau ada body function.

Contoh :

class myclass

{

virtual void tes()

{

Return 0;

}

};

Virtual destructor dan virtual constructor:

Constructor tidak dapat dibuat virtual

Sedangkan destructor dapat dibuat virtual, dengan cara:

Base class pointer menunjuk ke object turunan, jka didestroy dengan menggunakan delete, behavior tidak terspesifikasi.

Perbaikan sederhana, declare base class destructor virtual dengan demikian ketika delete digunakan, destructor tentu dijalankan

Ketika object class turunan di execute pertama kali, destructor class induk diexecute kemudian.

contoh programnya menyusul yach^.^

multiple inheritance

Diposting oleh sisqa

karna di postingan sebelumnya hanya menjelaskan single inheritance maka pada postingan ini akan menjelaskan sedikit dari konsep multiple inheritance.

multiple inheritance adalah pewarisan ganda, merupakan sebuah class turunan dari beberapa class induk. class turu
nan tersebut dapat mewarisi karakteristik yang dimiliki oleh class class induknya.

berikut ini adalah contoh hirarki dari multiple inheritance :

berikut ini adalah sintax dari multipel inheritance :

class nama_class_turunan : jenis_akses induk1 , jenis_akses induk2
{

}

construktor dan destruktor class turunan:
construktor class turunan dibuat sesaat setelah construktor induk dibuat. jika construktor class induk memiliki parameter, maka parameter tersebut harus dimasukan dalam construktor class turunan. selain itu construktor class turunan juga perlu dibuat untuk melakukan inisialisasi class itu sendiri dan class induknya.
contoh :

class induk
{
protected : int a;
public :
induk()
{
cout<< "induk1";
}
induk(int a)
{
cout << "induk2";
}
};

class anak : public induk
{
public:
anak():induk(2)//super dy mw pggl construktor yg bukan default
{
cout << "anak";
}
};

destruktor class turunan dijalankan dengan urutan berkebalikan dengan urutan construktor, yaitu destruktor class turunan akan dijalankan dahulu baru destruktor class induknya dijalankan. namun bila class turunan memiliki kebih dari satu class induk, maka destruktor class turunan akan dijalankan pertama diikuti oleh destruktor class induk yang terakhir digunakan, dan begitu seterusnya.

syntax :
constructor_turunan(argumen) : constructor_induk1(),construktor_induk2()
{
statement
}
contoh :
class induk
{
protected : int a;
public : induk(int a) // construktor induk
{ A = a; }
~induk() // destruktor induk
{}
};
class anak : public induk
{
protected : int b;
public : anak(int b):induk(a) //constructor anak
{}
~anak () //destructor anak
{}
};

sekian dulu penjelasannya ^.^
enjoy reading..
contoh-contoh programnya nyusul^^
hehhehe

inheritance

Diposting oleh sisqa

Inheritance adalah penurunan sifat, dengan tujuan reuseabiliyy dan extenability.

reuseability adalah dapat menggunakan kembali, karna memiliki karakteristik yang sama sehingga dapat menggunakna program yang telah ada untuk di gunakan dalam program yang baru.

extenability adalah kemampuan untuk mengembangkan class sebelumnya menjadi class yang baru.
oleh karena itu, maka terbentuklah base class (kelas induk) dan derived class (kelas turunan), dengan syarat construktor class turunan akan dibuat sesaat setelah construktor induk dibentuk.
dengan adanya base class dan derived class ini, maka sebuag hirarki class menjadi suatu hal yang penting, karna hirarki class akan menunjukan semua hubungan class class yang ada. hirarki class adalah hubungan antar class turunan dan class induknya.

Ada 2 jenis hubungan dalam hirarki class, yaitu :
1. single inheritance, dimana 1 induk class dapat membentuk 1 atau lebih class turunan, contoh :

2. multiple inheritance, dimana 1 atau lebih induk class dapat membentuk 1 atau lebih class turunan, contoh :


keterangan : dengan tanda panah menunjuk pada class induknya.

Syntax inheritance :

class nama_turunan : level_akses nama_induk
{ };
contoh :
class student
{
protected : int student_id;
};
class graduated_student : public student
{
protected : int majoring;
};

seluruh anggota class induk dapat diakses oleh class turunannya, jika tipenya public dan protected, isi dari protected sebuah class induk dapat diakses oleh class turunannya seperti dideklarasikan pada class turunannya sendiri. tapi fungsi lain tidak, sedanakan dengan tipe private tidak dapat diakses oleh fungsi manapun kecuali dirinya sendiri, namun public dapat diakses oleh semua fungsi dalam program tersebut.

berikut ini adalah tabel untuk melihat akses level dari setiap akses level class turunan :


Cara membaca tabel :
1. jika kita memiliki class turunan dengan akses level public, maka data pada class induk dengan akses public menjadi public, protected menjadi protected, private menjadi private.
2. jika kita memiliki class turunan dengan akses level protected, maka data pada class induk dengan level akses public menjadi protected, protected menjadi protected, private menjadi private.
3. jika kita memiliki class turunan dengan akses level private maka data pada class induk dengan level akses public menjadi private, protected menjadi private, private menjadi private.

ringkasan pertemuan 8

Diposting oleh sisqa

Array dan pointer of class

~ Array of Class ~

Maksud dari array of class disini adalah class yang memiliki object dengan bentuk array.

Dalampembuatannya ada beberapa aturan yang harus dipenuhi agar program yang dibuat tidak error, yaitu dengan memperhatikan hal hal sebagai berikut:

Array bersifat statis, dan perlu deklarasi berulang kali jika kita memiliki construktor dengan parameter.

Contoh penggunakan array of class yang benar :

#include

using namespace std;

class cl

{

Private :

int i;

public:

void set_i(int j) { i=j; }

int get_i() { return i; }

};

int main()

{

cl ob[3]; // tidak di inisialisasi

int i;

for(i=0; i<3;>

for(i=0; i<3;>

cout <<>

return 0;

}

Program ini akan jalan tanpa error.

Jadi, dalam pembuatan sebuah array of class kita harus memperhatikan kalau ada array yang perlu dideklarasikan pada awal pembuatannya, ada juga yang tidak perlu di deklarasikan dahulu. Seperti contoh diatas, array sbgai object disana tidak perlu dideklarasikan. Berikuti ini adalah contoh programya g memerlukan pendeklarasian dalam pembuata n array of object.

#include

using namespace std;

class cl {

private :

int h;

int i;

public:

cl(int j, int k) { h=j; i=k; } // constructor with 2 parameters

int get_i() {return i;}

int get_h() {return h;}

};

int main()

{

cl ob[3] = {

cl(1, 2), // initialize

cl(3, 4),

cl(5, 6)

};

int i;

for(i=0; i<3;>

{

cout <<>

cout << ", ";

cout <<>

}

return 0;

}

Dalam program ini kita perlu untuk mendeklarasikan array object class cl, karna constructor yang dibuat adalah constructor dengan 2 perameter. Untuk menghindari error,kita juga dapat membuat sebuah constructor yang tidak memiliki parameter(default constructor).

Selain itu kita juga dapat menggunakan copy constructor, yaitu dengan mengoverloading constructor dengan format sebagai berikut:

Nama_class(const nama_class &);

Biasanya cara ini digunakan dalam membuat operator overloading, yaitu membuat operator menjadi beberapa fungsi yang dapat digunakan, contoh:

Operator overloading:

Const array & operator(const array &);

Equality operator :

Bool operator == (const array &)const;

Inequality operator :

Bool operator != (const array &)const

{return ! (this == right);}

~ Pointer of Class~

Pointer sebagai Data Members

Pointers tdk dpt di-initialized dalam class declaration

Normally, Initialized pada derived class constructor

Penggunaan pointers to class data members

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

maap nih yang pointer of array na um gt ngerti..mw bca bku dl..hehehe