Wednesday, 30 November 2011

Ayo bikin "Win32 Application" (1)

Pernah terbayang membuat program seperti notepad?, program yang satu ini memang sudah tidak asing lagi dari jaman Windows 98 . Biarpun tampilannya sederhana jangan anggap remeh fungsinya, yah apalagi kalau bukan mengetik teks hehehe. Agar dapat membuat program seperti itu, dan tampil secara minimalis serta GUI di Sistem Operasi (SO) Windows, kita perlu berinteraksi dengan Win32 API. Atau biasanya disebut Win32 Application.

Win32 Application adalah program yang mengarah kepada penggunaan WIN32 API (Application Programming Interface) sebagai librarynya. Mengapa dikatakan Win32? Karena ditulis dengan operasi 32-bit , dan dijalankan di SO Windows. Untuk lebih jelasnya pengertian Windows API .

Sebagai permulaan kita awali dengan template pada Code::Blocks, jalankan program Code::Blocks lalu pilih File -> New -> Project -> Win32 GUI Project. Maka akan keluar wizard yang akan membantu kita menentukan lokasi dan tipe dari program Win32 kita (Frame atau Dialog). Tipe yang akan dibuat adalah "Frame Based", seperti gambar berikut :

Gambar 1. Frame Based

Selanjutnya wizard akan menanyakan lokasi penyimpanan, dan metode peng-kompilasian program apakah Debug atau Release, atau keduanya. Pilih keduanya. Lanjutkan sampai finish dan Boom! sederet kode untuk membuat program Win32 sederhana telah tercipta . Lakukan kompilasi dan langsung jalankan (F9). Jika sukses maka anda akan melihat jendela program yang masih kosong, hanya ada tombol Minimize, Maximize, dan Close dipojok atas. Dibanding menghapal satu-satu kode yang amat banyak ini , kita mulai dari yang sederhana yaitu mengubah Caption/Judul program. Judul yang berasal dari template adalah "Code::Blocks Template Windows App". Judul ini diisi pada fungsi CreateWindowEx(), pada parameter ketiga. Silahkan cari lalu ubah menjadi "Latihan Win32" atau dengan kalimat yang diinginkan, lalu kompilasi ulang.

Jika semuanya lancar, kita lanjut ke dua fungsi utama. Yaitu int WINAPI WinMain() dan LRESULT CALLBACK WindowProcedure(). Pada fungsi int WINAPI WinMain(), parameter pertama berfungsi untuk menangani modul program saat dijalankan dan aktif di memory. Parameter kedua menunjuk ke instance sebelumnya, tetapi jika tidak maka akan diabaikan, dan umumnya selalu diabaikan/dilewati (bahkan bernilai NULL). Parameter ketiga adalah string yang mewakili semua item yang digunakan pada baris perintah untuk mengkompilasi aplikasi, katanya sih begitu . Parameter keempat/terakhir berfungsi sebagai pengatur bagaimana program kita akan ditampilkan (melalui fungsi ShowWindow (hwnd, nCmdShow);). Sedangkan LRESULT CALLBACK WindowProcedure(), adalah sebuah prosedur yang wajib pada program kita, karena pengulangan program terjadi disini. Jangan dipikirin dulu yang beginian . Yang penting program kita sudah kita dapat dimodifikasi dan berjalan dengan lancar. Selanjutnya kita akan menambahkan menu seperti File, New, Exit, dsb. So, Happy Coding...

- krofz

Wednesday, 2 November 2011

Inheritance pada Class

Inheritance (indonesia : Warisan) adalah cara yang digunakan untuk menurunkan sifat-sifat atau objek-objek (baik variabel atau fungsi) pada Pemrograman Berorientasi Objek (PBO, inggris : Object Oriented Programming - OOP). Penurunan objek ini dimaksudkan agar kita tidak menuliskan 2 kali objek yang memiliki nilai/fungsi yang sama. Untuk lebih jelasnya mari kita lihat kode berikut :


#include  < iostream > 

using namespace std;

class Badan{
    int tinggi, berat; //berat badan
public:
    Badan() :tinggi(100) , berat(50) {} //default Constructor
    void set(int t, int b){
        tinggi = t; berat = b; }
    int getTinggi(){ return tinggi; }
    int getBerat(){ return berat; }
};

//Kelas Turunan dari Badan
class Alien : public Badan{
public:
    //ketLien = Keterangan Alien
    void ketLien(){
        cout << "Tinggi Alien : " << getTinggi() << endl;
        cout << "Berat Alien : " << getBerat() << endl;
    }
};

class Manusia : public Badan{
public:
    //ketMan = Keterangan Manusia
    void ketMan(){
        cout << "Tinggi Manusia : " << getTinggi() << endl;
        cout << "Berat Manusia : " << getBerat() << endl;
    }
};

int main(int argc, char* argv[]){
    Alien A;
    A.set(150,40);
    A.ketLien();

    cout << endl;

    Manusia B;
    B.set(170,60);
    B.ketMan();

    return 0;
}

Kelas Alien dan Manusia merupakan kelas turunan dari kelas Badan. Dikarenakan alien dan manusia pasti memiliki objek yang sama, yaitu tinggi dan berat badan. Dengan pewarisan memudahkan kita dalam menambahkan objek yang sama itu, dibandingkan harus menuliskannya didalam kedua kelas (Alien dan Manusia). Sehingga pengunaan baris kode yang diperlukan dapat diminimalisir. Ditambah lagi jika fungsi yang digunakan bersama semakin banyak seperti fungsi berjalan, berlari, atau bekerja yang akan digunakan oleh Alien atau Manusia (atau Makhluk lainnya? ).

Penambahan warisannya cukup dengan tanda titik dua (:) pada kelas yang diinginkan. Selain itu kita juga dapat menambahkan 2 atau lebih kelas yang ingin mewariskan sifatnya (menggunakan koma ',' setelah kelas dasar pertama). Seperti contoh berikut:


//bentuk umum kelas turunan.
class Turunan : public Utama{
 ...
};

//contoh, dengan 2 kelas yang mewariskan
class Alien : public Badan ,  public Sayap{
 ...
};

Dapat dilihat dari kode diatas kelas alien memiliki objek dari kelas Badan dan Sayap. Objek yang dapat digunakan oleh kelas turunan adalah objek yang memiliki hak akses public dan protected. So Happy Coding! ...

- krofz
 

back to top

back to top