1.2 Platform
Java adalah bahasa yang dapat dijalankan dimanapun dan di sembarang platform
apapun, di berbagai lingkungan: Internet, intranets, consumer electronic products, dan
computer applications. Untuk beragam aplikasi yang dibuat dengan bahasa Java, Java
dipaketkan dalam edisi-edisi berikut:
Java 2 Standard Edition (J2SE), J2SE menyediakan lingkungan pengembangan yang
kaya fitur, stabil, aman, dan cross-platform. Edisi ini mendukung konektivitas basis
data, rancangan user interface, masukkan/ keluaran (input/output), dan pemrograman
jaringan (network programming), dan termasuk sebagai paket-paket dasar bahasa
Java.
Java mudah dipelajari karena memiliki sintaks yang menyerupai bahasa inggris
sehingga mudah dibaca, dipelajari dan dimengerti dengan cepat.
Java adalah bahasa pemrograman berorientasi objek. Prinsip dasar dari bahasa ini
adalah segala aspek yang ada di dalam program Java dapat dipandang sebagai objek.
Pematangan konsep pemrograman berorientasi objek seperti abstraction,
encapsulation, polymorphism dan inheritance dipandang sangat perlu.
Java kaya akan API yang memiliki banyak sekali kelas-kelas yang sudah
terdefinisi (Java predefined classes) yang dikelompokkan ke dalam paket-paket
(packages). Anda dapat membuat kelas-kelas baru lebih cepat dengan memanfaatkan
kelas-kelas yang ada di API Java.
Java didukung oleh perkakas pengembangan yang terintegrasi seperti Eclipse
dan Netbeans. Selain menggunakan teks editor sederhana seperti Notepad dan
Notepad++, Anda memiliki alternatif menggunakan perkakas gratis ini untuk
mengembangkan program Java dengan lebih mudah dan lebih cepat.
Java didukung oleh komunitas yang siap membantu dan berbagi pengetahuan
terkait bahasa pemrograman ini. Komunitas Java ini siap membantu programer Java
dari berbagai tingkatan, mulai dari pemula, tingkat lanjut sampai dengan yang ahli.
Java itu free, anda dapat mengunduh secara gratis versi standard edition (SE),
menggunakan dan mengembangkannya tanpa dikenakan biaya.
Java memiliki dokumentasi yang luar biasa, Javadocs. Dokumentasi ini
memberikan informasi yang sangat lengkap dan menyeluruh terkait dengan API Java.
Java tidak bergantung pada platform (platform-independent). Dengan Java
Virtual Machine (JVM), Anda hanya perlu menulis program sekali dan dapat
menjalankannya pada platform berbeda seperti sistem operasi Microsoft Windows,
OS/2, Macintosh, UNIX dan IBM AS/400.
Hardware:
1. Spesifikasi Minimum
2. Pentium 200-MHz
3. RAM 64 MB
Software:
1. Sistem Operasi Linux 7.1 or Windows xp/7/8/10
2. Java JDK 8
3. Microsoft Notepad atau text editor lainnya (JCreator).
Aturan Penamaan :
1. Case-sensitive
2. Tidak menggunakan reserved word atau Keyword JAVA,
3. Tidak menggunakan symbol-simbol operator.
4. Dimulai dengan huruf abjad (a, b,...), atau underscore (_), tanda dolar ( $ ),
5. Tidak dibolehkan diawali dengan bilangan (0, 1, 2, …)
6. Tidak boleh menggunakan spasi
menandakan nama class yaitu percobaan1. Dalam Java, semua kode seharusnya
didalam deklarasi class. kita melakukannya dengan menggunakan kata kunci class.
Baris berikutnya yaitu yang terdiri atas kurung kurawal { menandakan awal blok kita
dapat juga meletakkan kurung kurawal ini setelah baris pertama dari kode yang kita
tulis.
Atau :
public class percobaan1 {
Tiga baris selanjutnya menandakan adanya komentar Java. Komentar adalah sesuatu
yang digunakan untuk mendokumentasikan setiap bagian dari kode yang ditulis.
Komentar bukan merupakan bagian dari program itu sendiri, tetapi digunakan untuk
tujuan dokumentasi. Komentar itu sendiri dapat ditambahkan pada kode yang Anda
tulis sebagai petunjuk yang dapat membantu proses pembelajaran pemrograman yang
baik.
/**
* My first java program
*/
Komentar dinyatakan dengan tanda “/*” dan “*/”. Segala sesuatu yang ada diantara
tanda tersebut diabaikan oleh compiler Java, dan mereka hanya dianggap sebagai
komentar sedangkan untuk membuat sebuah atau satu baris komentar dengan cara
berikut ini // ini adalah program pertamaku. Semua tulisan yang berada satu baris
dengan tanda // akan diabaikan oleh compiler.
Baris selanjutnya,
public static void main(String[] args) {
mengindikasikan nama suatu method dalam class percobaan1 yang bertindak sebagai
method utama. Method utama adalah titik awal dari suatu program Java. Semua
program kecuali applet yang ditulis dalam bahasa Java dimulai dengan method utama.
Kemudian baris perintah yang ada di dalam method main yaitu :
System.out.println("Hello World");
adalah perintah untuk mencetak tulisan Hello World ke layar monitor, kemudian ditutup
dengan kurung kurawal } untuk akhir dari method main dan kurung kurawal } untuk
akhir dari class percobaan1.
Percobaan 2 :
Buat class baru di JCreator dan ketik Ulang listing program berikut ini !
class hallo_dunia {
public static void main(String args[]) {
system.out.println("Nama : Tuliskan Nama Anda");
System.out.println("Gender : Tuliskan Gender Anda");
System.out.println("Alamat : Tuliskan Alamat Anda");
System.out.perintln("Tanggal Lahir : Tuliskan Tanggal lahir Anda");
}
}
Percobaan 3 :
Buat class baru di JCreator dan ketik Ulang listing program berikut ini !
Buat kode berikut ini kemudian masukkan character literals yang ada didalam table
dibawahnya:
class percobaan3 {
public static void main(String args[]) {
System.out.print("Nama Buah : ");
System.out.print("1. Manggis");
System.Out.print("2. Semangka");
System.out.print("3. Durian");
System.out.Print("3. Salak");
}
}
Kode Nama
\b Backspace
\n Line feed
\t Tabulasi
2. Kelas adalah pemodelan dari objek yang berisi informasi (aturan) tentang sifat
karakteristik (data) dan tingkah laku (metode) yang dimiliki oleh objek tersebut.
Contoh: resep kue, material spidol, dan lain-lain.
A. Class
1). Deklarasi Class
2.3 Modifier
Modifier biasanya dibagi ke dalam 2 bagian, bagian Pertama di awal nama class,
method, variable, bagian kedua di akhir class
A. Modifier 1
public : Dapat diakses dari kelas lain, baik dalam package
yang sama maupun berbeda.
private : Tidak dapat diakses sama Sekali dari kelas lain, baik
dari paskage yang sama maupun berbeda.
protected : Membatasi akses kelas yang dilakukan oleh subkelas
turunannya dan kelas lain yang terletak dalam
package yang sama.
abstact : Kelas tersebut tidak dapat diinstankan langsung
menjadi Objek. Dipakai pada Hirarki kelas tertinggi,
yang hanya mungkin dilakukan dengan cara
Inheritance.
final : Kelas tersebut tidak dapat diturunkan menjadi
subkelas.
B. Modifier 2
Extends : digunakan untuk inheritance.
Impleme : digunakan bila kelas mengimplementasikan satu atau
nts lebih interface
C. Kelompok Modifier
1). Access Modifier (controls the access level)
a). Untuk Class
Modifier Description
Modifier Description
2). Non-Access Modifier (do not control access level, but provides other
functionality)
a). Untuk Class
Modifier Description
abstract Can only be used in an abstract class, and can only be used on
methods. The method does not have a body, for
example abstract void run();. The body is provided by the
subclass (inherited from).
transient Attributes and methods are skipped when serializing the object
containing them
2.4 Keyword
Proses pembacaan data yang diinput oleh user melalui keyboard dilihat dengan 2
(dua) cara, yaitu:
a. Dalam lingkungan Console (DOS)
Menggunakan kelas BufferReader(), InputStreamRader(), dimana kelas
diinstansiasikan menjadi sebuah objek, dan kemudian objek yang terbentuk memiliki
sebuah metode readLine() yang digunakan untuk menangkap inputan dari
keyboard.
A. Identifier
B. Modifier (Access Modifiers)
1) public pada class
A. Variabel
Variable merupakan tempat penyimpanan atau penampung nilai atau data di
dalam memori.
Variabel terdiri dari terdiri dari tipe data dan nama variabel. Tipe data menentukan
jenis nilai atau data yang akan disimpan, sedangkan nama variabel menjadi
pengenal (identifier), seperti halnya orang akan dipanggil dengan nama yang ia
miliki, begitu-pun variabel.
Deklarasi Variabel
Syntax sbb :
typedata variable = value;
int myNum;
myNum = 15;
System.out.println(myNum);
Contoh sbb :
B. Konstanta:
Suatu nilai bersifat tetap atau tidak dapat dirubah, disebut juga konstanta
(constant), untuk mendeklarasikan konstanta dapat mengikuti aturan sbb:
Harus menambahkan kata kunci final sebelum nama konstanta.
Sebaiknya tulis nama konstanta dengan semua huruf besar atau kapital.
Jika terdiri dari beberapa kata gunakan tanda underscore (_) sebagai
pemisah.
Harus memberikan nilai tetap tersebut.
Jika memberikan nilai setelah dideklarasikan maka akan menimbulkan
pesan error.
Deklarasi Konstanta
Syntax sbb :
final typedata variable = value;
Contoh sbb :
final int myNum = 15;
myNum = 20; // will generate an error: cannot assign a value to a final variable
3.2 Tipe Data
Pada banyak Bahasa pemrograman, Tipe data menyuruh compiler atau interpreter
tipe data apa yang harus di gunakan untuk mengambil dan menyimpan data ke sebuah
variable. Clasifikasi tipe data di java dapat di lihat pada gambar berikut ini:
1. byte
2. short
3. int
4. long
5. float
6. double
7. char
8. boolean
byte, short, int and long merupakan tipe data primitif yang dikelompokkan
kedalam tipe data integer, maksudnya byte, short, int and long variable dapat
menampung data dalam bilangan integer, masing masing memiliki jangkauan
yang berbeda. Seluruh tipe data integer dapat menampung bilangan integer positif
dan negatif.
1) byte
Ukuran untuk tipe data byte ini adalah 8 bit. Jangkauan nilai ini adalah
antara -128 sampai +127. Variable bertipe data byte di deklarasikan
dengan keyword byte.
Contoh Program :
2) short
Ukuran untuk tipe data short ini adalah 16 bit. Jangkauan nilai ini adalah
antara -32768 sampai +32767. Variable bertipe data short di deklarasikan
dengan keyword short.
Contoh Program :
3) int
Ukuran untuk tipe data int ini adalah 32 bit. Jangkauan nilai ini adalah
antara –2,147,483,648 to +2,147,483,647. Variable bertipe data int di
deklarasikan dengan keyword int.
Contoh Program :
4) long
Ukuran untuk tipe data long ini adalah 64 bit. Jangkauan dari tipe data ini
cocok untuk mendeklarasikan nilai-nilai yang besar. Variable bertipe data int
di deklarasikan dengan keyword long.
Contoh Program :
Untuk nilai float dan double merupakan tipe data floating dengan kapasitas
penyimpanan yang berbeda.
5) float
Ukuran untuk tipe data float ini adalah 32 bit. Jangkauan nilai ini adalah
antara 1.4e–045 sampai 3.4e+038. Variable bertipe data float di
deklarasikan dengan keyword float. float merupakan single precision.
Variables cocok untuk merepresentasikan nilai dollars dan nilai cents.
Contoh Program :
6) double
Ukuran untuk tipe data double ini adalah 64 bit. Jangkauan nilai ini adalah
antara 4.9e–324 sampai 1.8e+308. Variable bertipe data float di
deklarasikan dengan keyword float. float merupakan single precision.
Variables cocok untuk merepresentasikan nilai ke akuratan nya lebih tinggi.
Contoh Program :
7) char
tipe data char ini dapat mengisi variabel dengan satu huruf dalam satu
waktu, char di java berbeda dengan char pada bahasa c/c++. Pada Bahasa
c/c++ ukurannya 8 bits sedangkan di java 16 bits dalam bentuk Unicode
Range nya 0 sampai 65535 dan tidak ada negative char. Variable dengan
tipe data ini di deklarasikan dengan keyword char.
Contoh Program :
8) boolean
variable dengan tipe data boolean digunakan untuk menyimpan data
logika. Dimana nilai yang disimpan berupa nilai true atau false. Tipe
data boolean dideklarasikan dengan keyword boolean.
Contoh Program :
Semua class yang sudah di sediakan oleh java, selalu berawalan huruf
besar, jadi berbeda dengan tipe data primitif, dimana class tipe data
memiliki method yang dapat dioperasikan untuk beberapa hal.
Diantaranya sbb:
1. Byte
2. Short
3. Integer
4. Long
5. Float
6. Double
7. Character
8. Boolean
9. String
10. dll
2) Array
Array juga termasuk tipe data non primitif. Array merupakan sebuah solusi
untuk mendeklarasikan sejumlah Variabel secara tepat. Pemakaian Variabel
Array akan menghemat waktu penyebutan nama Variabel. Variabel Array
adalah sejumlah Variabel dengan nama yang sama.
Ilustrasi Array:
Catatan: No. Indeks/No. Element di awali angka 0 (nol) dan diakhiri n-1
dimana n adalah panjang array.
2. Inisialisasi
4. Deklarasi Otomatis
5. Contoh Program :
Contoh Lain :
import java.util.Scanner;
public class Buah {
public static void main(String[] args) {
// membuat array buah-buahan
String[] buah = new String[5];
// membuat scanner
Scanner scan = new Scanner(System.in);
// mengisi data ke array
for( int i = 0; i < buah.length; i++ ){
System.out.print("Buah ke-" + i + ": ");
buah[i] = scan.nextLine();
}
System.out.println("---------------------------");
// menampilkan semua isi array
for( String b : buah ){
System.out.println(b);
}
}
}
b) Array Multidimensi
Selain berupa sederetan variabel satu dimensi, kita dapat pula
membuat array yang berukuran lebih dari satu dimensi atau disebut
array multi-dimensi. Pada bagian ini kita mencoba mencontohkan
bentuk array dua dimensi sbb:
Nama variable = Nama
String[] Nama = new String[5];
Ali
Amir
Tuti
Budi
Ira
Contoh:
String[][] kontak = {
{"Lili","08111"},
{"Lala","08122"},
{"Maya","08133"}
};
3.3 Operator
Simbol Operators digunakan untuk operasi sesuatu yang lebih spesifik, operator di
java dikelompokkan kedalam beberapa group antara lain:
1. Operator Arithmetic
2. Operator Bitwise
3. Operator Relational
4. Operator Logical
5. Operator Assignment
6. Operator Ternary
A. Operator Arithmetic
Digunakan untuk operasi angka dalam matematika. Kita bisa melihat table berikut,
dimana variable M dan N memiliki nilai yang berbeda dengan tipe data yang sama.
Contoh : int M=100, N=50;
Operator meaning description example result
Hasilnya :
B. Operator Bitwise
Bitwise operator digunakan untuk operasi satu atau lebih bits operand, operand
adalah satu dari sejumlah operasi. Pada tabel berikut dicontohkan Variables M dan
N keduanya di definisikan dengan dan di beri nilai integer
int M=100, N=50;
nilai binary M=100 is 1100100
nilai binary N= 50 is 0110010
Operator meaning description example result
1100100 (M)
0011011(~M)
& Bitwise AND Performs bitwise AND i.e bit M&N 1100100(M)
by bit binary multiplication 0110010(N)
between
two variables or numbers or
both
0100000(&)
1100100(M)
0110010(N)
1110110(|)
1100100(M)
0110010(N)
1010110(^)
1100100 ( M )
01100100 ( M )
1100100(M)
0110010(N)
Performs bitwise OR left hand
side variable and right hand
side variable and assigns
Bitwise OR
|= result to left hand side M|=N
assignment
variable
M|=N is equvivalent to M=M|
N; 1110110(|)
1100100(M)
0110010(N)
Performs bitwise EX-OR left
hand side variable and right
Bitwise EX- hand side variable and
^= OR assigns result to left hand M^=N
assignment side variable
M^=N is equvivalent to
M=M^N; 1010110(^)
class OperatorJava2 {
public static void main(String args[]){
int a = 181;
int b = 108;
int hasil;
hasil = a & b;
System.out.println("Hasil dari a & b : " + hasil );
hasil = a | b;
System.out.println("Hasil dari a | b : " + hasil );
hasil = a ^ b;
System.out.println("Hasil dari a ^ b : " + hasil );
hasil = ~a;
System.out.println("Hasil dari ~a : " + hasil );
hasil = a >> 1;
System.out.println("Hasil dari a >> 1 : " + hasil );
hasil = b << 2;
System.out.println("Hasil dari b << 2 : " + hasil );
}
}
Hasilnya :
a = 10110101
b = 01101100
--------
$a ^ $b = 11011001 = 217 (desimal)
Di baris 17 saya membuat operasi ~ atau not, yang akan membalikkan nilai bit
sebuah variabel dari 0 menjadi 1, dan 1 menjadi nol. Namun perhitungan bit not ini
sedikit membingungkan karena jika kita hanya membalikkan seluruh bit saja,
hasilnya tidak sesuai dengan apa yang dihitung oleh compiler Java:
a = 10110101
--------
~a = 01001010 = 74 (desimal) ==> salah ???
Dari hasil menjalankan program, dapat dilihat bahwa ~a = -182, dari manakah
datangnya angka -182?
Ini berkaitan dengan cara compiler bahasa Java menyimpan angka biner (dan juga
hampir semua bahasa pemrograman komputer modern). Angka biner di dalam
bahasa Java disimpan dalam format “Two’s complement”. Penjelasan tentang
“Two’s complement” ini cukup panjang, jika tertarik saya sudah membahasnya
lengkap di buku Pascal Uncover, atau bisa ke Two’s complement Wikipedia.
Secara singkat, rumusnya adalah -a - 1, sehingga ~a = -181 - 1 = -182 (desimal)
C. Relational operator:
Relational operator digunakan untuk membandingkan antar dua operand yang
saling berhubungan. Pada tabel berikut dicontohkan variables A dan B di
definisikan integer dan diberi nilai integer dan menghasilkan nilai logika true atau
false.
int A=100, B=100;
Operator meaning description example result
true
100==100
100<100
100<100
100>100
>= Greater than If value of right hand side variable is B>=A 100>100
equal to greater than or equal to the value of
left hand side then returns true else
returns false
true
Hasilnya :
Hasil1 = false
Hasil2 = true
Hasil3 = false
Hasil4 = true
Hasil5 = false
Hasil6 = true
D. Logical operator:
Operator logical di gunakan untuk membandingkan nilai dari dua operand yang
saling berelasi. Pada table berikut dicontohkan variables A dan B di definisikan
dengan nilai boolean.
true
false
true
false
!true
false
Contoh:
int a=20; // Equal operator assigns 20 to variable a.
F. Ternary operator (? : )
Ternary operator menyerupai if else statement didalam java. Secara umum
deklarasi operator ini sbb :
Expression1 ? Expression2 : Expression 3 ; OR
Expression1 ? value1 : value2;
Maksudnya adalah :
If Expression1 benar true, maka value1 yang akan di return else value2
yang akan return.
Contoh :
System.out.println( 10>5? “true” : “false” );
Output:
true
// menampilkan jawaban
System.out.println(jawaban);
}
}
4.1 Struktur Pengambilan Keputusan
A. Struktur if
Sturktur if digunakan untuk menentukan sebuah statement (atau blok statemen)
yang akan di eksekusi jika dan hanya jika persyaratan Boolean (Boolean
statement) bernilai true.
Contoh Program :
B. Struktur if … else
Struktur if-else digunakan apabila kita ingin mengeksekusi sebuah statement
dengan kondisi true dan statemen yang lain dengan kondisi false
Contoh Program :
C. Struktur if… else if… else
Statement pada bagian else dari blok if-else dapat menjadi struktur if else yang
lain. Struktur ini mengijinkan kita untuk membuat seleksi persyaratan yang lebih
kompleks.
Contoh Program :
D. Struktur nested if….
Nested if merupakan double if, yaitu dalam sebuah blok contional if juga
terdapat blok conditional if lainnya.
Contoh Program :
Bentuk switch,
Contoh Program :
4.2 Struktur Pengulangan
A. Struktur for
Sturktur pengulangan for yaitu melakukan Pengulangan eksekusi code beberapa
kali.
Keterangan:
1. InitExpression – Inisialisasi dari variabel loop.
2. LoopCondition – membandingkan variabel lop pada nilai batas.
3. StepExpression – melakukan update pada variabel loop.
Contoh Program :
For-Each Loop
Struktur for Each Loop ini berfungsi untuk mencetak isi elemen array:
B. Struktur while
While Loop adalah statement atau blok statement yang diulang-ulang mencapai
kondisi yang cocok.
Contoh Program :
C. Struktur do while
Do-while loop mirip dengan while-loop. Statemen di dalam do-while loop akan
dieksekusi beberapa kali selama kondisi bernilai true. Perbedaan antara while dan
do-while loop adalah statemen di dalam do-while loop dieksekusi sedikit satu kali.
A. break
Pada Java, break paling banyak digunakan untuk:
satu, mengakhiri sequence pada statement switch.
dua, keluar dari loop atau iterasi.
tiga, digunakan bersamaan dengan keyword goto.
Contoh Program :
Contoh Program :
B. continue
Statement continue sangat berguna untuk memaksa iterasi lebih awal
dari proses loop, dimana programmer dapat melanjutkan program
pada looping tetapi menghentikan proses sisa dari kode program di
dalam body statement untuk iterasi tertentu. Dampaknya, goto hanya
melewati body loop untuk mengakhiri proses iterasi saja.
Ada 5 (lima) keyword penting dalam java dalam hal exception handling:
A. try
Keyword ini biasanya digunakan dalam suatu block program. Keyword ini digunakan
untuk menjalankan block program kemudian mencari dimana kesalahan munculnya
yang ingin diproses.
Keyword ini juga harus dipasangkan dengan keyword catch atau keyword finally.
Contoh blok try :
try{
int a = 1/0;
System.out.println("Perintah berikutnya");
}
B. catch
Dalam java, keyword catch harus dipasangkan dengan try. Kegunaan keyword ini
adalah menangkap kesalahan atau bug yang terjadi dalam block try. Setelah
menangkap kesalahan yang terjadi maka developer dapat melakukan hal apapun
pada block catch sesuai keinginan developer.
Contoh blok catch:
catch(Exception e){
System.err.println("terjadi kesalahan : "+e);
}
Keyword catch juga dapat diletakkan berulang-ulang sesuai dengan kebutuhan.
C. finally
Keyword ini merupakan keyword yang menunjukkan bahwa block program tersebut
akan selalu dieksekusi meskipun Adanya kesalahan yang muncul ataupun tidak.
Contoh penulisan program penggunaan keyword finally sbb :
finally {
System.out.println("dicetak juga saat 'try catch' berakhir.");
}
D. throw
Keyword ini digunakan untuk melemparkan suatu bug yang dibuat secara manual.
Contoh program:
Output Program:
java.lang.Exception: kesalahan terjadi
Seperti yang anda lihat pada program diatas, pada keyword throw new
Exception(“kesalahan terjadi”); akan melempar object bertipe exception yang
merupakan subclass dari class Exception sehingga akan dianggap sebagai suatu
kesalahan yang harus ditangkap oleh keyword catch.
E. throws
Keyword throws digunakan dalam suatu method yang mungkin menghasilkan suatu
kesalahan sehingga perlu ditangkap errornya. Cara mendefinisikannya dalam
method adalah sebagai berikut:
Java menyediakan 2(dua) kategori besar untuk eksepsi yang disebut sebagai checked
exception dan unchecked exception.
A. Checked Exception
Checked Exception adalah eksepsi yang diantisipasi oleh programmer untuk
dihandle dalam program dan terjadi dikarenakan oleh kondisi luar yang siap muncul
saat program berjalan. Misalnya membuka file yang tidak ada atau gangguan
jaringan.
Yang termasuk checked exception adalah class java.lang.Throwable dan semua
subclassnya, kecuali class dan subclass dari java.lang.Error dan
java.lang.RuntimeError
B. Unchecked Exception
Bisa muncul dari kondisi yang merepresentasikan Adanya bug atau situasi yang
secara umum dianggap terlalu sulit bagi program untuk menghandlenya. Disebut
sebagai unchecked karena kita tidak perlu mengecek atau melakukan sesuatu jika
kondisi ini terjadi. Eksepsi yang muncul dari kategori situasi yang
merepresentasikan bug ini disebut sebagai runtime exception.
Misal mengakses array melebihi size yang dimilikinya.
Sedangkan eksepsi yang muncul sebagai akibat dari isu environment software –
yang ini jarang sekali atau sulit sekali untuk dihandle – disebut sebagai error.
Misalnya running out memory.
Jadi, class Exception mendefinisikan kondisi error yang ringan yang dijumpai oleh
program.
Class Exception:
Class Exception adalah sebuah class dasar yang merepsentasikan checked
exception. Dalam hal ini, bukannya membiarkan terjadi penghentian program,
sebaliknya Anda harus Menuliskan beberapa kode untuk menghandle eksepsi dan
berikutnya melanjutkan program.
Class Error:
Class Error adalah class dasar yang digunakan untuk kondisi error serius
yang tidak terdeteksi. Dalam banyak kasus, Anda harus membiarkan program
diterminasi.
Class RuntimeException:
Class RuntimeException Adalah class dasar yang digunakan untuk unchecked
yang bisa sebagai akibat dari bug program. Pada banyak kasus Anda harus
membiarkan program dihentikan.
Jenis-jenis Exception
Berdasarkan jenisnya kesalahan dalam pemrograman terbagi menjadi 3, yaitu:
1) Runtime Error
Adalah exception yang bisa saja tidak ditangani tanpa menyebabkan program
berhenti kecuali jika propogasi exceptionnya sampai ke main, maka akan
menyebabkan terminasi program secara subnormal. Checked exception adalah
exception yang ditangani secara explicit Didalam throw. Programmer harus
membuat catch untuk menangani exception yang terjadi. Sedangkan error
adalah kesalahan yang tidak unrecoverable exception artinya tidak bisa
ditangani oleh catch.
Atau pengertian lain, Runtime error adalah kesalahan yang disebabkan oleh
tidak tersedianya sumber daya atau kondisi yang normal bagi program untuk
berjalan dengan baik, misalnya kekurangan memori kamputer, disk full, atau
pintu drive tidak terkunci, dll.
2) Logical Error
Logical Error adalah yang disebabkan oleh kesalahan logika maupun model atau
metode yang digunakan untuk pemrosesan data, sehingga menyebabkan yang
dihasilkan menjadi salah. Kesalahan ini tidak dapat dideteksi oleh compiler
maupun interpreter, kesalahan ini disadari setelah melihat penyimpanan pada
saat proses maupun hasil proses.
3) Syntax Error
Runtime Error adalah kesalahan yang disebabkan oleh kesalahan tata cara
Penulisan tanda baca, kesalahan pemakaian operator dan nilai. Kesalahan jenis
ini akan dengan mudah dideteksi oleh compiler maupun interpreter.
Sintaknya sbb:
try {
// blok kode try
}
catch(Exception e) {
// blok kode untuk handle errors
}
catch(Exception e) {
// blok kode untuk handle errors
}
…..
finally {
// blok kode finally
}
Contoh program yang bila di generate akan error, karena int a = 1/0; bilangan tidak dapat di bagi
dengan bilangan 0.
Output:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Output:
terjadi kesalahan : java.lang.ArithmeticException: / by zero
C. Penggunaan finally :
Output:
Something went wrong.
dicetak juga saat 'try catch' berakhir.
Output Program:
java.lang.NullPointerException
6.1 Class
A. Pengertian Class
1) Kelas
Predefined class, yaitu kelas yang disediakan oleh Java dan menjadi referensi
library. Banyak kelas standard yang dapat digunakan untuk aplikasi yang
spesifik. Kumpulan class ini sering dikenal dengan istilah API ( application
Programming Interface).
B. Deklarasi class
1) Deklarasi Class Sederhana
Class namaClass {
// bodi class
}
2) Deklarasi class Lengkap
6.2 Method
A. Pengertian Method
Method adalah sebuah blok kode yang hanya bisa di jalankan jika method
tersebut di panggil, kita bisa mengirim data, yang kita ketahui berupa parameter
kedalam method tersebut.
Mengapa menggunakan method, agar kita dapat menggunakan blok kode tersebut
sekali atau lebih.
B. Membuat Method
Sebuah method harus di deklarasikan bersama dengan sebuah class. Didefinisikan
dengan sebuah nama method yang di ikuti dengan parameter mau pun tidak. Java
menyiapkan banya method seperti System.out.println(), akan tetapi kita
dapat membuat method sendiri untuk keperluan yang di sesuaikan dengan
keinginan kita.
Contoh :
// method procedure
void biodata(){
// perintah yang akan di eksekusi
}
// method function
String biodata(){
// printah yang akan di eksekusi
return value;
}
6.3 Objek
C. Pengertian Objek
Objek adalah instansiasi/perwujudan dari sebuah class
D. Deklarasi Objek
Untuk membuat/mendeklarasikan sebuah objek dibutuhkan Operator new,
Operator ini digunakan untuk membentuk (menginstankan) objek dari kelas,
bentuk umumnya sbb:
namaObject.namaVariabel;
namaObject.namaMethod();
G. Contoh
// Deklarasi Objek dengan nama objMhs dari sebuah class Mahasiswa sbb:
Mahasiswa objMhs = new Mahasiswa();
// Mengkses Atribut NIM menggunakan objek yang sudah di deklarasikan dari class Mahasiswa
objMhs.NIM
// Mengkses method inputNilai menggunakan objek yang sama seperti diatas
objMhs.inputNilai();
Keyword this:
Keyword this berfungsi sebagai referensi dari variabel instance, yang mengacu
pada objek saat ini. Keyword this juga digunakan untuk membedakan variabel
instance dengan variabel atribut.
Jika kita tidak menggunakan keyword this pada nama variabel instance dan atribut
yang sama maka nilai/value akan menjadi 0 pada integer dan null pada string.
Selain itu juga, keyword this digunakan untuk memanggil Constructor milik class
yang sedang di gunakan.
Jika kita tidak ingin menggunakan keyword this tapi nilai/value tetap dapat
ditampilkan tanpa nilai 0 atau null, dengan cara membedakan nama variabel
instance dengan variabel atribut.
MyClass.java
public class MyClass {
int x;
6.5 Package
A. Pengertian Package
Package adalah sebuah upaya untuk mengelompokkan bagian-bagian program
java menjadi satu. Sebuah package dalam java terdiri dari sekumpulan class
dan/atau interface. Didalam sebuah package juga dimungkinkan mempunyai sub-
package.
Package bisa berupa package yang sudah dimiliki oleh Java, dan ada pula package
yang dibuat uleh user. Package yang dibuat oleh user ini sering disebut dengan
folder. Atau sebuah lokasi didalam media penyimpanan yang kita miliki.
Dalam package yang kita buat dapat berisi sejumlah kelas dan didalam package
tersebut juga bisa berupa sub-package.
B. Deklarasi Package
Deklarasi sebuah package diawali dengan nama package pada bagian teratas
sebuah source program. Bentuk Deklarasi Package:
Package namaPackage;
import namaPackage.namaClass;
// untuk semua namaClass dalam satu package
import namaPackage.*;
D. Contoh
MyPackageClass.java
package mypack;
class MyPackageClass {
public static void main(String[] args) {
System.out.println("This is my package!");
}
}
6.6 Contoh Program
class ShowTestPackage
{
// deklarasi method main
public static void main(String[] args)
{
// membuat objek dengan nama myObj
TestPackage myObj = new TestPackage();
System.out.println("Nama lengkap : " + myObj.NIM);
System.out.println("Warna rambut : " + myObj.nama);
myObj.biodata();
}
}
C. Package
1) TestPackage01.java
/*
* nama file : TestPackage01.java
* nama class : TestPackage01
* Hasil Kompilasi : TestPackage01.class (disimpan di dalam package Family)
* class ini yang hanya bisa diakses melalui kelas lain, karena tidak munya main
*/
package Family;
class TestPackage01
{
static String NIM = "2111500500";
static String nama = "Tariq Athar Kisan";
static String rambut = "Sawo Matang";
static int tinggi = 120;
static int berat = 25;
2) TestPackage02.java
/*
* nama file : TestPackage02.java
* nama class : TestPackage02
* Hasil Kompilasi : TestPackage02.class (disimpan di dalam package Family)
* Akses class TestPackage01 didalam class TestPackage02,
* Tdak menggunakan import karena class berada di package yang sama.
* class TestPackage01 tidak perlu dideklarasi dengan modifier public karena
* berada di package yang sama
*/
package Family;
class TestPackage02
{
public static void main(String[] args)
{
TestPackage01 myObj = new TestPackage01();
myObj.biodata();
}
}
3) TestPackage03.java
/*
* nama file : TestPackage03.java
* nama class : TestPackage03
* Hasil Kompilasi : TestPackage03.class (disimpan di dalam package notFamily)
* Akses class TestPackage01 didalam class TestPackage03 error karena
* Tdak mengenalkan dengan menggunakan import dimana TestPackage01 berada
*/
package notFamily;
class TestPackage03
{
public static void main(String[] args)
{
TestPackage01 myObj = new TestPackage01();
myObj.biodata();
}
}
4) TestPackage04.java
/*
* nama file : TestPackage04.java
* nama class : TestPackage04
* Hasil Kompilasi : TestPackage04.class (disimpan di dalam package notFamily)
* Akses class TestPackage01 didalam class TestPackage04 sudah bisa tapi masih
* Error karena class TestPackage01 tidak public.
*/
package notFamily;
import Family.*;
class TestPackage04
{
public static void main(String[] args)
{
TestPackage01 myObj = new TestPackage01();
myObj.biodata();
}
}
package Family;
public class TestPackage01_public
{
static String NIM = "2111500500";
static String nama = "Tariq Athar Kisan";
static String rambut = "Sawo Matang";
static int tinggi = 120;
static int berat = 25;
package notFamily;
import Family.*;
class TestPackage05
{
public static void main(String[] args)
{
TestPackage01_public myObj = new TestPackage01_public();
myObj.biodata();
}
}
Masalahnya, kalau programnya semakin besar atau kompleks maka itu semua
akan membuat kode kita sulit di-maintenance, sebab teknik prosedural
identik dengan menggabungkan seluruh kode. Bayangkan jika kita membuat
program besar dengan teknik prosedural, kita akan kesulitan untuk memodifikasi
kode program tersebut. Malah kita akan dibuat pusing jika seluruh program
disatukan tanpa mengorganisasikan kode program. Nah, itulah alasan mengapa
harus menggunakan teknik OOP.
OOP merupakan hal yang harus dipelajari untuk memahami Java lebih dalam.
Karena Java sendiri merupakan bahasa yang didesain untuk OOP.
Berikut beberapa pengertian dari komponen OOP yang penting untuk di pelajari.
1. Data
Data adalah istilah lain dari variabel OOP. Dalam pemrograman Java bisa
juga disebut field, data member atau instance variabel. Data member
dideklarasikan pada kelas.
2. Variabel/Atribut
Variable adalah bagian dari program yang digunakan untuk menyimpan
data. Sebagai tempat menyimpan data, variable harus dideklarasikan, yaitu
diberi tipe data, nama variable, dan dapat juga diberi nilai awal (inisiasi).
3. Objek
Objek adalah benda, baik yang berwujud nyata seperti yang dijumpai dalam
kehidupan anda, maupun tidak nyata, seperti halnya yang berupa sistem
atau konsep.
4. Class/Kelas
Class adalah wadah yang berisi abstraksi (permodelan) dari suatu
Object(benda), yang mendeskripsikan data(sifat karakteristik) dan fungsi
yang dimiliki oleh Object tersebut. Class disebut juga pemodelan dari Object
yang berisi informasi (aturan) tentang sifat karakteristik (data) dan tingkah
laku (method) yang dimiliki oleh Object tersebut.
5. Konstruktor
Konstruktor adalah method khusus yang memiliki nama sama dengan nama
class. Konstruktor memiliki dua karakteristik sebagai berikut,
Konstruktor tidak mengembalikan nilai
Konstruktor mempunyai nama sama dengan nama class
Jika konstruktor tidak didefinisikan, Java memberikan konstruktor
dengan nama constactor_default. Konstruktor default tidak melakukan
apa – apa, namun variabel yang tidak diinisiasikan dianggap sebagai
berikut,
Variabel numeric diset ke 0
String diset ke null
Variabel Boolean diset ke false
6. Method
Method/Prosedur/Fungsi/Behaviour merupakan istilah yang sama. Method
adalah prosedur/fungsi yang dimiliki oleh sebuah Object. Karena pada
dasarnya merupakan prosedur/fungsi, maka method ini akan mengolah atau
mengubah data/variable yang ada di dalam Object sesuai dengan operasi
yang dilakukan. Dari proses tersebut akan terjadi 3 kemungkinan :
Mengembalikan suatu nilai akhir.
Mengembalikan nilai yang bersifat sementara untuk kemudian
diteruskan ke method lain.
Tidak mengembalikan nilai sama sekali.
Jenis Method:
Setter
Contoh :
public void setSaldo(double jumlah){
saldo += jumlah;
}
Getter
Getter adalah method untuk memberikan atau merubah nilai suatu
variable class yang tidak bertipe public yang hanya bisa diambil melalui
method class tersebut.
Contoh :
9. Class Diagram
Class Diagram adalah sebuah diagram yang menggambarkan hubungan
antar class.
Baris pertama berisi nama class; Baris kedua berisi atribut; dan Baris ketiga
berisi method.
Contoh :
Belajar java otomatis belajar OOP karena keduanya saling berkaitan erat dan tak
terpisahkan satu sama lain. Jadi jika belajar java belajarlah juga konsep oopnya
sebagai konsep awal pembelajaran java. Kuasailah oop maka kita akan
menguasai duniadunia java.
1. Enkapsulasi (Encapsulation)
Enkapsulasi adalah kombinasi data dan fungsionalitas dalam sebuah unit
tunggal sebagai bentuk untuk menyembunyikan detail informasi. Proses
enkapsulasi memudahkan kita untuk menggunakan sebuah objek dari suatu
kelas karena kita tidak perlu mengetahui segala hal secara rinci. Enkapsulasi
menekankan pada antar muka suatu kelas, atau dengan kata lain
bagaimana menggunakan objek kelas tertentu.
Contoh keyword yang digunakan antara lain:
private : Variabel atau method hanya dapat diakses oleh objek itu
saja.
public : Variabel atau method dapat diakses oleh objek itu sendiri dan
objek lainnya
protected : Variabel dan method dapat diakses oleh objek itu sendiri
dan turunannya.
2. Pewarisan (Inheritance)
Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari
kelas lain yang sudah ada.
Penurunan sifat ini bisa dilakukan secara bertingkat tingkat, sehingga
semakin ke bawah kelas tersebut menjadi semakin spesifik.
Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan
perilaku khusus dari kelas supernya.
Dengan konsep pewarisan, seorang programmer dapat menggunakan
kode yang telah ditulisnya pada kelas super berulang kali pada kelas-
kelas turunannya tanpa harus menulis ulang semua kode kode itu.
Kelas yang di gunakan untuk menurunkan menjadi sub kelas adalah kelas
abstrak dan kelas lain yang bukan final.
3. Polimorfisme (polymorphism)
Polimorfisme merupakan kemampuan objek-objek yang berbeda kelas
namun terkait dalam pewarisan untuk merespon secara berbeda terhadap
suatu pesan yang sama. Polimorfisme juga dapat dikatakan kemampuan
sebuah objek untuk memutuskan method mana yang akan diterapkan
padanya, tergantung letak objek tersebut pada jenjang pewarisan. Dan pada
konsep ini di mungkinkan membuat method lebih dari 1 dengan nama yang
sama dengan ketentuan sbb:
Tipedata parameter berbeda
Jumlah parameter berbeda
Urut-urutan parameter berbeda
Karena sifat tingkah lakunya seperti object jadi oop ini punya karakteristik sebagai
berikut :
A. Kelebihan OOP
1). Parallel Development
Ketika bekerja sama dengan team, masing-masing programmer dapat
membangun class-classnya sendiri. Dengan membangun class-classnya
secara individual, komponen yang sudah dibentuk kemudian dapat
digabung menjadi satu kesatuan, hal ini tentu saja menghemat banyak
waktu dibanding harus membangun class satu per satu.
2). Reusable
Jika kalian sudah berhasil membangun class, bukan berarti class-class
tersebut hanya dapat digunakan sekali dalam project itu saja. Dalam
OOP, class-class yang sudah ada dapat kalian gunakan kembali di
project dan development yang lain. Baik langsung pakai atau hanya
butuh sedikit perubahan, tetapi jauh lebih mudah daripada harus
membangun class lagi, bukan?
B. Kekurangan OOP
1). Tidak Efisien
OOP lebih cenderung memakan tenaga CPU anda dibanding pilihan
lainnya. Hal tersebut tentu bermasalah baik bagi komputer-komputer
tua dengan kekuatan yang terbatas atau masalah teknis lainnya.
A. Contoh kasus Inheritance dibawah ini adalah telepon merupakan alat yang
menjadi inspirasi dibuatnya HP. Dengan beberapa fungsi tambahan. Disini
fungsi tambahannya hanya melakukan sms. Anda dapat mengembangkan
dengan fungsi infrared, Bluetooth, kamera, 3G dan lain- lain.
Telepon
Berbicara()
HP
Berbicara()
SMS()
Contoh Programnya:
Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP.
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek
dapat mempunyai entitas/obyek turunan.
Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
Suatu class yang mempunyai class turunan dinamakan parent class atau base
class.
Sedangkan class turunan itu sendiri seringkali disebut subclass atau child
class.
Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-
nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia
punyai dan juga apa-apa yang ia warisi dari class parent-nya.
Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain
hanya memperluas (extend) parent class-nya.
Semua class di dalam Java adalah k merupakan subclass dari class super induk
yang bernama Object. Misalnya saja terdapat sebuah class sederhana :
public class A {
…
}
Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari
class Object.
public class A extends Object {
…
}
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu
class yang dapat diperluas dari class lain.
Misal terdapat class Pegawai
public class Pegawai {
public String nama;
public double gaji;
}
Dari 2 buah class tersebut, kita lihat class Manajer mempunyai data member
yang identik sama dengan class Pegawai, hanya saja ada tambahan data
member departemen.
Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari
class Pegawai dengan tambahan data member departemen.
Disini perlu memakai konsep inheritance, sehingga class Manajer dapat
kita tuliskan seperti berikut
public class Manajer extends Pegawai {
public String departemen;
}
8.5 Single Inheritance :
Kontrol pengaksesan :
Dalam dunia riil, suatu entitas induk bisa saja tidak mewariskan sebagian dari
apa-apa yang ia punyai kepada entitas turunan karena sesuatu hal.
Demikian juga dengan konsep inheritance dalam OOP.
Suatu parent class dapat tidak mewariskan sebagian member-nya kepada
subclass-nya (lihat Akses Kontrol).
Sebagai contoh, kita coba untuk memodifikasi class Pegawai.
public class Pegawai {
private String nama;
public double gaji;
}
Ini membuktikan bahwa class Manajer tidak mewarisi data member nama
dari parent class-nya Pegawai.
Akses Kontrol
private
Variabel dan method yang dideklarasikan private hanya bisa diakses
oleh class yg mendeklarasikan variabel dan method tersebut.
default
Merupakan jenis akses kontrol jika kita tidak menuliskan akses kontrol
secara eksplisit.
Semua feature class-class yang ada dalam satu package bisa diakses
oleh semua yang ada dalam package tersebut.
Class diluar package boleh melakukan subclass, tetapi subclass tersebut
tidak bisa mengakses feature superclass.
Protected
Protected mempunyai kemampuan akses yang lebih besar daripada
private dan default.
Protected feature dari suatu class bisa diakses oleh semua class dalam
satu package.
Class diluar package boleh melakukan subclass, dan subclass tersebut
bisa mengakses feature superclass.
8.7 Konstruktor
Pemanggilan Konstruktor
Pemanggilan Konstruktor
Benar Salah
Kesimpulan
x : merujuk pada x terdekat, yaitu parameter Info()
this.x : merujuk pada data member dari class-nya sendiri, yaitu data
member pada class Child
super.x : merujuk pada data member dari parent class-nya, yaitu
data member pada class Parent