You are on page 1of 30

Bahasa Pemrograman II

Oleh
Robin, S.Kom

1. Pendahuluan (Latar Belakang & Tujuan)


2. Lingkungan Pemrograman (Struktur Program, Kompilasi & Bahasa Program)
3. Input & Output
4. Control Structure (Percabangan & Perulangan)
5. Array
6. Fungsi Matematika & Metoda
7. Exception Handling
8. Class & Object (Constructor, Property, Method, Accessor, Mutator, Overloading)
9. Operasi File

Referensi:

Purnama, Rangsang, 2002, Tuntunan Pemrograman Java, Jilid 1, Prestasi


Pustaka Publisher
Desdulianto, S.Kom, Penuntun praktikum Bahasa Pemrograman II, STMIK
Mikroskil

0
Bab I
Pendahuluan
Latar Belakang

Seiring dengan perkembangan zaman, bahasa pemrograman dan metode pemrograman


juga mengalami perubahan. Dengan zaman yang semakin canggih maka metode
pemrograman yang digunakan juga harus semakin mendekati dunia nyata. Untuk
memenuhi kebutuhan tersebut, hingga saat ini di dunia pemrograman telah menggunakan
pemrograman berorientasi objek sebagai tuntutan kebutuhan program yang dapat
mensimulasikan dunia nyata.

Tujuan

1. Membedakan pemrograman tak terstruktur, pemrograman terstruktur (procedural


programming) dan pemrograman berorientasi object (Object Oriented Programming)
2. Memahami karakteristik OOP

Pembahasan

1. Bahasa Program (Java)


2. Pemrograman Console
3. Premrograman berorientasi objek (Object Oriented Programming)

Persiapan
1. Memahami logika & algoritma
2. Pernah menggunakan bahasa C++

Asal Mula Pemrograman Berorientasi Objek

1. Bahasa Mesin (Pemrograman Tingkat Rendah)


Pada dasarnya semua program komputer disusun dari bahasa mesin. Bahasa
pemrograman komputer pertama di dunia adalah bahasa mesin. Untuk bisa membuat
program dengan bahasa mesin maka pemrogram harus benar-benar mengetahui
semua kode mesin (biasanya dalam bilangan heksadesimal) dari sebuah
mikroprosesor. Keunggulan bahasa mesin yaitu pemrogram dapat dengan mudah
mengakses hardware tanpa batas. Namun bahasa mesin juga memiliki kelemahan
sebagai berikut.
- Seiring dengan pengembangan mikroprosesor maka perintah yang disediakan oleh
mikroprosesor juga semakin banyak dan pemrogram juga semakin kesulitan untuk
mengingat semua kode mesin yang disediakan mikroprosesor.
- Apabila kita membuat sedikit kesalahan pada program maka kita harus
mengulang kembali penyusunan program tersebut dari awal
- Bahasa mesin tidaklah terstruktur karena tidak memiliki struktur control yang
baik
- Bahasa mesin tidak mengenal adanya variabel & sub program

1
2. Bahasa Rakitan (Assembly/Pemrograman Tingkat Menengah)
Bahasa rakitan sangat identik dengan bahasa mesin. Sebuah statement bahasa rakitan
selalu dapat diterjemahkan menjadi 1 s/d 3 kode mesin. Dibandingkan dengan
pendahulunya yaitu bahasa mesin, bahasa rakitan memiliki beberapa keunggulan
sebagai berikut.
- Tidak perlu mengingat instruksi mesin, hanya perlu mengingat instruksi bahasa
rakitan yang biasanya sudah menggunakan singkatan dari bahasa Inggris sehingga
lebih mudah dimengerti pemrogram
- Dapat menggunakan referensi memori tertentu sebagai variabel & sub program
Namun seiring dengan perkembangan zaman bahasa rakitan juga telah banyak
ditinggalkan karena bahasa rakitan juga memiliki kelemahan sebagai berikut.
- Hanya memiliki tipe data bertipe byte dan word
- Sub program dalam bahasa rakitan sangat tidak nyaman digunakan
- Bahasa rakitan memiliki struktur kontrol tetapi sangat sulit untuk dipahami
sebagian besar pemrogram karena bahasa rakitan masih belum terstruktur

3. Pemrograman Terstruktur (Pemrograman Tingkat Tinggi)


Pemrograman terstruktur mengalami masa kejayaan sekitar tahun 1976 s/d tahun
1996. Pemrograman terstruktur telah menutupi semua kelemahan yang terdapat pada
bahasa rakitan karena memiliki keunggulan sebagai berikut.
- Memiliki tipe data yang lebih variasi dan lebih lengkap
- Sub program selalu dideklarasikan dengan jelas & baik
- Struktur kontrol pemrograman terstruktur sangat jelas dan mudah untuk
digunakan
Seiring dengan bertambahnya kebutuhan manusia akan program komputer, program
komputer dituntut untuk semakin mendekati dunia nyata yang penuh dengan
pemodelan dan objek. Pada dasarnya pemrograman terstruktur dapat memenuhi
kebutuhan tersebut meskipun pemrograman mengalami sedikit kesulitan dalam
pemodelan objek

Hingga saat ini pemrograman terstruktur masih digunakan meskipun sebenarnya telah
dikenal pemrograman berorientasi objek

4. Pemrograman Berorientasi Objek/Object Oriented Programming (OOP)


Untuk membuat program yang semakin mendekati dunia nyata para pengembang
bahasa pemrograman beralih ke OOP. Keunggulan pemrograman ini yaitu dapat
memodelkan banyak objek yang mendekati dunia nyata. Selain itu OOP juga
memiliki semua fasilitas yang dimiliki oleh pemrograman terstruktur.
Salah satu kelemahan OOP yaitu OOP tidak cocok digunakan untuk pemrograman
berskala kecil karena program-program sederhana tidak membutuhkan pemodelan
objek.

2
Bab II
Lingkungan Pemrograman
Lingkungan Pengembangan

