Selasa, 28 Desember 2010

Bahasa pemrograman yang mendukung OOP


Bahasa pemrograman yang mendukung OOP


1. Java OOP (Object Oriented Programming – Pemrogram Berorientasi Objek)
yang artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis oebjek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.

2.Pascal (Bahasa Pemograman)                                            
Pascal adalah
bahasa pemrograman yang pertama kali di buat oleh Profesor Niklaus Wirth, seorang anggota International Federation of Information Processing (IFIP) pada tahun 1971. Dengan mengambil nama dari matematikawan Perancis, Blaise Pascal, yang pertama kali menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu, Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu.

3.C++                                  
C++ adalah salah satu
bahasa pemrograman komputer. Dibuat pada tahun 1980-an oleh Bell Labs (Bjarne Stroustrup) sebagai pengembangan dari Bahasa pemrograman C. Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (Object Oriented Programming).

4.Microsoft Visual Basic. Net                                                             
Microsoft Visual Basic .NET adalah sebuah alat untuk mengembangkan dan membangun aplikasi yang bergerak di atas sistem .NET Framework, dengan menggunakan bahasa BASIC. Dengan menggunakan alat ini, para programmer dapat membangun aplikasi Windows Forms, Aplikasi web berbasis ASP.NET, dan juga aplikasi command-line. Alat ini dapat diperoleh secara terpisah dari beberapa produk lainnya (seperti Microsoft Visual C++, Visual C#, atau Visual J#), atau juga dapat diperoleh secara terpadu dalam Microsoft Visual Studio .NET. Bahasa Visual Basic .NET sendiri menganut paradigma bahasa pemrograman berorientasi objek yang dapat dilihat sebagai evolusi dari Microsoft Visual Basic versi sebelumnya yang diimplementasikan di atas .NET Framework. Peluncurannya mengundang kontroversi, mengingat banyak sekali perubahan yang dilakukan oleh Microsoft, dan versi baru ini tidak kompatibel dengan versi terdahulu.

5.Ruby
Ruby adalah bahasa pemrograman scripting yang berorientasi obyek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman scripting yang ada di dunia. Ruby ditulis dengan bahasa pemrograman C dengan kemampuan dasar seperti Perl dan Python.

6.Python
Python adalah bahasa pemrograman model skrip (scripting language) yang berorientasi obyek. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat berjalan di berbagai platform sistem operasi

7.PHP
PHP adalah bahasa pemrograman script yang paling banyak dipakai saat ini. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain.

8.C#  
adalah Java versi Microsoft, sebuah bahasa multi flatform yang didesain untuk bisa 
berjalan di berbagai mesin. C# adalah pemrograman berorientasi Object (OOP). 
C# memiliki kekuatan bahasa C++ dan portabilitas seperti Java.
 
9.Delphi
Delphi adalah sebuah bahasa pemrograman dan lingkungan pengembangan perangkat lunak. Produk ini dikembangkan oleh Borland (sebelumnya dikenal sebagai Inprise). Bahasa Delphi, yang sebelumnya dikenal sebagai object pascal (pascal dengan ekstensi pemrograman berorientasi objek (PBO/OOP)) pada mulanya ditujukan hanya untuk Microsoft Windows, namun saat ini telah mampu digunakan untuk mengembangkan aplikasi untuk Linux dan Microsoft .NET framework (lihat di bawah). Dengan menggunakan Free Pascal yang merupakan proyek opensource, bahasa ini dapat pula digunakan untuk membuat program yang berjalan di sistem operasi Mac OS X dan Windows CE



Polimorphy


Polimorphy

Polimorfisme merupakan fitur pemrograman berorientasi objek yang penting setelah pengkapsulan dan pewarisan. Polimorfisme berasal dari bahasa Yunani, poly(banyak) dan morphos (bentuk). Polimorfisme menggambarkan kemampuan sebuah kode program  berperilaku berbeda tergantung situasi pada waktu run (program berjalan). Konstruksi ini memungkinkan untuk mengadakan ikatan dinamis (juga disebut ikatan tunda, atau ikatan akhir).  Kalau fungsi-fungsi dari suatu kelas dasar didefinisikan ulang atau ditindih pada kelas turunan, maka objek-objek yang dihasilkan hirarki kelas berupa objek polimorfik.
Polimorfik artinya mempunyai banyak bentuk atau punya kemampuan untuk mendefinisi banyak bentuk.

Inheritence / Pewarisan


Inheritence / Pewarisan

Suatu kelas dapat diciptakan berdasarkan kelas lain. Kelas baru ini mempunyai sifat-sifat yang sama dengan kelas pembentuknya, ditambah sifat-sifat khusus lainnya. Dengan pewarisan kita dapat menciptakan kelas baru yang mempunyai sifat sama dengan kelas lain tanpa harus menulis ulang bagian-bagian yang sama. Pewarisan merupakan unsur penting dalam pemrograman berorientasiobjek dan merupakan blok bangunan dasar pertama penggunaan kode ulang (code reuse).
Jika tidak ada fasilitas pewarisan ini, maka pemrograman pemrograman berorientasi obyek akan tidak banyak berbeda dengan pemrograman prosedural, hanya perbedaan dalam pengkapsulan saja yang menggunakan kelas sebagai pengganti struktur. Yang perlu menjadi catatan di sini adalah bahwa data dan fungsi yang dapat diwariskan hanya yang bersifat public dan protected.
Untuk data dan fungsi private tetap tidak dapat diwariskan. Hal ini disebabkan sifat protected yang hanya dapat diakses dari dalam kelas saja.
Sifat pewarisan ini menyebabkan kelas-kelas dalam pemrograman berorientasi objek membentuk hirarki kelas mulai dari kelas dasar, kelas turunan pertama, kelas turunan kedua dan seterusnya.  Kelas yang menjadi induk biasa disebut sebagai superclass dan kelas turunannya biasa disebut sebagai subclass.

Keuntungan Menggunakan Inheritence / Pewarisan
·      Subclass menyediakan karakteristik yang berbeda dengan superclass / kelas induknya.
·      Pemrogram dapat membuat sebuah kelas generic, yaitu sebuah abstract class. Kelas abstract ini merupakan sebuah kelas yang memiliki sifat dan karakteristik umum dan seluruh implementasinya berada pada subclassnya.

 Beberapa Bentuk Dari Inheritence / Pewarisan.

Inheritence / pewarisan memiliki 3 bentuk, yaitu :
·      Single Inheritence
Single inheritance adalah bentuk dimana sebuah kelas dapat memiliki sebuah kelas induk / super class.

·      Multiple Inheritence
Multiple inheritance adalah bentuk dimana sebuah kelas dapat memiliki lebih dari satu kelas induk / super class. Bentuk ini tidak didukung oleh beberapa bahasa pemrograman, salah satunya adalah Java. Permasalahan yang sering timbul dari bentuk ini adalah ambiguitas pada karakteristik kelas turunan ketika memiliki induk lebih dari satu.

·      Multi Level Inheritence
Multilevel inheritance adalah bentuk dimana sebuah kelas dapat menjadi kelas induk / superclass bagi kelas lain.

Untuk memperjelas penjelasan diatas, maka akan diberikan Listing Program dari class unggas yaitu sebagai berikut:
   Sebagai kelas dasar adalah Unggas. Salah satu sifat Unggas adalah bertelur dan bersayap. Kelas turunan pertama adalah Ayam, Burung dan Bebek. Tiga kelas turunan ini mewarisi sifat kelas dasar Unggas yaitu bertelur dan bersayap. Selain mewarisi sifat kelas dasar, masing-masing kelas turunan mempunyai sifat khusus, Ayam berkokok, Burung terbang dan Bebek berenang. Kelas Ayam punya kelas turunan yaitu Ayam Kampung dan Ayam Hutan. Dua kelas ini mewarisi sifat kelas Ayam yang berkokok. Tetapi dua kelas ini juga punya sifat yang berbeda, yaitu: Ayam Kampung berkokok panjang halus sedangkan Ayam hutan berkokok pendek dan kasar.

//Program Kelas Unggas
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
class Unggas{ // class induk.
public:
void Bertelur() {cout<<"Bertelur"<<endl; }
};
class Ayam : public Unggas{ // class turunan.
public:
void Berkokok() {cout<<"Berkokok"<<endl; }
};
class Burung : public Unggas{ // class turunan juga
public:
void Terbang() {cout<<"Terbang"<<endl; }
};
class Bebek : public Unggas{ // class turunan juga
public:
void Berenang() {cout<<"Berenang"<<endl; }
};
class AyamKampung : public Ayam{ // class turunan juga
public:
void Berkokok_Panjang_Halus() {cout<<"Berkokok Panjang Halus"<<endl; }
};
class AyamHutan : public Ayam{ // class turunan juga
public:
void Berkokok_Pendek_Kasar() {cout<<"Berkokok Pendek Kasar"<<endl; }
};
// pendeklarasian main program.
void main(){
cout <<"Sifat bebek adalah:"<<endl;
Bebek bk; // bikin obyek bebek, turunan dari unggas.
bk.Bertelur();
bk.Berenang();
cout<<endl;
cout<<"Sifat ayam adalah:"<<endl;
Ayam ay; // bikin obyek ayam, turunan dari unggas.
ay.Bertelur();
ay.Berkokok();
cout<<endl;
cout<<"Sifat ayam kampung adalah:"<<endl;
AyamKampung ayk; // bikin obyek ayam kampong, turunan dari ayam.
ayk.Bertelur();
ayk.Berkokok();
ayk.Berkokok_Panjang_Halus();
getch();
}
Dapat dilihat, bahwa kelas Ayam dan kelas Bebek dapat menjalankan fungsi
Bertelur() yang ada dalam kelas Unggas meskipun fungsi ini bukan merupakan
anggota kelas Ayam dan kelas Bebek. Kelas AyamKampung dapat menjalankan fungsi Berkokok() yang ada dalam kelas Ayam walaupun dua fungsi tersebut bukan merupakan anggota kelas AyamKampung. Sifat-sifat di atas yang disebut dengan pewarisan (inheritance).

Konstruktor dan Destruktor


Konstruktor dan Destruktor

Konstruktor
Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance).
Konstruktor ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktor tidak mempunyai tipe hasil, bahkan juga bukan bertipe void.
Pada impelementasinya konstruktor sering digunakan untuk melakukan inisialisasi program seperti halnya membuka file, inisialisasi nilai member data,dll. Konstruktor boleh terdapat lebih dari satu.

