Anda di halaman 1dari 88

PENGENALAN BAHASA PEMROGRAMAN JAVA

1.1 Sejarah Bahasa Pemrograman Java

Originalnya Bahasa Pemrograman Java Di kembangkan Oleh Sun Microsystems


yang dipelopori oleh James Gosling
1. Release pertama tahun 1995 untuk J2SE
2. Release pertama tahun 1999 untuk J2ME
3. Release pertama tahun 2001 untuk J2EE
4. Release terakhir Java Standard Edition yaitu Java SE 8. tentunya dengan
kemampuan yang lebih baik, begitu juga dengan J2EE untuk Aplikasi Enterprise dan
J2ME untuk Aplikasi Mobile.
5. Selanjutnya J2 ini di sebut dengan Java SE, Java EE, and Java ME.
6. Write Once, Run Anywhere (ditulis di satu kali dapat dijalankan di bermacam
platform).

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.

Gambar 1. Java 2 Platform Standard Edition 5.0


Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada
suatu class dengan menambahkan properties ataupun method dapat dilakukan tanpa
mengganggu program yang menggunakan class tersebut

Gambar 2. Hirarki dan Portabilitas Teknologi Java

1.3 Keunggulan 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.

1.4 Kebutuhan Software dan Hardware

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

1.5 Kerangka Program

Berikut merupakan penggambaran kerangka program dalam Java:

Gambar 3. Kerangka Program Java


1.6 Fase Pengembangan Program

Gambar 4. Fase Pengembangan Program

1.7 JAVA Multiplatform

Gambar 5. Contoh Program Sederhana Java

1.8 Penamaan Class, Method, Variabel, dan Konstanta

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

1.9 Program Java Pertama

Kita akan coba untuk menganalisa program Java Pertama :


Baris pertama kode :

public class percobaan1

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.

Jadi, kita dapat menulis kode kita sebagai berikut:


public class percobaan1
{

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

atau dapat juga ditulis sebagai berikut


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

Instruksi yang harus dijalankan :


 Compile dan jalankan programnya!
 Jika ada kesalahan silahkan anda benarkan,
 Apa yang dapat anda jelaskan dari program sederhana tersebut?

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

Instruksi yang harus dijalankan :


 Compile dan jalankan programnya!
 Jika ada kesalahan silahkan anda benarkan,
 Sisipkan character literals yang ada ditabel kedalam akhir string literalsnya!
 Apa yang dapat anda jelaskan dari program sederhana tersebut?

2.1 Class, Objek, Instance dan Method

Pemrograman Berorientasi Objek:


1. Objek adalah kesatuan entitas (benda), baik yang berwujud nyata maupun yang
tidak nyata seperti sistem atau konsep yang memiliki sifat karakteristik dan fungsi.
Contoh: kue, spidol, mobil, telepon, dan lain-lain

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.

3. Instance adalah perwujudan dimana dalam istilah pemrograman, objek


merupakan instans (perwujudan) dari suatu kelas.
Insansiasi adalah: proses perwujudan kelas menjadi objek.
Biasanya Didalam pemrograman Java menggunakan perintah new.
4. Method adalah Prosedur atau fungsi yang dimiliki oleh suatu objek, method ini
akan mengolah atau mengubah data/variable yang ada didalamnya sesuai dengan
operasi yang telah ditentukan.

A. Class
1). Deklarasi Class

2). Struktur Class


B. Objek
1). Dua Cara Membuat Objek di Java
a). Dengan 1 baris perintah

b). Dengan 2 baris perintah

2). Saat Objek dibuat dan ada di memory kita dapat


mengakses state(informasi) dan behavier(tingkah laku)
melalui objek reference
2.2 Identifier

Identifiers berbicara tentang, bagaimana kita menuliskan name of class,


method, variable, package, interface dll dalam sebuah program di dalam Bahasa
pemrograman JAVA. Yang mana sudah di bicarakan aturan penulisannya pada
pertemuan sebelumnya.

A. Identifier tidak boleh di awali dengan angka

B. Hanya 2 simbol yang di perbolehkan yaitu doller($) dan underscore( _)


C. Identifier tidak boleh mengandung space

D. Identifier Tidak Boleh menggunakan keyword


Contoh Lain :

Nama Valid Tidak Valid

Class Hello HelloWorld Hello_World 1Hello Hello World Hello-World

Method hello helloWorld hello_world 1hello hello world hello-world

Variabel first firstName _first_Name 1first first Name _first-Name

Konstanta PHI JARIJARI _WARNA_2 2PHI JARI JARI _WARNA-2

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

public The class is accessible by any other class

default The class is only accessible by classes in the same package.

b). Untuk attributes, methods

Modifier Description

public The code is accessible for all classes

private The code is only accessible within the declared class

default The code is only accessible in the same package.

protected The code is accessible in the same package and subclasses.

2). Non-Access Modifier (do not control access level, but provides other
functionality)
a). Untuk Class

Modifier Description

final The class cannot be inherited by other classes

abstract The class cannot be used to create objects (To access an


abstract class, it must be inherited from another class.

b). Untuk attributes, methods


Modifier Description

final Attributes and methods cannot be overridden/modified

static Attributes and methods belongs to the class, rather than an


object

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

synchronized Methods can only be accessed by one thread at a time

volatile The value of an attribute is not cached thread-locally, and is


always read from the "main memory"

2.4 Keyword

Dalam Penulisan Program tidak dibolehkan menggunakan KEYWORD yang sudah


tersedia di java di gunakan untuk penulisan nama, baik nama class, method, variabel
bahkan konstanta. Nama-nama KEYWORD tesebut adalah:

Gambar 3. Kerangka Program Java


2.5 Input dari Keyboard

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.

b. Dalam lingkungan GUI