Bahasa Java dikembangkan oleh Sun Microsystem tahun 1991 dengan struktur dan
bahasa program yang diturunkan dari bahasa C++.Bahasa Java diciptakan oleh James
Gosling dengan nama bahasa Oak. Awalnya bahasa Java hanya digunakan sebagai
pelengkap pada dokumen HTML (Hypertext Markup Language) pada web. Sekarang
program Java dapat digunakan pada sistem operasi yang berbeda dengan bantuan Java
Virtual Machine (JVM). Program java dapat dibuat dengan sembarang editor dan
disimpan dalam file teks berekstensi .java. Agar program dapat dijalankan maka program
tersebut harus dikompilasi dengan javac.exe yang disediakan oleh Java Development Kit
(JDK) menjadi file binary berekstensi .class sehingga class tersebut dapat dijalankan oleh
Java Virtual Machine (JVM) yang disediakan oleh Java Runtime Environment (JRE).

Struktur Program
[import package;]
[public] class NamaProgram {
//deklarasi variable & konstanta global
<tipe> var1;
<tipe> var2;
:
<tipe> varN;

//deklarasi metoda (sub program)


<tipe> NamaSubProgram1([<tipe> param1, <tipe> param2, ..., <tipe>
ParamN])
{
//deklarasi variabel local
:
[return nilai]
}
.
.
.

[public static void main(String[] parameter)


{
//deklarasi variabel local
:
}]
}

Program mulai dijalankan dari metoda main dan setiap program java adalah merupakan class.
Kode program dalam bahasa Java bersifat Case Sensitive mengikuti bahasa C++.

3
Syarat Identifier (Pengenal, Variabel & Konstanta)
1. Hanya diperbolehkan menggunakan huruf, garis bawah (_) dan angka
2. Tidak diperbolehkan menggunakan karakter khusus seperti #,$,* dan lain-lain
3. Harus diawali huruf atau garis bawah, tidak dapat diawali dengan angka
4. Huruf besar & huruf kecil dianggab pengenal yang berbeda

Konstanta

Dalam bahasa Java, konstanta dideklarasikan dengan kata kunci final.

Bentuk umum:
final tipe var[=nilai];

Contoh:
final double pi=3.1428;

Tipe Data Dasar

Tipe Data Kegunaan / Jangkauan


boolean Hanya bernilai true dan false
byte Berisi numerik dengan nilai 0 s/d 255
char Tipe data karakter tunggal
int Tipe data numerik dengan jangkauan -32,768 S/d 32,767
long Tipe data numerik dengan jangkauan -2,147,483 S/d 2,147,483,647
float Tipe data pecahan dengan jangkauan -3.402823E38 S/d 3.402823E38
double Tipe data pecahan dengan jangkauan -1.79769313486232E308 S/d
1.79769313486232E308
String Tipe data yang dapat menyimpan deretan huruf

Berikut ini adalah metoda yang terdapat pada class String


Metoda Kegunaan Pemakaian (Misalkan s
bertipe string dan ch bertipe
karakter)
charAt(posisi) Mengambil karakter pada ch=s.charAt(4);
posisi tertentu
concat(str) Menyambung string str di s=s.concat(“Test”);
akhir string
contains(chr) Memeriksa apakah String if (s.contains(“e”)) …
mengandung karakter chr
endsWith(str) Memeriksa apakah String if (s.endsWith(“AB”)) …
diakhiri oleh str
equals(str) Memeriksa apakah String if (s.equals(str)) …
sama dengan str (Case
Sensitive)
equalsIgnoreCase(str) Memeriksa apakah String if (s.equalsIgnoreCase(str))
sama dengan str …

4
- indexOf(str) Memeriksa apakah String x=s.indexOf(“ABC”);
str terdapat di dalam
String
- indexOf(chr) Memeriksa apakah x=s.indexOf(“a”);
karakter chr terdapat di
dalam String

Metoda ini akan


mengembalikan posisi chr
yang berada apabila chr
ditemukan
length() Mengambil panjang String x=s.length();
startsWith(str) Memeriksa apakah String if (s.startsWith(“A”)) …
dimulai dari str
substring(awal,akhir) Mengambil string mulai x=s.substring(3,5);
dari awal sampai akhir
split(str) Memotong string x=s.split(“ “);
berdasarkan pemisah str
dan menghasilkan array of
String
toLowerCase() Menghasilkan semua huruf x=s.toLowerCase();
dalam String menjadi x=s.toLowerCase().charAt(0);
huruf kecil
toUpperCase() Menghasilkan semua huruf x=s.toUpperCase();
dalam String menjadi x=s.toUpperCase().charAt(0);
huruf besar
trim() Menghasilkan String tanpa s.Trim();
spasi di awal dan akhir
String

Operator (Logika & Aritmatika)

Operator Logika Arti Bentuk umum


! Not !Kondisi
&& And Kondisi1 && Kondisi2
|| Or Kondisi1 || Kondisi2
== Sama dengan Oprnd1 == Oprnd2
!= Tidak sama dengan Oprnd1 != Oprnd2
< Lebih kecil Oprnd1 < Oprnd2
> Lebih besar Oprnd1 > Oprnd2
<= Lebih kecil sama dengan Oprnd1 <= Oprnd2
>= Lebih besar sama dengan Oprnd1 >= Oprnd2

Operator Aritmatika Arti Bentuk umum

5
+ Penjumlahan Hasil=oprnd1 + oprnd2
- Selisih Hasil=oprnd1 - oprnd2
* Perkalian Hasil=oprnd1 * oprnd2
/ Pembagian Hasil=oprnd1 / oprnd2
% Sisa Bagi Hasil=oprnd1 % oprnd2
= Sama dengan Var=Nilai2
++ Bertambah 1 Var++
-- Berkurang 1 Var--
+= Bertambah sebesar Var+=nilai
-= Berkurang sebesar Var-=nilai
*= Dikalikan dengan Var*=nilai
/= Dibagi dengan Var/=nilai
%= Ambil sisa bagi dengan dibagi Var%=nilai

