36
Fundamental Data Types: String, Math, Casting 1 Struktur Data & Algoritme (Data Structures & Algorithms ) Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2000/2001 Version 1.0 - Internal Use Only Denny denny @ cs . ui .ac.id Review Java SDA/REVIEW-JAVA/DN/V1. 0/2 Objectives n Mengulas kembali konsep-konsep penting dalam Java

Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Embed Size (px)

Citation preview

Page 1: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 1

Struktur Data & Algoritme(Data Structures & Algorithms)

Fakultas Ilmu KomputerUniversitas Indonesia

Semester Genap - 2000/2001Version 1.0 - Internal Use Only

[email protected]

Review Java

SDA/REVIEW-JAVA/DN/V1.0/2

Objectivesn Mengulas kembali konsep-konsep penting dalam

Java

Page 2: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 2

SDA/REVIEW-JAVA/DN/V1.0/3

Outlinen Review Latihann Primitive Typen Operator & Expresionn Flow Control (Decision & Iteration)n Referencesn OOPn Exception Handlingn Input & Output

SDA/REVIEW-JAVA/DN/V1.0/4

Java: strongly typed languagesn 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 mathematicalexpression that may assume any value in a specific,related set of values b) a symbol for such a part:opposed to constant

n Setiap variabel harus diasosiasikan dengan typeyang dikenal.

n Dengan adanya type: program/kompilator dapatmembatasi type data/nilai yang disimpan pada lokasitersebut.

Page 3: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 3

SDA/REVIEW-JAVA/DN/V1.0/5

Tipe Data Primitifn Terdapat dua jenis types:

n Primitive types: numeric type, boolean type

n Reference types: class, arrays dll.

tipe isi nilai default besarboolean true, false false 1 bitchar unicode char \u0000 16 bitbyte signed integer 0 8 bitshort signed integer 0 16 bitint signed integer 0 32 bitlong signed integer 0 64 bitfloat IEEE 754/floating-point 0.0 32 bitdouble IEEE 754/floating-point 0.0 64 bit

SDA/REVIEW-JAVA/DN/V1.0/6

Operator & Ekspresin 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);

Page 4: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 4

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-nyan Urutan evaluasi tergantung dari presedensi operator-

nya. Jika presedensi-nya sama, dilihat dariasosiasinya.

SDA/REVIEW-JAVA/DN/V1.0/8

Operatorn Berdasarkan jumlah operand-nya

n Unaryn Binary

n Berdasarkan operasinyan Aritmatikn Logika

Page 5: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 5

SDA/REVIEW-JAVA/DN/V1.0/9

Operator: Presedence & Associativityn Nutshell, p. 34

SDA/REVIEW-JAVA/DN/V1.0/10

Flow Controln Branch

n Digunakan untuk memilih statement yang dieksekusiberdasarkan suatu kondisi.

n Loop - Iterasin Loop mengeksekusi sebuah blok kode secara

berulang. Kondisi berhenti mengatur berapa banyakloop dilakukan.

Page 6: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 6

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

SDA/REVIEW-JAVA/DN/V1.0/12

Flow Control: switchn Statement if-else-if yang membandingkan sebuah nilai

konstan atau integer dapat menggunakan switch statement.

n Statement switch lebih efesien dibandingkan denganif-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; case 4: digitName = “empat”; break; case 5: digitName = “lima”; break; case 6: digitName = “enam”; break; case 7: digitName = “tujuh”; break; case 8: digitName = “delapan”; break; case 9: digitName = “sembilan”; break; default: digitName = “”; break;}

Page 7: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 7

SDA/REVIEW-JAVA/DN/V1.0/13

Flow Control: conditonal operator ?testExpr ? yesExpr : noExpr

n Digunakan untuk mempersingkat if-else yangsederhana.

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;

SDA/REVIEW-JAVA/DN/V1.0/14

Flow Control: while while (kondisi) { statement; ... } /* Pasca kondisi: ~kondisi */

n Selama evaluasi dari ekspresi kondisi adalah true,statement dieksekusi. Kemudian kondisidi-evaluasi lagi.

n Jika evaluasi dari ekspresi kondisi adalah false,maka loop berakhir (statement tidak dieksekusilagi).

n Ingat: kondisi di-evaluasi terlebih dahulu!

Page 8: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 8

SDA/REVIEW-JAVA/DN/V1.0/15

Flow Control: do - while do { statement; ... } while (kondisi); /* Pasca kondisi: ~kondisi */

n statement dieksekusi terlebih dahulu, kemudiankondisi di-evaluasi. statement minimal 1 kalidieksekusi.n Jika kondisi true ⇒⇒ statement dijalankan kembali.n Jika kondisi false ⇒⇒ loop selesai/keluar dari loop.