Tiga jenis konstruktor:
o   Konstruktor default : tidak dapat meneriman argumen, anggota data diberi nilai awal tertentu.
o  Konstruktor penyalinan dengan parameter : anggota data diberi nilai awal berasal dari parameter.
o   Konstruktor penyalinan obyel lain : parameter berupa obyek lain, anggota data diberi nilai dari obyek lain.


Perhatikan contoh dibawah ini :
//Program Konstruktor
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
class titik{
int x, y;
public:

titik(){ //konstruktordefaultt
x=0;
y=0;} // end

titik(int nx, int ny) {// konstruktor penyalinan
x=nx;
y=ny;} // end

titik(const titik& tt){ // konstruktor penyalinan objek
x=tt.x;
y=tt.y;}
int NX() { return x; } // fungsi anggota biasa
int NY() { return y; } // fungsi anggota biasa
};

void main(){
titik t1; // objek dg konstruktor default
titik t2(10, 20); // objek dg konstruktor penyalinan
titik t3(t2); // objek dg konstruktor penyalinan objek
cout<<”t1 = ”<< t1.NX() << “, “<<t1.NY()<<endl;
cout<<”t2 = ”<< t2.NX() << “, “<<t2.NY()<<endl;
cout<<”t3 = ”<< t3.NX() << “, “<<t3.NY()<<endl;
getch();} // akhir dari void main.

