Pengenalan Java

3 10 2007


<!–
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1593833729 1073750107 16 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
font-size:12.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:"Times New Roman";}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-so
*Copyright : Diperbolehkan mengutip keseluruhan atau sebahagian dari isi dokumen ini dengan atau tanpa  ijin penulis dengan tetap menyajikan kredit penulis.

Advertisements




Pengenalan Java

3 10 2007

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.

· 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();

}

}

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.


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() {

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;

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;

}

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

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;

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);

/* 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 ada modifier)

Tampak di Paketnya

Diwarisi oleh subclassnya di paket yang sama dengan classnya. Dapat diakses oleh method-method di class-class yang sepaket.

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 berisi method abstract. Class tidak dapat diinstantiasi

Tidak mempunyai constructor

Optional untuk diberikan di interface karena interface secara inheren adalah abstract.

Tidak ada badan method yang didefinisikan. Method memerlukan class kongkret yang merupakan subclass yang akan mengimplementasikan method abstract

Tidak dapat diterapkan.

Final

Class menjadi tidak dapat digunakan untuk menurunkan class yang baru.

Tidak dapat diterapkan.

Method tidak dapat ditimpa oleh method di subclass-subclassnya

Berperilaku sebagai konstanta

Static

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Mendefinisikan method (milik) class. Dengan demikian tidak memerlukan instant object untuk menjalankanya. Method ini tidak dapat menjalankan method yang bukan static serta tidak dapat mengacu variable yang bukan static.

Mendefinisikan variable milik class. Dengan demikian, tidak memerlukan instant object untuk mengacunya. Variabel ini dapat digunakan bersama oleh semua instant objek.

synchronized

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Eksekusi dari method adalah secara mutual exclusive diantara semua thread. Hanya satu thread pada satu saat yang dapat menjalankan method

Tidak dapat diterapkan pada deklarasi. Diterapkan pada instruksi untuk menjaga haya satu thread yang mengacu variable pada satu saat.

Native

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Tidak ada badan method yang diperlukan karena implementasi dilakukan dengan bahas lain.

Tidak dapat diterapkan.

transient

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Variable tidak aka diserialisasi

Volatile

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Tidak dapat diterapkan.

Variabel diubah secara 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;

}

……

DAFTAR PUSTAKA

[FSW] Wiryasantika, Faisal. faisal@winwinfaisal.info

[MDLJV] Modul Praktikum Java. 2005. Program Studi D3 Jurusan Teknik Informatika. STTTelkom : Bandung (Tidak Diterbitkan)