Menggunakan kelas/komponen JOptionPane dengan method
showInputDialog().

2.6 Contoh Program

A. Identifier
B. Modifier (Access Modifiers)
1) public pada class

2) default pada class

3) public pada attributes, methods, constructor

4) private, dafault pada attributes, methods, constructor


5) protected pada attributes, methods, constructor

C. Modifier (Non-Access Modifiers)


1) final pada class

2) abstract pada class


3) final pada attributes and methods

4) static pada attributes and methods

5) abstract pada attributes and methods


D. Input Dari Keyboard
3.1 Variabel dan Konstanta

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;

Contoh program sbb :


String name = "John";
System.out.println(name);

int myNum = 15;


System.out.println(myNum);

int myNum;
myNum = 15;
System.out.println(myNum);

int myNum = 15;


myNum = 20; // myNum is now 20
System.out.println(myNum);

Deklari Banyak Variabel


Syntax sbb :
typedata variable = value, variable = value, …. ;

Contoh program sbb :


int x = 5, y = 6, z = 50;
System.out.println(x + y + z);
Penggunaa Java Identifiers
Seluruh variable di java haruslah dideklarasikan menggunakan nama yang uniq.
Disarankan yang mudah di mengerti oleh pengguna program.
Contoh yang uniq dan yang tidak uniq

// ini yang baik


int minutesPerHour = 60;

// ini yang kurang baik


int m = 60;

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:

A. Tipe Data Primitif


Tipe data primitif dapat digunakan untuk menyimpan satu nilai dalam satu waktu
ke dalam sebuah variable. Tipe data primitif tersebut diantaranya sbb :

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 :

Tabel Jangkauan Tipe Data Integer:

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 :

Tabel Jangkauan Tipe Data floating point:

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 :

B. Tipe Data Non Primitif (Reference Tipe Data)


Pada tipe data non primitif dariabel selalu menyimpan data berupa
alamat data. Selalu di sebut dengan tipe data reference karena merifer
ke lokasi memori di mana data di simpan. Tipe data primitif ini
diantaranya class, array, enum dll.
1) Class
Class adalah sebuah tipe data non primitif. Digunakan untuk menyimpan
alamat rujukan dari sebuah objek. Tipe data class di deklarasikan
menggunakan class name.

Class di bagi kedalam 2 bagian


1. Class yang di defenisikan oleh user (UDF)
2. Class yang sudah disiapkan oleh jdk.

Contoh class yang di definisikan oleh user sbb :


Contoh class yang sudah ada dalam jdk :

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.

a) Deklarasi Array 1 Dimensi


Beberapa cara mendeklarasikan sebua variabel array, yaitu:
1. Deklarasi

2. Inisialisasi

3. Deklarasi dan 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

Nama Variabel NIM, Nama, Alamat


String[][] DataMhs = new String[5][3];
2111500001 Ali dsfs
2112500001 Amir df
2113500001 Tuti xx
2111500002 Budi xxc
2111500003 Ira wer

Contoh:
String[][] kontak = {
{"Lili","08111"},
{"Lala","08122"},
{"Maya","08133"}
};

Contoh program sbb :


import java.util.Scanner;

public class RuangKelas {


public static void main(String[] args) {

// Membuat Array dan Scanner


String[][] meja = new String[2][3];
Scanner scan = new Scanner(System.in);
// mengisi setiap meja
for(int bar = 0; bar < meja.length; bar++){
for(int kol = 0; kol < meja[bar].length; kol++){
System.out.format("Siapa yang akan duduk di meja (%d,%d): ",
bar, kol);
meja[bar][kol] = scan.nextLine();
}
}

// menampilkan isi Array


System.out.println("-------------------------");
for(int bar = 0; bar < meja.length; bar++){
for(int kol = 0; kol < meja[bar].length; kol++){
System.out.format("| %s | \t", meja[bar][kol]);
}
System.out.println("");
}
System.out.println("-------------------------");
}
}

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

Adds numbers or variables or


+ Addition M+N 150
both

subtract numbers or variables or


- Subtraction M-N 50
both
Multiply numbers or variables or
* Multiplication M*N 5000
both

Divides numbers or variables or


/ Division both and returns quotient of M/N 2
division

modulus division of numbers or


% Modulus variables or both and returns M%N 0
remainder of division

++ Increment Increments value of variable by 1 ++M M=101

-- Decrements Decrements value of variable by 1 --M M=99

Adds left hand side variable with


right hand side variable and
Addition
+= stores result in left hand side M+=N M=150;
assignment
variable. Its is equivalent to
M=M+N

Substracts right hand side


variable from left side variable
Substraction
-= and stores result in left hand side M-=N M=50;
assignment
variable. Its is equivalent to M=M-
N

Multiplies left hand side variable


with right hand side variable and
Multiplication
*= stores result in left hand side M*=N M=5000;
assignment
variable. Its is equivalent to
M=M*N

Divides left hand side variable


with right hand side variable and
Division
/= stores quotient of division in left M/=N M=2;
assignment
hand side variable. Its is
equivalent to M=M/N

Divides left hand side variable


with right hand side variable and
Modulus
%= stores remainder of division in left M%=N M=0;
assignment
hand side variable. Its is
equivalent to M=M%N

Contoh Program sbb:

public class OperatorJava1 {


    public static void main(String[] args) {
      
        int penjumlahan = 100 + 50;
        int pengurangan = 100 - 50;
      
        int A = 10;
        int B = 5;
        int perkalian = A * B;
              
        System.out.println("Hasil jumlah = " + penjumlahan);
        System.out.println("Hasil kurang = " + pengurangan);
        System.out.println("Hasil kali = " + perkalian);
        System.out.println("Hasil bagi = " + A / B);
        System.out.println("Hasil sisa bagi = " + A % B);
    }
}

Hasilnya :

