Teks tersebut merupakan pengenalan tentang pemrograman berorientasi objek Java yang mencakup konsep-konsep penting seperti kelas, objek, konstruktor, metode, atribut, pewarisan, polimorfisme, dan pengkapsulan. Teks tersebut juga menjelaskan perbedaan antara pemrograman berorientasi objek dengan pemrograman berorientasi prosedural serta memberikan contoh kode untuk mengilustrasikan konsep-konsep tersebut.
[/ringkasan]
2. LAILI AIDI
Asisten Praktikum Java, Common Laboratory Teknik Informatika STTTELKOM, 2005-2006
1. Pemrograman Berorientasi Objek [MDLJV]
1.1 Object Oriented Vs Procedural
Beberapa pendekatan dalam pemrograman berorientasi procedural:
·Teknik Top-Down, tugas-tugas yang kompleks dipecah menjadi bagian yang lebih kecil,
sampai sub tugas tersebut mudah diimplementasikan.
·Teknik Buttom-Up, membuat procedure-procedure untuk menyelesaikan tugas yang
sederhana, kemudian menggabungkannya dalam procedure yang lebih kompleks,
sampai fungsionalitas yang diinginkan tercapai.
Untuk menentukan procedure di dalam procedural programming sama dengan menentukan
sebuah method yang ada dalam OOP. Perbedaan OOP adalah memisahkan class-class,
menentukan methode-methode dalam class yang dihubungkan dengan class yang
bertanggung jawab untuk menjalankan suatu fungsi.
Dengan menggunakan class, fungsionalitas dari suatu class sudah di encapsulate di
dalamnya sehingga sangat membantu dalam membangun project. Seorang programmer
dapat menggunakan class yang sudah dibuat programmer lain, tanpa ia perlu tahu
bagaiman detailnya suatu class mengerjakan suatu operasi
Beberapa konsep penting OOP :
· Pengkapsulan(Encapsulation)
Pengkapsulan adalah proses pemaketan data object bersama method-methodnya. Manfaat
utama pengkapsulan bagi pemrogram, yaitu :
1. Penyembunyian informasi (information hiding)
Penyembunyian implementasi mengacu perlindungan implementasi internal objek. Objek
disusun dari antarmuka public dan bagian private yang merupakan kombinasi data dan
method internal. Manfaat utama adalah bagian internal dapat berubah tanpa mempengaruhi
bagian-bagian program yang lain.
2. Modularitas (Modularity)
Membuat objek dapat dikelola secara independent sehingga bebas melakukan modifikasi
tanpa menyebabkan masalah pada bagian lain. Manfaat ini mempermudah mendistribusikan
objek-objek di system.
2 PENGENALAN JAVA | LAILI AIDI
3.
· Pewarisan (Inheritance)
Pewarisan adalah proses penciptaan class baru dengan mewarisi karakteristik class yang
telah ada, ditambah karakteristik unik class baru itu.. Pewarisan memungkinkan class
mewarisi fungsionalitas class yang telah ada dan mengorganisasi class.
Subclass mewarisi semua method dan variabel dari superclassnya. Secara praktis berarti
bahwa jika superclass telah mendefinisikan perilaku yang kita perlukan, maka kita tidak
perlu mendefinisi ulang perilaku itu, kita cukup membuat class yang merupakan subclass
dari superclass yang dimaksud
Contoh:
class SuperContohInheritance {
int iVar1,iVar2;
/** Creates a new instance of SuperContohInheritance*/
public SuperContohInheritance() {
}
int mSuperClass(){
iVar1 = iVar1 + iVar2;
System.out.println("nilai var1 + var2 = "+iVar1+" + "+iVar2+"= " +iVar1);
return iVar1;
}
}
public class SubContohInheritance extends SuperContohInheritance{
private int iVar3;
/** Creates a new instance of SubContohInheritance*/
public SubContohInheritance(int iVar1,int iVar2,int iVar3){
this.iVar1 = iVar1;
this.iVar2 = iVar2;
this.iVar3 = iVar3;
}
void mSubClass(){
System.out.println("nilai iVar3 di variabel instan adalah "+this.iVar3);
}
public static void main(String args[]){
SubContohInheritance objek1 = new SubContohInheritance(100,200,300);
objek1.mSuperClass();
objek1.mSubClass();
}
}
3 PENGENALAN JAVA | LAILI AIDI
4.
Output :
D:>java SubContohInheritance
nilai var1 + var2 = 300 + 200= 300
nilai iVar3 di variabel instan adalah
·Polimorfisme (Polymorphism)
Polimorfisme berarti mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai
polymorphic bila objek-objek itu mempunyai antarmuka-antarmuka identik namun
mempunya perilaku-perilaku yang berbeda. Pada bahasa pemrograman fungsional yang
lain, untuk melengkapi dua pekerjaan yang berbeda diperlukan dua fungsi terpisah dengan
nama yang berbeda. Pada Polimorfisme memperbolehkan method memiliki beberapa
implementasi yang dipilih berdasarkan tipe objek yang dilewatkan pada pengerjaan method,
ini dikenal dengan overloading method.
· Pesan (Message)
Objek-objek memerlukan suatu tipe mekanisme komunikasi untuk saling berinteraksi.
Objek-objek saling berkomunikasi dan berinteraksi lewat message. Ketika berkomunikasi
objek mengirim pesan (memanggil method) untuk memberitahu agar objek lain melakukan
sesuatu yang diharapkan.. Seringkali pengiriman message juga disertai informasi untuk
memperjelas apa yang dikehendaki. Informasi yang dilewatkan beserta message adalah
parameter message.
1.2 Kelas (Class) dan Objek (Object)
Kelas merupakan bentuk logik dimana seluruh bahasa berorientasi objek dibangun. Kelas
mendefinisikan bentuk dan sifat/kelakuan/perilaku objek.Semua konsep/abstraksi yang kita
implementasikan di Java harus dikapsulkan/dikemas dalam class. Kelas adalah template
atau prototype yang mendefinisikan type objek, sarana pengkapsulan kumpulan data-data
dan method-method yang mengolah data-data tersebut, adalah cetakan objek, jadi objek
harus merupakan instant suatu kelas. Data dan method berguna untuk mendefinisikan isi
dan kemampuan objek.
4 PENGENALAN JAVA | LAILI AIDI
5. Deklarasi Kelas
Classmodifier class namaclass [extends namasuperclass] [implements namainterface]
/* Mendefinisikan atribut */
Type instance-variabel1;
Type instance-variabel2;
Type instance-variabelN;
/* Mendefinisikan atribut */
Type instance-variabel1;
Type instance-variabel2;
Type instance-variabelN;
/* Mendefinisikan constructor */
[modifier] namaclass(parameterlist){
constructor body;
}
/*Mendefinisikan method*/
Type methodname1(parameterlist){
Methodbody;
}
Type methodname2(parameterlist){
Methodbody;
}
}
namaclass dan namasuperclass dapat berupa identifier apa saja yang berlaku. Kata kunci
extends digunakan untuk menunjukkan bahwa namaclass adalah subclass namasuperclass.
Di Java terdapat sebuah class object yang merupakan induk hirarki class Java. Jika kita
ingin langsung menurunkan class namaclass dari class object maka dapat menghilangkan
pertanyaan extends karena compiler secara otomatis akan memasukkanya.
Contoh :
class Switch {
private boolean isOn = false;
/** Creates new Switch */
public Switch() {
}
public void turnOn(){
isOn = true;
}
public void turnOff() {
5 PENGENALAN JAVA | LAILI AIDI
6.
isOn = false;
}
public boolean isItOn() {
return isOn;
}
}
public class HomeSweetHome {
private Switch bedroomSwitch = new Switch();
private Switch hallWaySwitch = new Switch();
/** Creates a new instance of HomeSweetHome */
public HomeSweetHome() {
}
public void turnOnBedroomSw() {
bedroomSwitch.turnOn();
System.out.println("bedroom switch is now on");
}
public static void main(String[] arg){
HomeSweetHome obHouse = new HomeSweetHome();
System.out.println("now, I turn on the bedroom switch");
obHouse.turnOnBedroomSw();
}
}
Output :
D:>java HomeSweetHome
now, I turn on the bedroom switch
bedroom switch is now on
Apakah hubungan class dengan objek? Class adalah blue print dari objek, ini berarti bahwa
kita dapat membuat banyak objek dari satu macam class. Kita tidak dapat melakukan
sesuatu dengan/terhadap class (kecuali untuk data dan method static), kita hanya dapat
melakukan sesuatu terhadap objek yang diinstan dari sebuah class. Instants atau objek
adalah suatu salinan pola class, dengan kumpulan datanya sendiri yang disebut variable
instans. Setiap instantsnull yang merupakan referensi untuk tipe object, sehingga tipenya
cocok dengan semua class lain. dapat juga dirujuk sebagai objek. Jika kita mendeklarasikan
tipe suatu variabel sebagai suatu class, maka dia memiliki nilai awal
Objek null tidak memiliki nilai, seperti contoh di bawah ini :
Classname p;
6 PENGENALAN JAVA | LAILI AIDI
7.
Disini variabel p memiliki nilai null, kita hanya melakukan reference variabel p dengan tipe
objek Classname. untuk membuat objek sebenarnya atau mengalokasikan objek Classname
terhadap variabel p maka kita akan gunakan operator new.
Operator new menghasilkan instans tunggal dari suatu class dan menghasilkan referensi ke
objek tersebut, seperti contoh dibawah ini :
p = new Classname();
Di sini kita telah menciptakan instant/objek dengan tipe/class Classname dan diberikan ke
variabel p. Variabel p mengacu atau bertindak sebagai reference ke objek tersebut.
Penggunaan objek dilakukan dnegna mengirimkan pesan ke objek atau dnegna kata lain,
mamanggil method yang terdapat dalam objek tersebut.
Penghancuran objek dalam Java tidak perlu dilakukan karena Java menyediakan Garbage
Collecotor yang mendeteksi dan memusnahkan objek yang saling tidak di acu oleh objek
lain yang masih digunakan oleh program
1.3 Konstruktor (Constructor)
Konstruktor digunakan untuk melakukan inisialisasi variable-variabel instan class serta
melakukan persiapan-persiapan yang diperlukan oleh suatu objek untuk dapat beroperasi
dengan baik.
Format umum pendeklarasian dan pendefinisian constructor adalah :
· Nama constructor sama dengan nama class.
· Sebelum itu dapat diberi access modifier untuk mengatur visibility constructor.
Dalam suatu Class dapat lebih dari satu constructor, masing-masing harus mempunyai
parameter yang berbeda sebagai penandanya. Hal seperti ini disebut Overloading
terhadap constructor.
Deklarasi Konstruktor :
[modifier] namaclass(parameter1){
Body constructor;
}
[modifier] namaclass(parameter1,parameter2){
Body constructor;
}
[modifier] namaclass(parameter1,parameter2,…,parameterN){
Body constructor;
7 PENGENALAN JAVA | LAILI AIDI
8.
}
Contoh:
public class ContohConstructor {
int iVar;
/** Creates a new instance of ContohConstructor */
public ContohConstructor(int iVar){
System.out.println("Ditampilkan ketika objek diciptakan");
this.iVar = iVar;
}
public ContohConstructor(int iParam,String sParam){
System.out.println(sParam);
iVar = iParam;
}
int mTambah(){
iVar = iVar + 10;
return iVar;
}
public static void main(String args[]){
ContohConstructor obConst1 = new ContohConstructor(100);
ContohConstructor obConst2 = new ContohConstructor(200,"ditampilkan lagi
ketika objek2 diciptakan");
System.out.println("nilai dari parameter inputan untuk constructor objek1
"+obConst1.mTambah());
System.out.println("nilai dari parameter inputan untuk constructor objek2
"+obConst2.mTambah());
}
}
Output :
D:>java ContohConstructor
Ditampilkan ketika objek diciptakan
ditampilkan lagi ketika objek2 diciptakan
nilai dari parameter inputan untuk constructor objek1 110
nilai dari parameter inputan untuk constructor objek2 210
8 PENGENALAN JAVA | LAILI AIDI
9.
1.4 Metod (Methode) dan Atribut (atribut)
Method dikenal dengan fungsi dan procedure. Dalam OOP, Method digunakan untuk
memodularisasi program melalui pemisahan tugas dalam suatu kelas. Pemanggilan method
menspesifikasikan nama method dan menyediakan informasi (parameter) yang diperlukan
untuk melaksanakan tugasnya. 2 Teknik pelewatan parameter (parameter passing) :
· Pelewatan dengan nilai (Pass By Value) dimana parameter dilewatkan melalui pengkopian
nilai argumen, sehingga perubahan terhadap parameter tidak berpengaruh terhadap
argument
· Pelewatan dengan Acuan (Pass By Reference) dimana yang dilewatkan adalah objek,
sehingga perubahan terhadap parameter akan berlaku untuk variabel yang dilewatkan ke
metode
Deklarasi method untuk yang mengembalikan nilai (fungsi) :
[modifier]Type-nilai_kiriman namamethod (parameter1, parameter2,..., parameterN){
Deklaras-deklarasi dan proses;
return nilai_kembalian;
}
Deklarasi method untuk yang tidak mengembalikan nilai (procedure) :
[modifier] void namamethod(parameter1,parameter2,…,parameterN){
Deklaras-deklarasi dan proses;
}
Contoh :
class Test {
int iVar1, iVar2, iVar3;
Test(int iVar1, int iVar2, int iVar3) {
this.iVar1 = iVar1;
this.iVar2 = iVar2;
this.iVar3 = iVar3;
}
/*Overidding method dengan pass by value */
void Calculate(int iCal1, int iCal2) {
iCal1 = iCal1 * 10;
iCal2 = iCal2 / 2;
}
/* Overidding method dengan pass by reference */
void Calculate(Test obTest) {
obTest.iVar1 = obTest.iVar1 * 10;
9 PENGENALAN JAVA | LAILI AIDI
10.
obTest.iVar2 = obTest.iVar2 / 2;
}
/*Overidding method yang mengembalikan nilai*/
int OverMethod(int iAngka){
iVar3 = iVar3 + iAngka;
System.out.println("Tulisan ini bukan dari parameter inputan");
System.out.print("iVar3 + iAngka = "+iVar3+" + "+iAngka+" = ");
return (iVar3+iAngka);
}
/*Overidding method yang tidak mengembalikan nilai*/
void OverMethod(int iAngka, String sComment){
System.out.println(sComment);
System.out.println("iVar3 + iAngka = "+iVar3+" + "+iAngka+" = "+(iVar3 +
iAngka));
}
}
public class ContohMethod{
/** Creates a new instance of ContohMethod*/
public ContohMethod() {
}
public static void main(String[] argv) {
int iParam1, iParam2;
String sKalimat ="Tulisan ini dikirim dari parameter inputan ";
Test obTestParam = new Test(50,100,500);
iParam1 = 10;
iParam2 = 20;
System.out.println("Nilai sebelum pass by value");
System.out.println("iParam1 = "+iParam1);
System.out.println("iParam2 = "+iParam2);
/* pemanggilan method dengan pass by value*/
obTestParam.Calculate(iParam1,iParam2);
System.out.println("Nilai setelah pass by value");
System.out.println("iParam1 = "+iParam1);
System.out.println("iParam2 = "+iParam2);
/*-------------------------------------------------*/
System.out.println("Nilai sebelum pass by reference");
System.out.println("obTestParam.iVar1 = "+obTestParam.iVar1);
System.out.println("obTestParam.iVar2 = "+obTestParam.iVar2);
10 PENGENALAN JAVA | LAILI AIDI
11.
/* pemanggilan method dengan pass by reference*/
obTestParam.Calculate(obTestParam);
System.out.println("Nilai setelah pass by reference");
System.out.println("obTestParam.iVar1 = "+obTestParam.iVar1);
System.out.println("obTestParam.iVar2 = "+obTestParam.iVar2);
/* pemanggilan method yang mengembalikan nilai */
System.out.println(obTestParam.OverMethod(500));
/* pemanggilan method yang tidak mengembalikan nilai */
obTestParam.OverMethod(500,sKalimat);
}
}
Output:
D:>java ContohMethod
Nilai sebelum pass by value
iParam1 = 10
iParam2 = 20
Nilai setelah pass by value
iParam1 = 10
iParam2 = 20
Nilai sebelum pass by reference
obTestParam.iVar1 = 50
obTestParam.iVar2 = 100
Nilai setelah pass by reference
obTestParam.iVar1 = 500
obTestParam.iVar2 = 50
1.5 Modifier 1.5 Modifier
Modifier memberi dampak tertentu pada class, interface, method dan variabel. Java
modifier terbagi menjadi kelompok berikut:
1. Access modifier / Visibility Modifier berlaku untuk class, method, variable dan interface,
meliputi modifier Public, Protected, Private, dan Default (tak ada modifier). Modifier ini
berguna untuk menentukan kontrol terhadap member class tersebut.
Modifier Class dan Interface Method dan Variabel
Default (tak Tampak di Paketnya Diwarisi oleh subclassnya di paket yang
ada sama dengan classnya. Dapat diakses oleh
modifier) method-method di class-class yang
sepaket.
11 PENGENALAN JAVA | LAILI AIDI
12. Public Tampak di manapun Diwarisi oleh semua subclassnya.
Dapat diakses dimanapun.
Protected Tidak dapat diterapkan Diwarisi oleh semua subclassnya.
Dapat diakses oleh method-method di
class-class yang sepaket.
Private Tidak dapat diterapkan Tidak diwarisi oleh subclassnya
Tidak dapat diakses oleh class lain.
2. Final modifier berlaku untuk class,variabel dan method, meliputi modifier final.
3. Static modifier berlaku untuk variabel dan method, meliputi modifier static.
4. Abstrac modifier berlaku untuk class dan method, meliputi modifier abstract.
5. Syncronized modifier berlaku untuk method, meliputi modifier syncronized .
6. Native modifier berlaku untuk method, meliputi modifier native.
7. Storage modifier berlaku untuk variabel, meliputi transient dan volatile.
Modifier Class Interface Method Variabel
Abstract Class dapat Optional Tidak ada badan Tidak dapat
berisi method untuk method yang diterapkan.
abstract. diberikan di didefinisikan. Method
Class tidak interface memerlukan class
dapat karena kongkret yang
diinstantiasi interface merupakan subclass
Tidak secara yang akan
mempunyai inheren mengimplementasikan
constructor adalah method abstract
abstract.
Final Class Tidak dapat Method tidak dapat Berperilaku
menjadi tidak diterapkan. ditimpa oleh method sebagai
dapat di subclass- konstanta
digunakan subclassnya
untuk
menurunkan
class yang
baru.
Static Tidak dapat Tidak dapat Mendefinisikan Mendefinisikan
diterapkan. diterapkan. method (milik) class. variable milik
Dengan demikian class. Dengan
12 PENGENALAN JAVA | LAILI AIDI
13. tidak memerlukan demikian,
instant object untuk tidak
menjalankanya. memerlukan
Method ini tidak dapat instant object
menjalankan method untuk
yang bukan static mengacunya.
serta tidak dapat Variabel ini
mengacu variable dapat
yang bukan static. digunakan
bersama oleh
semua instant
objek.
synchronized Tidak dapat Tidak dapat Eksekusi dari method Tidak dapat
diterapkan. diterapkan. adalah secara mutual diterapkan
exclusive diantara pada
semua thread. Hanya deklarasi.
satu thread pada satu Diterapkan
saat yang dapat pada instruksi
menjalankan method untuk
menjaga haya
satu thread
yang mengacu
variable pada
satu saat.
Native Tidak dapat Tidak dapat Tidak ada badan Tidak dapat
diterapkan. diterapkan. method yang diterapkan.
diperlukan karena
implementasi
dilakukan dengan
bahas lain.
transient Tidak dapat Tidak dapat Tidak dapat Variable tidak
diterapkan. diterapkan. diterapkan. aka
diserialisasi
Volatile Tidak dapat Tidak dapat Tidak dapat Variabel
diterapkan. diterapkan. diterapkan. diubah secara
13 PENGENALAN JAVA | LAILI AIDI
14. asinkron.
Kompilator
tidak pernah
melakukan
optimasi
atasnya.
1.6 This
Java memasukkan suatu besaran referensi khusus yang disebut this, yang digunakan
didalam method yang dirujuk untuk objek yang sedang berlaku. Nilai this merujuk pada
objek dimana method yang sedang berjalan dipanggil.
Terdapat 2 cara dalam penggunan this yaitu secara Eksplisit dan Implisit. Pemanggilan
Eksplisit biasanya digunakan untuk mengatasi penamaan yang sama. Sedangkan pada
pemanggilan Implisit, karena tidak ada pertentangan maka tidak harus menulis kata kunci
this secara eksplisit. Bilapun ditulis akan mempunyai efek yang sama. Namun sebenarnya
kompilator akan menambahkan kata kunci this untuk pengacuan ke lokasi yang tepat di
objek itu secara otomatis.
Pada program ContohConstructor terlihat parameter di constructor yaitu iVar yang memiliki
kesamaan nama dengan variabel instant iVar di class ContohConstructor, untuk
mengatasinya maka digunakan this yang mengacu variabel instant milik objek.
Potongan program ContohConstructor :
public class ContohConstructor {
……
/* ini merupakan penerapan dari Pemanggilan Eksplisit */
public ContohConstructor(int iVar){
System.out.println("Ditampilkan ketika objek diciptakan");
this.iVar = iVar;
}
/* ini merupakan penerapan dari Pemanggilan Implisit */
public ContohConstructor(int iParam,String sParam){
System.out.println(sParam);
iVar = iParam;
}
……
14 PENGENALAN JAVA | LAILI AIDI
15. DAFTAR PUSTAKA
[FSW] Wiryasantika, Faisal. faisal@winwinfaisal.info
[MDLJV] Modul Praktikum Java. 2005. Program Studi D3 Jurusan Teknik Informatika.
STTTelkom : Bandung (Tidak Diterbitkan)
*Copyright : Diperbolehkan mengutip keseluruhan atau sebahagian dari isi dokumen ini
dengan atau tanpa ijin penulis dengan tetap menyajikan kredit penulis.
15 PENGENALAN JAVA | LAILI AIDI