Assalammualaikum

Baiklah, kali ini kita masuk pula ke teknik pengaturcaraan OOP

Ianya tidaklah susah seperti yang dibelajar dalam kelas. Yang penting cara penyampaian bagi menarik minat pelajar dahulu dan kemudian baru mereka akan beransur-ansur akan minat dengan pengaturcaraan atau dalam bahasa inggerisnya programming

Sebelum saya mulakan apa-apa, baik kita tenangkan diri dan buangkan dalam minda bahawa programming ini susah dan menyusahkan. Buang dahulu dan anggap anda akan belajar subjek baru yang anda nak tengok apa isi kandungannya.

Ini subjek yang membolehkan anda menonton filem 3D, bermain permainan konsol atau komputer, bermain permainan di iPAD dan iPhone atau Samsung Galaxy Tab dan sewaktu dengannya

Apakah itu OOP?

OOP ini sebenarnya satu istilah sahaja untuk mengambarkan tahap keteraturan programming anda berbanding teknik struktur dan modular dahulu

Anggap sahaja kita ingin melakukan tugas arithmetic iaitu tambah dan tolak

Kita akan recall kembali pembelajaran kita dan mulakan dengan teknik-teknik programming terdahulu

Saya mulakan dengan menulis main.cpp terlebih dahulu (Untuk kali ini saya menggunakan Visual C++ 2010 Edition)

//disini saya panggil iostream untuk tujuan penggunaan "cout" dan "endl"
#include <iostream>
//disini saya panggil stdlib.h untuk arahan system ("pause").
//Ini membolehkan Visual C++ tidak terus menutup tetingkap konsol sebaik sahaja tamat program
#include <stdlib.h>
//untuk arahan "cout" dan "endl". Ianya memudahkan kita dalam menulis cout ini kerana jika tidak
//kita perlu meletakkan std::cout<<"etc"<<endl; untuk setiap kali menggunakan cout
using namespace std;

int main()
{
cout<<"test"<<endl; //papar perkataan test
system("pause");    //jangan tamatkan program
}

Berdasarkan pengaturcaraaan di atas. Saya selalu menulis dengan menguji menggunakan cout terlebih dahulu.

Maka kali ini kita cuba masukkan pula fungsi tambah, tolak, darab dan bahagi. Sila baca definisi pada sesetengah fungsi

#include <iostream>
#include <stdlib.h></pre>
int a,b,c,d;

using namespace std;

int tambah() //fungsi baru tambah
{
cout<<"Masukkan Nilai A    :"; // untuk memasukkan nilai A
cin>>a;                                           // mengambil nilai A menggunakan arahan cin
cout<<"Masukkan Nilai B    :"; // untuk memasukkan nilai B
cin>>b;                                          // mengambil nilai B menggunakan arahan cin
return (a+b);                                // Kita menghantar nilai A+B kepada fungsi yang memanggil fungsi "tambah()" ini
}

int tolak()
{
cout<<"Masukkan Nilai C    :";
cin>>c;
cout<<"Masukkan Nilai D    :";
cin>>d;
return (c-d);                                       // Kita menghantar nilai C-D kepada fungsi yang memanggil fungsi "tolak()" ini
}

int main () {
cout << "jawapan bagi penambahan a+b ialah : "<<tambah()<<endl;
cout << "jawapan bagi penolakan c-d ialah : "<<tolak()<<endl;
system ("pause");
}
<pre>

Maka sekarang kita sudah beralih ke Procedural Programming.

Sekarang, kita akan convertkan kepada Object Oriented Programming. Maka saya memerlukan satu fail tambahan yang digelar sebagai tambahtolak.h (rujuk post saya terdahulu)

Tetapi apa yang perlu ada dalam tambahtolak.h ini? Sebuah fail header?

Untuk melakukan operasi tambah tolak kita memerlukan
– operasi tambah : untuk menjalankan operasi tambah
– operasi tolak : untuk menjalankan operasi tolak
– operasi pengambilan data : untuk mengambil data agar dapat digunakan oleh tambah dan tolak.

Bermaksud, operasi tambah dan tolak memerlukan data dari operasi pengambilan data yang lain.

Tetapi jika kita boleh “bundlekan” operasi-operasi ini atau gabungkan untuk menjadi satu fungsi sahaja.

Dan apa yang tinggal kita hanya perlu dapatkan data sahaja.

#ifndef tambahtolak_h
#define tambahtolak_h

class nombor
{
public:
int aa,bb,cc,dd;
void operasi(nombor dapatkandata);
};