Karakter Khusus yang dikenal oleh Java

Karakter Arti
; Akhir dari setiap baris program
// Komentar untuk 1 baris
/*… Komentar untuk lebih dari 1 baris
…*/
{ Blok statement harus diawali dengan { dan
… diakhiri dengan }
}

6
Bab III
Stream (Input/Output)
Ada 3 jenis stream yang dijalankan sekaligus dalam program java. Yaitu stream standard
input (System.in), stream standard output (System.out) dan stream standard error
(System.err)

System.out (Operasi tampilan)

Metoda yang disediakan oleh stream output yaitu:


1. System.out.print(ekspresi)
Metoda ini digunakan untuk mencetak ekspresi yang diberikan. Untuk mencetak
gabungan ekspresi baik antara tipe data yang sama ataupun tipe data yang berbeda
dapat dibantu dengan tanda tambah (+). Contoh: System.out.print(“Nilai i adalah “ +
i);
2. System.out.println(ekspresi)
Kegunaan metoda ini sama seperti metoda print di atas tetapi metoda ini akan
melakukan pindah baris setelah mencetak ekspresi yang diberikan
3. System.out.printf(format,ekspresi)
Metoda ini akan mencetak ekspresi pada bagian format kemudian variabel- variabel
yang akan dicetak nilainya harus diberikan terlebih dahulu formatnya. Metoda ini
diambil dari perintah printf dari bahasa C++

Berikut ini adalah format yang dapat digunakan oleh metoda printf
Format Kegunaan
“%d” Cetak numerik dalam format desimal
“%o” Cetak numerik dalam format octal
“%x” atau “%X” Cetak numerik dalam format heksadesimal
“%e” atau “%E” Cetak pecahan dalam format eksponensial
“%f” Cetak pecahan dalam format pecahan
“%c” atau “%C” Cetak karakter
“%s” atau “%S” Cetak string
“%b” Cetak Boolean (true/false)
“%%” Cetak %
“\\” Cetak \
“\n” Cetak baris baru
“\”” Cetak “
“\t” Cetak Tab

Agar tampilan tipe data numerik dapat dicetak dengan teratur maka kita dapat
menyisipkan berapa tempat yang disediakan untuk mencetak data tersebut, misalnya:
- %4d -> menyediakan 4 tempat untuk mencetak sebuah variabel bertipe bilangan
bulat dengan tampilan rata kanan
- %5.2f -> menyediakan 5 tempat untuk mencetak sebuah variabel bertipe bilangan
pecahan dimana 2 tempat diantaranya digunakan untuk angka di belakang koma
dan 1 tempat digunakan untuk titik
7
System.in (Operasi Masukan)

Operasi masukan pada bahasa Java selalu diarahkan kepada keyboard. Operasi input yang
dapat digunakan pada bahasa Java yaitu:
1. Class DataInputStream (disediakan pada semua versi JDK)
Untuk dapat menggunakan class ini harus melakukan import
java.util.DataInputStream dan harus mendeklarasikan sebuah variable dari class ini
2. Class Scanner (disediakan pada JDK versi 1.5 ke atas)
Untuk dapat menggunakan class ini harus melakukan import java.util.Scanner dan
harus mendeklarasikan sebuah variable dari class ini dengan cara:
Scanner <var>=new Scanner(System.in);

Berikut ini adalah beberapa metoda yang disediakan pada class Scanner untuk
memasukkan data beberapa tipe.
Metoda Kegunaan
nextBoolean() Untuk tipe data boolean
nextByte() Untuk tipe data byte
nextDouble() Untuk tipe data double
nextFloat() Untuk tipe data float
nextInt() Untuk tipe data int
nextLine() Untuk tipe data String
nextLong() Untuk tipe data long
nextShort() Untuk tipe data short

Statement import

Statement import digunakan untuk menggunakan package yang telah disediakan oleh
bahasa Java. Package utama yang disediakan yaitu java.lang, java.util, dan lain-lain

Contoh program sederhana BujurSangkar.java dengan menggunakan input dan output.


import java.util.Scanner;
class BujurSangkar {
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int s;
long L;

System.out.println(“Menghitung luas bujur sangkar jika diketahui


sisinya”);
//Bagian input
System.out.print(“Masukkan nilai sisi : “);
S=input.nextInt();

//Bagian proses
L=s*s;

//Bagian output
System.out.printf(“Luas bujur sangkar : %4d\n“,L);
//atau bisa juga dengan

8
//System.out.println(“Luas bujur sangkar : “ + L);
}
}

Konversi Tipe Data

1. Konversi dengan type casting. Contoh:


int i;
byte b;
float f;
double d=10.3;
String s;
i=(int)d; //i=10
b=(byte)d; //b=10
f=(float)d; //f=10.3
s=f+””; //s=”10.3”

2. Konversi dengan bantuan class tipe data. Contoh:

int i;
byte b;
float f;
double d;
String s=”10”;
Boolean bl;

i=Integer.parseInt(s);
b=Byte.parseByte(s);
f=Float.parseFloat(s);
d=Double.parseDouble(s);

s=”true”;
bl=Boolean.parseBoolean(s);

s=Byte.toString(b);
s=Integer.toString(i);
s=Float.toString(f);
s=Double.toString(d);

9
Bab IV
Control Structure
Percabangan

Dalam dunia pemrograman, percabangan merupakan sebuah proses pengambilan


keputusan. Ada 2 jenis percabangan yang disediakan bahasa java, yaitu percabangan if
dan percabangan case.

Bentuk umum percabangan if:


if (kondisi) //jika kondisi menghasilkan true
statement1; //maka statement1 akan dijalankan
else //jika kondisi menghasilkan false
statement2; //maka statement2 yang akan dijalankan

Apabila statement yang akan dijalankan oleh if ataupun else lebih dari satu maka harus
dibantu dengan karakter { dan } sehingga bentuk percabangan if akan seperti terlihat di
bawah ini.

if (kondisi) {
statement1;
statement2;
:
statementN;
} else {
statement1;
statement2;
:
statementN;
}

