Senin, 21 November 2011

CLASS


Pemrograman C++ memerlukan pemahaman yang memadai untuk menterjemahkan
desain ke dalam bentuk implementasi, terutama untuk desain yang menggunakan
abstraksi class. Fokus pembahasan pada aspek pembentukan obyek  (construction)
sebuah class, dan proses sebaliknya pada saat obyek tersebut sudah tidak digunakan
lagi (destruction).

D E K L A R A S I D A N D E F I N I S I  
Deklarasi dan definisi adalah langkah awal dalam setiap penulisan program tidak
terkecuali dalam bahasa C++. Deklarasi dan definisi diperlukan untuk semua tipe data
termasuk tipe data bentukan user (user-defined type).
Bentuk sederhana deklarasi class adalah sebagai berikut,
class C { }; atau
struct C { };
dalam bahasa C++ struct dan class mempunyai pengertian yang sama. Deklarasi class
dengan struct mempunyai anggota dengan akses public kecuali jika dinyatakan lain.
struct C
{
int i;
void f();
}
class C
{

public:
int i;
void f();
}
Kedua deklarasi tersebut mempunyai arti yang sama. Hal ini adalah pilihan desain yang
diambil oleh desainer C++ (Bjarne Stroustrup) untuk menggunakan C sebagai basis C++
ketimbang membuat bahasa yang sama sekali baru. Tentunya ada konsekuensi atas
pilihan desain ini, salah satu contoh adalah kompatibilitas terhadap bahasa C. Dalam
bahasa C deklarasi,
struct C { … };
menyatakan C sebagai nama tag. Nama tag berbeda dengan nama tipe, sehingga C
(nama tag) tidak dapat dipergunakan dalam deklarasi yang membutuhkan C sebagai
suatu tipe obyek. Kedua contoh deklarasi berikut ini tidak valid dalam bahasa C,
C c;        /* error, C adalah nama tag */
C *pc;    /* error, C adalah nama tag */
Dalam bahasa C, kedua deklarasi tersebut harus ditulis sebagai berikut,
struct C c;
struct C *pc;
atau menggunakan typedef sebagai berikut,
struct C { … };
typedef struct C C;
C c;

C *pc;
C++ memperlakukan nama class, C sebagai nama tag sekaligus nama tipe dan dapat
dipergunakan dalam deklarasi. Kata class tetap dapat dipergunakan dalam deklarasi,
seperti contoh berikut ini,
class C c;
Dengan demikian C++ tidak membedakan nama tag dengan nama class, paling tidak
dari sudut pandang pemrogram  (programmer), dan tetap menerima deklarasi  structure
seperti dalam bahasa C. Kompatibilitas C++ terhadap tidak sebatas perbedaan nama tag
dan nama tipe, karena standar C++ masih perlu mendefinisikan tipe POD (Plain Old
Data). POD type mempunyai banyak persamaan dengan structure dalam C. Standar C++
mendefinisikan POD type sebagai obyek suatu class yang tidak mempunyai userdefined
constructor, anggota protected maupun private, tidak punya base class, dan tidak
memiliki fungsi virtual. Dalam desain suatu aplikasi terdiri atas banyak class, dan
masing-masing class tidak berdiri sendiri melainkan saling bergantung atau
berhubungan satu sama lain. Salah satu contoh hubungan tersebut adalah hubungan
antara satu class dengan satu atau lebih  base class  atau  parent class. Jika class C
mempunyai base class B, dikenal dengan inheritance, maka deklarasi class menjadi,
class C : public B {}; atau
class C : protected B {}; atau
class C : private B {};
akses terhadap anggota base class B dapat bersifat public, protected, maupun
private,atau disebut dengan istilah  public,  protected  atau  private inheritance. Class C
disebut dengan istilah derived class. Jika tidak dinyatakan bentuk akses secara eksplisit,
seperti dalam deklarasi berikut

class C : B
maka interpretasinya adalah private inheritance (default), tetapi jika menggunakan struct
maka tetap merupakan public inheritance. Jika desainer class C tersebut menginginkan
hubungan  multiple inheritance  (MI) terhadap class B dan A, maka deklarasi class C
menjadi,
class C : public B, public A { };
Sebuah class, seperti halnya class C mempunyai anggota berupa data maupun fungsi
(member function). Isi class tersebut berada diantara tanda kurung { } dan dipilah-pilah
sesuai dengan batasan akses yang ditentukan perancang (desainer) class tersebut.
class C : public B
{
public:
(explicit) C()(:member-initializer);
C(const C& );
C& operator=(const C&);
(virtual)~C();
statement lain
(protected: statement)
(private: statement)
};

selengkapnya. . . . . .

1 komentar:

Dimas Agus on 27 Mei 2012 pukul 15.54 mengatakan...

wah pengetahuan.na bagus banget.. makasi ya :)

Posting Komentar

zwani.com myspace graphic comments
 

Dyah Sharaswati Copyright © 2009 Cosmetic Girl Designed by Ipietoon | In Collaboration with FIFA
and web hosting