Konsep Dasar Pemrograman Berorientasi Obyek 1 JAVA BAB 1 PEMROGRAMAN DAN SIKLUS HIDUP PERANGKAT LUNAK Daftar Isi Pendahuluan Pemrograman Pengertian Bahasa Pemrograman Level Bahasa Pemrograman Siklus Hidup Perangkat Lunak Analisis Desain Pengembangan ( Development ) Pengujian ( Testing ) Implementasi Pemeliharaan Akhir Siklus Pemrograman(1) Pengertian Penanaman instruksi ke dalam komputer / devais Tujuan : Komputer / devais melakukan operasi-operasi komputasi sesuai instruksi Contoh instruksi : Penjumlahan Jika input1=2 dan input2 =5, maka hasil operasi komputer = 7 Bahasa Pemrograman Instruksi yang dimengerti komputer : …010101001… Instruksi yang dimengerti manusia : b = a + 4 Agar manusia dapat memberi instruksi kepada komputer, dibutuhkan Bahasa Pemrograman Level Bahasa Pemrograman Pemrograman(2) Level Bahasa Pemrograman Bahasa Tingkat Rendah ( low-level language ), misalnya: bahasa mesin dan assembler Bahasa Tingkat Menengah (medium-level language), misalnya: C / C++, Fortran Bahasa Tingkat Tinggi (high-level language), misalnya: Pascal Bahasa Tingkat Lebih Tinggi (higher-level language), misalnya: Java , .Net Siklus Hidup Perangkat Lunak(1) Analisis Penentuan scope masalah Identifikasi komponen Siklus Hidup Perangkat Lunak(2) Desain Membuat blueprint / cetak biru Spesifikasi teknis dari sistem yang akan dihasilkan Siklus Hidup Perangkat Lunak(3) Pengembangan Penggunaan blueprint untuk membuat komponen aktual Jika diperlukan, komponen dapat dipecah menjadi subsub komponen Siklus Hidup Perangkat Lunak(4) Pengujian Evaluasi terhadap komponen-komponen : Memenuhi spesifikasi ? Siklus Hidup Perangkat Lunak(5) Pengujian Evaluasi terhadap komponen-komponen : Memenuhi spesifikasi ? Testing : Unit Test Functional Test Flow Graph Test Performance Test Security Test Integration Test dll Siklus Hidup Perangkat Lunak(6) Implementation Pembuatan produk : Instalasi produk ke komputer / devais Pelatihan kepada user Siklus Hidup Perangkat Lunak(7) Pemeliharaan Perbaikan terhadap masalah-masalah yang terjadi pada produk : Perbaikan bug Re-install produk Data recovery Perbaikan pada komponen dll Siklus Hidup Perangkat Lunak(8) Akhir Siklus Mengumpulkan feedback dari user terhadap produk yang berjalan pada sistem Feedback Dikumpulkan Dianalisa Keputusan : Modifikasi produk / tidak ? Bab 2 ANALISIS MASALAH MENGGUNAKAN KONSEP OBJECT-ORIENTED ANALYSIS Daftar Isi Contoh Masalah Identifikasi Domain Masalah Identifikasi Obyek Seleksi Obyek Solusi / Hasil Analisa Contoh Masalah User : Petugas logistik pada sebuah koperasi Aplikasi Diminta : Sistem pelaporan stok barang yang mencatat persediaan, pemasukan, dan pengeluaran barang Kebijakan Koperasi : Untuk barang berupa makanan : Jika kedaluwarsa sudah lewat, barang dibuang Jika kedaluwarsa tinggal 6 bulan lagi (asumsi ketika dibeli, masa kedaluwarsa makanan > 1 tahun ), diskon harga 50% Untuk semua barang : Jika stok suatu item tinggal 40% dari seharusnya, harus ditambah stoknya. Contoh Masalah Identifikasi Domain Masalah Domain masalah : ruang lingkup permasalahan yang akan dipecahkan. Tujuan : fokus pada masalah Domain masalah dapat ditentukan dari permintaan user (User Requirement Gathering ) Identifikasi Obyek Identifikasi sifat-sifat dasar dari obyek yang diperkirakan akan terlibat dalam aplikasi : Obyek : fisik / konseptual Identifikasi atribut / karakteristik Identifikasi operasi Membuat perkiraan obyek apa saja yang akan digunakan : Barang Supplier Koperasi Pembeli Gudang Daftar Transaksi Daftar Stok Barang Seleksi Obyek (1) Pertimbangan-pertimbangan : Relevansi dengan masalah : Obyek eksis pada batasan masalah ? Obyek dibutuhkan dalam menyelesaikan masalah ? User dibutuhkan sebagai bagian dari interaksi antara user dan solusi ? Eksistensi independen : sebaiknya obyek yang dibuat tidak saling tergantung dengan obyek lainnya Seleksi Obyek (2) Memilik Obyek : Barang OK Supplier Not OK , sebab tidak terlalu berperan dalam permasalahan Koperasi OK , menjadi obyek utama Pembeli Not OK, sebab tidak terlalu berperan dalam permasalahan Daftar Transaksi OK Daftar Stok Barang OK Solusi Bab 3 MEMBUAT DAN MENGUJI PROGRAM JAVA Daftar Isi Identifikasi Komponen-komponen Class Strukturisasi Class Deklarasi Class Deklarasi Variabel dan Penugasan Pendefinisian Method Pemberian Komentar Membuat dan Menguji Program Java Konfigurasi yang Dibutuhkan Membuat dan Menggunakan Class Mengkompilasi dan Mengeksekusi Program Identifikasi Komponen-komponen Class (1) Strukturisasi Class Deklarasi Class Deklarasi dan Inisialisasi Atribut Pendefinisian Method ( optional ) Komentar (Optional ) Deklarasi Class Deklarasi Variabel dan Penugasan Pendefinisian Method Pemberian Komentar Identifikasi Komponen-komponen Class(2) Deklarasi Class : Tujuan : mendefinisikan data yang dibawa oleh obyek Syntax : [modifier] class class_identifier Contoh : public class Barang { } Identifikasi Komponen-komponen Class (3) Deklarasi Variabel dan Penugasan Deklarasi variabel dilakukan di dalam class Variabel yang dideklarasikan di dalam class = variabel atribut / variabel anggota / variabel instans Syntax : [modifiers] data_type identifier [ = value ] ; Contoh : import java.util.Date; public class Barang { public int jumlah ; //contoh deklarasi public int hargaBeli ; public Date tanggalKedaluwarsa ; public int hargaJual ; public String idBarang ; double diskon = 0.0 ; //contoh penugasan } Identifikasi Komponen-komponen Class (4) Pendefinisian Method Method : merepresentasikan operasi-operasi yang dapat dilakukan oleh obyek Syntax : [modifiers] return_type method_identifier ([arguments]){ method_code_block; } Contoh : public class Barang { ... //inisialisasi variabel public void setIDBarang( String id ){ dBarang = id; } } Identifikasi Komponen-komponen Class (5) Pemberian Komentar : Tujuan : Menandai baris-baris program dengan catatan, supaya programmer dapat mengingat maksud dari baris-baris program tersebut Contoh : 1) public int hargaJual ; // ini variabel untuk // menyimpan data harga jual 2) /* ini variabel untuk menyimpan data harga jual */ public int hargaJual ; Membuat dan Menguji Program Java (1) Konfigurasi yang Dibutuhkan : Java Runtime Environment ( JRE ) JRE dapat didownload dari : http://www.java.sun.com Membuat dan Menguji Program Java (2) Membuat dan Menggunakan Class Contoh program : public class Barang { public int jumlah ; //contoh deklarasi public int hargaBeli ; public int hargaJual ; public String idBarang ; double diskon = 0.0 ; //contoh penugasan public int getJumlah(){ return jumlah; } } Class disimpan dalam file : Barang.java Membuat dan Menguji Program Java (3) Mengkompilasi Program : C:\Latihan>javac Barang.java Mengeksekusi Program : C:\Latihan>java Barang Bab 4 DEKLARASI, INISIALISASI, DAN PENGGUNAAN VARIABEL Daftar Isi Identifikasi Penggunaan Variabel dan Syntax Penggunaan Variabel Deklarasi dan Inisialisasi Variabel Mendeskripsikan Tipe Data Primitif Tipe Data Integral Tipe Data Floating-Point Tipe Data Tekstual Tipe Data Logika Memilih Tipe Data Mendeklarasikan Variabel dan Melewatkan Nilai ke Variabel Penamaan Variabel Melewatkan Nilai ke Variabel Konstanta Identifikasi Penggunaan Variabel dan Syntax (1) Contoh Program : Identifikasi Penggunaan Variabel dan Syntax (2) Identifikasi Penggunaan Variabel dan Syntax (3) Penggunaan Variabel : noPol menyimpan data nomor polisi merk menyimpan data merk mobil harga menyimpan harga mobil tahunPembuatan menyimpan tahun pembuatan mobil namaPemilik menyimpan data pemilik mobil Deklarasi dan Inisialisasi Variabel : [modifiers] data_type identifier [ = value ] ; Identifikasi Penggunaan Variabel dan Syntax (4) Identifikasi Penggunaan Variabel dan Syntax (5) Hasil Kompilasi : Penyebab : Variabel belum dideklarasikan !!! Identifikasi Penggunaan Variabel dan Syntax (6) Inisialisasi Variabel ( dipisah dari deklarasi ) : Mendeskripsikan Tipe Data Primitif (1) Tipe Data Primitif : Integral : merepresentasikan nilai-nilai bilangan bulat ( tidak memiliki elemen pecahan desimal. Floating Point : merepresentasikan nilai-nilai bilangan real ( memiliki elemen pecahan desimal ) Tekstual : merepresentasikan nilai-nilai berupa alphabet. Logika : merepresentasikan nilai-nilai logika ( hanya bernilai true dan false ). Mendeskripsikan Tipe Data Primitif (2) Mendeskripsikan Tipe Data Primitif (3) Tipe Data Floating Point Mendeskripsikan Tipe Data Primitif (4) Tipe Data Tekstual : char Contoh penggunaan : public char alphabet = ‘A’; public char ascii = ‘\111’; // jika dicetak, akan //menghasilkan // huruf ‘I’; Tipe Data Logika : boolean Contoh penggunaan : public boolean status = true; public boolean check = 10 < 5 ; // nilai check menjadi //false public boolean hasil = (10<5) && (var==3); Mendeskripsikan Tipe Data Primitif (5) Memilih Tipe Data : Perhatikan Jenis Data ( bilangan bulat / bilangan real / logika / karakter ) Terdapat operasi pembagian ? disarankan menggunakan tipe floating point Jika program memperhatikan ukuran data dalam memory, gunakan tipe-tipe data dengan representasi bit kecil. Mendeklarasikan Variabel dan Melewatkan Nilai ke Variabel (1) Mendeklarasikan Variabel Variabel : entitas penyimpanan data yang paling elementer Variabel lebih mengacu ke alokasi memory daripada nilai data A TA D VARIABEL Mendeklarasikan Variabel dan Melewatkan Nilai ke Variabel (2) Penamaan Variabel : Identifier variabel harus dimulai dengan alfabet huruf besar, huruf kecil, tanda dollar ( $ ) atau underscore (_). Setelah karakter pertama, dapat diikuti dengan angka. Identifier variabel tidak boleh mengandung punctuation, spasi, atau dashes ( - ) Kata kunci pada teknologi Java , seperti pada Tabel IV.3, tidak dapat dijadikan nama identifier variabel. Kata kunci yang tidak dapat dijadikan nama variabel : Mendeklarasikan Variabel dan Melewatkan Nilai ke Variabel (3) Penamaan Variabel : Contoh nama variabel yang valid : @2var _status tanggal jumlahBarang nama_kecil final_test int_float Melewatkan Nilai ke Variabel Contoh : Mendeklarasikan Variabel dan Melewatkan Nilai ke Variabel (4) Penamaan Variabel : Contoh nama variabel yang valid : @2var _status tanggal jumlahBarang nama_kecil final_test int_float Melewatkan Nilai ke Variabel Contoh : Menyimpan Variabel Primitif dan Konstanta pada Memory Bab 5 MENGGUNAKAN OPERATOR ARITMETIKA DAN BITWISE Daftar Isi Menggunakan Operator Aritmatika untuk Memodifikasi Nilai Menggunakan Operator Bitwise untuk Memodifikasi Nilai Prioritas Operator Menggunakan Promosi dan Type Casting Promosi Type Casting Beberapa Catatan Promosi dan Type Casting Menggunakan Operator Aritmatika Untuk Mengubah Nilai (1) Menggunakan Operator Aritmatika Untuk Mengubah Nilai (2) Operator Aritmatika Unary Menggunakan Operator Bitwise Untuk Mengubah Nilai (1) Operator Bitwise Menggunakan Operator Bitwise Untuk Mengubah Nilai (2) Shift Kanan 31 30 29 28 27 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 = - 16 Geser ke kanan 2 kali : >> 2 Sign bit 31 30 29 28 27 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 =-4 Sign bit Shift Kiri 31 30 29 28 27 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 = - 16 Geser ke kiri 2 kali : << 2 Sign bit 31 30 29 28 27 7 1 1 1 1 1 1 1 0 0 0 0 0 0 Sign bit 6 5 4 3 2 1 0 = - 64 Menggunakan Operator Bitwise Untuk Mengubah Nilai (3) Shift Kanan Dengan Penambahan ‘0’ pada Bit-bit Kiri 31 30 29 28 27 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 = - 16 Geser ke kanan 2 kali dengan bit kiri diberi 0 : >>> 2 Sign bit 31 30 29 28 27 7 6 5 4 3 2 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 = 1073741820 Sign bit Operator ‘&’ 31 30 29 28 27 7 6 5 4 3 2 1 0 0 0 00 0 00 00 1 10 0 31 30 29 28 27 7 6 5 4 3 2 1 1 1 11 1 11 11 0 01 1 = 12 0 = - 13 & 31 30 29 28 27 7 6 5 4 3 2 1 0 0 0 00 0 00 00 0 00 0 =0 Menggunakan Operator Bitwise Untuk Mengubah Nilai (4) Operator ‘|’ 31 30 29 28 27 7 6 5 4 3 2 1 0 0 0 00 0 00 00 1 10 0 31 30 29 28 27 7 6 5 4 3 2 1 1 1 11 1 11 11 0 01 1 = 12 0 = - 13 | Operator ‘^’ 31 30 29 28 27 7 6 5 4 3 2 1 0 1 1 11 1 11 11 1 11 1 = -1 31 30 29 28 27 7 6 5 4 3 2 1 0 0 0 00 0 00 00 1 10 1 31 30 29 28 27 7 6 5 4 3 2 1 1 1 11 1 11 11 0 01 1 31 30 29 28 27 7 6 5 4 3 2 1 1 1 11 1 1 1 1 1 11 1 1 0 = 13 0 = - 13 0 = -2 Menggunakan Operator Bitwise Untuk Mengubah Nilai (5) Operator ‘~’ 31 30 29 28 27 7 6 5 4 3 2 1 0 0 0 00 0 00 00 1 10 0 = 12 ~ 31 30 29 28 27 7 6 5 4 3 2 1 0 1 1 11 1 1 1 1 1 01 0 1 10 = -13 Prioritas Operator (1) Prioritas dari yang paling dahulu dikerjakan : Operator pada tanda kurung “(…)” Operator-operator Increment dan Decrement Operator Perkalian dan Pembagian Operator Penjumlahan dan Pengurangan Operator Bitwise, dari kiri ke kanan Prioritas Operator (2) Contoh 1: int c = 12 * 3 +5 / (8 - 3) ; Urutan Operasinya : int int int int c c c c = = = = 12 * 3 + 5 / 5 ; 36 + 5 / 5; 36 + 1 ; 37; Contoh 2: int c = 3 + 4 >> 1 + 1 << 1; Urutan Operasinya : int int int int c c c c = = = = 7 >> 1 + 1 << 1; 7 >> 2 << 1; 1 << 1; 2; Promosi dan Type-Casting (1) Promosi proses pengubahan representasi bit variabel primitif dari representasi bit yang lebih rendah ke representasi bit yang lebih tinggi Promosi karena assigning tipe data dengan representasi bit yang lebih tinggi ke yang lebih rendah Contoh : short a = 12; int b = a ; // nilai a promosi ke integer Promosi karena assigning tipe data integral ke tipe data floating-point Contoh : int a = 30; float b = a ; Promosi dan Type-Casting(2) Type-Casting proses pengubahan representasi bit variabel primitif dari representasi bit yang lebih tinggi ke representasi bit yang lebih rendah. Syntax : identifier = (target_type) value ; Contoh : int num1 = 34; int num2 = 45; short num3 = (short)(num1 + num2 ); Keterangan : (num1 + num2) menghasilkan nilai integer. Agar nilainya dapat di-assign ke num3, dilakukan casting dengan pernyataan : (short) (num1+num2) Promosi dan Type-Casting(3) Type-Casting merupakan proses pemotongan bit Misalnya : Type-casting dari float ke int 63 62 61 60 59 7 6 5 4 3 2 1 0 0 00 0 00 10 0 10 0 31 30 29 28 27 7 6 5 4 3 2 1 0 0 00 0 00 10 0 10 0 Contoh : int num1; long num2 = 123987654321L; num1 = (int)(num2); num1 akan bernilai -566397263 0 = 36 L 0 = 36 Beberapa Catatan Promosi & Casting (1) Operasi Aritmatika Menghasilkan Nilai di Luar Batas Tipe Data Contoh : int a = 55555; int b = 66666; int c = a * b System.out.println(c); Output : -591337666 ( != 55555 * 66666 ) Solusi : int a = 55555; long b = 66666; long c = a * b; System.out.println(c); Output : 3703629630 ( = 55555 * 66666 ) Beberapa Catatan Promosi & Casting (2) Asumsi dasar compiler untuk tipe data integer: Nilai yang di-assign tanpa penambahan keterangan apapun, diasumsikan sebagai nilai integer Jika pada suatu operasi aritmatika, operand-operand pada ruas kanan berbeda tipe datanya ( semuanya masih termasuk tipe data integral ), dan semua tipe data merupakan tipe data yang representasi bitnya di bawah integer, maka hasil operasi aritmatika tersebut akan diasumsikan sebagai integer Jika pada suatu operasi aritmatika, operand-operand pada ruas kanan berbeda tipe datanya ( semuanya masih termasuk tipe data integral ), dan salah satu tipe data merupakan tipe data yang representasi bitnya di atas integer, yaitu long, maka hasil operasi aritmatika tersebut akan diasumsikan sebagai long Beberapa Catatan Promosi & Casting (3) Asumsi dasar compiler untuk tipe data floating-point: Nilai yang di-assign tanpa penambahan keterangan apapun akan diasumsikan sebagai double Jika pada operasi aritmatika dengan semua operand pada ruas kanan menggunakan tipe data floating-point, maka hasil operasi aritmatika tersebut direpresentasikan dengan tipe data yang mengikuti tipe data dengan representasi tertinggi pada ruas kanan operasi aritmatika tersebut Jika pada operasi aritmatika dengan sebagian operand pada ruas kanan menggunakan tipe data floating-point dan sebagian menggunakan tipe data integral, maka hasil operasi aritmatika tersebut direpresentasikan dengan tipe data floating-point yang mengikuti tipe data floating-point dengan representasi bit tertinggi pada ruas kanan operasi aritmatika tersebut Bab 6 MEMBUAT DAN MENGGUNAKAN OBYEK Daftar Isi Deklarasi Referensi Obyek, Instanstiasi Obyek, dan Inisialisasi Obyek : Deklarasi Referensi Obyek Instanstiasi dan Inisialisasi Obyek Menggunakan Variabel Referensi Obyek untuk Memanipulasi Data Deklarasi Referensi Obyek (1) Selain Variabel Primitif, terdapat satu jenis variabel lagi, yaitu : Variabel Referensi Obyek Ilustrasi : Jl. Kalimantan F120 Yogyakarta Jl. Margonda Raya 20 Depok Deklarasi Referensi Obyek(2) Letak variabel referensi obyek pada memory : OBYEK Variabel Referensi Obyek 0x…. STACK MEMORY HEAP MEMORY Deklarasi Referensi Obyek(3) Syntax : Classname identifier ; Contoh : Inisialisasi Variabel Referensi Obyek (1) Syntax : Classname identifier = new Classname ( ) ; atau Classname identifier ; identifier = new Classname ( ); Contoh : Inisialisasi Variabel Referensi Obyek(2) Hasil akhir pada memory : Harga = 0 luasBangunan = 0 Obyek Rumah luasTanah = 100 rumah2 0x…. Harga = 0 rumah1 0x…. luasBangunan = 0 luasTanah = 100 STACK MEMORY HEAP MEMORY Obyek Rumah Menggunakan Variabel Referensi Obyek untuk Memanipulasi Data Contoh : Memindahkan Referensi dari Satu Obyek ke Obyek yang Lain (1) Contoh : Memindahkan Referensi dari Satu Obyek ke Obyek yang Lain (2) 0x034009 0x034009 200000000 rumah1 0x99f311 0 120 harga luasBangunan luasTanah 0x99f311 rumah2 0x99f311 STACK MEMORY 0 harga 80 luasBangunan 0 luasTanah HEAP MEMORY Bab 7 MENGGUNAKAN CLASS STRING DAN PUSTAKA JAVA Daftar Isi Menggunakan Class String Instanstiasi String dengan Kata Kunci new Instanstiasi String tanpa Kata Kunci new Penggunaan Operator ‘==‘ dan Method equals( ) untuk Membandingkan Dua Buah String Investigasi Pustaka Class Java Spesifikasi Pustaka Class Java Mempelajari Spesifikasi Pustaka Class-class Java untuk Mempelajari Method Menggunakan Class String Keunikan String : Merupakan kumpulan karakter yang jumlahnya dari 0 sampai memori tidak mencukupi Dapat diinstanstiasi tanpa kata kunci new Contoh penggunaan String : Instanstiasi String dengan new Instanstiasi String dengan new : JVM akan membentuk 2 buah obyek : Obyek String : memuat referensi ke suatu String literal pada literal pool. String literal : yang memuat karakter-karakter. String literal ini terletak pada literal pool Literal pool : satu blok alokasi memory pada Heap Memory yang khusus berisi kumpulan String literal. Alokasi literal pool ini dimaksudkan untuk mengakomodasi apabila terdapat lebih dari satu obyek String yang mereferensi ke literal yang sama, tidak perlu membuat 2 string literal dengan komposisi karakter yang sama, tetapi cukup hanya 1 string literal saja. Instanstiasi String tanpa new Instanstiasi String dengan new : JVM akan membentuk 1 buah obyek : Obyek String : memuat referensi ke suatu String literal pada literal pool. String literal akan dibentuk apabila representasi karakter obyek String belum ada di Literal Pool Hasil Instanstiasi String 0xdef namaSiswa4 (with new) 0x0036g 0xe10 0xdef namaSiswa3 ( without new) 0xdef 0x0011f namaSiswa2 (with new) 0xd77 0xd77 0x0023g 0xd44 0xe34 0x0011f namaSiswa1 (without new) STACK MEMORY Literal Pool Adi 0x0011f Adi 0x0023g Adi HEAP MEMORY 0x0036g Penggunaan ‘==‘ dan Method equals( ) untuk Membandingkan dua buah String Penggunaan ‘==‘ : lebih menekankan apakah kedua obyek String tersebut menunjuk ke string literal yang sama Penggunaan method equals () : lebih menekankan apakah representasi karakter kedua String sama atau tidak Investigasi Pustaka Class Java (1) Spesifikasi Pustaka Class-class Java : Java Software Development Kit (SDK ) Documentation Investigasi Pustaka Class Java (2) Menggunakan Spesifikasi Pustaka Java untuk Mempelajari Method : Daftar Field Daftar Method Bab 8 MENGGUNAKAN OPERATOR DAN KONSTRUKSI PENGAMBILAN KEPUTUSAN Daftar Isi Menggunakan Operator Relasional dan Kondisional Operator Relasional Operator Kondisional Konstruksi Pengambilan Keputusan Konstruksi if Konstruksi if … else Konstruksi switch Menggunakan Operator Relasional dan Kondisional Operator Relasional digunakan untuk mengevaluasi variabel Operator Kondisional digunakan untuk mengevaluasi kondisi Operator Relasional dan Kondisional akan menghasilkan nilai true atau false Operator Relasional (1) Membandingkan suatu variabel dengan variabel lain, atau variabel dengan sebuah nilai Operator Relasional : Operator Relasional (2) Contoh 1 : int i = 1; System.out.println(i==1); Keluaran : true Contoh 2 : int i = 1; System.out.println(i>1); Keluaran : false Operator Kondisional (1) Membandingkan suatu kondisi dengan kondisi lain Operator Kondisional : Operator Kondisional (2) Contoh 1 : int i = 1; int j = 2; System.out.println ( ( i < 1 ) && ( j > 0 ) ) ; Keluaran : false Contoh 2 : int i = 1; int j = 2; System.out.println ( ( i < 1) || ( j > 0) ) ; Keluaran : true Konstruksi Pengambilan Keputusan Konstruksi yang memungkinkan program melakukan evaluasi terhadap variabel / kondisi kemudian menjalankan alur program yang sesuai dengan kondisi. Konstruksi Pengambilan Keputusan : Konstruksi if Konstruksi if … else Konstruksi switch Konstruksi if (1) Konstruksi pengambilan keputusan dengan 2 kemungkinan keputusan. If ( kondisi ) Kondisi menghasilkan nilai true Code Block Kondisi menghasilkan nilai false Konstruksi if (2) Syntax if ( boolean_expression ){ code block; } //akhir dari konstruksi ‘if’ //program dilanjutkan Contoh : Konstruksi if … else (1) Digunakan sebagai konstruksi pengambilan keputusan yang memiliki beberapa kemungkinan keputusan. If ( kondisi_1 ) Kondisi_1 menghasilkan nilai false Kondisi_1 menghasilkan nilai true Blok Program 1 else if ( kondisi_2 ) else Kondisi_2 menghasilkan nilai true Blok Program 2 Kondisi_2 menghasilkan nilai false Blok Program 3 Konstruksi if … else (2) Syntax if ( boolean_expression_1 ){ code block 1; } else if ( boolean_expression_2 ){ code block 2; } . . . else{ code block n; } Konstruksi if … else (3) Contoh Konstruksi switch(1) Digunakan untuk mengambil keputusan yang mengevaluasi kemungkinan-kemungkinan nilai dari variabel yang dievaluasi Evaluasi variabel Variabel = nilai_1 Code_block_1 Variabel = nilai_2 Code_block_2 Semua kemungkinan nilai tidak sama dengan nilai variabel ..... Code_block_default Konstruksi switch(2) Syntax switch( variabel ) { case nilai_literal_1 : code_block_1; [ break; ] case nilai_literal_2 : code_block_2; [ break; ] . . . [default:] code_block_default; [ break; ] } Konstruksi switch(3) Contoh : Konstruksi switch(4) Variabel yang dapat dievaluasi menggunakan konstruksi switch adalah variabel yang bertipe-data : int short byte char Setelah evaluasi terhadap satu nilai dilakukan, jika tidak ditemukan kata kunci break, maka pemeriksaan dilanjutkan ke nilai berikutnya. Jika ditemukan break, maka program keluar dari blok switch Kata kunci default dimaksudkan : jika semua nilai yang dievaluasi tidak ada yang cocok maka blok default ini akan dieksekusi Bab 9 KONSTRUKSI LOOP Daftar Isi Konstruksi Loop Membuat Loop Menggunakan While Membuat Loop Menggunakan For Membuat Loop Menggunakan Do/While Loop Bersarang ( Nested Loop ) Perbandingan Konstruksi Loop Konstruksi Loop Konstruksi Loop adalah konstruksi yang digunakan untuk mengakomodasi pengulangan proses Konstruksi Loop diperlukan untuk lebih mengefisienkan penulisan kode program, sehingga tidak perlu dilakukan pengulangan penulisan kode untuk merepresentasikan suatu proses yang berulang. Konstruksi Loop : while for do..while Konstruksi while (1) Konstruksi while adalah konstruksi loop yang jumlah perulangannya tergantung pada suatu kondisi logika tertentu Syntax : while(boolean_expression){ code_block; } //akhir dari konstruksi while //program dilanjutkan di sini Konstruksi while (2) Contoh : Konstruksi while (3) Tabel Perkembangan Nilai Variabel : Konstruksi while (3) Penggunaan while(true) : jika code block tidak mengandung pemeriksaan kondisi untuk mengakhiri loop, maka loop akan terus dijalankan Jika menggunakan while(true), buatlah pemeriksaan kondisi untuk keluar dari loop Contoh : Konstruksi for (1) Ada beberapa segmen yang dipertimbangkan pada konstruksi for : segmen inisialisasi segmen boolean_expression segmen update Syntax : for(initialize[,initialize] ; boolean_expression ;update[,update]){ code_block; } Konstruksi for (2) Contoh : Konstruksi for (3) Tabel perkembangan nilai variable Konstruksi do…while Mirip dengan konstruksi while Perbedaan dengan konstruksi while : Looping dijalankan terlebih dahulu Dilakukan pemeriksaan kondisi Contoh : Loop Bersarang (Nested Loop) (1) Looping di dalam Looping dapat diterapkan pada pemrograman Java Konstruksi yang digunakan dalam nested loop tidak dibatasi Contoh : Loop Bersarang (Nested Loop) (2) Keluaran Program : @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ Perbandingan Konstruksi Loop Konstruksi while : lebih tepat digunakan untuk membuat iterasi dengan jumlah iterasi yang tidak pasti dan untuk jumlah iterasi dari nol sampai beberapa kali Konstruksi do…while : , lebih tepat digunakan untuk membuat iterasi dengan jumlah iterasi yang tidak pasti , dan untuk jumlah iterasi dari satu sampai beberapa kali Konstruksi for : lebih tepat digunakan untuk membuat iterasi dengan jumlah iterasi yang pasti dan berhingga Pernyataan Continue Pernyataan continue (2) Bab 10 MENGGUNAKAN METHOD Daftar Isi Pengertian Method Membuat dan Memanggil ( Invoke ) Method Bentuk Dasar Method Memanggil Method dari Class yang Berbeda Memanggil Method dari Class yang Sama Melewatkan Argumen dan Mengembalikan Nilai Deklarasi Method Ber-argumen Memanggil Method Ber-argumen Mendeklarasikan Method yang Memiliki Nilai Pengembalian Menerima Nilai Pengembalian Keuntungan Menggunakan Method Overloading pada Method Pengertian Method Method adalah satu kontainer pada class yang memuat baris-baris kode Semua baris kode pada pemrograman Java harus berada pada blok method, dan semua method harus berada di dalam blok class Method dapat dianalogikan sebagai fungsi. Contoh : F(x,y)=x+y F ( x, y ) dapat dikatakan sebagai method Membuat dan Memanggil ( Invoke ) Method (1) Method dibuat / didefinisikan pada saat mendefinisikan class Syntax : [modifiers] return_type method_identifier ([arguments]){ method_code_block; } Membuat dan Memanggil ( Invoke ) Method(2) Contoh : Membuat dan Memanggil ( Invoke ) Method(3) Contoh (lanj.) : Membuat dan Memanggil ( Invoke ) Method(4) Contoh (lanj.) : Memanggil Method dari Class yang Berbeda Contoh : Syntax : < object identifier > . < method identifier ([arguments])> ; Memanggil Method dari Class yang Sama Contoh : Syntax : <method identifier([arguments])>; Melewatkan Argumen (1) Method dapat memiliki argumen Argumen dapat disebut sebagai variabel dummy, atau parameter Dalam pemanggilan method, dapat dilakukan passing argumen ( pelewatan argumen ), dengan nilai yang tipe datanya sama dengan tipe data parameter Melewatkan Argumen (2) Syntax deklarasi method berargumen : [modifiers] return_type method_identifier ( data_type argument_identifier_1 [, data_type argument_identifier_n] ) { code_block; } Melewatkan Argumen (3) Contoh method dengan parameter : Class LumbungPadi : public void simpanPadi(int tambahanPadi){ padiDisimpan = padiDisimpan + tambahanPadi; } Class Petani : public void simpanPanenanDiLumbung(int jumlahPanenan ){ lumbung.simpanPadi(jumlahPanenan); } Contoh pemanggilan method : Petani pakBakri = new Petani( ); pakBakri.simpanPanenanDiLumbung(100 ); Mengembalikan Nilai (1) Method dengan return_type bukan void dapat mengembalikan nilai Nilai dikembalikan ke method lain yang memanggil method tersebut Mengembalikan Nilai (2) Syntax deklarasi method yang dapat mengembalikan nilai : [modifiers] return_value method_identifier([arguments]){ method_code_block; return value; } Mengembalikan Nilai (3) Contoh deklarasi method yang dapat mengembalikan nilai : Contoh pemanggilan method yang dapat mengembalikan nilai : Keuntungan Menggunakan Method Method membuat program lebih mudah dibaca dan mudah untuk dipelihara / di-maintain. Method membuat proses pengembangan dan perawatan ( maintenance ) menjadi lebih cepat. Method merupakan dasar untuk melakukan membuat software yang re-usable. Method memungkinkan obyek-obyek yang berbeda untuk berkomunikasi dan untuk mendistribusikan beban kerja yang dipikul oleh program. Overloading pada Method(1) Dalam satu class dapat dibuat lebih dari 1 method dengan identifier (nama method ) yang sama Setiap method dengan nama yang sama harus mempunyai komposisi argumen yang berbeda Contoh method-method yang merupakan overload : void simpanPanenanDiLumbung( ) void simpanPanenanDiLumbung(int jumlahPanenan) void simpanPanenanDiLumbung(int jumlahPanenan, LumbungPadi lb ) Overloading pada Method(2) Contoh : Overloading pada Method(3) Contoh (lanj.) : Overloading pada Method(4) Contoh (lanj.) : Overloading pada Java API Pada Spesifikasi Java API, terdapat method-method overload. Contoh : pada class PrintStream, terdapat methodmethod overload : print print print print print print dll (boolean b) (char c) (char[ ] ca) (double d ) (int i ) (Object o ) Bab 11 VARIABEL DAN METHOD STATIK Daftar Isi Membuat Method dan Variabel static Mendeklarasikan Method static Memanggil Method static Mendeklarasikan Variabel static Method static dan Variabel static pada Java API Method main ( ) Kapan Mendeklarasikan Method atau Variabel static ? Membuat Method dan Variabel statik Mendeklarasikan Method Statik Syntax [modifiers] static return_type method_identifier( [arguments ]){ method_code_block; } Memanggil Method Statik Syntax <class_name> . <method_identifier(arguments)> ; Perbedaan pemanggilan method statik dan non-statik adalah : Pemanggilan method statik dilakukan tanpa menginstanstiasi obyek, tetapi langsung menuliskan nama class. Pemanggilan method non-statik dilakukan dengan terlebih dahulu menginstanstiasi obyek Mendeklarasikan Variabel Statik Syntax [modifiers] static data_type identifier = value; Perbedaan pemanggilan variabel statik dan nonstatik adalah : Pemanggilan variabel statik dilakukan tanpa menginstanstiasi obyek, tetapi langsung menuliskan nama class. Pemanggilan variabel non-statik dilakukan dengan terlebih dahulu menginstanstiasi obyek Method Statik pada Java API Method statik pada Java API antara lain : Pada class System : public static Properties getProperties( ) public static String getProperty(String key) public static SecurityManager getSecurityManager() Pada class Math : Public Public Public Public static static static static double double double double abs (double a) cos (double c) exp (double e) max (double a, double b) Variabel Statik pada Java API Variabel statik pada Java API antara lain : Pada class System : public static PrintStream err public static InputStream in public static PrintStream out Pada class Math : Public static double E Public static double PI Method main ( ) (1) Method main() adalah satu method static khusus yang wajib ada dalam setiap aplikasi Java Standard Edition Method main( ) adalah method yang pertama kali dipanggil ketika sebuah aplikasi berbasis Java dipanggil ( kecuali Applet, MIDlet, dan aplikasi yang membutuhkan server ) Syntax : public static void main ( String[ ] args ){ main_method_code_block ; } Method main ( ) (2) Method main() mempunyai argumen berupa array String Pemanggilan program dapat dilakukan dengan menyertakan argumen-argumennya Contoh pemanggilan program dengan argumen : C:> java KegiatanPanen petani1 petani2 petani3 Kapan Menggunakan Method atau Method Statik ? Tidak diperlukan operasi pada obyek individual Tidak diperlukan asosiasi suatu variabel kepada sebuah obyek Diperlukan akses variabel atau method sebelum instanstiasi obyek Method atau variabel secara logika bukan milik dari sebuah obyek, tetapi milik sebuah class utilitas. Contohnya class Math pada Java API Bab 12 ENKAPSULASI DAN KONSTRUKTOR Daftar Isi Menggunakan Enkapsulasi Mendeskripsikan Variable Scope Visibility Modifier Modifier public Potensi Masalah dengan modifier public Modifier private Interface dan Implementasinya Penempatan Variabel Instans dan Variabel Lokal di Memori Konstruktor Mendefinisikan Konstruktor Konstruktor Default Konstruktor Overload Menggunakan Enkapsulasi Enkapsulasi adalah menyembunyikan data di dalam class. Data yang disembunyikan adalah variabel instans / atribut Pada dasarnya, obyek adalah entitas yang mengikat data-data menjadi data-data yang eksklusif. Pengikatan ini juga dapat disebut enkapsulasi. Dengan menggunakan obyek, data-data dapat dimanipulasi aksesibilitasnya Modifier public Modifier public adalah modifier yang memberi kemampuan tak terbatas bagi variabel atau method untuk diakses Variabel atau method yang menggunakan modifier public akan dapat diakses dari mana saja, baik dari dalam class sendiri, maupun dari class lain. Visibility Modifier Visibility Modifier adalah modifier-modifier yang memberi batasan kemampuan variabel atau method untuk diakses Beberapa visibility modifier : public private Potensi Masalah dengan Atribut public Contoh : Potensi Masalah dengan Atribut public Contoh : Output : Persediaan = -100 Mungkinkah ??? Modifier private (1) Modifier private membatasi aksesibilitas variabel atau method, sehingga hanya dapat diakses oleh variabel atau method dari class yang sama. Contoh : Modifier private (2) Hasil Kompilasi : Interface dan Impementasinya (1) Agar variabel private dapat diakses oleh class lain, dibutuhkan interface yang dapat menghubungkan antara class yang mengakses variabel dengan variabel tersebut Interface tersebut berupa Method ! Interface dapat digunakan sebagai filter, sehingga nilai data tetap berada pada selang nilai yang sesuai dengan desain, dan masuk akal, sehingga : Persediaan padi selalu >= 0 Jumlah padi yang diambil selalu positif Jumlah padi yang dimasukkan selalu positif Interface dan Impementasinya (2) Contoh : Interface dan Impementasinya (3) Hasil eksekusi program : Mendeskripsikan Variable Scope Variable Scope : ruang lingkup keteraksesan variabel. Pendefinisian scope menentukan pada bagian mana saja suatu variabel dapat diakses Berdasarkan scope-nya, variabel dibagi atas 2 kategori : instance variable : variabel yang dapat digunakan pada semua bagian obyek local variable : yaitu variabel yang hanya dapat digunakan pada method yang mendeklarasikannya Penempatan Instance Variable dan Local Variable pada Memori(1) Instance Variable disimpan pada Heap Memory Local Variable disimpan pada Stack Memory Sebelum menempatkan Local Variable pada Stack Memory, terlebih dahulu dilakukan alokasi scope pada Stack Memory. Local variabel akan ditempatkan pada alokasi memory yang termasuk dalam scope Penempatan Instance Variable dan Local Variable pada Memori(2) setJumlah Dimasukkan setJumlah Diambil 0x0abc 0x23ff 250 jdb jumlahDimasukkan false 0x0abc 100 kondisi pesan jdm jumlahDiambil persediaan 0x0ab7 0x23ff main set Persediaan Scope 100 0x0ab7 STACK MEMORY p SET JUMLAH PADI YANG DIMASUKKAN KE LUMBUNG lumbungDesaSukatani HEAP MEMORY Konstruktor Konstruktor adalah struktur yang mirip dengan method ( tetapi bukan method ), yang digunakan untuk melakukan instanstiasi obyek Pendefinisian Konstruktor Syntax pendefinisian konstruktor : [modifiers] class className { [modifiers] ConstructorName([arguments]) { code_block; } } Contoh : Konstruktor Default Jika pada suatu class tidak didefinisikan satu konstruktor pun , maka JVM mengasumsikan konstruktor default, yaitu konstruktor yang tidak melakukan modifikasi nilai variabel, dan tidak mempunyai argumen Konstruktor Overload(1) Dalam satu class dapat didefinisikan lebih dari 1 konstruktor Setiap konstruktor tidak boleh mempunyai komposisi argumen yang sama dengan konstruktor lain Contoh : Konstruktor Overload(2) Contoh (lanj.) Konstruktor Overload(3) 50 0 10 jumlahDimasukkan jumlahDiambil persediaan 0x0bc4 0 0 100 jumlahDimasukkan jumlahDiambil persediaan 0x0ba4 0x0bc4 main 0x0ba4 0x0ab7 lumbung3 0 lumbung2 lumbung1 0 jumlahDiambil 0 persediaan 0x0ab7 STACK MEMORY jumlahDimasukkan HEAP MEMORY