Contoh:
import java.util.Scanner;
class ContohIf {
public statid void main(String[] args)
{
Scanner input=new Scanner(System.in);
int na;
char nh;

System.out.print(“Masukkan nilai angka (0 s/d 100)”);


na=input.nextInt();

if (na>80 && na<=100) nh=’A’;


else if (na>60 && na<=80) nh=’B’;
else if (na>40 && na<=60) nh=’C’;
else if (na>20 && na<=40) nh=’D’;
else if (na>=0 && na<=20) nh=’E’;

System.out.println(“Nilai huruf Anda adalah : “ + nh);


}
}

Bentuk umum percabangan case:


switch (variabel) {
case value1:
statement1;

10
statement2;
:
statementN;
[break;]
case value2:
statement1;
statement2;
:
statementN;
[break;]
case valueN:
statement1;
statement2;
:
statementN;
[break;]
default:
statement1;
statement2;
:
statementN;
}

Contoh:
import java.util.Scanner;
class ContohCase {
public statid void main(String[] args)
{
Scanner input=new Scanner(System.in);
int Smtr;
String TA;

System.out.print(“Masukkan semester (0 s/d 100)”);


Smtr=input.nextInt();

switch (smtr) {
case 0:
TA=”Anda masih anak-anak”;
case 1:
case 2:
TA=”2008-2009”;
break;
case 3:
case 4:
TA=”2009-2010”;
break;
case 5:
case 6:
TA=”2010-2011”;
break;
case 7:
case 8:
TA=”2011-2012”;
break;
default:
TA=”Anda adalah mahasiswa abadi”;
}
System.out.println(“Tahun Ajaran Anda adalah : “ + TA);
}
}

Perulangan

11
Dalam dunia pemrograman, perulangan bermanfaat untuk mengulangi beberapa bagian
program yang akan dikerjakan berulang-ulang sehingga kita tidak perlu lagi mengetikkan
kembali bagian program yang akan diulang. Ada 3 jenis perulangan yang disediakan
bahasa Java, yaitu perulangan for, while dan do-while.

Bentuk umum perulangan for:


- for(Var=nilaiawal;kondisi;perubahanVar) statement;
- for(Var=nilaiawal;kondisi;perubahanVar) {
statement1;
statement2;
:
statementN;
}

Contoh:
for(i=0;i<5;i+=2) System.out.println(i);

Bentuk umum perulangan while:


- while (kondisi) statement;
- while (kondisi) {
statement1;
statement2;
:
statementN;
}

Bentuk umum perulangan do-while:


- do statement; while (kondisi);
- do {
statement1;
statement2;
:
statementN;
} while (kondisi);

Ketiga jenis perulangan tersebut akan dikerjakan selama kondisi yang diberikan
menghasilkan true.

Contoh perulangan do – while di bawah ini hasilnya akan berbeda apabila diganti dengan
perulangan while.

import java.util.Scanner;
class ulang {
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int n1,n2,n3,total;
double rata;
char pil;

do { //digantikan dengan while (pil=='Y')


System.out.print("Masukkan nilai 1 : ");
n1=Integer.parseInt(input.nextLine());
System.out.print("Masukkan nilai 2 : ");
n2=Integer.parseInt(input.nextLine());

12
System.out.print("Masukkan nilai 3 : ");
n3=Integer.parseInt(input.nextLine());

total=n1+n2+n3;
rata=total/3;

System.out.println("Nilai rata-rata : " + rata);

do {
System.out.print("Hitung lagi (Y/T)? ");
pil=input.nextLine().toUpperCase().charAt(0);
} while (pil!='Y' && pil!='T');
} while (pil=='Y'); //digantikan dengan }
}
}

13
Bab V
Array
Array merupakan tipe data reference (lanjutan) yang disedikan oleh semua bahasa
pemrograman tingkat tinggi. Tipe data array adalah suatu tipe data yang dapat
menampung lebih dari 1 data dalam bentuk deretan dimana masing-masing data tersebut
memiliki tipe data yang sama sehingga memori yang dibutuhkan untuk masing-masing
elemen juga sama. Array dapat dibuat 1 dimensi ataupun multidimensi. Dalam bahasa
Java, array dapat berupa array statis ataupun array dinamis dan penomoran elemen array
dimulai dari elemen 0.

Sebagai contoh, jika x dideklarasikan dengan 5 elemen dengan perintah int x[]=new
int[5], maka sketsa memori untuk variabel x tersebut dapat digambarkan sebagai berikut.

Cara Deklarasi array:


Tipe var[][]..[]=new int [JlhElemen_D1][JlhElemen_D2]..[JlhElemen_DN];

Atau:
Tipe var[][]..[]={{{...},{...},...{...}}};

Contoh deklarasi array:


int x[]=new int[5];
double y[][]=new int[3][4];
int a[]={3,6,2,7,4},b[][]={{2,6,4},{3,6,3}};

Contoh program yang menggunakan array:


import java.util.Scanner;
class CthArray {
public static void main(String[] args)
{
final int n=5;
Scanner input=new Scanner(System.in);
int x[]=new int[n],i,total=0;

System.out.println("Menghitung nilai jumlah 5 buah bilangan");


for(i=0;i<n;i++) {
System.out.printf("Masukkan bilangan ke-%d : ",i);
x[i]=Integer.parseInt(input.nextLine());
total+=x[i];
}
System.out.println("Jumlah ke-5 bilangan tersebut adalah : "+total);
}
}

Berikut ini adalah beberapa metoda yang disediakan oleh class Arrays (terdapat pada
package java.util.Arrays)