Hasil keluaran program:
t1 = 0,0
t2 = 10,20
t3 = 10,20

Objek t1 diciptakan dengan otomatis menjalankan konstruktor default.
Dengan demikian anggota data diberi nilai x=0, dan y = 0. Penciptaan objek t2 diikuti dengan menjalankan konstruktor kedua, mengakibatkan anggota data diberi nilai x=10 dan y=20. Terakhir, t3 diciptakan dengan menyalin objek dari t2, mengakibatkan pemberian nilai kepada anggota data sama dengan objek t2.


Destruktor

Destruktor adalah fungsi yang dijalankan pada sat obyek telah selesai digunakan atau program berakhir. Hanya saja, konsep ini tidak
sepenuhnya didukung oleh seluruh bahasa pemrograman berorientasi obyek seperti halnya konstruktor.
Sebagai contoh pada bahasa pemrograman Java tidak mengenal destruktor, melainkan garbage collector / gc.


Contoh Latihan CLASS, ARRAY dan FUNGSI


Contoh Latihan CLASS, ARRAY dan FUNGSI

1.     Buatlah program untuk menghitung penjualan tiket pesawat dengan ketentuan
Kode Pesawat
Nama Pesawat
Harga Pesawat
GI || gi
Garuda Indonesia
250000
MN || mn
Mandala
180000
LA || la
Lion Air
275000
BR || br
Bouroq
165000

