Praktikum I Type Data Sederhana Write, Writeln, Read, Readln

advertisement
Praktikum I
Type Data Sederhana
Write, Writeln, Read, Readln
Tujuan :
> Mempelajari Komponen Java
> Mengistall SE SDK dan Setting Patch
> Mempelajari Struktur Penulisan Kode Java
> Mempelajari dan mengerti statemen print & println
> Mempelajari cara mengcompile dan menjalankan file java
Teori :
1. Mempelajari Komponen Java
● JVM (Java Virtual Machine)
Java dapat berjalan pada sebuah sistem operasi membutuhkan Java Virtual
Machine (JVM). JVM sendiri terdiri dari Java Runtime Environment (JRE) dan
Java Development Kit (JDK). Sun Microsystems mengeluarkan tiga kelas paket
Java, yaitu J2-SE JRE (hanya berisi JRE), J2- SE SDK (berisi JDK + JRE), dan
J2-EE SDK (berisi JDK+JRE dan tools untuk aplikasi enterprise). Untuk versi
SE (Standard Edition) tersedia gratis pada situs www.java.com.
● IDE (Integrated Development Environment)
IDE (Integrated Development Environment) adalah sebuah editor pemrograman
sebuah bahasa. Untuk Java sendiri ada banyak IDE yang tersedia dipasaran
baik yang bersifat gratis (freeware) ataupun yang berbayar. Beberapa IDE yang
populer
antara
lain,
Jcreator
(www.jcreator.com),
Netbeans
(www.netbeans.org), Jbuilder (www.borland.com/jbuilder), dan lain-lain.
● Class
Unit yang paling mendasar dalam pemrograman java adalah class. Class
adalah komponen aplikasi yang menangani kode dan data dalam
pemrograman java.
2. Menginstall SE SDK dan Setting Patch
Doble clik setup J2SDK ikuti perintah selanjutnya sampai opsi destination folder. Pilih
lokasi J2SDK kemudian ikuti pilihan next sampai selesai sesuai settingan standar.
Untuk melakukan setting path yang harus kita ketahui adalah posisi kita menginstall
J2SDK yang telah kita lakukan di destination folder. Langkah-langkah yang perlu
dilakukan untuk setting path antara lain: Start Menu – Control Panel – System –
System setting – Environtment Variables – sorot path – edit - paste posisi folder bin
tempat menginstal J2SDK ke variable value – restart system.
3. Struktur Penulisan Kode Java
public class latihan1{
→ Deklarasi Kelas
public static void main (String [ ] args){
→ Method java
→ Tempat menulis kode
}
1
4. Statement print dan println
Defaultnya print adalah perintah output data ke layar monitor tanpa ganti baris.
Sedangkan println adalah perintah output data ke sebuah aliran seperti
DataInputStream.
Contoh program
Membuat file latihan1.java
public class latihan1{
public static void main (String [] args){
System.out.println(“Hallo”);
System.out.print(“Ini program latihan”);
}
}
2
Praktikum II
Input/Output Data Sederhana dan tipe data
Tujuan :
> Mempelajari cara input ke variabel
> Mempelajari konversi tipe data di Java
Teori :
1. Mempelajari cara input ke variabel
a. Input dengan DataInputStream
kita menggunakan class DataInputStream yang berada di package java.io untuk
mendapatkan input dari keyboard. Langkah-langkah yang diperlukan yaitu:
1. Tambahkan bagian atas code dengan
import java.io.*;
2. Tambahkan statemen berikut:
DataInputStream input = new DataInputStream(System.in);
3. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan
fungsi readLine() untuk mendapatkan input dari keyboard. Anda harus
mengetikkannya di dalam blok try-catch:
try{
String temp = dataIn.readLine();
}
catch( IOException e ){
System.out.println(“Error in getting input”);
}
b. Input dengan BufferedReader
Pada bagian ini, kita akan menggunakan class BufferedReader yang berada di
package java.io untuk mendapatkan input dari keyboard. Berikut ini adalah
langkah-langkah yang diperlukan untuk mendapatkan input dari keyboard:
1. Tambahkan di bagian paling atas code Anda:
import java.io.*;
2. Tambahkan statement berikut:
BufferedReader dataIn = new BufferedReader(new
InputStreamReader(System.in));
3. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan
fungsi readLine() untuk mendapatkan input dari keyboard. Anda harus
mengetikkannya di dalam blok try-catch:
try{
String temp = dataIn.readLine();
}
catch( IOException e ){
System.out.println(“Error in getting input”);
}
2. Konversi tipe data di Java
3
Contoh program
Membuat file latihan2.java
import java.io.*;
public class latihan2{
public static void main (String [ ] args){
System.out.println(“Hallo”);
System.out.print(“Ini program latihan”);
/*
Bagian Data Input Stream
*/
DataInputStream input1 = new DataInputStream(System.in);
String nama;
System.out.print(“Masukkan nama anda : “); input1.read();
System.out.println(“Nama anda :”+nama);
/*
Bagian BufferReader
*/
BufferedReader input2 = new
BufferedReader(new InputStreamReader(System.in));
String alamat;
System.out.print(“Masukkan nama anda : “); input2.read();
System.out.println(“Nama anda :”+nama);
}
}
4
Praktikum III
Struktur Kontrol Percabangan
Tujuan :
> Mempelajari dan mengerti statement if .. else untuk melakukan percabangan
berdasarkan kondisi tertentu.
> Mempelajari dan mengerti statemen case / switch
Teori :
> operator kondisi dan operator logika digunakan pada proses menentukan pilihan
dalam kondisi tertentu.
Contoh Kondisi if..else:
if (nilai > 99){
→ pengecekan kondisi
System.out.println(“Nilai anda Bagus”);
→ pernyataan dari cek kondisi
}else{
System.out.println(“Nilai anda Sedang”);
→ pernyataan selain pernyataan
1
}
Contoh kondisi case/switch:
switch(pilih){
case 1:
System.out.println(“A”);break;
case 2:
System.out.println(“B”);break;
case 3:
System.out.println(“C”);break;
}
→ menguji variabel pilih
→ pernyataan bila pilih = 1
→ pernyataan bila pilih = 2
→ pernyataan bila pilih = 3
Contoh Program :
package mainsuit;
import java.io.*;
public class MainSuit {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// cetak aturan main dan input dari user
System.out.println("Permainan suit");
System.out.println("==============");
System.out.println("Masukkan salah satu dari 3 kemungkinan :");
System.out.println("J untuk Jempol");
System.out.println("T untuk Telunjuk");
System.out.println("K untuk Kelingking");
5
System.out.println(""); // baris kosong
// variabel untuk mengambil input dari user
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = null;
// Kita gunakan pernyataan while hingga user betul
// memasukkan salah satu dari J, T, atau K
boolean inputvalid = false;
int suitKomputer = 0;
int suitUser = 0;
// selama input tidak valid, jalankan perulangan ini
while (!inputvalid) {
System.out.print("Masukkan suit Anda ");
try {
input = br.readLine();
} catch (IOException ioe) {
System.out.println("Kesalahan IO, program berhenti");
System.exit(1);
}
// pastikan bahwa user memasukkan sesuatu dengan mengecek
// apakah panjang input > 0
// jika tidak, maka perulangan akan dilanjutkan
if (input.length() > 0) {
switch (input.charAt(0)) {
case 'j' :
case 'J' :
suitUser = 0;
inputvalid = true; // kita ganti inputvalid agar perulangan selesai
break;
case 't' :
case 'T' :
suitUser = 1;
inputvalid = true; // kita ganti inputvalid agar perulangan selesai
break;
case 'k' :
case 'K' :
suitUser = 2;
inputvalid = true; // kita ganti inputvalid agar perulangan selesai
break;
}
}
}
// sekarang menghitung suit komputer
// Math.random() menghasilkan nilai acak antara 0 dan 1
// jika kita kali 3, berarti menghasilkan nilai acak antara 0 dan 3
// perintah (int) untuk mengubah bilangan real menjadi bilangan bulat
// dengan cara menghilangkan semua digit di belakang koma
// misalnya 1.0232323 menjadi 1
suitKomputer = (int)(Math.random()*3);
6
// suatu saat "mungkin" nilai random bernilai 3
// karena 3 tidak ada dalam suit kita, maka kita harus ubah menjadi
// salah satu suit yang valid, yaitu 0, 1, atau 2
// dalam hal ini kita ganti jadi 2
if (suitKomputer == 3) {
suitKomputer = 2;
}
// menghitung siapa yang menang
switch (suitKomputer) {
// jika komputer Jempol
case 0:
// cetak suit Komputer
System.out.println("Suit komputer = Jempol");
switch (suitUser) {
// jika user Jempol
case 0:
System.out.println("Seri");
break;
// jika user Telunjuk
case 1:
System.out.println("Anda kalah");
break;
// jika user Kelingking
case 2:
System.out.println("Anda menang");
break;
}
break; // dari switch(suitKomputer)
// jika komputer Telunjuk
case 1:
// cetak suit Komputer
System.out.println("Suit komputer = Telunjuk");
switch (suitUser) {
// jika user Jempol
case 0:
System.out.println("Anda menang");
break;
// jika user Telunjuk
case 1:
System.out.println("Seri");
break;
// jika user Kelingking
case 2:
System.out.println("Anda kalah");
break;
}
break; // dari switch(suitKomputer)
// jika komputer Kelingking
case 2:
// cetak suit Komputer
System.out.println("Suit komputer = Kelingking");
switch (suitUser) {
7
// jika user Jempol
case 0:
System.out.println("Anda kalah");
break;
// jika user Telunjuk
case 1:
System.out.println("Anda menang");
break;
// jika user Kelingking
case 2:
System.out.println("Seri");
break;
}
break; // dari switch(suitKomputer)
}
}
}
8
Praktikum IV
Struktur Kontrol Perulangan
Tujuan :
> Mempelajari dan mengerti statement for untuk melakukan perulangan
> Mempelajari dan mengerti statement while
> Mempelajari dan mengerti statement do.. while
Teori :
For dan While merupakan operator perulangan yang digunakan untuk memproses
nilai atau variabel dalam satu blok perintah secara berulang-ulang ataupun kontinyu
tergantung pada kondisi yang ditentukan.
Contoh for:
for (int i = 0; i<10; i++){
System.out.print(“Nilai i = ”+i);
}
Contoh while:
while (i < 10){
System.out.print(“Nilai i = “+i);
i++;
}
Contoh do.. while:
do{
i++;
System.out.print(“Nilai i = “+i);
}
while(i<10);
9
Praktikum V
Statemen Break dan Continue
Tujuan :
> Mempelajari dan mengerti keyword break dan continue.
Teori :
> Break
Berfungsi untuk menghentikan statement yang terletak pada bagian loop yang
terdalam. Biasanya digunakan bersama dengan statement yang mengandung if.
> Continue
Keyword ini hanya menghentikan perulangan yang sedang berlangsung. Kendali
program akan menuju akhir dari body loop. Sama seperti break, keyword ini
biasanya digunakan bersama dengan statemen yang mengandung if
Contoh Program :
/*
* Latihan Break
*/
public class latihan5break{
public static void main (String [ ] args){
int counter = 0;
System.out.println(“\n Program Demo Break”);
System.out.println(“--------------------------------”);
while (counter < 100)
{
counter ++;
if (counter == 7) break;
}
System.out.println(“Counter terakhir adalah : “+ counter);
}
}
/*
* Latihan Continue
*/
public class latihan5break{
public static void main (String [ ] args){
int counter = 0; int counterdiabaikan = 0;
System.out.println(“\n Program Demo Break”);
System.out.println(“--------------------------------”);
while (counter < 100)
{
counter ++;
if (counter == 7) {
counterdiabaikan = counter;
10
continue;
}else{
System.out.println(“Mencetak counter ke = ”+ counter);
}
}
System.out.println(“Counter terakhir adalah : “+ counter);
}
}
11
Praktikum VI
Array
Tujuan :
> Mempelajari dan mengerti cara mendeklarasi array
> Mempelajari cara menginisialisasi array
> Melewatkan array ke method
Teori :
Array adalah suatu entitas (kesatuan) yang beranggotakan elemen-elemen / varibel
bertipe data sama dan dapat diakses dengan memanggil nama array beserta indeks
elemennya.
Cara mendeklarasikan array
1. Tipe data [ ] nama_Array
Contoh : String [ ] data
2. Tipe data nama_Array[ ]; // lebih sering dipakai
Contoh : String data[ ]
Selanjutnya kita dapat membentuk objek array serta menugaskan ke variabel array
yang telah dideklarasikan, contohnya sebagai berikut :
namaArray = new tipedata[ukuran array];
Menginisialisasi Array
Pada saat array terbentuk pertama kali, elemen-elemennya akan memiliki nilai
default 0 untuk tipe numerik, blank (kosong) untuk char, dan salah (false) untuk
boolean. Cara berikut untuk mengakses suatu elemen dari array.
namaArray[indeks];
indeks adalah bilangan integer yang menunjukkan letak ukuran elemen itu dalam
array. Indeks dari array berukuran N dimulai dari 0 hingga N-1. Untuk mengetahui
panjang/jumlah elemen dapat digunakan metode length().
Contoh:
1. int [ ] deretBilangan = {1,2,3,4,5,6};
2. Inisialisasi elemen satu persatu seperti berikut:
deretbilangan[0] = 10;
deretbilangan[1] = 11;
...
deretbilangan[9] = 20;
3. inisialisasi dengan for sebagai berikut:
for (int i=0; I < 10; i++){
deretbilangan[i] = 10*i;
}
Melewatkan Array ke Method
12
Java menggunakan dua jenis mekanisme untuk melewatkan argumen ke suatu
method, antara lain:
1. Untuk variabel bertipe data primitif, yang akan dilewatkan ke method adalah
nilai aktualnya. Perubahan nilai variabel pada saat mengoperasikannya
didalam method tidak akan mengubah nilai variabel tersebut. Mekanisme ini
dinamakan Pass by Value.
2. Pada variabl array, nilai yang dilewatkan pada hakikatnya adalah alamat
referensi memory yang menunjuk array tersebut. Bukan nilai aktual masingmasing elemennya. Bila alamat referensi ini berubah pada saat
mengoperasikannya di dalam method, maka akan mengubah nilai variabel
array asalnya. Mekanisme ini dinamakan Pass by Reference.
Namun, bila kita mengambil nilai suatu elemen dari array, dan kemudian
melewatkannya ke method, maka elemen itu akan diperlakukan seperti pada tipe
data primitif.
13
Praktikum VII
String
Tujuan :
> Mempelajari dan mengerti String.
> Mempelajari dan mengerti cara menginisialisasi String
> Membaca Karakter secara individu dalam String
> Membandingkan String (Metode Equals dan CompareTo)
Teori :
String adalah deretan karakter. Pada bahasa pemrograman lain, string dianggap
sebagai array dari karakter. Namun, dalam java string diperlakukan sebagai suatu
objek. Ada tiga kelas string yang ada di java yaitu kelas String, kelas String Buffer,
dan kelas String Tokenizer.
Kelas String
Kelas String memodelkan deretan karakter sebagai suatu string. Kelas ini
terdapat dalam package java.lang.
Operasi-operasi pada kelas String
Kelas String memiliki beberapa method yang sering digunakan dalam operasi
string. Beberapa diantaranya adalah:
1. Membuat dan menginisialisasi string.
2. Membaca karakter secara individu dalam string.
3. Membandingkan dua string.
4. Mengubah karakter kecil menjadi kapital dan sebaliknya.
5. Menggabungkan dua string.
6. Mencari karakter dan substring.
7. Mengekstrak substring.
8. Mengkonversi objek menjadi string.
Membuat dan Menginisialisasi String
Ada dua cara membuat dan menginisialisasi objek string yaitu:
1. Mendeklarasikan string sebagaimana literal tipe data primitif.
String kata = “Hallo”;
2. Membuat objek string dengan operator new dan menugaskan
// digunakan untuk membentuk objek string dari kelas
String kata = new String (“Hallo”);
Catatan : cara pertama merupakan perlakuan istimewa Java kepada String.
Karena menganggap String sebagai suatu tipe data, seperti layaknya tipe data
primitif lainnya seperti byte, short, char, boolean dan sebagainya. Padahal String
dalam Java merupakan kelas sehingga bila mengikuti kaidah pembentukan objek
dari suatu kelas maka hanya bentuk kedualah sebagai cara pembentukan objek dari
suatu kelas.
Membaca Karakter Secara Individu dalam String
14
Ada dua Method yang sering digunakan untuk membaca karakter yang menyusun
suatu string secara individu yaitu:
1. int length()
Method ini akan mengembalikan jumlah karakter dalam suatu string.
Digunakan untuk menentukan batas akhir dari indeks yang dipakai sebagai
petunjuk posisi pada method charAt(int index).
2. char charAt(int index)
Membaca satu karakter pada suatu posisi yang ditunjukkan oleh indeks
dalam string. Karakter pertama dalam string memiliki indeks=0 dan karakter
terakhir memiliki indeks = jumlah karakter pembentuk string -1 atau
objekString.length()-1.
Membandingkan String
Sebelum membahas perbandingan dua string, kita bahas prinsip
perbandingan karakter dan string.
1. Membandingkan Karakter
Dalam Java, karakter dibandingkan berdasarkan representasi nilai mereka
sesuai dengan kode Unicode. Unicode adalah sistem pengkodean karakter
yang mengadopsi sistem ASCII serta menambahkan beberapa karakter yang
terdapat dalam bahasa Cina, Arab, dan sebagainya. Java menggunakan
Unicode sebagai acuan pengkodean karakternya.
Boolean test = 'x' < 'y'; // true karena nilai x (120) < y (121)
Anda dapat melihat kode ASCII untuk melihat representasi suatu karakter
dengan nilai data binernya.
2. Membandingkan dua String
Dua string dibandingkan secara “leksikografi”, yakni membandingkan tiap-tiap
karakter penyusun kedua string tersebut sesuai dengan posisinya masingmasing.
Literal string “saya” berbeda dengan “Saya” pada karakter awalnya karena
s=115 sendangkan S = 83. Karakter-karakter lainnya ('a','y','a') adalah sama.
Untuk membandingkan String Java telah menyediakan method equals() dan
compareTo().
a. Method Equals
Bentuk :
boolean equals(Objek obj)
boolean equalsIgnoreCase(String str2)
Kedua methode diatas akan membandingkan dua buah String sebagai dua
objek yang berisi deretan karakter. Bentuk pertama akan memeriksa sesuai
dengan ekivalensi karakter dengan representasi data biner. Sedangkan
bentuk kedua akan membandingkan dengan mengembalikan huruf kecil
dengan kapital.
b. Method Compare To
Bentuk :
int compareTo(String str2)
int compareTo(Object obj)
15
1. Bernilai 0, jika string sama dengan string argumen
2. Bernilai lebih kecil dari pada 0, jika string tersebut secara leksikal lebih
kecil daripada String argumen.
3. Bernilai lebih besar dari pada 0, jika string tersebut secara leksikal lebih
besar daripada string argumen.
Bentuk kedua akan memiliki proses yang sama dengan pertama, bila
argumen object memang merupakan suatu objek String. Bila tidak ia akan
melemparkan suatu ClassCastException.
16
Praktikum VIII
Kelas dan Method
Tujuan :
> Mempelajari dan mengerti Kelas.
> Mempelajari dan mengerti Kelas dan Method Standard / Fundamen
> Mempelajari dan mengerti Kelas dan Method yang Didefinisikan sendiri
> Mempelajari dan mengerti Deklarasi Kelas beserta Aturan Kelas
> Mempelajari dan mengerti Method
Teori :
Mempelajari dan mengerti Kelas
Pada pemrograman terstruktur seperti Pascal atau C, programmer akan membagi
program menjadi beberapa modul sesuai dengan tugasnya masing-masing untuk
mengurangi kompleksitas aplikasi. Modul atau sub program itu dikenal dengan istilah
procedur atau fungsi. Dalam konsep OOP, seperti Java atau C++, modul berupa
kelas dan method. Kelas dan method ini dibagi menjadi dua, yaitu:
1. Kelas dan method standard / fundamen
Merupakan predefined class/method, yakni kelas/method yang telah
disediakan oleh Java menjadi reference library. Java telah menyediakan
begitu banyak kelas standard maupun method yang dapat digunakan untuk
aplikasi yang spesifik. Kumpulan dari method ini dikenal juga sebagai API
(Application Programming Interface).
2. Kelas dan method yang didefinisikan sendiri
Selain menggunakan kelas dan method standad, terkadang kita perlu
membuat program besar menjadi beberapa kelas. Pada fase ini anda
menggunakan pendekatan top down. Selanjutnya, bila mulai dari merancang
kelas kemudian memperhatikan masing-masing hubungannya dengan kelas
yang lain dinamakan pendekatan bottom up.
Deklarasi Kelas
Bentuk deklarasi kelas yang paling sederhana adalah:
Class namakelas{
Class body
}
Bentuk deklarasi ini akan membentuk kelas dengan sifat atau biasa desebut modifier
default. Namun adakalanya kelas didefinisikan dengan sifat suatu kelas/data/
method terhadap kelas/data/method yang lain.
Secara umum, kelas memiliki struktur anatomi sebagai berikut:
Modifier1 Class namakelas modifier2{
Class body
}
17
Modifier 1 (optional)
Keterangan
Public
Menyatakan bahwa kelas tersebut dapat juga diakses oleh
kelas yang lain, baik yang masih berada dalam package
yang sama maupun berbeda.
Private
Menyatakan bahwa kelas tersebut tidak dapat diakses sama
sekali oleh kelas lain. Tanpa memandang apakah ia berasal
dari paket yang sama atau bukan.
Protected
Membatasi akses kelas yang dilakukan oleh subkelas
turunannya (dalam proses pewarisan/inheritance) dan kelas
lain yang terletak dalam paket yang sama.
Abstract
Menyatakan bahwa kelas tersebut tidak dapat diinstansiasi
langsung menjadi objek. Modifier ini hanya dipakai bila kelas
tersebut terletak pada hierarki kelas tertinggi, sehingga
hanya mungkin diturunkan sebagai subkelas, bukan
diinstansiasi menjadi objek.
Final
Menyatakan bahwa kelas tersebut tidak dapat diturunkan
menjadi subkelas (pewarisan/inheritance)
Modifier 2 (optional)
Keterangan
Extends SuperClass
Digunakan dalam prinsip inheritance, yaitu bila kelas
tersebut merupakan subkelas dari suatu kelas super
(Superclass). Inheritance adalah salah satu pilar penting
dalam OOP, dimana suatu kelas dapat mewariskan seluruh
data dan method yang dimilikinya kepada kelas lainnya.
Kelas yang mewariskan disebut kelas super (SuperClass),
sedangkan kelas yang menjadi ahli waris dinamakan
subkelas (SubClass).
Implements Interfaces
Digunakan bila kelas tersebut mengimplementasi satu atau
lebih interface. Bila terdapat lebih dari satu interface,
digunakan koma diantara interface-interface tersebut.
Aturan Penamaan Kelas
Aturan Dasar
1. Dimulai dengan abjad atau karakter undercross ( _ ) atau tanda dollar ( $ ).
Nama kelas tidak dapat dimulai dengan bilangan. Setelah karakterpertama,
dapat diikuti abjad, underscore, dollar atau bilangan.
2. Tidak boleh menggunakan keyword dalam Java (public, class, boolean, dsb..)
3. Tidak boleh menggunakan operator(+,-,=)
4. Java bersifat case sensitive
Aturan Konvensi
18
1. Nama Kelas hendaklah merepresentasikan apa yang akan dideklarasikan.
Namun tetaplah mudah diingat dan dituliskan, bukan hanya satu abjad saja.
Contoh kelas “latihan”, bukan “l”.
2. Huruf pertama dalam nama kelas hendaklah huruf kapital.
3. Bila nama kelas terdiri dari dua kata atau lebih, kedua kata itu digabungkan.
Huruf pertama dari setiap kata sebaiknya huruf kapital. Contoh “SepakBola”
4. Semua huruf selain aturan butir b dan c dituliskan dalam bentuk huruf kecil.
Perlu diingat aturan sebagai berikut:
1. Dalam satu file .java diperbolehkan memiliki lebih dari satu kelas.
2. Dalam satu file .java jumlah kelas yang boleh dideklarasikan sebagai public
hanya satu dan nama file .java ini harus sama dengan nama kelas yang
dideklarasikan sebagai public.
3. Bila dalam satu file source *.java terdapat sejumlah n kelas, maka pada saat
kompilasi akan dihasilkan sebanyak n file *.class. Proses ini sama seperti bila
kelas-kelas tersebut dituliskan dalam file *.java yang berbeda.
Scope/Blok
Scope adalah grup yang menghimpun bagian tertentu dari program dan
dapat dianggap sebagai satu kesatuan modul. Scope bisa berupa kelas, blok atau
method dan selalu ditandai oleh kurung kurawal buka dan tutup { }.
Deklarasi Method
modifier TipeNilaiKembalian namaMethod (parameter input) throws exception{
// isi method
}
Keterangan:
Modifier yang digunakan sama dengan modifier untuk mendeklarasikan kelas.
Namun implikasi penggunaanya belum tentu sama persis. Selain seperti modifier
yang digunakan untuk mendeklarasikan kelas, ada dua lagi modifier untuk method
yaitu native dan synchronized.
native
Modifier ini digunakan bila anda ingin menggunakan method (fungsi) yang
masih ditulis dalam bahasa pemrograman lain, misalnya C. Dibutuhkan
pengetahuan tambahan tentang Java Native Interface (JNI) untuk dapat
mengimplementasikan method antar bahasa pemrograman ini.
Synchronized
Digunakan untuk multithreading.
Tipe nilai kembalian (Return Value Type)
Dilihat dari nilai kembaliannya (return Value), method memiliki dua kemungkinan,
yaitu mengembalikan suatu nilai atau tidak. Bila method mengembalikan nilai, maka
tipe nilai kembaliannya (return type) harus dituliskan sesuai tipe datanya, sedangkan
bila tidak mengembalikan nilai, maka return value nya void.
19
Aturan Penamaan Method
Aturan dasar dan anjuran konvensi sama dengan aturan dan penamaan variabel
Aturan Dasar (harus diikuti)
1. Dimulai dengan abjad (a,b,c,...) atau karakter underscore ( _ ) atau tanda
dollar ( $ ). Nama Method tidak dapat dimulai dengan bilangan (0,1,2,...)
setelah karakter pertama, dapat diikuti kombinasi abjad. Underscore, dollar
atau bilangan.
2. Tidak boleh menggunakan reserved keyword dalam java
3. Tidak boleh menggunakan operator (+,-,=)
4. Java bersifat case sensitive (membedakan huruf kecil dan kapital). Sehingga
abjad “a” dan “A” diperlakukan sebagai dua karakter yang berbeda.
Aturan Konvensi
1. Bila nama method hanya terdiri dari satu abajad atau satu kata, semua abjad
dituliskan dalam huruf kecil. Contoh: “a”,”x”, “perkalian”,”isian”
2. Bila nama method terdiri dari dua kata atau lebih, kedua kata itu
digabungkan. Huruf pertama dari kata pertama sebaiknya huruf kecil.
Sedangkan huruf pertama kata kedua dan kata berikutnya sebaiknya huruf
kapital. Contoh : “perkalianMatriks”, “perhitunganGaji”.
Memanggil Method
Sama seperti ketika mengakses variabel. Bentuk umum memanggil method adalah:
NamaKelas.namaMethod();
Melewatkan Argumen ke Method
ada dua cara melewatkan argumen ke method, sama seperti pada kelas
1. Melewatkan secara nilai (Pass by Value)
2. Melewatkan secara referensi (Pass by Reference)
20
Praktikum IX
Package (Paket) dan Modifier
Tujuan :
> Mempelajari dan mengerti pengertian dan penggunaan package.
> Mempelajari dan mengerti cara mengkompile dan menjalankan kelas dari suatu
package
> Mempelajari dan mengerti penggunaan modifier
Teori :
Pengertian Package
Package adalah cara pengelompokan dan pengorganisasian kelas-kelas dalam
suatu library. Seperti halnya paket dalam pengertian sehari-hari. Package akan
sangat bermanfaat pada saat membuat program yang besar dan kompleks, yang
membutuhkan banyak kelas dari library yang berbeda. Disamping itu, package
berfungsi juga mengatur aksesibilitas data atau method dari suatu kelas terhadap
kelas lainnya.Maksudnya adalah mengatur dapat tidaknya suatu method dari suatu
kelas mengakses/memanggil data atau method dari kelas lain.
Membuat Package
Ada tiga langkah untuk membuat package
1. Mendeklarasikan dan memberi nama package
Dibutuhkan deklarasi package yang harus dituliskan pada bagian awal dari
source code kelas tersebut sebelum deklarasi import untuk menyatakan
bahwa suatu kelas merupakan anggota dari suatu package.
2. Membuat struktur direktori yang sesuai dengan nama package
Langkah selanjutnya yaitu menempatkan kelas-kelas yang hakikatnya adalah
file kedalam folder atau direktori package yang sama.
3. Mengkompile kelas-kelas sesuai dengan packagenya masing-masing.
Selesai membuat dan menyimpan dalam folder package selanjutnya masingmasing kelas dicompile menjadi file byte code .class. Pada saat menjalankan
interpreter, diharuskan mengetikkan nama package dan kelas secara
lengkap.
Memanggil Kelas dari Suatu Package
Secara umum, bila ingin menggunakan kelas yang dideklarasikan dan dikompile ke
suatu package, maka perlu untuk membubuhkan statement import pada kelas
pemanggil. Fenomena yang berkaitan dengan letak file *.java dalam folder bila
ditinjau dari letaknya dalam folder, pemanggilan kelas suatu package dapat dibagi
menjadi dua yaitu:
1. Kedua kelas tersebut berada pada direktori yang sama
Misalkan ada dua kelas yaitu A dan B dalam sebuah direktory package yang
sama. Bila kelas B telah dideklarasikan dan dikopile kedalam package maka
A harus mencantumkan deklarasi import dari package tersebut. Namun bila
kelas A juga dideklarasikan dan dikompile pada package karena terletak
pada direktori yang sama maka kelas A boleh tidak mencantumkan statemen
import kelas B.
2. Kedua kelas berada dalam direktori yang berbeda
21
Pada kasus ini sudah jelas bahwa A sebagai kelas pemanggil harus
mencantumkan deklarasi import dari package kelas B.
Bentuk umum import:
import namaPackage.namaKelas;
Notasi asterik ( * )
Ada kalanya programmer ingin mengimport semua kelas yang terdapat dalam
suatu package. Java telah menyediakan notasi asterik ( * ) yang ditambahkan pada
akhir deklarasi import untuk melakukan import semua kelas dalam package.
Betuk umum
import namaPackage.*;
contoh:
import java.awt.*;
import javax.swing.*;
Modifier
Modifier adalah keyword yang digunakan sebagai pelengkap suatu unsur
(kelas/method/variabel) dan berfungsi menjelaskan bagaimana hubungan diantara
unsur-unsur tersebut. Misalnya bagaimana hubungan antar method dan variabel dari
suatu kelas terhadap method dan variabel dari kelas yang lain, dan sebagainya.
Karena bersifat melengkapi, maka modifier ini bersifat opsional.
Berikut ini jenis modifier yang sering digunakan dalam Java.
1. Public, private, protected
Modifier yang digunakan untuk mengatur aksesibilitas suatu
kelas/method/variabel.
2. Static
Dipakai untuk menyatakan bahwa suatu method dan variabel hanya dimiliki
oleh kelas yang bersangkutan dan tidak dapat diserahkan kepada objek pada
saat instansiasi. Maksudnya, meskipun dapat menciptakan objek dari kelas
tersebut, namun method dan variabel tidak dapat diakses melalui objek
tersebut.
3. Final
Digunakan bila suatu unsur (kelas/method/variabel) memiliki nilai yang tetap
(tidak dapat diubah)
4. Abstract
Digunakan pada kelas atau method untuk menyatakan bahwa unsur tersebut
tidak dapat secara langsung diinstansiasi menjadi objek.
5. Synchronize, transient dan volatile
Digunakan pada permograman yang mempertimbangkan faktor thread.
22
Praktikum X
Tiga Pilar OOP
Inheritance, Encapsutaltion dan Polymorphism
Tujuan :
> Mempelajari dan mengerti Inheritance (Pewarisan)
> Mempelajari dan mengerti Encapsulation (Enkapsulasi)
> Mempelajari dan mengerti Polymorphism
Teori :
Inheritance
Inheritance adalah proses pewarisan seluruh data dan method yang dimiliki oleh
suatu kelas kepada kelas lainnya. Kelas yang mewariskan disebut kelas Super,
Kelas yang diwarisi disebut Subkelas. Sedangkan Overriding adalah kemampuan
suatu subkelas untuk memodifikasi data dan method dari kelas induknya. Overriding
disebut juga redefinisi data dan method. Ada dua alasan mengapa melakukan
overriding, yaitu:
1. Mendefinisikan kembali method kelas induk secara total
Perubahan dilakukan secara menyeluruh, baik jumlah maupun tipe parameter
dari argumen inputnya, tipe nilai kembaliannya, maupun behaviour pemrosesan
datanya.
2. Menambahkan behaviour tertentu pada method kelas induknya. Perubahan
hanya dilakukan untuk menambahkan behaviour yang khusus dimiliki hanya oleh
kelas anak tersebut.
Catatan : programmer harus memperhatikan bagaimana tingkat aksesibilitas data
dan method tersebut (public, private, protected, atau default). Keyword Extends
digunakan keyword extends untuk mengaplikasikan pewariasan (inheritance).
Keyword ini menyatakan bahwa suatu kelas merupakan perluasan dari kelas lain
yang dijadikan basis (kelas induk).
Keyword Super digunakan oleh suatu kelas anak untuk memanggil konstruktor atau
method yang dimiliki oleh kelas induk yang menjadi basisnya. Cara memanggil
konstruktor kelas super yaitu dengan :
super();
super(parameter);
Enkapsulasi
Enkapsulasi adalahcara membungkus data dan method yang menyusun kelas dan
menyembunyikanya dari dunia luar. Termasuk disini adalah menentukan tingkat
aksesibilitas dari masing-masing data dan method serta menyembunyikan detail
implementasinya dari “dunia luar”. Dalam pemrograman, menyembunyikan detail ini
dikenal dengan istilah Information Hiding. Beberapa keuntungan penerapan prinsip
enkapsulasi :
1. Bersifat independen
23
Suatu modul yang terenkapsulasi dengan baik akan bersifat independen dari
modul lainnya sehingga dapat digunakan pada bagian manapun dari program. Ia
tidak akan terikat pada bagian tertentu dari program.
2. Bersifat transparan
Bila modul dimodifikasi, maka perubahan tersebut juga dirasakan oleh program
pengguna modul tersebut.
3. Menghindari efek yang diluar perencanaan
Modul yang terenkapsulasi dengan baik hanya akan berinteraksi dengan bagian
program lainnya melalui variabel-variabel input/output yang telah didefinisikan
sebelumnya. Dengan demikian akan mereduksi kemungkinan adanya hasil
imbas pemrosesan yang diluar perencanaan semula.
Polymorphism
Makna polymorphism adalah sesuatu yang memiliki banyak bentuk. Sehingga dapat
diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour
(tingkah laku) yang berbeda sehingga listing code implementasinya berbeda.
24
Praktikum XI
Kelas Inner, Kelas Abstrak dan Interface
Tujuan :
> Mempelajari dan mengerti Kelas Inner
> Mempelajari dan mengerti Kelas Abstrak
> Mempelajari dan mengerti Kelas Interface
Teori :
Kelas Inner (Inner Class)
Kelas inner adalah kelas yang disisipkan di dalam kelas yang lain. Fungsi kelas sisipan
ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya.
Beberapa ketentuan Inner Class adalah sebagai berikut:
1. Bila sebuah kelas mengandung suatu inner kelas, maka pada saat kompilasi akan
dihasilkan file *.class untuk keduanya (kelas utama dan kelas innernya). Untuk kelas
inner akan memiliki nama namakelasterluar$namakelasinner.class. Bila kelas inner
tersebut tidak diberi nama maka format filenya menjadi namakelasterluar$#.class.
Simbol # menyatakan nomor urutan kelas inner.
2. Inner class yang dideklarasikan dengan nama dapat dibubuhi dengan modifier
public, private dan protected
3. Gunakan bentuk Namakelasterluar.this untuk mengakses refernsi this dari kelas
terluar.
4. Dalam proses pembentukan objek, kelas terluar bertanggung jawab untuk
menciptakan objek dari kelas innernya. Prosesnya sebagai berikut
Kelas Terluar a = new KelasTerluar();
Kelas Terluar.KelasInner b = a.new Kelas Inner();
5. Inner kelas dapat dibubuhi modifier static. Dengan modifier static maka anda akan
dapat membuat objek dari kelas inner tersebut tanpa harus melalui kelas terluarnya.
Sebagai konsekuensi, maka kelas inner tidak dapat mengakses variabel maupun
method nonstatic dari kelas terluarnya.
Kelas Abstrak
Adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas. Kelas ini digunakan
sebagai basis bagi penurunan kelas-kelas lainnya, sehingga tidak dapat diinstansiasi
secara langsung menjadi objek. Bentuk umum
Modifier tambahan abstract class Namakelasabstract{
Variabel umum dan deskripsi method tanpa implementasi.
}
Kelas Interface
Adalah kumpulan method yang hanya memuat deklarasi struktur method, tanpa detail
implementasinya.
Keterbatasan Inheritance
Inheritance adalah proses pewarisan data dan method dari suatu kelas induk (kelas
super) kepada kelas anaknya (subkelas). Sebuah subkelas atau kelas turunan hanya
boleh diturunkan dari satu kelas induk, tidak boleh lebih.
25
Interface merupakan solusi atas prinsip pewarisan lebih dari satu (multiple inheritance).
Dengan interface, suatu objek dapat memiliki behaviour yang berasal dari beberapa
referansi.
Interface = kelas abstract?
Ada kemiripan, namun secara umum ada perbedaan dengan kelas abstract
Perbedaan Komponen penyusun Kelas Abstrak dan Interface antara lain:
1. Tipe data/variabel
Kelas Abstrak
semua tipe data
Interface
hanya boleh berupa konstanta
2. Method
Kelas Abstrak
bisa berupa signaturnya saja atau berupa detail implementasi
method
Interface
hanya berupa signature, programmer harus mendefinisikan
dan membuat detail implementasi dari method. Jadi, method
yang terdapat dalam interface adalah method abstrak
3. Sintak Method
Kelas Abstrak
Semua method yang dideklarasikan dalam kelas abstrak harus
dibubuhi modifier abstract
Interface
Tidak perlu membubuhkan modifier abstract pada semua
method di dalam kelas
Perbedaan secara umum Kelas Abstrak dan Interface antara lain:
1. Definisi
Kelas
Pemodelan dari Objek
Interface
Kumpulan method yang hanya diterapkan pada aplikasi
tertentu
2. Kandungan Informasi
Kelas
Mendefinisikan variabel dan method secara detail dan konkret
Interface
hanya mendefinisikan signature dari method, selanjutnya
programmerlah yang menentukan detail method
3. Instansiasi
Kelas
Bisa diinstan menjadi objek
Interface
tidak dapat diinstan menjadi objek
26
Praktikum XII
Pemrograman GUI
Tujuan :
> Mempelajari dan Mengerti AWT (Abstract Windowing Toolkit).
> Mempelajari dan Mengerti Layout Management (Pengaturan letak komponen GUI)
> Mempelajari dan Mengerti Java Swing dan Event Handling
Teori :
AWT (Abstract Windowing Toolkit)
AWT terdapat dalam package java.awt. Package ini berisi komponen-komponen GUI
yang bersifat platform oriented atau tergantung pada platform sistem operasi.
Berbeda dengan packge javax.swing yang bersifat lightweight, yaitu dapat
diaplikasikan untuk semua platform multiplatform. Kedua platform ini mempunyai
mekanisme event handling yang sama.
Beberapa fasilitas yang disediakan oleh package java.awt antara lain:
1. Pengaturan tata letak (layout management) komponen dalam satu kontainer
2. Mendukung event handling, yaitu mekanisme pendeteksian event dan
penentuan respons yang akan diberikan ketika pengguna (user) mengakses
komponen tersebut.
3. Manipulasi grafis dari komponen, seperti font, warna, icon dan sebagainya.
Layout Management (Pengaturan letak komponen GUI)
Ketika merancang GUI, selain menentukan komponen apa yang akan digunakan.
Kita perlu merancang tata letak komponen dalam kontainer dikenal sebagai Layout
Management.
Layout Manager
Java menyediakan lima kelas Manager untuk mendukung perancangan tata letak
GUI.
Komponen Manager
Deskripsi
FlowLayout
Penentuan tata letak komponen didasarkan pada baris mulai
dari kiri ke kanan dan bari atas ke bawah. Flowlayout
digunakan untuk default layout manager untuk kelas Panel
dan Applet
GridLayout
Penentuan tata letak komponen didasarkan pada persegi
panjang grid
BorderLayout
Didasarkan pada lima posisi, yaitu east, west, nort, south dan
center. Merupakan default layout manager untuk window,
frame, dan dialog.
CardLayout
Komponen diperlakukan mirip tumpukan kartu, yang visible
hanyalah komponen yang terletak dibagian atas
GridBagLayout
Menggunakan komponen yang sama dengan GridLayout,
namun suatu komponen dapat menempati multiple cell
27
Langkah merancang layout GUI, yaitu:
1. Membuat Objek Kontainer
2. Meregistrasi Layout Manager ke objek kontainer pada langkah 1. registrasi
dilakukan dengan memanfaatkan method setLayout (objek) pada kontainer
3. Menambahkan komponen kepada objek kontainer
4. Menambahkan objek kontainer itu ke induk kontainer (penyusunan hierarki)
Java Swing dan Event Handling
Selain package java.awt, Java juga memiliki package javax.swing untuk membuat
komponen GUI. Swing lebih portable daripada AWT karena beberapa komponennya
bersifat multiplatform sehingga disebut dengan lightweight.
Komponen Swing dibagi menjadi
1. Root container
2. Label dan Button
3. Komponen Lightweight
4. Komponen Text
5. Komponen space-saving
6. Komponen dengan Model Kompleks
7. Komponen yang tersusun dari komponen lain.
Event Linstener dan Event Handler
Event adalah peristiwa yang distimulasi (di trigger) oleh user terhadap komponenkomponen GUI. Analoginya seperti bila anda mengetik pada JtextField maka ada
event tercipta event ini akan ditangkap oleh event listener. Karena masing -masing
komponen sudah diberi ID dan diberikan event listener maka java akan dapat
mengenali komponen mana yang menstimulai event. Selanjutnya event handler akan
memproses bila terjadi suatu event.
28
Download