Hasil jumlah = 150


Hasil kurang = 50
Hasil kali = 50
Hasil bagi = 2
Hasil sisa bagi = 0

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)

Performs one's complement


~ Bitwise NOT ~M
operation

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)

Performs bitwise OR between


| Bitwise OR two variables or numbers or M|N
both

1110110(|)

1100100(M)
0110010(N)

Performs bitwise EX-OR


Bitwise EX-
^ between two variables or M^N
OR
numbers or both

1010110(^)

1100100 ( M )

The right shift operator, >> ,


shifts all of the bits in a value
to the right a specified
>> Right shift M>>1
number of times.
Syntax: value >> shift
number 0110010(M>>1)

01100100 ( M )

The left shift operator, << ,


shifts all of the bits in a value
to the left a specified number
<< Left shift M<<1
of times.
Syntax: value << shift
number 11001000(M<<1)

&= Bitwise AND Performs bitwise AND left M&=N 1100100(M)


assignment hand side variable and right 0110010(N)
hand side variable and
assigns result to left hand
side variable
M&=N is equvivalent to
M=M&N;
0100000(&)

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(^)

The left shift operator, << , 01100100 ( M )


shifts all of the bits of left
hand side variable to the left
a specified number of times
Left shift and stores result in left hand
<<= M<<= N
assignment side variable
Syntax: value << shift
number 11001000(M<<1)
M<<=N is equvivalent to
M=M << N;

The right shift operator, >> , 1100100 ( M )


shifts all of the bits of left
hand side variable to the right
a specified number of times
right shift and stores result in left hand
>>= M>>= N
assignment side variable
Syntax: value >> shift
number 0110010(M>>1)
M>>=N is equvivalent to
M=M >> N;
Contoh Program sbb :

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 :

Hasil dari a & b : 36


Hasil dari a | b : 253
Hasil dari a ^ b : 217
Hasil dari ~a : -182
Hasil dari a >> 1 : 90
Hasil dari b << 2 : 432

Dalam contoh di atas saya mendefinisikan 2 variabel: a dan b. Kemudian


memberikan nilai awal 181 dan 108. Jika di konversi ke dalam bentuk biner,
keduanya berisi angka berikut:
a = 181 (desimal) = 10110101 (biner)
b = 108 (desimal) = 01101100 (biner)

Di baris 8 saya melakukan operasi & (AND) terhadap kedua variabel. Operasi


bitwise “and” ini akan memproses bit per bit dari kedua variabel, jika kedua bit
sama-sama 1, maka hasilnya juga 1, selain kondisi tersebut, nilai akhirnya adalah 0.
Berikut perhitungan bitwise “and”:
a     = 10110101
b     = 01101100
        --------
a & b = 00100100 = 36 (desimal)
Tampilan perintah System.out.println() di baris 9 memperlihatkan isinya sama
dengan perhitungan kita, yakni 36 (dalam bentuk desimal).
Di baris 11 terdapat operasi | (OR), hasilnya akan bernilai 0 jika kedua bit bernilai
0, selain itu nilai bit akan di set menjadi 1. Berikut cara perhitungan bitwise “or”:
a     = 10110101
b     = 01101100
        --------
a | b = 11111101 = 253 (desimal)
Di baris 14 terdapat operasi ^ (XOR), hasilnya akan bernilai 1 jika salah satu dari
kedua variabel bernilai 1 (namun tidak keduanya). Atau dengan kata lain jika kedua
bit berlainan, hasilnya 1 tapi kalau sama-sama 0 atau sama-sama 1, hasilnya 0.
Berikut cara perhitungan bitwise “xor”:

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

== Equal to If value of left hand side variable is A==B 100==100


equal to value of right hand side
then returns true else returns false

true

100==100

If value of left hand side variable is


!= Not equal to not equal to value of right hand side A!=B
then returns true else returns false
false

100<100

If value of left hand side variable is


< Less than less than value of right hand side A< B
then returns true else returns false
false

100<100

If value of left hand side variable is


Less than less than or equal to the value of
<= A<= B
equal to right hand side then returns true
else returns false
true

100>100

If value of right hand side variable is


> Greater than greater than value of left hand side B>A
then returns true else returns false
false

>= 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

Contoh Program sbb :

public class OperatorPembanding {


    public static void main(String[] args) {
      
        int a = 10;
        int b = 20;
        boolean hasil = a==b;
        boolean hasil2 = a!=b;
        boolean hasil3 = a>b;
        boolean hasil4 = a<b;
        boolean hasil5 = a>=b;
        boolean hasil6 = a<=b;
      
        System.out.println("Hasil1 = " + hasil);
        System.out.println("Hasil2 = " + hasil2);
        System.out.println("Hasil3 = " + hasil3);
        System.out.println("Hasil4 = " + hasil4);
        System.out.println("Hasil5 = " + hasil5);
        System.out.println("Hasil6 = " + hasil6);
    }
}

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.

boolean A=true, B=false;


Operator meaning description example result

true
false

Performs logical AND operation on


two operands. If both operands are
&& Logical AND A&&B
true then returns true else returns
false
false

true
false

Performs logical OR operation on


two operands. If one or more than
|| Logical OR A||B
operand are true then returns true
else returns false
true

!true

Converts true value to false and vice


! Logical NOT !A
versa

false

Contoh Program sbb :

public class belajarOperatorLogika{


   public static void main(String [] args){
         int nilaiA = 70;
      int nilaiB = 80;
      int nilaiC = 90
 
       boolean a = nilaiA > nilaiB && nilaiB < nilaiC || nilaiC < nilaiB;
       boolean b = nilaiA < nilaiB || nilaiB < nilaiC && nilaiC < nilaiB;
 
       //Jika dijalankan
      System.out.println(a); //hasilnya: false
       System.out.println(b); //hasilnya: true
   }
}
E. Assignment operator ( = )
Assignment operator di gunakan untuk mengisi nilai yang ada di kanan assign dan
menyimpannya ke variable. Symbol sign adalah (=). Secara umum deklarasi
assign sbb :
variable = expression or values;

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