2.    Buat CLASS dengan nama pesawat yang terdiri dari kode  pesawat, nama pesawat, harga tiket, jumlah beli, jumlah bayar, diskon, PPN
3.    Buat fungsi Total = harga x jumlah beli
4.    Buat fungsi Diskon jika tiket yang dibeli > 10, maka Diskon= 10% x Total
5.    Buat fugsi Jumlah Bayar = Total-Diskon+PPN
6.    Buat fungsi PPN = 10 % x Total
7.    Buat fungsi Total Bayar = Total Bayar + Jumlah Bayar
8.    Gunakan Array untuk rancangan Inputnya
9.    gunakan fungsi IF dan STRCMP



Rancangan Inputnya

Program Penjualan Tiket Pesawat
HAICHI AIR PORT
Jl. Kalibata Timur No. 37 Telp. 021 7901074
----------------------------------------------------------------
Masukan Nama Penumpang :
Masukan Jumlah Data       :

Data ke – 1
Masukan Kode Pesawat        :
Nama Pesawat                     :
Harga Pesawat                    :
Masukan Jumlah Beli           :
Total                                  :
Diskon                                :
PPN                                    :

Data ke – 2
-----------------------------
-----------------------------



Rancangan Outputnya

Program Penjualan Tiket Pesawat
HAICHI AIR PORT
Jl. Kalibata Timur No. 37 Telp. 021 7901074
--------------------------------------------------------------------------------------------

Nama Penumpang   :
-------------------------------------------------------------------------------------------
No    Kode          Nama        Harga     Total       Diskon         PPN        Jumlah Bayar
       Pesawat      Pesawat      Tiket
--------------------------------------------------------------------------------------------
….      ……………..        ………………         ………….     ……………..     …………….     ……………       
….      ……………..        ………………         ………….     ……………..     …………….     ……………       
------------------------------------------------------------------------------------------
                                                                             Total Bayar Rp.  …………………..

Mau Input Data Lagi [Y/T] :