#endif

Satu class nombor diperkenalkan. Sistem class ini bertujuan seperti pakej. Ianya tidak sama seperti fungsi. class ini dapat digunakan oleh fungsi lain juga.

Saya juga isytiharkannya sebagai public kerana saya tidak menggunakan data yang private atau protected. Definisi ini tidak akan diterangkan untuk artikel ini.

Cuba perhatikan, saya perkenalkan int aa,bb,cc, dan dd untuk menyimpan data yang akan dimasukkan oleh pengguna

Kemudian ada satu fungsi operasi (void) untuk mendapatkan data. “nombor dapatkandata” itu adalah bertujuan memberitahu class nombor yang kita mahu simpan

atau parsing data yang dihantar melalui dapatkandata. bermaksud “dapatkandata” ini seperti seorang orang tengah dalam mendapatkan data

.

Seterusnya kita pergi ke satu lagi fail yang akan diperkenalkan iaitu tambahtolak.cpp

#include <iostream>
#include "tambahtolak.h"

using namespace std;

void nombor::operasi(nombor dapatkandata)
{
cout<<"Penambahan a+b    :    "<<dapatkandata.aa + dapatkandata.bb<<endl;
cout<<"Penolakan c-d    :    "<<dapatkandata.cc - dapatkandata.dd<<endl;
}

Seperti biasa, kita akan memanggil header file tambahtolak.h ini kerana kita akan melakukan sesi function declaration di dalam ini.

Cuba lihat dalam void nombor::operasi (nombor dapatkandata)

Inilah cara untuk kita menulis bagi mendapatkan atau memanggil function yang diisytiharkan di dalam class nombor tadi.

Kemudian di dalamnya terdapat sesi penambahan dan penolakan. kita menggunakan [dot] atau “.” untuk mendapatkan data yang telah dikutip oleh

dapatkandata bagi setiap variable aa,bb,cc, dan dd.

Seterusnya kita lihat pula main.cpp

</pre>
#include <iostream>
#include <stdlib.h>
#include "tambahtolak.h"

using namespace std;

nombor datas;
nombor *getdatas;

int main () {
cout<<"Nilai A    :    ";cin>>datas.aa;
cout<<"Nilai B    :    ";cin>>datas.bb;
cout<<"Nilai C    :    ";cin>>datas.cc;
cout<<"Nilai D    :    ";cin>>datas.dd;
getdatas->operasi(datas);
system ("pause");
}
<pre>

Kita mendapati bahawa kita perlu sekali lagi memanggil tambahtolak.h

Dan disini saya perkenalkan dua data untuk dapatkan data. satu berbentuk  *getdatas dan satu lagi berbentuk datas sahaja.

Apakah bezanya?

Satu untuk menyimpan data dan satu lagi untuk memanggil data.

*getdatas adalah untuk memangil operasi

datas pula adalah untuk memasukkan nilai di dalamnya.

Oleh sebab itu Nilai A sehingga D dipanggil menggunakan cin>>datas.aa dan sebagainya

Manakala getdatas->operasi(datas) pula adalah bertujuan untuk memanggil operasi dan “menghantar” datas itu semua kepada fungsi operasi.

Kita tidak perlu spesifikkan aa,bb,cc, dan dd (seperti getdatas->operasi(datas.aa)) dan seterusnya kerana melecehkan. Baik sahaja kita hantar satu bundle

Maksudnya

getdatas->operasi(datas.aa)
getdatas->operasi(datas.bb)
getdatas->operasi(datas.cc)
getdatas->operasi(datas.dd)

sama sahaja seperti

getdatas->operasi(datas)

Lihat, 4 lines versus 1 line. mana satu anda pilih?

Outputnya:-

main.cpp

Maaf, agar kabur. Tetapi anda boleh cuba copy and paste setiap kod tadi dalam Visual C++ 2010 dan jalankan.

WordPress tidak membenarkan saya upload .zip file dan .cpp file. Maka saya cadangkan agar copy and paste sahaja code di atas.

Sehingga berjumpa lagi

Selamat Programming dengan bestnya!!

About the Author razorjr

Research and Academician

2 comments

  1. Saya sijil computer network.. nanti sambung diploma kejuruteraan elektronik(computer) ada koding2 ni. Aduh2 pening haha

    1. Salam, tidak perlu risau kerana yang penting kamu sambung sebab minat. Walaupun Zero knowledge dalam programing (coding), dengan minat akan pasti dapat berjaya juga dalamnya.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s