Contoh Program sbb :

public class OperatorTernary {


public static void main(String[] args) {

boolean suka = true;


String jawaban;

// menggunakan operator ternary


jawaban = suka ? "iya" : "tidak";

// menampilkan jawaban
System.out.println(jawaban);

}
}
4.1 Struktur Pengambilan Keputusan

Pembuatan keputusan pada pemrograman sama seperti pembuatan keputusan pada


kehidupan nyata. Pemrograman juga menghadapi beberapa situasi dimana sebuah
kode program akan dieksekusi ketika sebuah kondisi telah terpenuhi kondisinya.

Sebuah bahasa pemrograman menggunakan statement control untuk mengendalikan


alur eksekusi dari program berdasarkan beberapa pengkondisian tertentu pada bahasa
pemrograman Java. Statement ini digunakan untuk alur eksekusi lebih lanjut dan
sebagai dasar cabang pada perubahan untuk program utama pada program. Statement
seleksi Java antara lain sbb :
1. Struktur if
2. Struktur if-else
3. Struktur if-else-if
4. Struktur nested-if
5. Struktur switch-case

Statement tersebut memberikan programmer kemampuan untuk mengendalikan alur


dari eksekusi program berbasis kondisi yang diketahui pada saat waktu program
berjalan.

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.

Bentuk if dengan 1 baris statement,


Bentuk if lebih dari 1 baris statement,

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

Bentuk dari if-else : untuk 1 baris perintah,

Bentuk if-else : untuk lebih dari 1 baris perintah,

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.

Bentuk if-else if : untuk 1 baris perintah,

Bentuk if-else if : untuk lebih dari 1 baris perintah,

Contoh Program :
D. Struktur nested if….
Nested if merupakan double if, yaitu dalam sebuah blok contional if juga
terdapat blok conditional if lainnya.

Bentuk Nested If adalah sebagai berikut.

Conditional if kedua berada di dalam conditional if Pertama. Jika kondisi if


yang Pertama bernilai benar, maka akan dicek conditional kedua.Namun jika
salah, maka if yang kedua akan diproses

Contoh Program :

E. Struktur switch … Case ...


Cara lain untuk membuat percabangan adalah dengan menggunakan kata kunci
switch. Dengan menggunakan switch kita bisa melakukan percabangan dengan
persyaratan yang beragam.

Bentuk switch,

Contoh Program :
4.2 Struktur Pengulangan

Looping pada bahasa pemrograman Java adalah fitur yang digunakan untuk


memfasilitasi eksekusi program dari sekelompok instruksi atau fungsi secara berulang
ketika beberapa kondisi tertentu yang menjadi syarat adalah bernilai benar. Java
menyediakan tiga cara untuk melakukan eksekusi looping pada program. Dimana
semua cara tersebut menyediakan fungsi dasar yang sama, dimana perbedaannya
hanya terdapat pada sintak dan kondisi waktu eksekusi.

Statement pengulangan Java antara lain sbb :


1. Struktur for
2. Struktur while
3. Struktur do while
Statement tersebut memberikan programmer kemampuan untuk mengendalikan alur
dari eksekusi program berbasis pengulangan yang diketahui pada saat waktu program
berjalan.

A. Struktur for
Sturktur pengulangan for yaitu melakukan Pengulangan eksekusi code beberapa
kali.

Bentuk dari pengulangan for.

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:

Bentuk dari pengulangan for.


Contoh Program :

B. Struktur while
While Loop adalah statement atau blok statement yang diulang-ulang mencapai
kondisi yang cocok.

Bentuk dari while,

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.

Bentuk dari do-while.


Contoh Program :

4.3 Perintah Jump

Java mendukung tiga statement Jump/Melompat yaitu: 


1. break
2. continue
3. return.

Ketiga statement tersebut digunakan untuk mengendalikan bagian tertentu dari


program.

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.

Menggunakan break keluar dari loop


Menggunakan break dapat memaksa program keluar dari loop, dengan cara
melewati kondisi ekspresi dari kode program yang tersisa pada looping.

catatan: Break, ketika digunakan di dalam nested loop, hanya dapat keluar


(break) dari loop terdalam.
Flowchart break dapat dilihat seperti gambar berikut :

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. 

Flowchart Continue dapat dilihat seperti gambar berikut :


Contoh Program :
C. Return
Statement return digunakan untuk eksplisit return dari method.
Sehingga, return menyebabkan kendali program untuk mengirim kembali
menuju pemanggil (caller) program dari method.

5.1 Pengertian Exception

Exception adalah suatu mekanisme yang digunakan oleh beberapa Bahasa


pemrograman untuk mendeskripsikan apa yang harus dilakukan jika ada suatu kondisi
yang tidak diinginkan terjadi.

Eksepsi dapat dijumpai saat:


1. Mengakses method dengan argument yang tidak sesuai.
2. Membuka file yang tidak ada
3. Koneksi jaringan yang terganggu
4. Memanipulasi operand yang nilainya keluar dari batasan yang didefinisikan
5. Memanggilan class yang tidak ada

Pada dasarnya, Exception merupakan subkelas dari kelas java.lang.Throwable. 


Karena Exception adalah sebuah kelas maka hakikatnya ketika program berjalan dan
muncul sebuah bug atau kesalahan maka bug tersebut dapat dianggap sebuah object.  
Sehingga ketika object ini di tampilkan di layar maka java akan secara otomatis
memanggil method toString yang terdapat dalam object bertipe Exception ini. Java
memberikan akses kepada developer untuk mengambil object bug yang terjadi ini
dengan mekanisme yang dikenal Exception Handling. Exception handling merupakan
fasilitas di java yang memberikan flexibilitas kepada developer untuk menangkap bug
atau kesalahan yang terjadi ketika program berjalan.