Jawaban :

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
//fungsi total=harga x jumlah
float total(float a,float b)
{
return(a*b);
}
//fungsidiskon=0.1 x total
float diskon(float c)
{
return(0.1*c);
}
//fungsi pajak=0.1 x total
float pajak(float d)
{
return(0.1*d);
}
//fungsi jumlah bayar=total-disk+ppn
float jumbay(float e,float f,float g)
{
return(e-f+g);
}
//fungsi total bayar=total bayar+ jumlah bayar
float tobayar(float h,float i)
{
return(h+i);
}
//pembuatan class dengan nama pesawat
class
{
public:
   char kd[5],*nm_pes;
   float hrg,ttl,disk,ppn,ttlbyr,jumbel;

}pesawat[30];
main()
{
char np[20],lagi;
float tobay=0;
int jd,i;
awal:
clrscr();
cout<<endl;
cout<<"Program Penjualan Tiket Pesawat"<<endl;
cout<<"HAICHI AIRPORT"<<endl;
cout<<"JL.Kalibata Timur No.37 Telp (021) 7901074"<<endl;
cout<<"---------------------------------------------------"<<endl;
cout<<"Masukan Nama Penumpang     :";cin>>np;
cout<<endl;
cout<<"Masukan Jumlah Data      :";cin>>jd;
for(i=1;i<=jd;i++)
{
cout<<"Data ke-"<<i<<endl;
cout<<"Masukan kode Pesawat:";cin>>pesawat[i].kd;
if (strcmp(pesawat[i].kd,"GI")==0 || strcmp(pesawat[i].kd,"gi")==0)
          {pesawat[i].nm_pes="Garuda Indonesia";
          pesawat[i].hrg=250000;
          }
else if (strcmp(pesawat[i].kd,"MN")==0 || strcmp(pesawat[i].kd,"mn")==0)
          {pesawat[i].nm_pes="Mandala";
          pesawat[i].hrg=180000;
          }
else if (strcmp(pesawat[i].kd,"LA")==0 || strcmp(pesawat[i].kd,"la")==0)
          {pesawat[i].nm_pes="Lion Air";
          pesawat[i].hrg=275000;
          }
else if (strcmp(pesawat[i].kd,"BR")==0 || strcmp(pesawat[i].kd,"br")==0)
          {pesawat[i].nm_pes="Bouroq";
          pesawat[i].hrg=165000;
          }
else
{
cout<<"Anda Salah Memasukan Kode !!!!"<<endl;
cout<<"Mau Input Data Lagi {Y/T]:";cin>>lagi;
if (lagi=='Y'||lagi=='y')
goto awal;
else
goto akhir;
}
cout<<"nama pesawat :"<<pesawat[i].nm_pes<<endl;
cout<<"harga :"<<pesawat[i].hrg<<endl;
cout<<"Masukan Jumlah Beli :";cin>>pesawat[i].jumbel;
pesawat[i].ttl=total(pesawat[i].hrg,pesawat[i].jumbel);
if(pesawat[i].jumbel>10)
          pesawat[i].disk=diskon(pesawat[i].ttl);
 else
          pesawat[i].disk=0;
printf("Total Bayar         :%2.0f\n",pesawat[i].ttl);
printf("Diskon              :%2.0f\n",pesawat[i].disk);
 pesawat[i].ppn=pajak(pesawat[i].ttl);
printf("PPN                  :%2.0f\n",pesawat[i].ppn);
 pesawat[i].ttlbyr=jumbay(pesawat[i].ttl,pesawat[i].disk,pesawat[i].ppn);
printf("Jumlah bayar         :%2.0f\n",pesawat[i].ttlbyr);
tobay=tobayar(tobay,pesawat[i].ttlbyr);
}
clrscr();
cout<<endl<<endl;
cout<<"    Program Penjualan Tiket Pesawat"<<endl;
cout<<"        HAICHI AIR PORT "<<endl;
cout<<"JL.Kalibata Timur No.37 Telp (021) 7901074"<<endl;
cout<<"****************************************************************************"<<endl;
cout<<"No  Kode            Nama      Harga    Jumlah  Total   Diskon   PPN   Jumlah"<<endl;
cout<<"       Pesawat      Pesawat   Tiket     Beli                                       Bayar "<<endl;
cout<<"****************************************************************************"<<endl;
for(i=1;i<=jd;i++)
{
cout<<setiosflags(ios::left)<<setw(5)<<i;
cout<<setiosflags(ios::left)<<setw(8)<<pesawat[i].kd;
cout<<setiosflags(ios::left)<<setw(20)<<pesawat[i].nm_pes;
cout<<setiosflags(ios::left)<<setw(10),printf("%2.0f",pesawat[i].hrg),printf("   ");
cout<<setiosflags(ios::left)<<setw(12),printf("%2.0f",pesawat[i].jumbel),printf("  ");
cout<<setiosflags(ios::left)<<setw(6),printf("%2.0f",pesawat[i].ttl),printf("   ");
cout<<setiosflags(ios::left)<<setw(9),printf("%2.0f",pesawat[i].disk),printf("   ");
cout<<setiosflags(ios::left)<<setw(10),printf("%2.0f",pesawat[i].ppn),printf("    ");
cout<<setiosflags(ios::left)<<setw(12),printf("%2.0f\n",pesawat[i].ttlbyr);
}
cout<<"***************************************************************************"<<endl;
printf("Total Bayar                                             Rp.%2.0f",tobay);
cout<<endl<<endl;
cout<<"Mau Indput data lagi [Y/T]:";cin>>lagi;
if (lagi=='Y'||lagi=='y')
goto awal;
else
goto akhir;
getch();
akhir:
}