Metoda Kegunaan Pemakaian (misalkan x dan y

14
adalah array)
asList(array) Mengkonversi array List a=Arrays.asList(x);
menjadi List
binarySearch(array,nilai) Mencari sebuah Pos=Arrays.binarySearch(x,4)
nilai dalam sebuah
array dengan syara
array harus terurut.
Metoda ini akan
menghasilkan posisi
dimana nilai berada
copyOf(array,n) Menyalin array ke y=Arrays.copyOf(a,x.length);
array baru dengan
panjang n
copyRange(array,awal,akhir) Menyalin array dari y=Arrays.copyRange(a,0,x.length-
nilai awal sampai 1);
akhir
equals(array1,array2) Memeriksa apakah if (Arrays.equals(x,y)) …
array1 sama dengan
array2
fill(array,value) Mengisi semua Arrays.fill(x,5);
elemen array
dengan value
sort(array) Mengurutkan array Arrays.sort(x);
toString(array) Mengkonversi array String s=Arrays.toString(x)
menjadi string

Selain itu semua variabel array juga memiliki metoda clone() untuk menduplikasi array
dan properti length untuk menghitung jumlah elemen array. Contoh pemakaian:
y=x.clone();
System.out.println(x.length);

Array List

Array List adalah tipe data array lanjutan yang mencakup ArrayList, LinkedList dan
Vector. Ada beberapa metoda yang disediakan array List, yaitu:

Metoda Kegunaan Pemakaian (Misalkan x


adalah array & y adalah
List)
- add(value) Menambahkan value ke y.add(5);
akhir List
- add(posisi,value) Menambahkan value ke y.add(4,”A”);
posisi tertentu
addAll(Collection) Menambahkan seluruh y.addAll(x);
elemen Collection (array)
ke akhir List

15
clear() Mengosongkan List y.clear();
contains(value) Memeriksa apakah value if (y.contains(10)) …;
terdapat dalam List
containsAll(Collection) Memeriksa apakah List if (y.containsAll(x)) …;
mengandung seluruh
elemen Collection
equals(List) Memeriksa apakah List y.equals(z);
sama dengan List yang lain
get(posisi) Mengambil elemen pada a=y.get(3);
posisi tertentu
indexOf(value) Mengambil posisi value a=y.indexOf(“E”);
dari List
isEmpty() Memeriksa apakah List If (y.isEmpty()) …
kosong
remove(value) Menghapus elemen value y.remove(“E”);
dari List
remove(posisi) Menghapus elemen di y.remove(3);
posisi tertentu pada List
set(posisi,value) Mengubah elemen pada y.set(3,”B”);
posisi tertentu menjadi
bernilai value
size() Menghitung jumlah elemen a=y.size();
dalam List
subList(awal,akhir) Menghasilkan List dari z=y.subList(2,5);
elemen awal sampai akhir
toArray() Menghasilkan array dari x=y.toArray();
List

Untuk dapat menggunakan masing-masing array List ini harus dilakukan import dari
package berikut ini.

Jenis Array List Package


List java.util.List
ArrayList java.util.ArrayList
Vector java.util.Vector

16
Bab VI
Fungsi Matematika & Metoda
Fungsi Matematika

Beberapa fungsi matematika yang disediakan oleh package java.lang.Math.


Nama fungsi Kegunaan Pemakaian
abs(nilai) Mengambil nilai mutlak x=abs(-5);
sin(sudut_radian) Fungsi Sinus x=sin(alpha);
cos(sudut_radian) Fungsi Cosinus x=cos(alpha*PI/180);
tan(sudut_radian) Fungsi Tangen x=tan(Math.toRadians(alpha));
random() Menghasilkan nilai acak x=random() * 100;
antara 0 & 1
pow(nilai,pangkat) Mengambil hasil pangkat x=pow(5,3);
dari sebuah nilai
toDegrees(sudut_radian) Mengkonversi radian x=Math.toDegrees(PI/2);
menjadi derajat
toRadians(sudut_derajat) Mengkonversi derajat x=tan(Math.toRadians(90));
menjadi radian
PI Mengambil nilai L=PI * r * r;
konstanta Pi

Import Static

Import static digunakan untuk memudahkan pemrogram supaya tidak perlu mengetikkan
nama package pada saat menggunakan metoda yang tersedia pada package tersebut.
Contoh:
import java.lang.Math.*;
class Coba {
public static void main(String[] args)
{
System.out.println( Math.sin( Math.toDegrees(90) ) );
}
}

Pada contoh di atas dapat dilihat bahwa pemrogram harus mengetikkan package “Math”
setiap kali akan menggunakan metoda sin() dan toDegrees(). Untuk memecahkan
ketidaknyamanan tersebut maka digunakan import static seperti contoh berikut ini.
import static java.lang.Math.*;
class Coba {
public static void main(String[] args)
{
System.out.println(sin(toDegrees(90) ) );
}
}

17
Penyusunan Metoda (Sub Program)

Pada dasarnya sub program digunakan untuk mempersingkat program. Bagian program
yang akan diulang berkali-kali pada bagian program utama yang berbeda akan lebih baik
digantikan dengan sebuah sub program daripada mengetikkan sub program tersebut
kembali. Dalam OOP sub program disebut dengan metoda. Dalam bahasa Java kita dapat
membuat metoda yang bertipe ataupun metoda yang tak memiliki tipe (void). Bentuk
umum deklarasi metoda dalam bahasa Java

<tipe> NamaSubProgram([<tipe> param1, <tipe> param2, ..., <tipe>


ParamN])
{
//deklarasi variabel local
:
[return nilai] //Perintah return tidak dapat digunakan untuk
} //metoda yang bertipe void (tidak memiliki tipe)

Contoh:
class Function {
long Faktorial(int n)
{
int i;
long f=1;

for(i=2;i<=n;i++) f*=i;
return f
}

public static void main(String[] args)


{
System.out.println(Faktorial(5));
}
}

Rekursi

Rekursi adalah suatu kondisi dimana suatu metoda memanggil dirinya sendiri seperti
sebuah perulangan. Contoh:

public static void Ulang(n)


{
System.out.print(n);
if (n>1) Ulang(n-1);
System.out.print(n);
}

public static long Faktorial(int n)


{
if (n==1) return 1; else return n*Faktorial(n-1);
}

Jika pada program utama dipanggil metoda Ulang(5) maka hasil outputnya adalah:
5432112345