n Sering terdapat kebutuhan untuk melakukanstatement pada loop terlebih dahulu, setelah itu barumenguji kondisi.

SDA/REVIEW-JAVA/DN/V1.0/16

Flow Control: for for (inisialisasi; kondisi; update) { statement; }

n Equivalen dengan while statement inisialisasi; while (kondisi) { statement; update; }

n for umumnya digunakan untuk loop yang sudahjelas jumlah iterasinya.

Page 9: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 9

SDA/REVIEW-JAVA/DN/V1.0/17

Flow Control: breakn Digunakan untuk keluar dari loop terdalam

(innermost).n Tidak baik dalam programming (poor design)n Contoh:

while (...) { ... if (something) { break; } ...}

SDA/REVIEW-JAVA/DN/V1.0/18

Flow Control: continuen 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);}

Page 10: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 10

SDA/REVIEW-JAVA/DN/V1.0/19

Flow Control: Latihann Exercises 1.19

n Buat sebuah program yang dapat mencetak semuapasangan integer positif (a, b) dimanaa < b < 1000 dan (a2 + b2 + 1)/(ab) adalahsebuah integer.

SDA/REVIEW-JAVA/DN/V1.0/20

Object Oriented Programmingn 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 kelasn setiap object memiliki:

• suatu keadaan (state) ⇒ variable instance / field• suatu perilaku (behaviour) ⇒ method

Page 11: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 11

SDA/REVIEW-JAVA/DN/V1.0/21

Classn Class mencakup:

n Implementasi detil (blue print) dari suatu objek yangakan dibuat (create) ⇒⇒ sejenis pabrik objek.

n Class: menampung “methods” dengan sifat “static”dan objek-objek yang dibuat.

n Class: mendefinisikan implementasi detil dari objekn semua method dan fieldn instruksi/kode dari methods tersebut ⇒⇒

perilaku/behaviour

n Berdasarkan definisi class ⇒ object dapat dibuat.

SDA/REVIEW-JAVA/DN/V1.0/22

Objectn 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 referencen ClassName varName;n Ingat: mendeklarasikan variabel reference saja tidak

berarti membuat object-nyan Contoh: Integer x;

Page 12: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 12

SDA/REVIEW-JAVA/DN/V1.0/23

Object (2)n Menyimpan alamat dari sebuah object

n Alamat dari object perlu disimpan supaya bisadigunakan kembali.

n Gunakan operator =n Contoh: Integer x = new Integer (20);n Ingat: operator = tidak menduplikasi object

n Mengakses field dan menggunakan methodn gunakan operator . (dot/titik)n Contoh:

Dimension size;size = getSize ();System.out.println (size.width);System.out.println (size.getWidth());

SDA/REVIEW-JAVA/DN/V1.0/24

Fieldn Digunakan untuk menyimpan keadaan / state sebuah

object/kelasn Terdapat dua jenis macam field

n Instance variable• Setiap object memiliki instance variable yang berbeda

⇒⇒ variabel objectn Static variable

• Satu class hanya memiliki satu variable statik ⇒⇒variabel kelas

Page 13: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 13

SDA/REVIEW-JAVA/DN/V1.0/25

Methodn 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

SDA/REVIEW-JAVA/DN/V1.0/26

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 instancen method static

• method yang dapat digunakan tanpa harus adaobyeknya ⇒⇒ method kelas

• tidak terdapat parameter implisit this ⇒⇒ methodTIDAK dapat mengakses variabel instance

n Penyaluran Parametern pass by value / call by value

• caller memberi salinan nilainya kepada calee

Page 14: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 14

SDA/REVIEW-JAVA/DN/V1.0/27

Reference Typen Sebuah variabel reference dalam Java adalah variabel

yang menyimpan alamat dimana sebuah objectdisimpan.

n Bandingkan dengan variabel primitif dalam Java:variabel yang menyimpan nilai suatu tipe dataprimitif.

n Dengan kata lain, variabel reference TIDAKmenyimpan object-nya, sedangkan variabel primitifmenyimpan ‘object’-nya.

n Jadi tipe data non-primitif / reference dalam Javaadalah Object.

SDA/REVIEW-JAVA/DN/V1.0/28

Reference Type (2)n Operator ==

n Untuk tipe data primitif, operator == dapat digunakanuntuk memeriksa apakah dua buah variabel memilikinilai yang sama.

n Untuk tipe data reference, operator == dapatdigunakan untuk mengetahui apakah dua variabelreference menunjuk ke object yang sama. BUKANuntuk memeriksa apakah dua object yang berbedamemiliki keadaan (state) yang sama.

