Pemrograman Berorientasi Obyek 1

advertisement
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
Download