5.2 Keyword Exception Handling

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:

<method modifier> type method_name throws exception_list_1, …, exception_list_n {}


Perhatikan kedua Contoh penggunaan keyword throws pada method. Ketika
method tersebut dipanggil dalam block try. Maka method tersebut akan membuat
object yang merupakan subclass dari class Throwable dan method tersebut akan
melemparkan kesalahan yang ada dalam block method kedalam block try. Di dalam
block try, kesalahan tersebut kemudian ditangkap kedalam block catch.

5.3 Aturan Penggunaan Exception Heandling

Aturan penggunaan sbb:


Exception dilemparkan selama eksekusi dari try dapat ditangkap dan ditangani
dalam blok catch. Kode dalam blok finally selalu di-eksekusi.
Berikut ini adalah aspek kunci tentang sintak dari try-catch-finally:
a. Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok
finally.
b. Blok catch dan blok finally harus selalu selalu muncul dalam konjungsi dengan
blok try, dan diatas urutan
c. Blok try harus diikuti oleh paling sedikit satu blok catch atau satu blok finally,
atau keduanya.
d. Setiap blok catch mendifinisikan sebuah penanganan exception. Header dari
blok catch harus membawa satu argument, dimana exception pada blok
tersebut akan ditangani.

5.4 Kategori Exception

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.

Yang termasuk Unchecked Exception:


1. Java.lang.Error dan subclassnya
2. Java.lang.RuntimeException dan subclassnya

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.

5.5 Sintak try, catch, finally, throw, trows

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
}

5.6 Contoh Program

A. Contoh Error pada program

Contoh program yang bila di generate akan error, karena int a = 1/0; bilangan tidak dapat di bagi
dengan bilangan 0.

public class Exception_1 {


public Exception_1() {
}
public static void main(String[] args){
int a = 1/0;
System.out.println("Perintah berikutnya");
}
}
Output:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Exception_1.main(Exception_1.java:7)

Contoh program yang bila di generate akan error, karena myNumbers[10] tidak ditemukan.

public class Main {


public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}

Output:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at Main.main(Main.java:4)

B. Penggunaan try, catch untuk penanganan error :

public class Exception_1 {


public Exception_1() {
}
public static void main(String[] args){
try{
int iHasilBagi = 1/0;
}
catch(Exception e){
System.err.println("terjadi kesalahan : "+e);
}
System.out.println("Perintah berikutnya");
}
}

Output:
terjadi kesalahan : java.lang.ArithmeticException: / by zero

public class Main {


public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 20, 13};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Array di luar jangkauan.");
}
}
}
Output:
Array di luar jangkauan.

C. Penggunaan finally :

public class Main {


public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Array di luar jangkauan..");
} finally {
System.out.println("dicetak juga saat 'try catch' berakhir.");
}
}
}

Output:
Something went wrong.
dicetak juga saat 'try catch' berakhir.

D. Penggunaan Keyword throw


Output Program:
Object dengan tipe kelas B

Program diatas telah mendefinisikan suatu kelas B mengextends dari kelas


Exception. Ketika kita melakukan throw new B(); maka object dari kelas bertipe B
ini akan dianggap kesalahan dan ditangkap oleh block catch. Sekarang jika anda
menghilangkan keyword throw apa yang terjadi?.

E. Penggunaan Keyword throws

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

2) Kelas yang didefinisikan Sendiri (UDF)


Selain kelas standar, terkadang kita juga perlu memodelkan suatu objek
kedalam kelas dan mendefenisikan data serta method yang dimilikinya. Bila
aplikasi tersebut besar dan kompleks, kita dapat membaginya menjadi
beberapa package yang didalamnya terdapat beberapa kelas.

B. Deklarasi class
1) Deklarasi Class Sederhana

Class namaClass {
// bodi class
}
2) Deklarasi class Lengkap

Modifier1 tipeData Class namaClass modifier2 namaClass/namaInterface{


// bodi class
}

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.

Methods yang dapat mengembalikan nilai kita sebut dengan functions,


sebaliknya kita sebut dengan procedure.

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.

Deklarasi Method di dalam class :

Modifier tipeData namaMethod(parameters){


// perintah yang akan di eksekusi
}

Contoh :

// method procedure
void biodata(){
// perintah yang akan di eksekusi
}

// method procedure dengan parameters


void biodata(String nim, String nama){
// perintah yang akan di eksekusi
}

// method procedure dengan modifier static


static 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:

namaClass namaObject = new namaConstruktor();

E. Akses Data/Atribut Menggunakan Objek

namaObject.namaVariabel;

F. Akses Method Menggunakan Objek

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

6.4 Keyword This

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;

// Constructor with a parameter


public MyClass(int x) {
this.x = x;
}

// Call the constructor