18
Bab VII
Exception Handling
Semua bahasa pemrograman tingkat tinggi selalu memiliki cara untuk menangani
kesalahan yang timbul saat program dijalankan (rum time). Penanganan kesalahan
diperlukan karena pada saat program dijalankan, pemrogram dapat menemui kesalahan
(error) tak terduga yang muncul. Bahasa pemrograman yang mendukung pemrograman
berorientasi (termasuk Java, Visual Basic.NET, Visual C++.NET, Visual C#.NET,
Borland Delphi.NET) menangani kesalahan dengan menggunakan perintah try – catch –
finally.

Bentuk umum:
try {

//Statement yang kemungkinan dapat menghasilkan kesalahan diletakkan


//di bagian try

} catch (typeException objectException) {

//Apabila terjadi kesalahan (runtime error) maka statement di bagian


//catch inilah yang akan dikerjakan

} [finally {
//statement yang akan dijalankan setelah kesalahan ditangani
//Terjadi kesalahan ataupun tidak, bagian finally tetap dikerjakan
//Bagian ini boleh tidak dibuat (optional)

}]

Contoh program exception:


class CobaException {
public static void main(String[] args)
{
int i;
String s="123.2";

try {
i=Integer.parseInt(s);
} catch (Exception e) {
System.out.println("Tidak dapat memberikan nilai pecahan kepada tipe
data bulat");
System.out.println("Pesan kesalahan dari JVM : " + e.getMessage());
} finally {
System.out.println("Bagian ini tetap dijalankan baik terjadi
kesalahan ataupun tidak");
}
}
}

19
Bab VIII
Class & Object
Pada dasarnya semua program Java adalah berorientasi objek. Sebuah program Java
sebenarnya tersusun atas banyak objek. Karena program Java itu sendiri dimodelkan dari
sebuah class dan semua variabel & konstanta yang digunakan sebenarnya juga
dimodelkan dari sebuah class.

Perbedaan class & object

Dalam membuat program Java, pemrogram terlebih dahulu menyusun sebuah class dan
setelah class ini selesai disusun, pemrogram akan memodelkan sebuah objek dari class
tersebut. Class adalah sebuah model yang akan digunakan dalam program sedangkan
objek adalah barang jadi yang dibuat berdasarkan model yang telah dirancang dari sebuah
class.

Di dalam OOP semua informasi disatukan/digabungkan (encapsulation) di dalam sebuah


class dan informasi-informasi ini adalah komponen-komponen yang menyusun sebuah
objek. Informasi tersebut adalah sebagai berikut.
1. Property/Attribute
Pada dasarnya properti merupakan konstanta ataupun variabel yang dideklarasikan
dalam sebuah class. Namun kegunaan variabel-variabel ini sebenarnya adalah
menyatakan sifat-sifat sebuah objek ataupun harta yang dimiliki oleh sebuah objek.
2. Method/Operation
Pada dasarnya metoda merupakan sebuah sub program yang dideklarasikan dalam
sebuah class. Metoda-metoda ini menyatakan kemampuan daripada objek.
3. Event Handler
Event adalah kejadian yang dapat dialami oleh sebuah objek. Sedangkan Event
Handler adalah respon yang diberikan oleh sebuah objek apabila objek tersebut
mengalami sebuah kejadian. Respon yang diberikan oleh objek tersebut biasanya
merupakan kumpulan statement program. Event Handler hanya dapat digunakan
untuk pemrograman berbasis Graphical User Interface (GUI) seperti Microsoft
Windows dan tidak dapat digunakan pada pemrograman berbasis Text (Console
Application).

Bentuk umum deklarasi class:


[public/private] class NamaClass {

[public/private/protected] tipe properti1;


[public/private/protected] tipe properti2;
:
[public/private/protected] tipe propertiN;

[public NamaClass() //Constructor tanpa parameter


{
//deklarasi variabel local
:
}]
//Overload Constructor dengan parameter

20
[public NamaClass(tipe param1, tipe param2, ..., paramN)
{
//deklarasi variabel local
:
}]

[public/private/protected] tipe NamaMetoda1(tipe param1, tipe param2,


..., paramN)
{
//deklarasi variabel local
:
[return nilai;]
}
.
.
public/private/protected] tipe NamaMetodaN(tipe param1, tipe param2,
..., paramN)
{
//deklarasi variabel local
:
[return nilai;]
}]

[public finalize() //deklarasi Destructor


{
//deklarasi variabel local
:
}]
}

Sebuah class tidak memiliki program utama (main). Sebuah class dapat juga dibentuk
dari kumpulan class yang lain (Composition). Class harus dideklarasikan sebagai sebuah
objek pada sebuah program tester barulah class tersebut dapat digunakan dalam program.

Constructor & Destructor dan Overloading

Constructor adalah metoda yang akan dijalankan apabila sebuah objek diciptakan
(dengan perintah new) sedangkan Destructor adalah metoda yang akan dijalankan apabila
sebuah objek dihancurkan (jika program akan dihentikan). Dalam sebuah class,
constructor dapat dibuat lebih dari 1 dengan jumlah parameter yang berbeda untuk setiap
constructor-nya (Overloading). Selain constructor, metoda, accessor & mutator juga
dapat dilakukan overlading.

Accessor & Mutator

Accessor adalah sebuah metoda yang digunakan untuk memberikan nilai properti dalam
sebuah class kepada dunia luar. Accessor selalu menggunakan tipe data yang sama
dengan properti yang akan dikembalikan nilainya dan biasanya diawali dengan awalan
get (ambil).

Mutator adalah sebuah metoda yang digunakan untuk menerima sebuah nilai dari dunia
luar untuk mengubah nilai properti yang ada di dalam class. Mutator selalu bertipe void
dan memiliki sebuah parameter yang memiliki tipe data yang sama dengan properti yang
nilainya akan diubah. Mutator biasanya menggunakan awalan set (ubah).

