Mengenai Saya

Selasa, 07 Oktober 2008

oop bahasa programing prosedur

C++ merupakan bahasa pemrograman yang cepat dan handal untuk melakukan komputasi. C++ adalah bahasa compiler yang artinya tidak membutuhkan runtime apapun untuk menjalankannya. Bedakan dengan Java yang merupakan bahasa semi interpreter yang masih membutuhkan runtime environment untuk dapat berjalan. Jadi, secara resources, C++ merupakan bahasa yang tidak membutuhkan daya besar.

Salah satu kelemahan C++ adalah kurangnya library built in, sehingga untuk proses-proses tertentu kita harus membuat sebuah program nearly built from scratch, atau dari dasar sekali. Terlebih lagi bahasa C++ dewasa ini kurang begitu popular karena kita masih memikirkan pemrograman dari sisi mesin ketimbang memikirkan probis (proses bisnis) yang seharusnya menjadi tujuan kita.

Baiklah tanpa banyak waktu terbuang, pada kesempatan ini Saya ingin berbagi kepada pembaca mengenai bagaimana OOP (Object Oriented Programming) diterapkan di C++.

Adapun perquisite dari tulisan di bawah ini adalah setidaknya Anda tahu dasar-dasar pemrograman seperti standar input output, menulis pada layar, membaca dan menulis pada file, sampai pada pemilihan kondisi (if..then, switch) dan looping (do.. while, for..).

Kelas (Class)

Class pada dasarnya adalah penerapan lebih jauh pada untuk struktur data / tipe bentukan (record type). Perbedaan yang mendasar adalah jika pada struktur data kita membuat sebuah tipe variable baru dimana variable itu merupakan gabungan berbagai variabel reserved, pada Class kita tidak hanya membuat satu paket beberapa variabel reserved tapi menentukan juga fungsi/procedure apa yang akan kita kenakan terhadap variabel itu dan membungkusnya menjadi satu kesatuan. fungsi/procedure tersebut biasa kita sebut method.

Class pada C++ diorganisasikan seperti di bawah ini:

class class_name {
access_specifier_1:
member1;
access_specifier_2:
member2;
...
} object_names;

Class_name merupakan nama Class kita, access_specifier_* adalah bagaimana member-member dibawahnya diakses, dimana member adalah berupa variabel, constructor, destructor dan method. Object_names adalah penamaan object Class tersebut setelah dilakukan compile. Object_names bersifat optional.

Terdapat tiga tipe access_specifier yang dapat digunakan pada C++, yaitu private, protected, dan finally. Masing-masing dijabarkan pada http://www.cplusplus.com adalah:

  • private members of a class are accessible only from within other members of the same class or from their friends.
  • protected members are accessible from members of their same class and from their friends, but also from members of their derived classes.
  • Finally, public members are accessible from anywhere where the object is visible.

Ini adalah contoh Class yang lengkap:
#include
using namespace std;
class Computer{
public:
Computer();
// Constructor
~Computer();
// Destructor
void setspeed ( int p );
int readspeed();
protected:
int processorspeed;
};

Computer::Computer(){
processorspeed = 0;
}

Computer::~Computer(){
//Destructors do not accept arguments
}

void Computer::setspeed ( int p ){
processorspeed = p;
}

int Computer::readspeed(){
return processorspeed;
}

Double Colon (::)

Jika dilihat pada contoh diatas, ada beberapa baris yang terdapat double colon. Adapun gunanya double colon itu adalah mengkaitkan method bentukan dengan Class yang dimaksud. Prinsip sintaksnya adalah:

Class_name::Method_name() {
//Sintaks
}

Class_name merujuk pada Class yang ingin kita tambahkan method-nya. Method_name adalah nama method yang ingin kita tulis. Penulisan Class_name, method_name, dan double colon tidak boleh memiliki jarak spasi.

Constructors dan Destructors

Constructor adalah sebuah method bernama sama dengan sebuah Class yang berfungsi untuk inisialisasi sebuah Class, sedangkan destructor merupakan sebuah method (yang juga bernama sama dengan kelasnya) yang digunakan untuk menghancurkan sebuah Class. Adapun pada Class Computer diatas, dapat dilihat bahwa method destructors selalu memiliki tanda (~) didepan penulisan methodnya.