public static void main(String[] args) {
MyClass myObj = new MyClass (5);
System.out.println("Value of x = " + myObj.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;

C. Mengakses Kelas dalam Package


Mengakses Kelas dengan Kata Kunci import:

// untuk satu namaClass dalam satu package

import namaPackage.namaClass;
// untuk semua namaClass dalam satu package

import namaPackage.*;

D. Contoh

// deklarasi package dengan nama kampus


package kampus
// mengenalkan class dengan nama fakultas yang ada di package kampus
import kampus.fakultas;
// mengenalkan semua class yang ada di package kampus
import kampus.*;

MyPackageClass.java
package mypack;

class MyPackageClass {
public static void main(String[] args) {
System.out.println("This is my package!");
}
}
6.6 Contoh Program

A. Class, Atribut dan Method


/*
* nama file : TestPackage.java
* nama class : TestPackage
* Hasil Kompilasi : TestPackage.class
*/

//deklarasi class dengan nama TestPackage


class TestPackage
{
// deklarasi atribut NIM dan nama
static String NIM = "2111500500";
static String nama = "Tariq Athar Kisan";

// deklarasi method dengan nama biodata


public static void biodata()
{
System.out.println("NIM : " +NIM);
System.out.println("Nama : " +nama);
}
}

B. Membuat Objek dan Akses Atribut/Method


/*
* nama file : ShowTestPackage.java
* nama class : ShowTestPackage
* Hasil Kompilasi : ShowTestPackage.class
*/

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;

public static void biodata()


{
System.out.println("Nama lengkap : " +NIM);
System.out.println("Nama lengkap : " +nama);
System.out.println("Warna rambut : " +rambut);
System.out.println("Tinggi badan : " +tinggi);
System.out.println("Berat badan : " +berat);
}
}

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

5) Save As file TestPackage01.java menjadi TestPackage01_public.java


/*
* nama file : TestPackage01_public.java
* nama class : TestPackage01_public
* Hasil Kompilasi : TestPackage01_public.class (disimpan di dalam package Family)
* class ini yang hanya bisa diakses melalui kelas lain, karena tidak munya main
*/

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;

public static void biodata()


{
System.out.println("Nama lengkap : " +NIM);
System.out.println("Nama lengkap : " +nama);
System.out.println("Warna rambut : " +rambut);
System.out.println("Tinggi badan : " +tinggi);
System.out.println("Berat badan : " +berat);
}
}

6) Save As file TestPackage04.java menjadi TestPackage05.java


/*
* nama file : TestPackage05.java
* nama class : TestPackage05
* Hasil Kompilasi : TestPackage05.class (disimpan di dalam package notFamily)
* Akses class TestPackage01_public didalam class TestPackage05 : OK
*/

package notFamily;
import Family.*;

class TestPackage05
{
public static void main(String[] args)
{
TestPackage01_public myObj = new TestPackage01_public();
myObj.biodata();
}
}

7.1 Pengertian OOP

OOP merupakan kepanjangan dari Object Oriented Programming. OOP


merupakan suatu metode pemrograman yang berorientasi kepada objek. Dalam
bahasa Indonesia OOP dikenal dengan PBO (Pemrograman Berorientasi Objek).

OOP bertujuan untuk mempermudah pengembangan sebuah program. Ia


memiliki variabel dan fungsi yang  dibungkus ke dalam objek ataupun class.
Keduanya dapat saling berinteraksi sehingga membentuk sebuah program.

Mengapa Harus OOP?


programmer harus mampu meminimalisir program dan membuatnya tertata rapi.
Selain itu juga untuk mempercepat pembuatan aplikasi.

Lalu, bukankah bisa membuat program dengan prosedural saja?


Iya, tentu bisa.

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

Setter adalah method untuk memberikan atau merubah nilai suatu


variable class yang tidak bertipe public yang hanya bisa dirubah melalui
method class tersebut.

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 :

public double getSaldo(){


            return saldo;
}
 
7. Parameter
 Sepeda akan berguna apabila ada object lain yang berinterasi
dengan sepeda tersebut
 Object software berinteraksi dan berkomunikasi dengan object lain
dengan cara mengirimkan message atau pesan
 Pesan adalah suatu method, dan informasi dalam pesan dikenal dengan
nama parameter
 
You : object pengirim
YourBicycle : object penerima
changeGears : pesan berupa method yang dijalankan
lowerGear : parameter yang dibutuhkan method (pesan)
untuk dijalankan
 
8. Kata Kunci this
Digunakan pada pembuatan class dan digunakan untuk menyatakan object
sekarang. Penggunaan this lebih kepada flexibilitas dalam
refactoring,konsistensi dan keakuratan.
 
Dalam pemrograman berorientasi Object, focus utama adalah pada Object.
Sebelum membuat program lebih dahulu memahami masalah dengan
memandang sistem sebagai kumpulan Object. Persyaratan membuat
program berorientasi Object dengan Java dapat disimpulkan sebagai berikut,
 Mendefinisikan class dengan pewarisannya. Hal ini dilakukan dengan
membuat diagram class yang memperlihatkan class serta struktur
hirarkinya dalam sistem.
 Menentukan atribut dan method dengan memperlihatkan bahwa class
turunan mewarisi atribut dan method dari class induknya.
 Menentukan message uang ada dari satu class ke class lainnya.
Diagram class yang dilengkapi dengan atribut, method, dan serta
hubungan message tersebut.
 Membuat program dengan jaba berdasarkan diagram Object tersebut.

9. Class Diagram
Class Diagram  adalah sebuah diagram yang menggambarkan hubungan
antar class.

Sebauh class digambarkan dengan sebuah tabel 1 kolom dan 3 baris.

Baris pertama berisi nama class; Baris kedua berisi atribut; dan Baris ketiga
berisi method.

Contoh :

Pesawat Nama Class


+namaPesawat : String
+tipePesawat : String State/Atribut/Variabel
+warnaPesawat : String
+tahunProduksi : int
+starter()
+takeOff() Behavior/Method/Fungsi
+landing()

Class Diagram biasanya digunakan oleh software engineer untuk


merancang software dengan paradigma OOP. Sebagai programmer, hanya
perlu tahu cara membaca dan menuliskannya ke dalam kode. Jika kamu
tertarik dengan class diagram, bisa membaca buku-buku tentang UML.

10. Contoh Objek


