Struktur Data & Algoritme
(
Data Structures & Algorithms
)
Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2000/2001
Version 1.0 - Internal Use Only
Denny
[email protected] Review Java
Objectives
n Mengulas kembali konsep-konsep penting dalam Java
SDA/REVIEW-JAVA/DN/V1.0/3
Outline
n Review Latihan n Primitive Type
n Operator & Expresion
n Flow Control (Decision & Iteration) n References
n OOP
n Exception Handling n Input & Output
Java: strongly typed languages
n Variabel adalah tempat penyimpanan suatu nilai tertentu.
n var•i•a•ble
• adj.
• 4 Math. having no fixed value • n.
• 4 Math., Physics a) a part of a mathematical
expression that may assume any value in a specific, related set of values b) a symbol for such a part:
SDA/REVIEW-JAVA/DN/V1.0/5
Tipe Data Primitif
n Terdapat dua jenis types:
n Primitive types: numeric type, boolean type
n Reference types: class, arrays dll.
tipe isi nilai default besar
boolean true, false false 1 bit
char unicode char \u0000 16 bit
byte signed integer 0 8 bit
short signed integer 0 16 bit
int signed integer 0 32 bit
long signed integer 0 64 bit
float IEEE 754/floating-point 0.0 32 bit
double IEEE 754/floating-point 0.0 64 bit
Operator & Ekspresi
n Apa outputnya? int ii = 1; int jj = 2;
double a = (ii + 1) / (jj + 1);
double b = (double) (ii + 1) / (jj + 1); double c = (ii + 1) / (double) (jj + 1); double d = (ii + 1.0) / (jj + 1.0);
System.out.println (a + " " + b); System.out.println (c + " " + d);
SDA/REVIEW-JAVA/DN/V1.0/7
Operator & Ekspresi (2)
n Apa outputnya? int width = 10; int a = 3 / 4 * width; System.out.println (a); int b = width * 3 / 4; System.out.println (b); int c = width / 4 * 3; System.out.println (c); n Ingat:
n tipe data hasil dari sebuah ekpresi, tergantung dari operator dan tipe operand-nya
n Urutan evaluasi tergantung dari presedensi operator-nya. Jika presedensi-nya sama, dilihat dari
asosiasinya.
Operator
n Berdasarkan jumlah operand-nya
n Unary
n Binary
n Berdasarkan operasinya
n Aritmatik
SDA/REVIEW-JAVA/DN/V1.0/9
Operator: Presedence & Associativity
n Nutshell, p. 34
Flow Control
n Branch
n Digunakan untuk memilih statement yang dieksekusi berdasarkan suatu kondisi.
n Loop - Iterasi
n Loop mengeksekusi sebuah blok kode secara berulang. Kondisi berhenti mengatur berapa banyak loop dilakukan.
SDA/REVIEW-JAVA/DN/V1.0/11
Flow Control:
if
n Kesalahan umum: if (x == 0);
System.out.println (“x adalah nol”);
if (x > 0) System.out.println (“x = “); System.out.println (x); if (condition) { statement; } next statement if (condition) { statement1 } else { statement2 } next statement
Flow Control:
switch
n Statement if-else-if yang membandingkan sebuah nilai konstan atau integer dapat menggunakan switch statement.
n Statement switch lebih efesien dibandingkan dengan if-else-if
int digit;
String digitName; ...
switch (digit) {
case 0: digitName = “nol”; break; case 1: digitName = “satu”; break; case 2: digitName = “dua”; break; case 3: digitName = “tiga”; break;
SDA/REVIEW-JAVA/DN/V1.0/13
Flow Control: conditonal operator
?
testExpr ? yesExpr : noExpr
n Digunakan untuk mempersingkat if-else yang sederhana. n Contoh: double x; double y; … if (x > 100) { y = x * 0.9; } else { y = x; } n ekuivalen dengan: y = (x > 100) ? (x * 0.9) : x;
Flow Control:
while
while (kondisi) {
statement; ...
}
/* Pasca kondisi: ~kondisi */
n Selama evaluasi dari ekspresi kondisi adalah true,
statement dieksekusi. Kemudian kondisi
di-evaluasi lagi.
n Jika evaluasi dari ekspresi kondisi adalah false, maka loop berakhir (statement tidak dieksekusi lagi).
SDA/REVIEW-JAVA/DN/V1.0/15
Flow Control:
do - while
do {
statement;
...
} while (kondisi);
/* Pasca kondisi: ~kondisi */
n statement dieksekusi terlebih dahulu, kemudian
kondisi di-evaluasi. statement minimal 1 kali dieksekusi.
n Jika kondisi true ⇒⇒ statement dijalankan kembali.
n Jika kondisi false⇒ loop selesai/keluar dari loop.⇒
n Sering terdapat kebutuhan untuk melakukan
statement pada loop terlebih dahulu, setelah itu baru menguji kondisi.
Flow Control:
for
for (inisialisasi; kondisi; update) { statement;
}
n Equivalen dengan while statement
inisialisasi; while (kondisi) {
statement;
update; }
SDA/REVIEW-JAVA/DN/V1.0/17
Flow Control:
break
n Digunakan untuk keluar dari loop terdalam (innermost).
n Tidak baik dalam programming (poor design) n Contoh: while (...) { ... if (something) { break; } ... }
Flow Control:
continue
n Digunakan untuk melanjutkan ke iterasi selanjutnya tanpa mengeksekusi sisa statement yang ada. n Tidak baik dalam programming (poor design) n Contoh:
for (int ii = 1; ii <= 100; ii++) { if (ii % 10 == 0) {
continue;
}
System.out.println (i); }
SDA/REVIEW-JAVA/DN/V1.0/19
Flow Control: Latihan
n Exercises 1.19
n Buat sebuah program yang dapat mencetak semua pasangan integer positif (a, b) dimana
a < b < 1000 dan (a2 + b2 + 1)/(ab) adalah sebuah integer.
Object Oriented Programming
n kelas (class)
n gabungan data-data dan operasi-operasi (method) dengan pembatasan akses
n satu class membentuk satu type tersendiri n obyek (object)
n personifikasi/instance dari suatu tipe kelas
n setiap object memiliki:
•suatu keadaan (state) ⇒ variable instance / field
SDA/REVIEW-JAVA/DN/V1.0/21
Class
n Class mencakup:
n Implementasi detil (blue print) dari suatu objek yang akan dibuat (create) ⇒ sejenis pabrik objek.⇒
n Class: menampung “methods” dengan sifat “static” dan objek-objek yang dibuat.
n Class: mendefinisikan implementasi detil dari objek
n semua method dan field
n instruksi/kode dari methods tersebut ⇒⇒ perilaku/behaviour
n Berdasarkan definisi class ⇒ object dapat dibuat.
Object
n Membuat object
n operator new:
•mengalokasikan tempat untuk object yang baru
•mengisialisasi object tersebut dengan memanggil constructor yang sesuai
•memberikan/mengembalikan alamat dari object yang dibuat.
n Contoh: new Integer (20);
n Mendeklarasikan variabel reference
n ClassName varName;
n Ingat: mendeklarasikan variabel reference saja tidak berarti membuat object-nya
SDA/REVIEW-JAVA/DN/V1.0/23
Object (2)
n Menyimpan alamat dari sebuah object
n Alamat dari object perlu disimpan supaya bisa digunakan kembali.
n Gunakan operator =
n Contoh: Integer x = new Integer (20);
n Ingat: operator = tidak menduplikasi object n Mengakses field dan menggunakan method
n gunakan operator . (dot/titik)
n Contoh: Dimension size; size = getSize (); System.out.println (size.width); System.out.println (size.getWidth());
Field
n Digunakan untuk menyimpan keadaan / state sebuah object/kelas
n Terdapat dua jenis macam field
n Instance variable
•Setiap object memiliki instance variable yang berbeda
⇒
⇒ variabel object
n Static variable
•Satu class hanya memiliki satu variable statik ⇒⇒
SDA/REVIEW-JAVA/DN/V1.0/25
Method
n Definisi Method terdiri dari:
n header
•penentu akses/access specifier (misalkan: public )
•tipe data yang dikembalikan: return type (mis.:
double or void)
•nama dari method (mis. deposit )
•daftar dari parameters method n body (implementasi dari method)
n Method yang tidak memiliki body/implementasi ⇒ method abstract
Method (2)
n Sama halnya dengan field, terdapat dua jenis method
n method non-static/instance
•method yang dipanggil harus ada obyeknya ⇒ method⇒
obyek
•selalu terdapat parameter implisit this ⇒ method⇒
dapat mengakses variabel instance n method static
•method yang dapat digunakan tanpa harus ada obyeknya ⇒ method kelas⇒
•tidak terdapat parameter implisit this ⇒ method⇒
TIDAK dapat mengakses variabel instance
n Penyaluran Parameter
n pass by value / call by value
SDA/REVIEW-JAVA/DN/V1.0/27
Reference Type
n Sebuah variabel reference dalam Java adalah variabel yang menyimpan alamat dimana sebuah object
disimpan.
n Bandingkan dengan variabel primitif dalam Java: variabel yang menyimpan nilai suatu tipe data primitif.
n Dengan kata lain, variabel referenceTIDAK
menyimpan object-nya, sedangkan variabel primitif menyimpan ‘object’-nya.
n Jadi tipe data non-primitif / reference dalam Java adalah Object.
Reference Type (2)
n Operator ==
n Untuk tipe data primitif, operator == dapat digunakan untuk memeriksa apakah dua buah variabel memiliki nilai yang sama.
n Untuk tipe data reference, operator == dapat digunakan untuk mengetahui apakah dua variabel reference menunjuk ke object yang sama. BUKAN
untuk memeriksa apakah dua object yang berbeda memiliki keadaan (state) yang sama.
SDA/REVIEW-JAVA/DN/V1.0/29
Array
n Deklarasi variabel array (array adalah object juga)
int [] array1;
n Ingat: mendeklarasikan variabel reference tidak mengalokasikan tempat / membuat objectnya. n Membuat array
array1 = new int[100];
int[] array2 = { 2, 3, 7, 5 };
n Untuk mengakses elemen array gunakan indeks
array1[0] = 20;
n Karena array adalah object juga, maka operator = tidak berarti menduplikasi array
int[] lhs = new int[100]; int[] rhs = new int[100]; ...
lhs = rhs;
Dynamic Array Expansion
n Misalkan kita ingin membaca barisan integer dari sebuah file dan kita simpan dalam array untuk diproses kemudian.
n Untuk membuat sebuah array, kita diwajibkan untuk menyatakan besar array tersebut supaya kompilator dapat mengalokasikan tempat yang sesuai.
n Jika kita tidak mengetahui berapa banyak integer yang akan dibaca, hal ini akan menyulitkan bagi kita untuk menentukan besar array tsb.
SDA/REVIEW-JAVA/DN/V1.0/31
Dynamic Array Expansion (2)
n Contoh:
int[] a = new int[10];
n jika array tidak cukup, kita lakukan pembesaran array sebagai berikut:
int[] original = a;
a = new int[original.length * 2];
for (int ii = 0; ii < original.length; ii++) { a[ii] = original[ii];
}
Array Multidimensi
n Array yang diakses dengan menggunakan lebih dari satu index.
int[][] x = new int[2][5];
n Soal:
n Buatlah sebuah fungsi cantor (diberikan besarnya) yang membuat matriks segitiga (array 2 dimensi), mengisinya dengan angka bertipe double yang bernilai seperti di bawah ini, dan mengembalikannya. Misalnya: untuk parameter besar = 5, maka yang dikembalikan adalah nilai-nilai seperti di bawah ini (dalam decimal/tipe double, bukan dalam pecahan ).
SDA/REVIEW-JAVA/DN/V1.0/33
public static double[][] cantor (int besar) {
double[][] result = new double[besar][]; for (int ii = 0; ii < besar; ii++) { result[ii] = new double[besar - ii];
for (int jj = 0; jj < result[ii].length; jj++) { result[ii][jj] = (ii + 1.0) / (jj + 1.0); // perhatikan tipe dari operasinya.
// (ii + 1) / (jj + 1) menghasilkan integer }
}
return result; }
Konsep OOP
n Berdasarkan empat prinsip utama:
n abstraksi (abstraction)
•proses penentuan ciri-ciri/detil-detil yang penting dari sebuah objek
n pembungkusan (encapsulation)
•Penggabungan data dan operasi-operasi yang bersesuaian menjadi satu kesatuan
•keutuhan data dijaga dengan adanya pengendalian akses (information hiding)
n pewarisan (inheritance)
•Membuat kelas baru dari kelas yang sudah ada
dengan mengembangkannya (extends).
•Kelas yang baru dapat menambahkan field dan method baru.
SDA/REVIEW-JAVA/DN/V1.0/35
Polymorfism
n “banyak bentuk”
n Dalam Java ada 2 macam polimorfisme:
n overloading: polimorfisme trivial
n overriding: polimorfisme sejati
Overloading
n penggunaan satu nama untuk beberapa method (fungsi) yang berbeda dalam suatu kelas
n method-method yang sama namanya itu dibedakan satu dengan yang lain berdasarkan signature-nya n Signature suatu fungsi (method) ditentukan oleh:
n jumlah argumen
n tipe argumen
n urutan argumen
SDA/REVIEW-JAVA/DN/V1.0/37
Overriding
n poliformisme jenis ini ditangani pada runtime
n terjadi apabila suatu class mempunyai suatu method yang nama dan signature-nya sama dengan nama dan signature dari suatu method dari superclass ybs. n Method dalam class turunan itu menimpa (override)
method dalam superclass-nya.
n Method mana yang dipanggil pada waktu run (runtime) tergantung pada tipe objek yang bersangkutan
Polymorfisme
n Dalam mendefinisikan method untuk suatu subclass, ada 3 kemungkinan:
n Meng-override method dari superclass. Yaitu: apabila method yang dibuat mempunyai signature yang sama (nama sama dan daftar parameternya sama) dengan suatu method dari superclass-nya.
n Meng-inherit method dari superclass. Method dari superclass yang tidak di-override akan diwariskan secara otomatis kepada subclass.
SDA/REVIEW-JAVA/DN/V1.0/39
Polymorfisme
n Ketika terjadi pemanggilan sebuah method,
class/type dari object tersebut yang menentukan implementasi method mana yang digunakan. n Ada tidaknya sebuah method ditentukan dari tipe
variabel reference-nya
n Dalam mengakses sebuah field, ditentukan dari tipe variabel reference-nya
n Keyword “super” berlaku sebagai reference ke object tetapi dianggap sebagai instance dari superclass-nya.
n Polimorfisme juga berarti bahwa suatu object dapat mempunyai berbagai bentuk, yaitu: sebagai object dari classnya sendiri ataupun sebagai object dari superclassnya.
Kelas Abstract
n Kelas abstract berguna untuk menampung semua aspek umum yang dimiliki oleh semua subclass-nya. n Suatu method dapat didefinisikan tanpa
mengimplementasikannya dengan membuat method itu abstract. Method abstract tidak punya body; body-nya diganti dengan tanda titik koma (;).
n Class yang mengandung method abstract harus menjadi class abstract.
SDA/REVIEW-JAVA/DN/V1.0/41
Kelas Abstract
n Jika subclass dari class abstract tidak
mengimplementasikan semua method abstract yang diwariskan dari superclass-nya, maka subclass itu bersifat abstract juga.
public abstract class Bentuk {
public abstract double luas (); public abstract double keliling (); }
public class Lingkaran extends Bentuk {
protected double radius; public Lingkaran (double r) { radius = r;
}
public Lingkaran () { this (1.0); }
public double luas ()
{ return Math.PI * radius * radius; }
public double keliling ()
{ return 2 * Math.PI * radius; }
SDA/REVIEW-JAVA/DN/V1.0/43
public class SegiEmpat extends Bentuk {
protected double lebar, tinggi;
public SegiEmpat (double lebar, double tinggi) { this.lebar = lebar; this.tinggi = tinggi; } public SegiEmpat () { this (1.0, 1.0); }
public double luas () { return lebar * tinggi; }
public double keliling ()
{ return 2 * (lebar + tinggi); }
public double getLebar () { return lebar;
}
public double getTinggi () { return tinggi;
} }
public class BujurSangkar extends SegiEmpat
{
public BujurSangkar (double sisi) {
super (sisi, sisi);
}
public BujurSangkar () {
this (1.0);
}
SDA/REVIEW-JAVA/DN/V1.0/45
public class CobaBentuk {
public static void main (String args[]) {
Bentuk[] bentuk2 = new Bentuk[3]; bentuk2[0] = new Lingkaran (3.0); bentuk2[1] = new SegiEmpat (1.0, 2.0); bentuk2[2] = new BujurSangkar (4.0); double luasTotal = 0.0;
double kelilingTotal = 0.0;
for (int ii = 0; ii < bentuk2.length; ii++) { luasTotal += bentuk2[ii].luas();
kelilingTotal += bentuk2[ii].keliling(); }
System.out.println ("Luas total = " + luasTotal); System.out.println ("Keliling total = "
+ kelilingTotal); }
}
Insertion Sort (1)
n Masih ingat cara mengurutkan dengan cara menyisipkan? Seperti bermain kartu.
n
8 | 5 9 2 6 3
n5 8 | 9 2 6 3
n5 8 9 | 2 6 3
n2 5 8 9 | 6 3
n2 5 6 8 9 | 3
n2 3 5 6 8 9 |
SDA/REVIEW-JAVA/DN/V1.0/47
Insertion Sort (2)
n Insertion sort untuk mengurutkan array integer
public static void insertionSort (int[] a) {
for (int ii = 1; ii < a.length; ii++) { int jj = ii;
while (( jj > 0) && (a[jj] < a[jj - 1])) { int temp = a[jj];
a[jj] = a[jj - 1]; a[jj - 1] = temp; jj--; } } }
n Perhatikan: ternyata nilai di a[jj] selalu sama ⇒ dapat dilakukan efisiensi di sini.
Insertion Sort (3)
n Insertion sort yang lebih efisien
public static void insertionSort2 (int[] a) {
for (int ii = 1; ii < a.length; ii++) { int temp = a[ii];
int jj = ii;
while (( jj > 0) && (temp < a[jj - 1])) { a[jj] = a[jj - 1];
jj--; }
SDA/REVIEW-JAVA/DN/V1.0/49
Insertion Sort (4)
n Bagaimana jika diperlukan method untuk mengurutkan array dari String, array dari Lingkaran (berdasarkan radiusnya) ?
n Apakah mungkin dibuat suatu method yang bisa dipakai untuk semua jenis object?
n Ternyata supaya object bisadiurutkan, harus bisa dibandingkan dengan object lainnya (mempunyai
behavior bisa dibandingkan - comparable ⇒ method). n Solusinya:
n Gunakan interface yang mengandung method yang dapat membandingkan dua buah object.
Interface
n Suatu class selain bisa meng-extends satu
superclass, ia bisa meng-implements satu atau lebih
interface.
n Aspek-aspek umum “comparable” dituangkan dalam suatu interface dalam package java.lang:
public interface Comparable {
public int compareTo (Object ob); }
n Akan mengembalikan nilai integer:
•negatif: object-nya lebih kecil dibandingkan dengan parameternya.
•0: sama besarnya
SDA/REVIEW-JAVA/DN/V1.0/51
Interface: Contoh
public class LingkaranComparable extends Lingkaran implements Comparable
{
public LingkaranComparable (double r) { super (r);
}
public int compareTo (Object other) {
LingkaranComparable otherLingkaran = (LingkaranComparable) other;
if (radius < otherLingkaran.getRadius ()) { return -1;
} else if (radius > otherLingkaran.getRadius ()) { return 1; } else { return 0; // kasus == } } }
Insertion Sort: umum
n Insertion sort yang umum
public static void insertionSort3 (Comparable[] a) {
for (int ii = 1; ii < a.length; ii++) { Comparable temp = a[ii];
int jj = ii; while (( jj > 0)
&& (temp.compareTo (a[jj - 1]) < 0)) {
SDA/REVIEW-JAVA/DN/V1.0/53
import java.util.*;
public class SortLingkaran
{ public static void main (String args[]) { LingkaranComparable[] ling =
new LingkaranComparable[20]; Random generator = new Random ();
for (int ii = 0; ii < ling.length; ii++) { ling[ii] = new LingkaranComparable ( 1 + generator.nextInt (100));
System.out.print (ling[ii].getRadius () + " "); }
System.out.println (); Sort.insertionSort3 (ling);
for (int ii = 0; ii < ling.length; ii++) {
System.out.print (ling[ii].getRadius () + " "); } System.out.println (); } }
Interface
n Semua method dalam interface bersifat abstract. (Keyword abstract bisa ditulis kalau mau.)
n Semua variabel dalam interface harus bersifat static
dan final (konstan)
n Suatu class meng-implements suatu interface, berarti class itu harus memberikan implementasi untuk setiap method dari interface tersebut.
n Seperti class, interface adalah tipe data. n Interface sering dipakai untuk mendefinisikan
SDA/REVIEW-JAVA/DN/V1.0/55
Interface
n Suatu interface dapat meng-extends satu atau lebih interface lain. Suatu sub-interface mewarisi semua method abstract dan variabel dari super-interface-nya, dan belum mendefinisikan method abstract baru dan variabel (konstanta) baru.
n Contoh:
public interface DrawingObject
extends Drawable, Transformable { ... }
public class Bentuk
implements DrawingObject { ... }
Exception (1)
n Exception menyatakan bahwa suatu keadaan luar
biasa (exceptional) telah terjadi.
n Object Exception menyimpan informasi tentang suatu kejadian yang diluar keadaan normal.
n throw suatu exception ⇒ menimbulkan exception n catch suatu exception ⇒ menangkap exception dan
mengambil tindakan yang diperlukan untuk mengatasi keadaan
SDA/REVIEW-JAVA/DN/V1.0/57
Exception (2)
n throws menyatakan exception yang dipropagasikan. Digunakan untuk method yang tidak catch exception yang diperiksa (checked exception)
n Exception yang tidak di-catch akan menjalar naik
melewati block dari method, sesuai dengan stack pemanggilan method.
n Exception yang sama sekali tidak di-catch akan
menjalar naik sampai ke method main() dan interpreter Java akan mengeluarkan pesar
error/exception dan stack-trace kemudian berhenti.
Exception
n Exception = suatu objek dari suatu subclass dari class java.lang.Throwable
n Error ⇒ kondisi tak terpulihkan; misalnya: linkage⇒
problem, out of memory
n Exception ⇒ kondisi dapat terpulihkan; misalnya:⇒
EOFException,
ArrayIndexOutOfBoundException. Throwable
Exception Error
SDA/REVIEW-JAVA/DN/V1.0/59
Exception Handling
n menggunakan statement try/catch/finally
n try menandai block perintah (disebut dengan blok
try) yang mungkin menimbulkan exception yang perlu ditangani.
n Blok try diikuti oleh nol atau lebih blok catch yang bertugas me-catch (“menangkap”) dan menangani tipe exception tertentu.
n Setelah blok catch, boleh ada blok finally yang biasanya berisi perintah-perintah untuk clean-up. Statement-statement dalam blok finally pasti dilaksanakan tak peduli apa yang terjadi dalam blok
try.
n Jika kontrol meninggalkan blok try karena statement
break, continue atau return; blok finally
dilaksanakan sebelum pindah ke tujuan baru.
Contoh Pola Exception Handling
try {
// statement-statement di sini biasanya berjalan tanpa // masalah, tetapi kadang-kadang bisa timbul exception }
catch (SuatuException e1) {
// menangani exception yang bertipe SuatuException atau // sub-kelasnya. Informasi tentang exception terdapat // pada object yang di-reference oleh e1
}
catch (ExceptionLain e2) {
// menangani exception yang bertipe ExceptionLain atau // sub-kelasnya. Informasi tentang exception terdapat // pada object yang di-reference oleh e2
SDA/REVIEW-JAVA/DN/V1.0/61
Input Output
n Package: java.io
n Bekerja berdasarkan konsep stream
n Stream adalah: suatu barisan (sequence) data yang mempunyai sumber (source) atau tujuan
(destination).
n Stream yang mempunyai sumber disebut input-stream
n Stream yang mempunyai tujuan disebut output-stream
Stream
n Steram: n byte-stream •1 byte = 8 bit n char-stream•1 char = 16 bit dalam Unicode
n Input stream yang terdiri dari barisan character (dalam format teks) disebut Reader.
n Output stream yang terdiri dari barisan character (dalam format teks) disebut Writer.
SDA/REVIEW-JAVA/DN/V1.0/63
Akses File
n I/O dalam format teks lebih mudah bagi manusia dan bisa di-edit dengan suatu text-editor (mis: vi, vim, emacs, edit, notepad, pico, dll)
n I/O dalam format binary lebih kompak (ringkas) dan lebih efisien.
n File adalah suatu barisan data dalam format (record tertentu) yang terekam pada suatu medium storage (disk, tape, CD, dll.)
Akses File Teks
n Untuk membaca data teks dari suatu file, kita buat suatu object bertipe FileReader
n Contoh:
FileReader rd =
new FileReader (“input.txt”);
n Untuk menulis data teks ke suatu file, kita buat suatu object bertipe FileWriter
n Contoh:
SDA/REVIEW-JAVA/DN/V1.0/65
Akses File Biner
n Untuk membaca data biner dari suatu file, kita buat suatu object bertipe FileInputStream
n Contoh:
FileInputStream fis =
new FileInputStream (“input.dat”);
n Untuk menulis data biner ke suatu file, kita buat suatu object bertipe FileOutputStream.
n Contoh:
FileOutputStream fos =
new FileOutputStream (“output.dat”);
Contoh: Pembaca File Teks
import java.io.*; public class BacaFile {
public static void main (String[] args) {
FileReader rd = null;
BufferedReader buffer = null; try {
rd = new FileReader (args[0]); buffer = new BufferedReader (rd); String line = buffer. readLine (); while (line != null) {
System.out.println (line); line = buffer.readLine (); }
SDA/REVIEW-JAVA/DN/V1.0/67
catch ( FileNotFoundException e) {
System.out.println ("File tidak ditemukan"); }
catch ( IOException e) {
System.err.println ("IO Exception terjadi"); e.printStackTrace ();
}
catch (Exception e) {
System.err.println ("Exception terjadi"); e.printStackTrace (); } finally { if (buffer != null) { try { buffer.close (); } catch (IOException e) { } } } } }
Summary
n Tipe data dalam Java: primitif & reference n Dalam evaluasi sebuah ekspresi, perhatikan
presedensi dan asosiasi operator, tipe operand. n Flow Control: branch
n if, if-else-if
n switch: untuk if-else-if dengan kondisi ==, lebih efisien
n operator ?: untuk if-else sederhana n Flow Control: looping
SDA/REVIEW-JAVA/DN/V1.0/69
Summary (2)
n Class & Object
n Object adalah personifikasi dari class.
n Perilaku dari object direpresentasikan dalam method.
n Keadaan dari object direpresentasikan dalam field/variabel instance.
n Tidak efisien untuk memperbesar array n Class abstract
n Interface
n Exception digunakan untuk mengindikasikan suatu keadaan luar biasa telah terjadi.
n Input output
Further Reading
n http://pala.acad.cs.ui.ac.id/
n Bahan-bahan KP1
n Data Structures & Problem Solving using Java. Chapter 1 - 4
SDA/REVIEW-JAVA/DN/V1.0/71