n Method equalsn Method equals dapat digunakan untuk memeriksa

apakah dua object memiliki keadaan (state) yangsama.

n Ada beberapa object (seperti Button), methodequals akan mengembalikan nilai true jikakeduanya menunjuk ke object yang sama.

Page 15: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 15

SDA/REVIEW-JAVA/DN/V1.0/29

Arrayn 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 indeksarray1[0] = 20;

n Karena array adalah object juga, maka operator =tidak berarti menduplikasi arrayint[] lhs = new int[100];int[] rhs = new int[100];...lhs = rhs;

SDA/REVIEW-JAVA/DN/V1.0/30

Dynamic Array Expansionn Misalkan kita ingin membaca barisan integer dari

sebuah file dan kita simpan dalam array untukdiproses kemudian.

n Untuk membuat sebuah array, kita diwajibkan untukmenyatakan besar array tersebut supaya kompilatordapat mengalokasikan tempat yang sesuai.

n Jika kita tidak mengetahui berapa banyak integeryang akan dibaca, hal ini akan menyulitkan bagi kitauntuk menentukan besar array tsb.

Page 16: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 16

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 arraysebagai berikut:

int[] original = a;a = new int[original.length * 2];for (int ii = 0; ii < original.length; ii++) { a[ii] = original[ii];}

SDA/REVIEW-JAVA/DN/V1.0/32

Array Multidimensin 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 denganangka bertipe double yang bernilai seperti di bawah ini, danmengembalikannya. Misalnya: untuk parameter besar = 5,maka yang dikembalikan adalah nilai-nilai seperti di bawah ini(dalam decimal/tipe double, bukan dalam pecahan).

Page 17: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 17

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

SDA/REVIEW-JAVA/DN/V1.0/34

Konsep OOPn Berdasarkan empat prinsip utama:

n abstraksi (abstraction)• proses penentuan ciri-ciri/detil-detil yang penting dari

sebuah objekn pembungkusan (encapsulation)

• Penggabungan data dan operasi-operasi yangbersesuaian menjadi satu kesatuan

• keutuhan data dijaga dengan adanya pengendalianakses (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.n poliformisme (polymorphism)

Page 18: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 18

SDA/REVIEW-JAVA/DN/V1.0/35

Polymorfismn “banyak bentuk”n Dalam Java ada 2 macam polimorfisme:

n overloading: polimorfisme trivialn overriding: polimorfisme sejati

SDA/REVIEW-JAVA/DN/V1.0/36

Overloadingn penggunaan satu nama untuk beberapa method

(fungsi) yang berbeda dalam suatu kelasn method-method yang sama namanya itu dibedakan

satu dengan yang lain berdasarkan signature-nyan Signature suatu fungsi (method) ditentukan oleh:

n jumlah argumenn tipe argumenn urutan argumen

n Overloading ditangani pada waktu kompilasi

Page 19: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 19

SDA/REVIEW-JAVA/DN/V1.0/37

Overridingn poliformisme jenis ini ditangani pada runtimen terjadi apabila suatu class mempunyai suatu method

yang nama dan signature-nya sama dengan namadan 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 yangbersangkutan

SDA/REVIEW-JAVA/DN/V1.0/38

Polymorfismen 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) dengansuatu method dari superclass-nya.

n Meng-inherit method dari superclass. Method darisuperclass yang tidak di-override akan diwariskansecara otomatis kepada subclass.

n Membuat method yang benar-benar baru

Page 20: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 20

SDA/REVIEW-JAVA/DN/V1.0/39

Polymorfismen Ketika terjadi pemanggilan sebuah method,

class/type dari object tersebut yang menentukanimplementasi method mana yang digunakan.

n Ada tidaknya sebuah method ditentukan dari tipevariabel reference-nya

n Dalam mengakses sebuah field, ditentukan dari tipevariabel reference-nya

n Keyword “super” berlaku sebagai reference keobject tetapi dianggap sebagai instance darisuperclass-nya.

n Polimorfisme juga berarti bahwa suatu object dapatmempunyai berbagai bentuk, yaitu: sebagai objectdari classnya sendiri ataupun sebagai object darisuperclassnya.

SDA/REVIEW-JAVA/DN/V1.0/40

Kelas Abstractn Kelas abstract berguna untuk menampung semua

aspek umum yang dimiliki oleh semua subclass-nya.n Suatu method dapat didefinisikan tanpa

mengimplementasikannya dengan membuat methoditu abstract. Method abstract tidak punya body; body-nya diganti dengan tanda titik koma (;).