Overloading Constructors

Overloading merupakan penulisan method yang sama pada suatu kelas dengan nama yang sama. Satu-satunya perbedaan antara method tersebut adalah parameter inputannya.

Dalam hal ini, sebuah Class dapat memiliki lebih dari sebuah method Constructor. Contoh pengaplikasiannya adalah:
/ overloading class constructors

#include 
using
namespace std;

class CRectangle {
int width, height;
public:
CRectangle ();
CRectangle (int,int);
int area (void) {return (width*height);}
};

CRectangle::CRectangle () {
width = 5;
height = 5;
}

CRectangle::CRectangle (int a, int b) {
width = a;
height = b;
}

int main () {
CRectangle rect (3,4);
CRectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
}

Default Constructor

Default Constructor merujuk jika kita membuat overloading constructors. Secara default jika menuliskan overloading constructor, berarti kita secara tak langsung telah menghilangkan constructor awal dari sebuah Class.

Untuk Class CRectangle diatas, jika kita melakukan inisialisasi Class variabel seperti:
CRectangle myrec; —-à Salah, karena sudah terdapat constructor CRectangle ();

Untuk itu, kita harus menuliskan:
CRectangle myrec (); -à Benar.

Pointer yang merujuk pada suatu kelas

Bahasa C dan C++ sangat erat kaitannya dengan pointer, karena bahanya sendiri dirancang untuk mendekati bahasa mesin. Sebelum membaca tulisan di bawah ini kita harus mengetahui dahulu mengenai pointer.

Inti dari sub-tema ini adalah kita dapat melakukan inisialisasi Class dengan cara membuat pointer terhadap kelas tersebut. Ya, kita dapat membubuhkan tanda (*) di depan nama Class variabel tersebut untuk menunjukan bahwa class variabel itu bertipe pointer. Namun perlu diingat, untuk mengakses variabel dan method di dalam kelas tersebut, tentu saja kita harus menggunakan tanda (->). Seperti contoh di bawah ini:

#include
Using namespace std;

Class Buku{
Private:
int jumlah;
public:
Buku(int);
int bukunyaDicuriMaling();
void showBuku();
}

Buku::Buku(int jumlah){
This->jumlah = jumlah;
}

Int bukunyaDicuriMaling(){
Return ++jumlah;
}

void showBuku(){
Std::cout << “Jumlah saat ini adalah: ” << jumlah;
}

Int main(){
Buku *bukusaya (10);
bukusaya->bukunyaDicuriMaling();
bukuSaya->showBuku();
}

Menurut web , http://www.cplusplus.com/ bentuk pemakaian pointer adalah:

expression

can be read as

*x

pointed by x

&x

address of x

x.y

member y of object x

x->y

member y of object pointed by x

(*x).y

member y of object pointed by x (equivalent to the previous one)

x[0]

first object pointed by x

x[1]

second object pointed by x

x[n]

(n+1)th object pointed by x

Class yang didefinisi dengan struct dan union

Ini merupakan hal yang baru untuk programmer Java, karena ternyata Class dalam C++ tidak hanya dapat didefinisikan dengan kata Class, tetapi juga dapat didefinisikan dengan kata struct atau union.

Perbedaan pendefinisian Class dengan kata Class dan Struct adalah jika didefinisikan dengan kata Class artinya secara default Class tersebut akan memiliki akses private secara default, sedangkan jika didefinisikan dengan kata Struct akan secara default memiliki hak akses public.

Adapun konsep dari pendefinisian Class dengan union sedikit berbeda dengan yang lain, karena pada pendefinisian union hanya terdapat satu data member yang dapat ditampung oleh Class tersebut. Adapun akses default dari Class dengan pendefinisian union adalah public.

Dari ketiga pendefinisian Class diatas, disarankan untuk tetap menggunakan kata Class untuk melakukan pendefinisian.

Static member

Sebuah kelas dapat menampung static member. Static member adalah sebuah variabel yang dapat dianggap sebagai konstanta terhadap variabel kelas bentukannya.

Contohnya adalah:

#include

Class percobaan{
Static float phi = 3.14568764;
//so on.. so on…
}

Selanjutnya pada kesempatan lain Saya akan menuliskan mengenai Friendship dan Inheritance pada C++.

Tidak ada komentar: