Konsep OOP di Visual C++ 2005

19 January 2010

Dalam konsep OOP (Object Oriented Programming) salah satu syarat dari bahasa pemrograman agar dapat dikelompokan kedalam bahasa pemrogramman yang mendukung OOP yaitu class. Visual C++ 2005 yang merupakan bahasa pemrograman berbasis OOP-pun mendukung class.
Ditutorial ini yang akan saya bahas yaitu mengenai class yang berisi beberapa method dan juga cara membuat sebuah object/instance class.

Setiap kali membuat sebuah class baru maka harus juga dibuat 2 buah file baru dengan nama yang sama, yaitu satu file header dengan ekstensi *.h dan satu file source yang berekstensi *.cpp.
Misalkan ingin dibuat sebuah class dengan nama Class1, maka harus dibuat juga file Class1.h dan Class1.cpp. Dengan menggunakan Visual C++ 2005 hal tersebut bisa diatasi dengan mudah karena akan dapat dibuat secara langsung oleh Visual C+ 2005.

File header berguna untuk menampung prototype dari konstruktor class dan juga prototype dari setiap method yang ada di dalam class tersebut. Sedangkan file source berguna untuk menampung baris perintah atau isi dari constructor dan method tersebut.


Ok buatlah sebuah project baru kemudian designlah form seperti gambar berikut ini :


form tersebut terdiri dari 4 buah componen yaitu label, maskedtextbox, combobox, button.
aturlah properties dari form tersebut seperti dibawah ini :

Nama Kontrol : Form1
Properties : AcceptButton
Nilai : button1

Nama Kontrol : From1
Properties : Text
Nilai : Konversi Suhu

Nama Kontrol : label1
Properties : Text
Nilai : Input Suhu

Nama Kontrol : label2
Properties : Text
Nilai : Pilihan Konversi

Nama Kontrol : label3
Properties : Text
Nilai : Hasil

Nama Kontrol : label4
Properties : Text
Nilai : Celcius

Nama Kontrol : maskedtextbox1
Properties : Mask
Nilai : 00

Nama Kontrol : combobox1
Properties : Items
Nilai : Fahrenheit, Reamur, Kelvin

Nama Kontrol : combobox1
Properties : Text
Nilai : Fahrenheit

Nama Kontrol : button1
Properties : Text
Nilai : Konversi


kemudian tambahkan sebuah class baru dengan mengklik menu dropdown Add New Item yang ada pada toolbar lalu pilih Add Class atau dengan menggunakan kombinasi tombol shorcut SHIFT + ALT + C. Pada jendela yang tampil dibagian kategori pilih Visual C++ > C++ kemudian pada bagian template pilih lalu klik C++ Class.

Lalu klik tombol Add seperti tampil pada gambar dibawah ini :


Akan tampil kotak dialog Generik C++ Class Wizard isilah Class Namenya menjadi classkonversi seperti yang saya bilang diawal ketika kita membuat sebuah class di Visual C++ 2005 maka file header dan file source akan langsung dibuat secara otomatis sesuai dengan nama class seperti tampil pada gambar dibawah ini, dimana nama file header dan file source akan terisi secara otomatis ketika menulis nama class :



Lihat pada Solution Explorer akan tercipta 2 buah file baru. klik ganda file classkonversi.cpp lalu tambahkan listing code berikut ini dibawah code yang telah ada :

double classkonversi::keFahrenheit(double celcius)
{
double fahrenheit;
fahrenheit = (celcius * 1.8) + 32;
return fahrenheit;
}

double classkonversi::keReamur(double celcius)
{
double reamur;
reamur = celcius * 0.8;
return reamur;
}

double classkonversi::keKelvin(double celcius)
{
double kelvin;
kelvin = celcius + 273.15;
return kelvin;
}

setelah itu kliklah pada classkonversi.h lalu tambahkan code berikut ini :

#pragma once
ref class classkonversi
{
public:
classkonversi(void);
double classkonversi::keFahrenheit(double celcius);
double classkonversi::keReamur(double celcius);
double classkonversi::keKelvin(double celcius);
};

setelah itu pindahlah ke tab Form1.h [Design] kemudian tekan F7 pada bagian paling atas kode dibawah #pragma once tambahkan kode berikut ini :

#include "classkonversi.h"
supaya class tersebut bisa dikenali diprogram utama. pindah lagi ke tab Form1.h [Design] klik ganda button1 kemudian ketikan code program dibawah ini :


private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

if(maskedTextBox1->Text == ""){
maskedTextBox1->Focus();
goto keluar;
}

classkonversi^ konversisuhu = gcnew classkonversi;
double suhu, hasil;
suhu = Convert::ToDouble(maskedTextBox1->Text);

switch(comboBox1->SelectedIndex){
case 0 :
hasil = konversisuhu->keFahrenheit(suhu);
break;

case 1:
hasil = konversisuhu->keReamur(suhu);
break;

case 2:
hasil = konversisuhu->keKelvin(suhu);
break;

default:
MessageBox::Show("Maaf, pilihan tidak ada","Pesan");
goto keluar;
break;
}

label3->Text = "Hasil konversi Celcius ke " + comboBox1->SelectedItem + " = " + hasil.ToString();

keluar:;
}
jalankan program dengan menenkan F5.

Selamat mencoba.. Konsep OOP di Visual C++ 2005SocialTwist Tell-a-Friend

9 comments:

Tanya :
1. Apa bedanya maskedtextbox dengan textbox biasa?

2. apa arti dari perintah ini :

if(maskedTextBox1->Text == ""){
maskedTextBox1->Focus();
goto keluar;
}

DAN

classkonversi^ konversisuhu = gcnew classkonversi;

Matur nuwun, senang bisa berbagi ilmu..

GnouBdilS said... Reply

@wise_sunshine :
1. mengutip dari MSDN..
maskedtextbox is an enhanced TextBox control that supports a declarative syntax for accepting or rejecting user input.
maskedtextbox adalah peningkatan dari control/objek textbox yang mensupport sintak deklaratif untuk menerima atau menolak input dari user.. nah sintaks deklaratif itu berupa rule-rule, bisa berupa inputan hanya boleh mengandung angka, mengkonvert alphabetic ke bentuk kapital, dll yang biasanya kalau dalam sebuah textbox perlu sintaks-2 tertentu dengan maskedtextbox semuanya menjadi lebih mudah..

2. arti perintah
if(maskedTextBox1->Text==""){
maskedTextBox1->Focus();
goto keluar;

maksudnya adalah jika maskedTextBox1 nilai textnya tidak ada/kosong maka kursor akan diletakkan pada maskedTextBox1 kemudian memanggil prosedur berikutnya yaitu goto keluar yang berfungsi untuk menghentikan proses yang terjadi.

kemudian classkonversi^ konversisuhu = gcnew classkonversi;

merupakan perintah pemanggilan class yang fungsinya untuk instansiasi objek/penurunan sifat objek dari classkonversi ke konversisuhu jadi dalam pemanggilan berikutnya cukup dipanggil dengan perintah seperti berikut :
hasil = konversisuhu->keFahrenheit(suhu);

GnouBdilS said... Reply

@wise_sunshine : maaf saya salah klik pas mau moderate post bisa di ulang lagi ga pertanyaannya? yang saya ingat hanya untuk msdn sama goto keluar..
1. untuk menggunakan msdn terlebih dahulu harus menginstall msdnnya nah nanti di start menu visual studionya akan tampil microsoft visual studio documentation.. click aja buat ngebukanya..
di toolbar msdn ada index km click aja indexnya.. nah nanti disebelah kiri akan tampil..
index dan ada dropdown filter pilihan di combobox itu pilih aja visual c++ baru km cari apa yang mau kamu cari di textbox look for misalkan km masukan click maka msdn akan mencari yang berhubungan dengan click..
2. untuk goto keluar.. keluar disini dalam c++ dikeal sebagai label.. nah label itu sendiri dalam penamaannya bebas sesuai dengan keinginan kita dikarenakan c++ memberikan kebebasan untuk kita memberikan nama dari sebuah label bisa saja kita menggunakan goto exit; goto close; dll
sedangkan fungsi goto sendiri sama halnya dengan goto yang ada di visual basic dimana goto biasanya bisa dimanfaatkan untuk menghandle apabila terjadi error atau jika ada suatu kondisi yang sudah/tidak terpenuhi maka akan memanggil prosedur lain.. nah dalam kasus ini goto keluar befungsi untuk memanggil prosedur lain (prosedur dibawah tulisan keluar:;) nah karena dibawah keluar:; tidak ada prosedur itu sama saja artinya menghentikan proses yang sedang terjadi dan tidak melakukan prosedur yang terjadi setelah proses tersebut (melakukan konversi suhu)

classkonversi^ konversisuhu = gcnew classkonversi;

Apa arti dari tanda ^ di atas? Pointer kah? Bukannya menggunakan tanda * ya?

Lalu gcnew?

GnouBdilS said... Reply

gcnew berfungsi untuk menginstansiasi objek (membuat objek baru dari class classkonversi) di visual c++.

tanda ^ berfungsi untuk menghandle objek nah dalam kasus ini tanda ^ berfungsi untuk menghandle objek yang diinstansiasikan dari class classkonversi.

Saya juga membaca-baca buku tentang bahasa C++, tapi di beberapa contoh menginstansi kelas, cukup menggunakan

classkonversi konversisuhu();

apakah memang berbeda jika mengguakan IDE Visual C++?

Berarti dalam Visual C++ proses instansi akan selalu dibentuk dengan cara demikian?

Kok sedikit berbeda ya dengan yang pernah saya baca, biasanya cukup

classkonversi konversisuhu;

Oh, iya, aku menemukan kendala. Waktu pertama kali buat program paling dasar yaitu Hello World di Visual C++. aku melalui proses :

Project -> Win32 -> Win32 Console application.

Konfigurasi nya

Application type -> console application

Additional option -> empty project

Finish


Lalu ketika mengcompile HelloWorld dikatakan
" fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory"

Bukankah pustaka iostream.h seharusnya sudah default milik C++? Mengapa tidak ditemukan pustaka ini di Visual C++?

GnouBdilS said... Reply

@wise : antara c++ dengan visual c++ tentunya pasti ada perbedaan meskipun visual c++ itu sendiri merupakan pengembangan dari bahasa c++.
layaknya basic dan visual basic. meskipun visual basic berasal dari bahasa basic tetap ada perbedaan dikarenakan perkembangannya :)

iostream.h sudah dihapus di visual c++ 2005 bro.. :)
gantinya adalah #include tanpa menggunakan extensi *.h
nah dalam penggunaannya pun ditambahkan :

using namespace std;

lengkapnya begini contohnya kalo mau buat hello world di visual c++ 2005 :

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{

cout << "Hello World !" << endl;

_getch();

}

Post a Comment

Artikel Lain

 
 
 

Go To Link

  »  A1VBCode
  »  Bina Sarana Informatika
  »  Blogger
  »  Deconstruction Code
  »  Diskusiweb
  »  dremi.info
  »  Echo
  »  Facebook
  »  Gary Abraham
  »  Ilmu Website
  »  JQuery
  »  Mahesajenar Widget
  »  STMIK Nusa Mandiri
  »  OOM Blog
  »  Planet Source Code
  »  Rahma Blog
  »  Terren Jr
  »  VB-Bego
  »  Herry Blog

Advertisement