n Class yang mengandung method abstract harusmenjadi class abstract.

n Class abstract tidak bisa dibuat instance/object-nyan Subclass dari class abstract bisa di-instantiasi jika

subclass itu meng-override danmengimplementasikan setiap method abstract darisuperclass-nya.

Page 21: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 21

SDA/REVIEW-JAVA/DN/V1.0/41

Kelas Abstractn Jika subclass dari class abstract tidak

mengimplementasikan semua method abstract yangdiwariskan dari superclass-nya, maka subclass itubersifat abstract juga.

SDA/REVIEW-JAVA/DN/V1.0/42

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; } public double getRadius () { return radius; }}

Page 22: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 22

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

SDA/REVIEW-JAVA/DN/V1.0/44

public class BujurSangkar extends SegiEmpat{ public BujurSangkar (double sisi) { super (sisi, sisi); } public BujurSangkar () { this (1.0); } public double getSisi () { return lebar; }}

Page 23: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 23

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

SDA/REVIEW-JAVA/DN/V1.0/46

Insertion Sort (1)n Masih ingat cara mengurutkan dengan cara

menyisipkan? Seperti bermain kartu.n 8 | 5 9 2 6 3n 5 8 | 9 2 6 3n 5 8 9 | 2 6 3n 2 5 8 9 | 6 3n 2 5 6 8 9 | 3n 2 3 5 6 8 9 |

Page 24: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 24

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.

SDA/REVIEW-JAVA/DN/V1.0/48

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--; } a[jj] = temp; }}

Page 25: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 25

SDA/REVIEW-JAVA/DN/V1.0/49

Insertion Sort (4)n Bagaimana jika diperlukan method untuk

mengurutkan array dari String, array dariLingkaran (berdasarkan radiusnya) ?

n Apakah mungkin dibuat suatu method yang bisadipakai untuk semua jenis object?

n Ternyata supaya object bisa diurutkan, harus bisadibandingkan dengan object lainnya (mempunyaibehavior bisa dibandingkan - comparable ⇒ method).

n Solusinya:n Gunakan interface yang mengandung method yang

dapat membandingkan dua buah object.

SDA/REVIEW-JAVA/DN/V1.0/50

Interfacen Suatu class selain bisa meng-extends satu

superclass, ia bisa meng-implements satu atau lebihinterface.

n Aspek-aspek umum “comparable” dituangkan dalamsuatu interface dalam package java.lang:public interface Comparable { public int compareTo (Object ob);}n Akan mengembalikan nilai integer:

• negatif: object-nya lebih kecil dibandingkan denganparameternya.

• 0: sama besarnya• positif: object-nya lebih besar

Page 26: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 26

SDA/REVIEW-JAVA/DN/V1.0/51

Interface: Contohpublic 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 == } }}

SDA/REVIEW-JAVA/DN/V1.0/52

Insertion Sort: umumn Insertion sort yang umumpublic 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)) { a[jj] = a[jj - 1]; jj--; } a[jj] = temp; }}

Page 27: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 27

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

SDA/REVIEW-JAVA/DN/V1.0/54

Interfacen Semua method dalam interface bersifat abstract.

(Keyword abstract bisa ditulis kalau mau.)

n Semua variabel dalam interface harus bersifat staticdan final (konstan)

n Suatu class meng-implements suatu interface, berarticlass itu harus memberikan implementasi untuksetiap method dari interface tersebut.

n Seperti class, interface adalah tipe data.n Interface sering dipakai untuk mendefinisikan

konstanta-konstanta.

Page 28: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 28

SDA/REVIEW-JAVA/DN/V1.0/55

Interfacen Suatu interface dapat meng-extends satu atau lebih

interface lain. Suatu sub-interface mewarisi semuamethod abstract dan variabel dari super-interface-nya,dan belum mendefinisikan method abstract baru danvariabel (konstanta) baru.

n Contoh:public interface DrawingObject extends Drawable, Transformable { ...}

public class Bentuk implements DrawingObject { ... }

SDA/REVIEW-JAVA/DN/V1.0/56

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 exceptionn catch suatu exception ⇒ menangkap exception dan

mengambil tindakan yang diperlukan untukmengatasi keadaan

Page 29: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 29

SDA/REVIEW-JAVA/DN/V1.0/57

Exception (2)n throws menyatakan exception yang dipropagasikan.

Digunakan untuk method yang tidak catch exceptionyang diperiksa (checked exception)

n Exception yang tidak di-catch akan menjalar naikmelewati block dari method, sesuai dengan stackpemanggilan method.