Setiap objek memiliki dua karakteristik yaitu Attribute/Data/Variabel/ State
dan Method/Fungsi/Behavior. Attribute merupakan identitas atau informasi
objek itu sendiri atau disebut juga sebagai variable, sedangkan Behavior adalah
tingkah laku atau apa yang dapat dilakukan oleh objek itu atau disebut juga
sebagai method. Sebagai contoh Attribute dari objek pesawat adalah nama
pesawat, tipe, warna, tahun produksi, roda, dll. Sedangkan Behavior dari
pesawat adalah cara menghidupkan mesin, cara menerbangkan pesawat (take
off), cara menurunkan pesawat (landing), dll.
7.2 Konsep atau Pilar OOP

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.

Contoh keyword yang digunakan adalah : extends

Kelas yang di gunakan untuk menurunkan menjadi sub kelas adalah kelas
abstrak dan kelas lain yang bukan final.

Kelas Abstrak (Class Abstraksi)


 Kelas merupakan deskripsi abstrak informasi dan tingkah laku dari
sekumpulan data.
 Kelas dapat diilustrasikan sebagai suatu cetak biru (blueprint) atau
prototipe yang digunakan untuk menciptakan objek.
 Kelas merupakan tipe data bagi objek yang mengenkapsulasi data dan
operasi pada data dalam suatu unit tunggal.
 Kelas mendefinisikan suatu struktur yang terdiri atas data kelas (data
field), prosedur atau fungsi (method), dan sifat kelas (property).

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

Implementasi konsep polymorphism:


 Method Overloading:
Kemampuan untuk menggunakan nama yang sama untuk beberapa
method yang berbeda parameter (tipe dan atau jumlah).
 Method Overriding:
Kemampuan subclass untuk menimpa method dari superclass, yaitu
dengan cara menggunakan nama dan parameter yang sama pada
method.
7.3 Karakteristik OOP

Karena sifat tingkah lakunya seperti object jadi oop ini punya karakteristik sebagai
berikut :

1. Class dan Objek


2. Inheritance (Pewarisan)
3. Abstraction (Abstraksi/Gambaran Umum)
4. Polymorphism (Polimorfisme/Banyak Bentuk)
5. Encapsulation (Enkapsulasi/Hak Akses)

 Semua adalah objek


 Komputasi dilakukan dengan komunikasi antar objek. Setiap objek
berkomunikasi dengan objek yang lain melalui pengiriman dan penerimaan
pesan.
 Sebuah pesan merupakan permintaan atas sekumpulan aksi dengan semua
argumen yang diperlukan untuk menyelesaikan suatu tugas tertentu.
 Setiap objek memiliki memori sendiri, yang dapat terdiri dari objek-objek
lainnya.
 Setiap objek adalah wakil atau representasi dari suatu kelas. Sebuah kelas
dapat mewakili sekelompok objek yang sama.
 Kelas merupakan kumpulan tingkah laku yang berkaitan dengan suatu objek.
Jadi, semua objek yang merupakan wakil dari kelas yang sama
dapat melakukan aksi yang sama pula.
 Kelas-kelas diorganisasikan ke dalam struktur pohon yang berakar tunggal,
yang dinamakan dengan jenjang pewarisan (inheritance hierarchy).
 Setiap objek pada umumnya memiliki tiga sifat, yaitu keadaan, operasi dan
Informasi.

 Operasi merupakan tindakan yang dapat dilakukan oleh sebuah objek.


 Keadaan objek merupakan koleksi dari seluruh informasi yang dimiliki
oleh objek pada suatu saat.
 Informasi yang terkandung pada objek tersebut pada akhirnya
memberikan identitas khusus yang membedakan suatu objek dengan
objek lainnya.

7.4 Kelebihan dan Kekurangan OOP

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?

3). Coding Lebih Mudah Diatur


OOP memiliki basis coding yang terpusat dan mudah di-manage. Data-
data yang sudah kalian miliki lebih mudah diakses ketika kalian
memerlukannya. Proses ini juga meningkatkan keamanan programming
kalian karena terdapat sistem otentikasi yang cukup kuat.

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.

2). Membutuhkan Tingkat Manajemen Data Yang Tinggi


Jika kalian tidak cermat dalam mengontrol OOP, secara otomatis OOP
akan membuat sisa-sisa code yang tidak berguna dalam jumlah besar.
Ketika hal tersebut terjadi, akan sulit untuk menghilangkannya dan
akan sangat membebani komputer kalian lho.

3). Kemungkinan Duplikasi


Project-project OOP cenderung lebih mudah untuk mendesainnya.
Class-class yang sudah ada sangatlah fleksibel dalam implementasinya
sehingga anda dapat merancang project-project baru dengan cepat.
Tetapi, sering tidak kalian sadari hal tersebut justru membuat project-
project yang kalian buat akan terasa seperti sekedar “duplikat” tanpa
ada inovasi.

C. Mengapa Harus Menggunakan OOP?


Pada dasarnya, OOP adalah salah satu inovasi terbaik
dalam software development. OOP mempermudah kamu dalam
mengembangkan code-code kompleks menjadi lebih mudah digunakan,
dibaca, dan secara umum lebih baik. Alasan-alasan kamu untuk
menggunakan OOP dapat dilihat dari konsep-konsep yang sudah ada.
 OOP memudahkan kalian merubah implementasi suatu objek tanpa
harus mengubah data dan metode di dalam objek
tersebut. (Encapsulation).
 OOP memudahkan kalian dalam membentuk metode umum yang dapat
digunakan untuk objek-objek lainnya tanpa harus menulisnya berulang-
ulang. (Abstract Class).
 OOP dapat mengembangkan satu jenis data dan fungsi yang dapat
diarahkan ke fungsi-fungsi lainnya tanpa harus mengganti data dan
fungsi dasarnya. (Inheritance).
 OOP memperbolehkan kalian untuk memiliki fungsi yang beragam,