21
Contoh penggunaan Constructor secara overloading, Destructor, Accessor & Mutator:
class KipasAngin {
private int JlhLengan, Level;
private int Kecepatan; //putaran per detik

public KipasAngin() //Constructor


{
JlhLengan=3;
Level=Kecepatan=0;
}

public KipasAngin(int j) //Overloading COnstructor


{
JlhLengan=j;
Level=Kecepatan=0;
}
public void ubahLevel(int l) //mutator u/ ubah properti Level
{
if (k>=0 && k<6) Level=l;
Kecepatan=Level*2;
}

public int ambilKecepatan() //aksesor u/ mengambil properti Kecepatan


{
return Kecepatan;
}
}
import java.util.Scanner;
class cobaKipas { //sebagai tester, dibuat pada file yang berbeda
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int pil,l;
KipasAngin Kipas=new KipasAngin(4);

do {
System.out.println(“Menu utama kipas angina”);
System.out.println(“1. Ubah Level”);
System.out.println(“2. Status Kecepatan”);
System.out.println(“3. Keluar”);

System.out.print(“Pilihan Anda : “);


pil=Integer.parseInt(input.nextLine());

switch (pil) {
case 1:
System.out.print(“Masukkan level (1 s/d 6) : “);
l=Integer.parseInt(input.nextLine());
Kipas.ubahLevel(l);
break;
case 2:
System.out.println(“Kecepatan kipas angin sekarang adalah “
+Kipas.ambilKecepatan());
}
} while (pil!=3);
}
}

22
Inheritance, Access Modifier Public, Private & Protected

Salah satu keunikan OOP adalah penurunan sifat (inheritance). Sebuah class dapat dibuat
dengan cara menurunkan sifat class induk kepada class anak. Dengan demikian properti
dan metoda yang dideklarasikan dengan modifier public & protected pada class induk
juga diturunkan kepada class anak sehingga class anak juga memiliki properti dan metoda
tersebut. Jika properti dan metoda dideklarasikan dengan modifier private maka class
anak tidak akan mendapatkan properti dan metoda tersebut yang diturunkan dari class
induk.

Overriding

Overriding adalah sebuah kondisi dimana metoda yang setelah diturunkan dari class
induk kepada class anak namun pada class anak juga telah dideklarasikan metoda dengan
nama yang sama tetapi isi program dalam metoda tersebut bisa berbeda.

Objek “this” & “super”

Kata kunci this digunakan sebagai pointer untuk menunjuk kepada class yang sedang
dirancang sedangkan kata kunci super digunakan sebagai pointer untuk memanggil class
induk dari sebuah class anak.

Contoh penggunaan Inheritance, Access Modifier public, private, Overriding, this &
super:
class Mamalia {
public int JlhTangan, JlhKaki;
private boolean ekor;

public Mamalia()
{
JlhTangan=JlhKaki=2;
}

public Mamalia(int JlhTangan,int JlhKaki)


{
this.JlhTangan=JlhTangan;
this.JlhKaki=JlhKaki;
}

public void CaraBerjalan()


{
System.out.println(“Merangkak dengan kedua kaki dan tangan”);
}

Finalize()
{
JlhTangan=JlhKaki=0;
}
}

class Manusia extends Mamalia {


public void CaraBerjalan()
{
System.out.println(“Berjalan dengan 2 kaki”);
}

23
public void CaraMerangkak()
{
Super.CaraBerjalan();
}
}

Polymorphism

Polymorphism dalam suatu kondisi dimana class induk diturunkan kepada class anak dan
kemudian class anak diturunkan lagi 1 kali atau lebih kepada class lainnya.

Abstract

Abstract class digunakan sebagai base class dari sebuah class yang diturunkannya dan
tidak dapat digunakan untuk membentuk objek. Biasanya digunakan untuk
mendeklarasikan metoda yang sifatnya umum. Metoda abstrak tidak boleh dapat diisi
oleh statement-statement program. Dalam suatu abstract class dapat dideklarasikan
metoda abstract. Contoh:

abstract class Induk {


protected int x;

public abstract int ambilX(); //metoda abstrak harus kosong


}

class Anak extends Induk { //class Anak mendapatkan properti x


public int ambilX() //harus deklarasikan ulang ambilx()
{
return x;
}
}

class cobaAbstrak {
public static void main(String[] args)
{
Induk a=new Induk(); /*Terjadi error karena class abstract tidak
dapat dibuat objeknya*/
Anak b=new Anak();
}
}

Interface

Interface biasanya digunakan untuk memberikan property yang ada di dalamnya kepada
class yang lain tanpa harus diturunkan. Sama halnya dengan abstract, semua metoda di
dalam interface juga tidak dapat diisi dengan statement-statement program. Dalam
interface, modifier protected tidak dapat digunakan dan semua property harus diberikan
nilai awal. Contoh:

interface class A {
public int x=0; /*tidak dapat menggunakan protected
dan harus diberikan nilai awal*/
public abstract int ambilX(); //metoda abstrak harus kosong
}

24
class B implements A { //class Anak mendapatkan properti x
public int ambilX() //harus deklarasikan ulang ambilx()
{
return x; /*property x didapatkan dari proses implementasi class A
bukan diturunkan*/
}
}

class coba {
public static void main(String[] args)
{
A a=new A(); /*Terjadi error karena class abstract tidak
dapat dibuat objeknya*/
B b=new B();
}
}

25
Bab IX
Operasi File
Data-data yang tersimpan pada properti/variabel dalam semua bahasa program adalah
bersifat sementara. Karena properti tersebut semuanya tersimpan pada memori komputer,
bukan disimpan pada media penyimpanan. Dalam menyusun program berskala besar
pemrogram akan selalu membutuhkan tempat penyimpanan data yang bersifat permanen.
Solusi yang paling sederhana untuk masalah ini adalah menyimpan data dalam bentuk
file. Dalam kebanyakan bahasa program selalu memiliki 2 cara untuk mengakses file
yaitu file teks (Sequential File) dan file binary (Random Access File). Semua fungsi yang
berhubungan dengan operasi file dalam bahasa Java telah dibuat dalam package java.io.