n Exception yang sama sekali tidak di-catch akanmenjalar naik sampai ke method main() daninterpreter Java akan mengeluarkan pesarerror/exception dan stack-trace kemudian berhenti.

SDA/REVIEW-JAVA/DN/V1.0/58

Exceptionn Exception = suatu objek dari suatu subclass dari

class java.lang.Throwable

n Error ⇒⇒ kondisi tak terpulihkan; misalnya: linkageproblem, out of memory

n Exception ⇒⇒ kondisi dapat terpulihkan; misalnya:EOFException,ArrayIndexOutOfBoundException.

Throwable

ExceptionError

Page 30: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 30

SDA/REVIEW-JAVA/DN/V1.0/59

Exception Handlingn menggunakan statement try/catch/finally

n try menandai block perintah (disebut dengan bloktry) yang mungkin menimbulkan exception yangperlu ditangani.

n Blok try diikuti oleh nol atau lebih blok catch yangbertugas me-catch (“menangkap”) dan menangani tipeexception tertentu.

n Setelah blok catch, boleh ada blok finally yangbiasanya berisi perintah-perintah untuk clean-up.Statement-statement dalam blok finally pastidilaksanakan tak peduli apa yang terjadi dalam bloktry.

n Jika kontrol meninggalkan blok try karena statementbreak, continue atau return; blok finallydilaksanakan sebelum pindah ke tujuan baru.

SDA/REVIEW-JAVA/DN/V1.0/60

Contoh Pola Exception Handlingtry { // 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}finally { // statement-statement dalam blok ini selalu // dilaksanakan tak peduli bagaimana blok try di-exit}

Page 31: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 31

SDA/REVIEW-JAVA/DN/V1.0/61

Input Outputn Package: java.ion Bekerja berdasarkan konsep streamn 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

SDA/REVIEW-JAVA/DN/V1.0/62

Streamn 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.

Page 32: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 32

SDA/REVIEW-JAVA/DN/V1.0/63

Akses Filen 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) danlebih efisien.

n File adalah suatu barisan data dalam format (recordtertentu) yang terekam pada suatu medium storage(disk, tape, CD, dll.)

SDA/REVIEW-JAVA/DN/V1.0/64

Akses File Teksn Untuk membaca data teks dari suatu file, kita buat

suatu object bertipe FileReadern Contoh:

FileReader rd = new FileReader (“input.txt”);

n Untuk menulis data teks ke suatu file, kita buat suatuobject bertipe FileWriter

n Contoh:FileWriter fw = new FileWriter (“output.txt”);

Page 33: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 33

SDA/REVIEW-JAVA/DN/V1.0/65

Akses File Binern Untuk membaca data biner dari suatu file, kita buat

suatu object bertipe FileInputStreamn Contoh:

FileInputStream fis = new FileInputStream (“input.dat”);

n Untuk menulis data biner ke suatu file, kita buat suatuobject bertipe FileOutputStream.

n Contoh:FileOutputStream fos = new FileOutputStream (“output.dat”);

SDA/REVIEW-JAVA/DN/V1.0/66

Contoh: Pembaca File Teksimport 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 (); } }

Page 34: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 34

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

}

SDA/REVIEW-JAVA/DN/V1.0/68

Summaryn Tipe data dalam Java: primitif & referencen Dalam evaluasi sebuah ekspresi, perhatikan

presedensi dan asosiasi operator, tipe operand.n Flow Control: branch

n if, if-else-ifn switch: untuk if-else-if dengan kondisi ==, lebih efisienn operator ?: untuk if-else sederhana

n Flow Control: loopingn while: evaluasi kondisi, kemudian eksekusi statement

jika kondisi truen for: mirip seperti while, digunakan untuk iterasi yang

jumlahnya sudah diketahuin do-while: eksekusi statement dahulu, kemudian

evaluasi kondisi. statement minimal 1 x dieksekusi.

Page 35: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 35

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 arrayn Class abstractn Interfacen Exception digunakan untuk mengindikasikan suatu

keadaan luar biasa telah terjadi.n Input output

SDA/REVIEW-JAVA/DN/V1.0/70

Further Readingn http://pala.acad.cs.ui.ac.id/n Bahan-bahan KP1n Data Structures & Problem Solving using Java.

Chapter 1 - 4

Page 36: Struktur Data & Algoritme - staff.ui.ac.idstaff.ui.ac.id/system/files/users/moningka/material/02-04-review... · Struktur Data & Algoritme ... nMengulas kembali konsep-konsep penting

Fundamental Data Types: String, Math, Casting 36

SDA/REVIEW-JAVA/DN/V1.0/71

What’s Nextn Analisa Algoritma (Chapter 5)