Implementasi Pemrograman Berorientasi Objek dalam Bahasa Pemrograman Java Patah Herwanto, S.T. Dosen Luar Biasa STMIK Sumedang
Abstrak Pemrograman berorientasi objek diperkenalkan sebagai suatu cara pandang (paradigma) baru dalam menyelesaikan suatu permasalahan dengan menggunakan bantuan komputer. Paradigmaparadigma lama dalam bahasa pemrograman seperti Pemrograman Terstruktur terbukti mempunyai kelemahan yang dirasa cukup menyulitkan pengembang perangkat lunak dalam mengembangkan perangkat lunak berskala besar, dengan ratusan ribu bahkan jutaan baris program. Dengan diperkenalkannya paradigma pemrograman berorientasi objek yang menekankan pada pemodelan aplikasi sebagai kumpulan dari objek-objek yang saling berhubungan serta penggunaan kembali objek-objek yang telah ada menjadikan paradigma ini diadopsi oleh sebagian besar bahasa pemrograman modern pada saat ini. Java merupakan salah satu bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystem. Struktur penulisan Java sebagian besar dikembangkan dari bahasa pemrograman berorientasi objek yang sudah lebih dahulu dikenal, yaitu C++. Java dirancang sebagai bahasa pemrograman yang lebih sederhana dari C++ dikarenakan Java menghilangkan beberapa “kelebihan fasilitas” yang tersedia pada C++ dan sekaligus menambahkan beberapa fasilitas khas Java sendiri. Lingkungan pemrograman Java mempunyai karakteristik yaitu bentuk penulisan yang tidak asing lagi karena merupakan turunan dari C++, sederhana, berorientasi objek, berarsitektur netral, portabel, unjuk kerja yang tinggi, mendukung thread, handal dan aman. Kata kunci : Java, bahasa pemrograman, berorientasi objek Pendahuluan Setiap programmer mempunyai kebebasannya sendiri dalam memilih suatu bahasa pemrograman yang digunakan untuk menulis suatu aplikasi komputer. Walaupun demikian, sebelum memulai menulis suatu aplikasi komputer, seorang programmer semestinya dapat dengan bijaksana menentukan bahasa pemrograman yang akan digunakannya. Untuk menghasilkan aplikasi yang handal dan cepat, baik dalam arti aplikasi yang dikembangkan mempunyai kecepatan yang memadai ataupun cepat dalam melaksanakan pengembangan aplikasinya maka harus dipilih bahasa pemrograman yang mendukung tercapainya tujuan tersebut. Pengembangan aplikasi yang dimulai sejak proses analisis hingga proses implementasinya. Java dikembangkan untuk menghasilkan program komputer yang bebas platform, artinya sekali program ditulis menggunakan bahasa Java maka aplikasi tersebut dapat dijalankan pada sistem operasi Windows dan pada sistem operasi Linux dan sistem operasi lainnya tanpa atau dengan sedikit penyesuaian pada program yang dibuat. Java juga mempunyai fasilitas JIT (Just In Time) compiler yang berguna untuk meningkatkan kecepatan program. Pemograman Berorientasi Objek Pemrograman Berorientasi Objek merupakan suatu paradigma yang relatif baru pada dunia pemrograman komputer bila dibandingkan dengan paradigma seperti pemrograman terstruktur. Paradigma ini kemudian berkembang menjadi konsep yang diikuti oleh hampir semua bahasa pemrograman modern yang ada sekarang ini, misalnya C++, Ada, Delphi, VB.Net, C#, Java dan masih banyak lagi. Pemrograman Berorientasi Objek pada dasarnya mencoba memodelkan aplikasi yang kita tulis sehingga mempunyai karakteristik, sifat dan tingkah laku sebagaimana objek di dunia nyata. Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
1
Suatu bahasa pemrograman berorientasi objek setidaknya harus mendukung tiga konsep dasar berikut (Antony Pranata, 2000 : 92), yaitu : Pengkapsulan (encapsulation) pengkapsulan merupakan penggabungan data dan metode ke dalam suatu kelas. Karakteristik yang paling utama dari pengkapsulan ini adalah penyembunyian informasi (information hiding). Penyembunyian informasi sebenarnya merupakan cara agar data yang dianggap sebagai sumber daya yang paling berharga harus dilindungi dari pengaksesan yang tidak perlu. Dalam metode ini, untuk mengambil (get) atau merubah (set) nilai suatu data harus melalui fungsi-fungsi pembungkus data tersebut. Sebagai contoh di dalam dunia nyata, sebagai pengguna komputer, sewaktu menekan tombol Power CPU untuk mulai menjalankan komputer, kita tidak perlu mengetahui bagaimana metode dan cara kerja detail komponen serta komponen elektronik apa saja yang bekerja dalam CPU sejak penekanan tombol Power sampai dengan komputer siap untuk digunakan. Semuanya disembunyikan dari pengguna komputer, sehingga yang kita perlu tahu hanyalah bahwa dengan menekan tombol Power maka komputer akan segera dapat digunakan bila segala sesuatunya berjalan dengan baik.
Mengisi Data
Mengambil Data Data
Metode Set
Metode Get
Gambar 1. Ilustrasi metode akses data dalam Pemrograman Berorientasi Objek/Pengkapsulan data.
Dalam gambar di atas diperlihatkan bahwa untuk dapat mengisi dan mengambil nilai suatu data harus melalui fungsi atau dalam paradigma berorientasi objek disebut metode (method) get atau set. Data dalam paradigma ini merupakan sesuatu yang harus dilindungi dari akses yang cara kerjanya tidak diketahui kecuali dari metode-metode yang telah dideklarasikan sebelumnya.
Pewarisan (inheritance) Dengan konsep pewarisan ini, kita diperbolehkan untuk membuat objek yang baru yang diturunkan dari objek yang lain. Objek yang diturunkan akan mempunyai data dan metode dari objek induknya. Contohnya adalah objek induk kendaraan yang dapat diturunkan menjadi objek kendaraan tidak bermotor dan objek kendaraan bermotor. Kemudian objek kendaraan bermotor dapat diturunkan lagi menjadi objek kendaraan bermotor bermesin bensin dan kendaraan bermotor bermesin diesel dan seterusnya. Data dan metode (state dan behaviour) dalam konsep pewarisan ini akan dibagi menjadi tiga kategori, yaitu: - Private, data dan metode yang dideklarasikan dengan kata kunci private hanya akan data diakses dari objek/kelas yang mendeklarasikannya saja. kelas-kelas turunan dan kelas luar tidak dapat mengakses data dan metode private. - Protected, data dan metode yang dideklarasikan dengan kata kunci protected hanya akan dapat diakses dari objek yang mendeklarasikannya serta dari objek-objek turunannya. objek luar tidak dapat mengakses data dan metode protected.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
2
-
Public, data dan metode yang dideklarasikan dengan kata kunci public akan dapat diakses oleh semua kelas, baik kelas yang mendeklarasikannya, kelas-kelas turunan, maupun kelas luar. Yang harus diingat adalah bahwa Java tidak mendukung Multiple Inheritance seperti halnya C++ atau Delphi. Kendaraan
Tidak Bermotor
Sepeda
Bermotor
Mobil
Motor
Gambar 2. Contoh Pewarisan (Inheritance).
Polimorfisme (polymorphism) polimorfisme arti harfiahnya adalah “mempunyai banyak bentuk”. Dalam paradigma OOP, polimorfisme merupakan suatu konsep dimana suatu metode dalam suatu objek dapat mempunyai nama metode yang sama tetapi mempunyai fungsi yang berbeda-beda. Contoh polimorfisme dalam misalnya adalah cara suatu mahluk hidup berlari. Pada dunia nyata, cara berlarinya gajah dengan empat kaki adalah berbeda dengan cara berlarinya manusia yang menggunakan dua kaki. Tentunya proses yang terjadi di dalam metode berlari antara manusia dan gajah tadi juga mempunyai perbedaan yang mendasar pula. Tetapi kedua cara yang berbeda tadi memiliki kata kerja atau metode yang sama yaitu berlari. Dalam pemrograman berorientasi objek, konsep polimorfisme ini akan sangat berguna untuk mendefinisikan metode-metode yang mempunyai nuansa yang sama tetapi dengan input, proses dan output yang berbeda. Dengan polimorfisme juga program yang ditulis akan menjadi lebih mudah dibaca dan dikembangkan.
Java Java merupakan bahasa pemrograman berorientasi objek dengan karakteristik sebagai berikut : Struktur penulisan program yang tidak asing, Java tidak membuat sintaks bahasa yang benar-benar baru melainkan melakukan modifikasi dan penyederhanaan serta penambahan fungsi-fungsi baru dari bahasa pemrograman pendahulunya yang telah mapan dan digunakan oleh sebagian besar programmer professional yaitu bahasa C/C++. Dengan demikian, para programmer tidak perlu lagi berlama-lama mempelajari sintaks dasar pemrograman Java, melainkan dapat segera memfokuskan diri dalam menulis aplikasi Java. Sangat menghemat waktu. Sederhana, struktur bahasa Java sederhana bila dibandingkan dengan bahasa C/C++ terutama karena penghilangan pointer, kata kunci goto dan penambahan fasilitas Garbage Collection. Berorientasi Objek, dalam bahasa Java dikatakan bahwa “everything is an object”. Dikatakan pula bahwa bahasa Java merupakan bahasa pemrograman yang berorientasi objek murni, artinya tidak seperti C/C++ dan bahasa pemrograman lain yang masih mendukung
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
3
pemrograman terstruktur dengan alasan kompatibilitas ke belakang (backward compatibilities). Berarsitektur Netral dan Portabel, program yang ditulis dalam Java akan bersifat multiflatform dan tidak terikat pada suatu sistem operasi tertentu. Hal ini dapat berjalan dikarenakan Sun Microsystem yang merupakan pengembang Java juga mengembangkan JVM (Java Virtual Machine) yang akan menerjemahkan byte code Java ke dalam sistem operasi dan mesin yang berbeda-beda. Kinerja yang tinggi, file eksekusi Java bertipe byte code setelah di kompilasi menjadi kode yang teroptimasi dan mempunyai kecepatan eksekusi yang memadai. Mendukung thread, dengan dukungan terhadap thread membuat program Java akan mampu menjalankan beberapa task (pekerjaan) secara bersamaan. Hal ini sangat berguna, terutama bila kita menulis program yang menggunakan perhitungan matematika secara intensif atau penulisan simulasi komputer, juga bila kita akan menulis game komputer serta jenis program lain yang memerlukan kecepatan pemrosesan secara paralel. Handal dan aman, hal ini terutam juga karena penghilangan pointer, kata kunci goto dan penambahan fasilitas Garbage Collection, sehingga program yang ditulis menggunakan Java akan terhindar dari masalah-masalah klasik seperti program yang tidak terbaca karena menggunakan goto, atau kesalahan pengalokasian memori pada penggunaan pointer yang dapat menyebabkan program menjadi tidak stabil dan mudah crash. Juga fasilitas Garbage Collection yang membiarkan Java menghapus sendiri objek-objek yang sudah tidak dipakai lagi tanpa memerlukan campur tangan programmer.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
4
Jenis Aplikasi Java Berbasis Konsol Teks Pada aplikasi Java jenis ini, output program berada dalam modus teks. Modus ini cocok digunakan dalam mempelajari perintah-perintah dasar bahasa Java. Contoh program Java dalam modus teks: class HelloWorld{ public static void main(String args[]){ System.out.println(“Hello World form Java.”); } }
Program 1. class HelloWorld.java. Berbasis GUI (Graphical User Interface) Untuk menulis aplikasi berbasis Windows atau X pada sistem operasi Unix dan Variantnya. Terdapat dua Package utama dalam membuat aplikasi berbasis GUI ini, yaitu: o AWT (Abstract Windows Toolkit), package ini merupakan package pertama kali diperkenalkan oleh Sun Microsystem untuk membuat aplikasi berbasis GUI. Tetapi karena terdapat beberapa kekurangan maka tidak diteruskan lagi pengembangannya dan sebagai gantinya diperkenalkan package UI baru yaitu Swing. o Swing, merupakan package untuk UI yang merupakan standar baru dalam pemrograman berbasis GUI Java. Walaupun demikian Package AWT tetap diperlukan dalam pengembangan aplikasi berbasis GUI karena beberapa method package Swing ternyata masih berhubungan dengan AWT. Berikut contoh pemrograman GUI dengan Swing: import javax.swing.*; import java.awt.*; import java.awt.event.*; class GUIswing extends JFrame implements ActionListener{ JLabel lblnama; JTextField txtnama; JButton btnok; GUIswing(){ super(“GUI dengan Swing”); setSize(400,100); setLocation(300,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); lblnama = new JLabel(“Nama : “); txtnama = new JTextField(); btnok = new JButton(“OK”); btnok.setMnemonic(‘O’); btnok.addActionListener(this); getContentPane().setLayout(null); lblnama.setBounds(10,10,100,25); txtnama.setBounds(110,10,200,25); btnok.setBounds(150,40,100,25);
}
getContentPane().add(lblnama); getContentPane().add(txtnama); getContentPane().add(btnok); show();
public void actionPerformed(ActionEvent e){ if (e.getSource()==btnok) { JOptionPane.showMessageDialog(null,“Hallo “ + txtnama.getText()); } }
}
public static void main(String args[]){ GUIswing gs=new GUIswing(); }
Program 2. Aplikasi GUI Java. Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
5
Gambar 3. Output program di atas. Applet Applet adalah aplikasi Java yang dapat dijalankan pada sebuah Web Browser seperti Microsoft Internet Explorer atau Mozilla FireFox dan lain-lain. Applet java biasanya terdiri dari dua buah file, yaitu file class applet dan file html. Berikut ini contoh dari sebuah Applet Java: import import import import import
java.awt.*; java.awt.event.*; java.net.*; java.applet.*; javax.swing.*;
public class SelamatBerjumpa extends JApplet implements ActionListener{ JButton button; public void init() { getContentPane().setLayout(new FlowLayout()); button = new JButton("Selamat Berjumpa"); button.addActionListener(this); getContentPane().add(button); } public void actionPerformed(ActionEvent e){ if (e.getSource()==button) JOptionPane.showMessageDialog(null,"Selamat Berjumpa"); }
}
public void stop() { if (button != null) { getContentPane().remove(button); button = null; } }
Program 3. SelamatBerjumpa.java.
Applet Selamat Berjumpa
Program 4. SelamatBerjumpa.html.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
6
Gambar 4. Tampilan Applet SelamatBerjumpa. Pemrograman Berorientasi Objek dengan Java Berikut ini implementasi beberapa unsur pemrograman berorientasi objek dalam bahasa Java. Unsur-unsur pemrograman berorientasi objek yang diberikan adalah Pengkapsulan (Enkapsulation), Pewarisan (Inheritance) dan Polymorphism. Class Class merupakan bentuk dasar dari objek pada java. Class merupakan cetakan/roh dari objek yang akan dibuat. Class akan terdiri dari data (state) dan metode (behavior). Data indentik dengan variable pada pemrograman terstruktur, sedangkan metode indentik dengan fungsi dan prosedur. class titik{ private int x; private int y; titik(){ setTitik(0,0); } titik(int x, int y){ setTitik(x,y); } void setTitik(int xbaru, int ybaru){ x=xbaru; y=ybaru; }
}
int getX(){ return x;} int getY(){ return y;}
class titik3D extends titik{ private int z; titik3D(){ setTitik3D(0,0,0); } titik3D(int x, int y, int z){ setTitik3D(x,y,z); } void setTitik3D(int xbaru, int ybaru, int zbaru){ setTitik(xbaru,ybaru); z=zbaru; }
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
7
}
int getZ(){ return z;}
class demo_titik{ public static void main(String args[]){ titik t1=new titik(); int x1=t1.getX(); int y1=t1.getY(); System.out.println("Koordinat t1(" + x1 + "," + y1 + ")"); titik t2=new titik(50,50); int x2=t2.getX(); int y2=t2.getY(); System.out.println("Koordinat t2(" + x2 + "," + y2 + ")"); titik3D t3=new titik3D(); int x3=t3.getX(); int y3=t3.getY(); int z3=t3.getZ(); System.out.println("Koordinat t3(" + x3 + "," + y3 + "," + z3 + ")");
}
}
titik3D t4=new titik3D(50,50,50); int x4=t4.getX(); int y4=t4.getY(); int z4=t4.getZ(); System.out.println("Koordinat t4(" + x4 + "," + y4 + "," + z4 + ")");
Program 5. Class titik. Class titik merupakan contoh class Java yang mendeklarasikan kelas untuk menyimpan data koordinat titik dua dimensi yang terdiri dari posisi X dan posisi Y. Pewarisan Class titik3D merupakan contoh pewarisan (inheritance) pada Java. Class titik3D merupakan class yang mendeklarasikan kelas untuk menyimpan data koordinat titik tiga dimensi yang terdiri dari posisi X dan posisi Y yang diturunkan dari kelas induk (superclass) dan posisi Z yang digunakan untuk menyimpan data kedalaman titik tiga dimensi yang dideklarasikan di kelas titik3D secara lokal. Pengkapsulan class A{ int x; protected int y; private int z; }
Program 6. Contoh deklarasi variabel private, protected dan public. Pada Class A di atas variabel x merupakan variable yang bersifat public sehingga dapat diakses oleh kelas itu sendiri, kelas turunannya dan kelas-kelas lainnya. Variabel y merupakan variabel yang bersifat protected, yang berarti bahwa variabel y hanya dapat diakses oleh kelas itu sendiri dan kelas turunannya saja. variabel y ini tidak akan dapat diakses oleh kelas-kelas lain. Variabel z yang dideklarasikan sebagai variabel private hanya akan dapat diakses oleh kelas itu sendiri (kelas A) saja. Kelas turunan dari kelas A atau kelas-kelas lainnya tidak akan dapat mengakses variabel z yang bersifat private ini.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
8
Polymorphism class mamalia{ void bersuara(){ System.out.println("mamalia bersuara"); }
}
void lapar(){ System.out.println("mamalia lapar"); }
class anjing extends mamalia{ void bersuara(){ System.out.println("anjing bersuara"); } } class singa extends mamalia{ void lapar(){ System.out.println("singa lapar"); } } class demo_polymorphism{ public static void main(String args[]){ mamalia mamalia1=new mamalia(); mamalia1.bersuara(); mamalia1.lapar(); anjing anjing1=new anjing(); anjing1.bersuara(); anjing1.lapar();
}
}
singa singa1=new singa(); singa1.bersuara(); singa1.lapar();
Program 7. Contoh Polymorphism. Pada contoh di atas kelas induk (superclass) adalah kelas mamalia yang sifat-sifatnya diturunkan kepada dua kelas anak (subclass) yaitu kelas anjing dan kelas singa. Kelas mamalia mempunyai dua sifat (metode) yaitu bersuara dan lapar yang juga secara otomatis akan diturunkan kepada kelas anjing dan kelas singa sebagai kelas turunannya (subclass). Metode bersuara pada kelas anjing dan metode lapar pada kelas singa merupakan dua contoh implementasi polymorphism dalam Java. Dengan dukungan terhadap polymorphism, maka kita dapat membuat dua metode dengan deklarasi nama metode yang sama dengan kelas induk atau dengan kelas-kelas turunan dari kelas induk yang sama tetapi mempunyai cara kerja yang berbeda tergantung dari kelas yang kita tulis. Penutup Pada akhirnya para programmer dan developer perangkat lunak khususnya di Indonesia mendapatkan pencerahan dalam mengembangkan produk-produknya dengan menggunakan bahasa pemrograman Java. Keuntungan yang paling utama dalam penggunaan bahasa pemrograman Java ini adalah distribusinya yang gratis serta sifatnya yang full objek oriented. Untuk pengembang perangkat lunak database juga banyak tersedia jenis-jenis database yang dapat dipasangkan dengan Java contohnya yang paling terkenal adalah MySQL yang juga didistribusikan secara gratis.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
9
Daftar Pustaka C. Daconta, Michael. Java for C/C++ Programmers, John Wiley & Sons, Inc., New York. Pranata, Antony, 2000. Pemrograman Borland Delphi, Andi, Yogyakarta. Indrajani & Martin,2003. Pemrograman Berorientasi Objek dengan Java, Elex Media Komputindo, Jakarta. Riwayat Penulis Patah Herwanto, S.T., lahir di Rancaekek, 27 Oktober 1975. Lulus S1 tahun 2002. Dosen PNS dpk Kopertis Wilayah IV Jawa Barat dan Banten pada Program Studi Teknik Informatika, STMIK IM dan Dosen Luar Biasa STMIK Sumedang.
Jurnal Infoman’s > Jurnal Ilmu-ilmu Manajemen dan Informatika STMIK Sumedang
10