Sequential File

Beberapa class yang digunakan dalam operasi file sequential (text).


1. File
Class ini digunakan untuk membuka file yang hanya untuk memperoleh informasi
file. Class ini terdapat di dalam package java.io.File. Beberapa metoda yang tersedia
adalah:
- boolean exists() digunakan untuk memeriksa apakah suatu file ada atau tidak.
Mengembalikan true juga file berhasil dibuka, mengembalikan false jika file tidak
berhasil dibuka.
- void delete() digunakan untuk menghapus file.
- long length() digunakan mengambil ukuran file.
2. FileWriter
Class ini digunakan untuk membuka file dengan mode tulis (write). Class ini terdapat
di dalam package java.io.FileWriter.
3. FileReader
Class ini digunakan untuk membuka file dengan mode baca (read). Class ini terdapat
di dalam package java.io.FileReader.
4. Formatter
Class ini digunakan untuk menulis file dengan menggunakan format tertentu. Metoda
yang digunakan untuk menulis file adalah metoda format. Class ini terdapat di dalam
package java.util.Formatter. Format yang disediakan sama dengan perintah
System.out.printf.
5. Scanner
Class ini selain dapat digunakan untuk membaca masukan dari keyboard dapat juga
digunakan untuk membaca input dari file

Contoh penggunaan class File.

import java.io.File;
class CobaFile {
public static void main(String[] args)
{
File f=new File(“Coba.txt”);
if (f.exists()) System.out.println(f.length());
}

26
}

Hasil program ini akan mengembalikan panjang file Coba.txt apabila file tersebut ada
Contoh penggunaan class FileWriter dan Formatter.
import java.io.FileWriter;
import java.util.Formatter;
import java.util.Scanner;
import java.io.IOException;

class CobaWriter {
public static void main(String[] args)
{
char pil;
String NIM, Nama;
int Nilai;
Scanner input=new Scanner(System.in);
Formatter ft;

try {
FileWriter fw=new FileWriter("test.txt");
ft=new Formatter(fw);
do {
System.out.print("Masukkan NIM : "); NIM=input.nextLine();
System.out.print("Masukkan Nama : "); Nama=input.nextLine();
System.out.print("Masukkan Nilai : ");
Nilai=Integer.parseInt(input.nextLine());

ft.format("%s\n%s\n%d\n",NIM,Nama,Nilai);
System.out.print("Simpan data lagi (Y/T) ?");

pil=input.nextLine().toUpperCase().charAt(0);
} while (pil=='Y');
ft.close();
fw.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}

Hasil output:
Masukkan NIM : 001
Masukkan Nama : Test1
Masukkan Nilai : 45
Simpan data lagi (Y/T) ?y
Masukkan NIM : 002
Masukkan Nama : Test2
Masukkan Nilai : 56
Simpan data lagi (Y/T) ?t

Contoh penggunaan class FileReader dan Scanner.


import java.io.FileReader;
import java.util.Scanner;
import java.io.IOException;
class CobaReader {
public static void main(String[] args)
{
Scanner input;

27
try {
FileReader fr=new FileReader("test.txt");
input=new Scanner(fr);
while (input.hasNext()) {
System.out.println("NIM : "+input.nextLine());
System.out.println("Nama : "+input.nextLine());
System.out.println("Nilai : "+input.nextLine());
}
fr.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}

Hasil output
NIM : 001
Nama : Test1
Nilai : 45
NIM : 002
Nama : Test2
Nilai : 56

Binary File

Bahasa java menyediakan class RandomAccessFile untuk melakukan operasi binary file.
Class ini terdapat dalam package java.io.RandomAccessFile. Beberapa metoda yang
disediakan dalam class ini adalah:
1. read
Terdiri dari readByte(), readBytes(), readChar(), readChars(), readDouble(),
readFloat(), readInt(), readLine(), readLong(), readUTF().
2. write
Terdiri dari writeByte(), writeBytes(), writeChar(), writeChars(), writeDouble(),
writeFloat(),writeInt(),writeLine(),writeLong(),writeUTF().
3. seek(posisi)
Menggeser file pointer ke posisi tertentu dalam file.
4. length()
Mengambil ukuran file.
5. getFilePointer()
Mengambil posisi file

Contoh menulis file binary.


import java.io.RandomAccessFile;
import java.io.IOException;
import java.util.Scanner;
class TulisBinary {
public static void main(String[] args)
{
char pil;
String NIM, Nama;
int Nilai;
Scanner input=new Scanner(System.in);
RandomAccessFile f;

try {
f=new RandomAccessFile("test.dat","rw");

28
do {
System.out.print("Masukkan NIM : "); NIM=input.nextLine();
System.out.print("Masukkan Nama : "); Nama=input.nextLine();
System.out.print("Masukkan Nilai : ");
Nilai=Integer.parseInt(input.nextLine());

f.writeUTF(NIM);
f.writeUTF(Nama);
f.writeInt(Nilai);
System.out.print("Simpan data lagi (Y/T) ?");

pil=input.nextLine().toUpperCase().charAt(0);
} while (pil=='Y');
f.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}

Hasil output:
Masukkan NIM : 001
Masukkan Nama : Test1
Masukkan Nilai : 67
Simpan data lagi (Y/T) ?y
Masukkan NIM : 002
Masukkan Nama : Test2
Masukkan Nilai : 93
Simpan data lagi (Y/T) ?t

Contoh membaca file binary.


import java.io.RandomAccessFile;
import java.io.IOException;

class Coba {
public static void main(String[] args)
{
String NIM="000",Nama="Test";
int Nilai=80;
RandomAccessFile f=null;

try {
f=new RandomAccessFile("Test.dat","r");
while (f.getFilePointer()<f.length()) {
System.out.println(f.readUTF());
System.out.println(f.readUTF());
System.out.println(f.readInt());
}
f.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}

Hasil output:
001
Test1
67
002
Test2
93

29

You might also like