dengan nama yang sama, dan melakukan pekerjaan yang sama, namun
dapat diterapkan di berbagai data. (Polymorphism).

7.5 Contoh Program

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:

class telepon{ // super class 


void berbicara(){
System.out.println(“Tekan nomor tujuan, panggil”);
System.out.println(“Berbicara dengan lawan bicara”);
System.out.println(“Setelah selesai, tutup”);
}
}
 
class HP extends telepon{ //subclass pewarisan superclass dari telepon 
void SMS(){
System.out.println(“Ketik pesan yang hendak dikirimkan”);
System.out.println(“Kirim ke nomor yang dituju”);
System.out.println(“Tunggu balasan”);
}
 
public static void main(String[] args){
HP handphone = new HP();
System.out.println(“Fungsi dasar telepon”);
handphone.berbicara();
System.out.println(“Fungsi baru pada telepon tanpa kabel”);
handphone.SMS();
}
}

B. Contoh kasus Polimorphisme dibawah ini. Kita akan menggunakan suatu


method yang mempunyai beberapa bentuk masukan parameter, dimana
masukan parameter tersebut tidak sama, sehingga bisa menentukan method
mana yang akan dipanggil.
 
class HPMulti{
public void HP(long no_telp){
System.out.println(“Anda sedang menghubungi no. telp : “+
no_telp);
}
 
public void HP(long no_telp, String teks){
System.out.println(“Anda mengirim pesan ke no. telp : ” + no_telp);
System.out.println(“Pesan anda berisi : ” + teks);
}
 
public void HP(int a,int b){
System.out.println(“Hasil operasi penjumlahan 2 bilangan tersebut
adalah “+(a+b));
}
}
  
class HPBerfungsi{
public static void main(String[] args){
HPMulti fungsi = new HPMulti();
 
System.out.println(“menggunakan fungsi panggilan”);
fungsi.HP(7716953);
System.out.println(“menggunakan fungsi SMS”);
fungsi.HP(9613932,”Assalamualaikum Wr.Wb”);
System.out.println(“menggunakan fungsi kalkulator”);
fungsi.HP(20,30);
}
}

8.1 Pengertian dasar Inheritence

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

8.2 Deklarasi inheritance

 Dengan menambahkan kata kunci extends setelah deklarasi nama class,


kemudian diikuti dengan nama parent class-nya.
 Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin
melakukan perluasan class.
 Format Deklarasi :
public class B extends A {

}

 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 {

}

8.3 Keuntungan Inheritance

Keuntungan dari Inheritance adalah Reusability


 Sekali perilaku(method) didefinisikan pada superclass, maka perilaku
tersebut secara otomatis diwariskan ke subclass. Sehingga hanya perlu
menulis method sekali dan bisa digunakan untuk semua subclass.
 Sekali properti/field di definisikan pada superclass, maka semua properti di
wariskan ke semua subclass. Superclass dan subclass berbagi properti
 Subclass hanya perlu mengimplementasikan jika ada perbedaan dengan
parentnya.

8.4 Kapan Menerapkan Inheritance

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

 Misal terdapat class Manager


public class Manajer {
public String nama;
public double gaji;
public String departemen;
}

 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 :

 Konsep inheritance yang ada di Java adalah Java hanya memperkenankan


adanya single inheritance.
 Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai
satu parent class.

8.6 Multilevel Inheritance :

 Konsep inheritance yang ada di Java memperkenankan adanya multilevel


inheritance.
 Konsep multilevel inheritance memperbolehkan suatu subclass mempunyai
subclass lagi.

Pengaksesan member yang dideklarasikan di parent class dari


subclass
 Pengaksesan member yang ada di parent class dari subclass-nya tidak
berbeda dengan pengaksesan member subclass itu sendiri.
 Misalnya di class Manajer kita ingin mengakses data member nama melalui
sebuah function member IsiData(), sekaligus kita juga ingin mengakses data
member departemen di class Manajer.
public class Manajer extends Pegawai {
public String departemen;
public void IsiData(String n, String d) {
nama=n;
departemen=d;
}
}

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

 Coba untuk mengkompilasi class Manajer pada contoh sebelumnya,


Apa yang terjadi?
Pesan kesalahan akan muncul seperti ini:
Manajer.java:5: nama has private access in Pegawai
nama=n;

 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

 Konstruktor tidak diwariskan


 Konstruktor dari parent class tidak dapat diwariskan ke subclass-nya.
 Konsekuensinya, setiap kali kita membuat suatu subclass, maka kita harus
memanggil konstruktor parent class di konstruktor subclass.
 Pemanggilan konstruktor parent harus dilakukan pada baris pertama dari
konstruktor subclass.
 Jika kita tidak mendeklarasikannya secara eksplisit, maka kompiler Java akan
menambahkan deklarasi pemanggilan konstruktor parent class di konstruktor
subclass.
 Sebelum subclass menjalankan konstruktornya sendiri, subclass akan
menjalankan constructor superclass terlebih dahulu.
 Hal ini terjadi karena secara implisit pada constructor subclass ditambahkan
pemanggilan super() yang bertujuan memanggil constructor superclass
oleh kompiler.
 Pada saat program tersebut dikompilasi, maka kompiler Java akan
menambahkan :
- konstruktor class Parent
- konstruktor class Child
- pemanggilan konstruktor class Parent dari konstruktor class Child

 Pemanggilan Konstruktor
Pemanggilan Konstruktor

Benar Salah

 Kata Kunci Supper


 Kata kunci super dipakai untuk merujuk pada member dari parent class.
 Sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari
class itu sendiri.
 Format penulisannya adalah sebagai berikut :
super.data_member : merujuk pada data member pada parent class
super.function_member() : merujuk pada function member pada parent
class
super() : merujuk pada konstruktor pada parent class
Contoh :

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

Anda mungkin juga menyukai