i 

 


Pada dasarnya komputer merupakan alat untuk menyimpan dan memproses data. Komputer 

terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Perangkat keras 

merupakan perangkat yang terlihat secara fisik yang merupakan elemen penting komputer. 

Perangkat keras tidak dapat bekerja tanpa adanya perangkat lunak. Perangkat lunak 

menyediakan instruksi-instruksi yang digunakan untuk mengendalikan perangkat keras dan 

membuatnya melakukan sesuatu tugas (penyelesaian masalah) tertentu. Perangkat lunak 

dikembangkan dengan cara di program. Jadi bagaimana cara untuk membuat program 

(melakukan pemrograman)? Kembali pada perangkat lunak, pada dasarnya program juga 

demikian, berisi instruksi-instruksi yang diberikan kepada komputer atau perangkat komputer 

tentang tugas apa yang akan/dapat dilakukan. 

Meskipun demikian, komputer tidak dapat secara langsung menerima instuksi-instruksi yang 

diberikan oleh programmer. Programmer merupakan istilah bagi seseorang yang membuat 

program komputer. Komputer hanya sebuah mesin dan mesin hanya mengetahui angka 0 (on) 

dan 1 (off). Seorang programmer tidak dapat membuat instruksi-instruksi pemrograman 

dengan deretan angka 0 dan 1. Programmer memerlukan alat atau tool yang dapat digunakan 

sebagai “penerjemah” antara bahasa manusia dengan bahasa mesin. Alat tersebut dikenal 

dengan istilah bahasa pemrograman. Jadi selain membutuhkan instruksi-instruksi yang 

diberikan pada komputer, programmer juga membutuhkan bahasa pemrograman. 

Setiap programmer memiliki pendekatan atau cara yang berbeda untuk menuliskan instruksi-

instruksi tersebut. Secara umum, ada  empat pendekatan pemrograman yaitu, 

prosedural/imperatif, deklaratif, fungsional, dan berorientasi objek. Pendekatan prosedural 

merupakan pendekatan pemrograman tradisional yang dikembangkan dengan cara membuat 

urutan-urutan instruksi diikuti dengan manipulasi data untuk suatu tujuan atau tugas tertentu. 

Pendekatan deklaratif berfokus pada pendeskripsian masalah yang akan diselesaikan 

dibandingkan dengan membuat urutan atau langkah-langkah yang akan dilakukan. Pada 

pendekatan fungsional, program dilihat sebagai entitas yang menerima input dan 

menghasilkan output. Program dibagi-bagi pada unit kecil yang disebut dengan fungsi dan 

 2 

 

fungsi tersebut dapat digunakan pada fungsi yang lainnya. Pendekatan berorientasi objek 

memungkinkan program sebagai set unit yang disebut dengan istilah objek. Setiap objek 

memiliki kemampuan untuk melakukan suatu aksi dan saling terkait antar satu objek dengan 

yang lainnya untuk mencapai tujuan tertentu.  

Fokus yang akan dibahas secara mendalam pada Buku ini adalah pendekatan berorientasi 

objek. Pendekatan ini dapat disebut dengan istilah “Pemrograman Berorientasi Objek”. 

Pendekatan ini merupakan pendekatan yang paling modern jika dibandingkan dengan 

pendekatan yang lainnya. Kenapa bisa dikatakan modern? Kenapa programmer harus 

menggunakan pendekatan ini? Program merupakan representasi dari sistem yang dibangun 

oleh developer (sekumpulan organisasi atau perusahaan yang berisi programmer, analis 

sistem, dll) atau programmer. Semakin besar sistem yang dibangun maka program akan 

menjadi semakin kompleks. Berikut adalah alasan kenapa programmer membutuhkan 

pemrograman berorintasi objek: 

 Memiliki kemampuan pemeliharaan program yang cepat dan efisien (tanpa merombak 

sistem) dibandingkan dengan paradigma pemrograman yang lain, 

 Mempercepat waktu pengembangan, 

 Mendukung kerja sama tim saat memprogram, 

 Mudah menerjemahkan dari model bisnis dalam model pemrograman, 

 Paradigma pemrograman selain berorientasi objek akan bekerja dengan baik pada 

sistem dengan lingkup yang terisolasi, tetapi tidak jika sistem terintregasi, 

 Mendukung sistem operasi modern dan dapat dengan mudah beradaptasi dengan 

program pihak ketiga (third-party program), 

 Kemampuan untuk dapat membuat Graphical User Interface (GUI) yang mudah 

dimengerti. 

Jadi apa definisi dari pemrograman berorientasi objek? Pemrograman berorientasi objek 

merupakan pendekatan pengembangan perangkat lunak/program yang memiliki struktur 

berbasis objek yang dapat berinteraksi satu sama lain untuk memenuhi suatu tujuan. Sebagian 

besar bahasa pemrograman modern saat ini mendukung pendekatan berbasis objek ini. Akan 

 3 

 

tetapi, pada buku ini, akan digunakan bahasa pemrograman Java untuk melakukan 

pemrograman berorientasi objek. 

1.2 Berpikir Objek 

Pada pemrograman prosedural kita dapat mengatakan suatu cara menyelesaikan masalah 

berdasarkan oleh aksi (action-driven) dan data berada terpisah dari aksi-aksi yang ada. 

Didalam pendekatan berorientasi objek, data dan aksi berada dalam satu tempat yang disebut 

dengan objek. Misalnya kita dapat membayangkan sebuah sistem besar yang akan dibangun 

yaitu Sistem Informasi Akademik. Didalam sistem tersebut ada  entitas yang 

merepresentasikan bagian kecil dari sistem yang terlibat dalam sistem yang besar itu, 

katakanlah objek Mahasiswa. Pada objek Mahasiswa ada  attribut data nama, nomor 

induk mahasiswa, jenis kelamin, dll. Selain itu, objek Mahasiswa juga memiliki aksi seperti 

mengambil mata kuliah, melihat data diri, dll.  

Ketika melihat aksi yang ada dalam objek Mahasiswa tersebut, dapat dilihat bahwa untuk 

melakukan aksi mengambil mata kuliah diperlukan setidaknya data nim untuk membedakan 

antara mahasiswa satu dengan yang lain. Disamping itu, ada  objek lain yang terkait yaitu 

Mata Kuliah. Didalam objek Mata Kuliah ada  attribut data seperti nama mata kuliah, 

jadwal, dan ruang. Dari contoh yang sudah diceritakan sebelumnya dapat dilihat bahwa 

sistem terbagi dalam sistem yang lebih kecil dengan direpresentasikan oleh objek-objek yang 

saling terkait satu sama lain. Dengan demikian, cara berpikir seperti ini dapat digunakan 

sebagai acuan untuk memulai memprogram dengan pendekatan berorientasi objek. 

1.3 UML Class Diagram 

UML merupakan singkatan dari Unified Modelling Language yang merupakan bahasa 

spesifikasi yang terstkitarisasi untuk pemodelan objek. UML ditemukan pada tahun 1990-an 

oleh James Rumbaugh, Grady Booch, dan Ivar Jacobson. UML juga dapat dikatakan sebagai 

jembatan dari kode program kedalam model bisnis. Didalam UML ada  bagian kecil yang 

dikenal dengan istilah “Class Diagram” yang dapat membuat representasi visual dari class 

objek saat membuat program yang berbasis objek. Class merupakan bentuk rancangan 

program dari sebuah objek. Jadi objek merupakan representasi langsung dari class. Class 

akan dibahas lebih lanjut di BAB 3. Pada buku ini kita akan fokus kepada bagian class 

diagram untuk merepresentasikan objek-objek yang diprogram.  

 4 

 

Satu class diagram berbentuk kotak dengan tiga bagian yang ditumpuk seperti pada Gambar 

1.1. Bagian tumpukan pertama yang paling atas berisi nama class. Bagian tumpukan kedua 

atau tengah merupakan bagian untuk data atau properti. Bagian tumpukan ketiga atau paling 

bawah berisi method-method atau fungsi-fungsi. Properti dan method merupakan anggota 

didalam struktur anatomi class. Properti merupakan atribut data yang dimiliki oleh suatu 

class atau dapat dikatakan sebagai variabel. Method merupakan bentuk tingkah laku atau aksi 

yang dimiliki oleh suatu class. Seperti hal.nya pada pemrograman fungsional, method juga 

mirip dengan fungsi yang dapat memiliki nilai pengembalian ataupun tidak memiliki nilai 

pengembalian. Properti dan method akan dijelaskan lebih lanjut pada BAB 3.   

 

 

 

 

Gambar 1.1 Contoh class diagram Mahasiswa 

1.4 Kesimpulan 

Pada BAB ini memberikan penjelasan umum tentang paradigma pemrograman berorientasi 

objek. Dimana ketika akan membangun program, seorang programmer akan berpikir semua 

entitas yang terkait sebagai suatu objek-objek yang saling terkait. Selain itu, ada  UML 

class diagram yang dapat menerjemahkan dari bahasa pemrograman menjadi bahasa bisnis. 

Pada BAB 2, akan dibahas cara memprogram dengan bahasa pemrograman Java dimulai dari 

pemrogramman dasar.  Pemrograman berorientasi objek dengan bahasa pemrograman java 

akan mulai dibahas dari BAB 3. 

1.5 Latihan Soal 

Jawablah pertanyaan-pertanyaan dibawah ini dengan tepat! 

1. Apa perbedaan antara pendekatan pemrograman prosedural dengan pendekatan 

berorientasi objek? 

2. Mengapa programmer membutuhkan pemrograman berorientasi objek? 

3. Apa kaitannya antara class dengan objek? 

 5 

 

4. Siapa yang menemukan UML? 

5. Mengapa dalam memprogram berorientasi objek juga dibutuhkan UML class 

diagram? 

 6 

 

BAB 2 DASAR PEMROGRAMAN DENGAN JAVA 

2.1 Sejarah Bahasa Pemrograman 

Komputer tidak dapat mengerti dengan mudah instruksi yang dimasukkan oleh manusia. 

Komputer butuh alat untuk menerjemahkan bahasa manusia kedalam bahasa “mesin”. Istilah 

“mesin” digunakan karena pada dasarnya komputer adalah mesin yang dapat menerima 

instruksi, memproses, dan mengeluarkan keluaran output kedalam perangkat lain yang 

terhubung (monitor). Alat yang digunakan untuk memudahkan komputer memahami instruksi 

yang dimasukkan adalah bahasa pemrograman. Ada banyak sekali bahasa pemrograman yang 

dikembangkan untuk mempermudah manusia dalam memprogram di komputer. Komputer 

memiliki bahasa dasar (native) yang dikenal dengan bahasa mesin. Bahasa mesin terdiri dari 

rangkaian urutan angka biner. Berikut adalah contoh penulisan bahasa mesin: 

1011101010111010101011110111110111101 

Dapat dibayangkan ketika programmer harus memprogram dengan bahasa mesin, hal tersebut 

sangatlah tidak menyenangkan. Program yang ditulis akan sulit untuk dibaca dan 

dimodifikasi. Dengan alasan tersebut muncul bahasa pemrograman assembly. Assembly 

memungkinkan programmer untuk memasukkan instruksi dengan kata-kata singkat atau tidak 

lagi rangkaian angka biner. Kata-kata singkat tadi juga dikenal dengan istilah “mnemonic”. 

Berikut adalah contoh kode yang berisi instruksi sederhana dengan bahasa assembly: 

add 2, 3, result 

Menulis dengan bahasa assembly lebih mudah dibandingkan dengan bahasa mesin. Meskipun 

demikian, bahasa ini merupakan bahasa yang paling dekat dengan bahasa mesin. Untuk 

memprogram dengan assembly programmer harus sudah memahami cara kerja CPU secara 

terperinci. Karena kedekatan bahasa assembly dengan mesin sehingga bahasa ini termasuk 

dalam kategori bahasa tingkat-rendah. 

Pada tahun 1950-an, generasi baru pemrograman muncul dengan kategori bahasa tingkat-

tinggi. Bahasa tingkat-tinggi mendukung penulisan program dengan bahasa inggris dan 

mudah untuk digunakan. Selain itu, bahasa tingkat-tinggi ini dapat dijalankan dibeberapa 

jenis mesin (tidak hanya pada satu mesin tertentu). Instruksi-instruksi perintah yang 

 7 

 

dimasukkan dengan bahasa tingkat-tinggi ini dikenal dengan istilah statement. Berikut adalah 

contoh statement dengan bahasa tingkat-tinggi untuk menghitung luas lingkaran: 

area = 7 * 7 * 3.14; 

ada  banyak sekali bahasa pemrograman yang masuk dalam kategori bahasa tingkat-

tinggi. Tabel 2.1 menunjukkan beberapa bahasa pemrograman yang populer saat ini yang 

termasuk dalam kategori bahasa tingkat-tinggi. 

Tabel 2.1 Bahasa Tingkat-Tinggi yang Populer 

Bahasa Deskripsi singkat 

C Merupakan bahasa pemrograman yang dikembankan dari laboratorium Bell. 

Berisi kombinasi dari bahasa assembly dengan bahasa yang sudah 

dikembangkan kedalam bahasa tingkat-tinggi yang mudah dipahami. 

C++ Bahasa pemrograman yang mendukung pemrograman berorientasi objek 

yang dikembangkan dari bahasa C. 

C# Bahasa pemrograman yang mendukung pemrograman berorientasi objek 

yang dikembangkan oleh Microsoft. 

Java Bahasa pemrograman yang mendukung pemrograman berorientasi objek 

yang dikembangkan oleh Sun Microsystems yang saat ini bagian dari Oracle.  

Javascript Bahasa pemrograman berbasis web yang dikembangkan oleh Netscape. 

Python Bahasa pemrograman yang dapat berguna untuk apa saja (genera purpose 

language). Sangat efektif untuk menulis program-program singkat. 

Visual Basic Bahasa pemrograman yang dikembangkan oleh Microsoft dan sebagian besar 

penerapannya digunakan dalam produk-produk aplikasi dari Microsoft. 

2.2 Karakteristik dan Kelebihan Java 

Java merupakan bahasa pemrograman yang sangat powerfull yang dapat dikembangkan pada 

berbagai platform seperti, komputer desktop, perangkat mobile, dan server (web). Pada buku 

ini, akan digunakan bahasa pemrograman java untuk membuat program berorientasi objek. 

Java dikembangkan oleh tim dari Sun Microsystems yang dipimpin oleh James Gosling. Pada 

 8 

 

tahun 2010, perusahaan Sun Microsystem sudah dibeli oleh Oracle. Bahasa java atau dahulu 

dikenal dengan Oak di desain mulai dari tahun 1991 untuk bahsa pemrograman pada alat-alat 

elektronik.  

Nama java baru muncul pada tahun 1995 dimana fokusnya adalah mengembangkan aplikasi 

berbasis web. Java muncul dan menjadi populer dikalangan programmer karena 

kemudahaannya dan dapat berjalan dibanyak platform. Bahkan saat ini, java digunakan 

sebagai dasar program aplikasi dengan platform Android. Platform Android merupakan 

platform yang paling populer dan besar dikalangan perangkat mobile. Java memiliki beberapa 

kelebihan diantaranya adalah sebagai berikut: 

 Bahasa pemrograman yang sederhana, 

 Mendukung pemrograman berorientasi objek, 

 Mendukung pemrograman yang terdistribusi, 

 Mudah untuk ditafsirkan (intepreted). 

 Bahasa pemrograman yang kuat yang berarti bahwa compiler dapat menanggapi 

kesalahan program dengan baik. 

 Bahasa pemrograman yang memiliki mekanisme keamanan kusus. 

 Memiliki arsitektur yang netral atau tulis sekali dijalankan dimana saja. 

 Portabel atau dapat digunakan untuk mengembangkan aplikasi pada berbagai 

platform. 

 Memiliki performa tinggi. 

 Mendungkung pemrograman banyak thread atau multithreaded. 

 Bahasa pemrograman yang dinamis (dapat langsung ter-compile).  

2.3 Instalasi Java dan IDE 

Bahasa pemrograman memiliki kebijakan masing-masing dalam aturan tata-bahasanya atau 

syntax. Untuk dapat memulai memprogram dengan java dibutuhkan Java Application 

Programming Interface (API) atau dikenal dengan istilah Java Library. Didalam Java API 

berisi beberapa class dan interface yang dapat digunakan untuk mengembangkan aplikasi 

 9 

 

dengan Java. Java API dapat diakses dengan mengunduh aplikasi JDK (Java Development 

Toolkit). Java datang dengan tiga edisi, yaitu: 

 Java Stkitard Edition (Java SE) untuk mengembangkan aplikasi disisi klien (client 

side). Aplikasi-aplikasi di edisi ini dapat berjalan pada aplikasi desktop. 

 Java Enterprise Edition (Java EE) untuk mengembangkan aplikasi disisi server (server 

side). 

 Java Micro Edition (Java ME) untuk mengembangkan aplikasi pada perangkat 

mobile. 

Buku ini menggunakan edisi Java SE untuk memperkenalkan pemrograman java dengan 

berorientasi objek. ada  beberapa versi Java SE, tetapi pada buku ini kita akan 

menggunakan Java SE 8 yang dirilis oleh Oracle. Java SE sudah termasuk didalam aplikasi 

JDK 1.8. JDK 1.8 atau JDK 8 dapat diunduk di https://www.oracle.com/technetwork/ 

java/javase/downloads/jdk8-downloads-2133151.html. Ketika mengunduh perhatikan bahwa 

kita harus menyetujui persetujuan lisensi yang harus diterima. Selain itu juga harus 

diperhatikan sistem operasi yang digunakan. Gambar 2.1 memperlihatkan halaman unduhan 

ketika akan mengunduh JDK 8u201. 

 

 

 

 

 

 

Gambar 2.1 Halaman unduhan JDK 8u201 

JDK berisi beberapa set program yang terpisah. Setiap set program tersebut memiliki fungsi 

masing-masing seperti memanggil beberapa isntruksi yang sudah ditentukan melalui 

command line, kompilasi, menjalankan program, dan pengetesan program Java. Program 

untuk menjalankan aplikasi Java dikenal dengan nama JRE (Java Runtime Environment).  

Intinya JDK digunakan untuk kompilasi dan menjalankan program Java. Meskipun demikian, 

 10 

 

kita dapat menggunakan aplikasi selain JDK seperti, Netbeans dan Eclipse. Untuk dapat 

menjalankan JDK tentu saja JDK harus terinstal terlebih dahulu. Setelah itu kita harus 

mendaftarkan perintah untuk kompilasi dan menjalankan program pada sistem operasi. 

Berikut adalah cara untuk mendaftarkan perintah tersebut pada sistem operasi Windows 10.  

1.  Klik logo Windows 10 cari “Edit the system environment variable” atau cari “Control 

Panel”  System and Security  System  Advanced System Settings (di tab 

Advanced klik tombol “Environment Variables..”. Gambar 2.2 memperlihatkan 

halaman environment variables. 

 

 

 

 

 

 

 

 

 

 

 

Gambar 2.2 Halaman environment variables 

2. Fokus pada bagian System variables, tarik kebawah dan cari variable dengan nama 

“path” kemudian klik tombol Edit (yang bawah/bagian system variable). Perhatikan 

bahwa JANGAN menghapus variable atau environment variables didalam path 

karena itu dapat menyebabkan kerusakan pada sistem operasi! Gambar 2.3 

memperlihatkan halaman edit environment variable didalam path.  

 

 11 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 2.3 Halaman edit environment varible pada path 

Setelah itu, seperti pada Gambar 2.3 klik pada tombol New maka akan ada tambahan 

isian kosong dibagian bawah. Klik tombol Browse dan cari alamat direktori JDK yang 

sudah di instal sebelumnya dan masuk pada folder bin. Contohnya: C:\Program 

Files\Java\jdk1.8.0_181\bin. Gambar 2.4 menunjukkan penambahan direktori JDK 

pada environment variable yang sudah benar. 

 

 

Gambar 2.4 Penambahan direktori JDK pada environment variable 

Jika sudah seperti pada Gambar 2.4 langkah berikutnya adalah klik tombol “OK” dan 

keluar dari halaman environment variable. 

3. Buka command prompt pada windows atau ketik cmd pada pencarian di Windows 10. 

Ketikkan “javac”, jika muncul keluaran pada command prompt seperti Gambar 2.5, 

berarti instalasi berhasil. 

 

 12 

 

 

 

 

 

Gambar 2.5 Instalasi JDK yang berhasil 

Untuk software aplikasi Netbeans atau Eclipse menyediakan IDE (Integrated Development 

Environment) untuk mengembangkan aplikasi berbasis Java dengan cepat. Misalnya pada 

Netbeans, menyediakan Graphical User Interface (GUI) yang dapat membantu programmer 

(drag-and-drop) tanpa harus memprogram semua komponen GUI yang ada. Netbeans dapat 

di unduh di halaman https://netbeans.org/downloads/8.2/ dan dapat di instalasi dengan mudah 

dengan mengikuti petunjuk (next-next saja). Pada buku ini hanya digunakan Netbeans dengan 

Java SE.   

2.4 Struktur Anatomi dan Sintak Program Java 

Pemrograman di Java setidaknya membutuhkan satu class dan satu main method. 

Programmer diperbolehkan untuk membuat class baru dengan nama yang diinginkan oleh 

programmer itu sendiri. Namun demikian ada  aturan sintak seperti berikut: 

public class <Nama Class> { } 

Nama class disini hanya boleh dimulai oleh huruf (biasanya programmer menggunakan 

stkitar dengan dimulai dari huruf besar) dan tidak boleh ada spasi. Boleh ada angka dan 

karakter khusus seperti “_” tetapi tetap diawali dengan huruf. Berikut adalah contoh 

penamaan class yang benar: 

public class Hello { } 

Selain itu, diperlukan main method sebagai acuan pertama kali program akan mengeksekusi 

instruksi yang kita berikan atau statement. Pembuatan main method yang benar adalah 

sebagai berikut: 

public static void main(String[] args){ } 

 13 

 

Perhatikan bahwa kurung kurawal buka “{“ dan kurung kurawal tutup “}” merupakan bentuk 

blok dari beberapa komponen program. Komponen program dapat berisi satu atau banyak 

statement. Misalnya pada sebuah class memiliki blok komponen program yaitu data dan 

method. Demikian halnya dengan method yang memiliki blok komponen program berisi 

beberapa statement. Blok juga dapat bersarang atau nested, artinya didalam satu blok bisa 

berisi blok-blok lain. Begitu juga dengan blok-blok lain tersebut bisa berisi beberapa blok 

lainnya. Berikut adalah contoh program utuh yang berisi satu class bernama Hello dan satu 

main method: 

public class Hello { 

 public static void main(String[] args) { 

  System.out.println(“Selamat datang Java!”); 

Pada saat memprogram Java, statement diakhiri dengan karakter “;”.  Semua yang ditulis di 

Java mengikuti aturan penulisan yang sensitif atau dikenal dengan istilah case-sensitive. 

Misalnya ketika menuliskan “main” diganti dengan “Main”, hal ini akan menyebabkan 

kesalahan sintak. Kesalahan sintaksis akan muncul ketika programmer tidak mematuhi aturan 

sintak.  

2.5 Kompilasi dan Menjalankan Program 

Ketika akan membuat program java pertama kali pastikan bahwa program java disimpan 

dengan ekstensi file “.java”. Setelah menyimpan file dengan ekstensi tersebut, dilanjutkan 

dengan proses kompilasi yang akan menghasilkan file dengan ekstensi file “.class”. Dari file 

hasil kompilsi tersebut akan dijalankan oleh Java Virtual Machine (JVM). Proses kompilasi 

dan menjalankan tersebut akan diulang terus menerus selama memprogram dengan Java. Apa 

yang terjadi sebetulnya dan apa itu JVM? Jadi file .class pada dasarnya merupakan bahasa 

yang mirip (tidak sama persis) dengan bahasa mesin atau dapat disebut dengan bytecode yang 

dapat di jalankan pada platform apapun selama memiliki JVM. Java memiliki JVM yang 

dapat menerjemahkan bytecode pada apapun platform dan/atau sistem operasi dari pada 

menggunakan mesin fisik. Gambar 2.6 merupakan proses pengembangan program Java 

dengan studi kasus class Hello pada sub bab sebelumnya.   

Blok  

Main 

 

Blok  

Class 

 

 14 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 2.6 Siklus kompilasi dan menjalankan program Java. 

Ketika programmer membuat program java untuk pertama kali menggunakan editor (notepad 

misalnya), programmer akan menyimpan pada direktori tertentu didalam harddisk. Misalnya 

programmer menyiapkan dengan nama “LatihanJava” di drive C dan kemudian akan 

menyimpan file Hello.java didalam folder tersebut.  Maka mekanisme untuk melakukan 

kompilasi dan menjalankan aplikasi dilakukan melalui command prompt windows seperti 

pada Gambar 2.7 (perhatikan bahwa jdk sudah di instal seperti pada BAB 2.3). Program java 

dapat ditulis menggunakan editor teks sederhana, seperti notepad misalnya. Jika notepad 

terasa monoton dan kurang bewarna programmer bisa mengunduh dan menginstal notepad++ 

(https://notepad-plus-plus.org/download/v7.6.4.html) atau visual studio code 

(https://code.visualstudio.com/download).  

 

 

 

 15 

 

 

 

 

 

 

 

 

Gambar 2.7 Proses kompilasi dan menjalankan program Java. 

Dalam pemrograman dengan Java, ada  tiga jenis kesalahan program atau error yang 

umum, yaitu syntax error, runtime error, dan logic error. Syntax error atau compile error 

merupakan kesalahan yang sering sekali dilakukan oleh programmer pemula. Kesalahan ini 

dikarenakan penulisan program yang tidak tepat atau tidak sesuai dengan sintak 

pemrograman yang seharusnya. Sebagai contoh, programmer lupa menambahkan titik-koma 

“;” di akhir statement. Kesalahan tersebut akan muncul ketika kita meng-kompile (saat 

menjalankan javac). Bentuk kesalahannya adalah sebagai berikut: 

Hello.java:3:error: ‘;’ expected 

Kesalahan tersebut diatas terjadi pada Hello.java baris ke 3 dengan keterangan kesalahan 

“dibutuhkan titik-koma”. Systax error merupakan bentuk kesalahan program yang sangat 

mudah untuk dideteksi.  

Kesalahan program yang kedua adalah runtime error. Runtime error akan mengakibatkan 

program berhenti secara tidak normal. Artinya program berhasil di kompile tetapi saat 

dijalankan program akan menjadi berhenti secara tiba-tiba. Contoh dari error ini adalah 

pembagian suatu nilai dengan nilai 0. Maka akan muncul kesalahan yang dikenal dengan 

“Exception” saat ketika menjalankan program. Kesalahan program seperti ini muncul karena 

saat program dijalankan, lingkungan pemrograman Java (sistem Java) tidak mungkin dapat 

menangani masalah tersebut. 

Kesalahan jenis ketiga adalah logic error. Logic error atau dapat disebut dengan istilah “bug” 

merupakan jenis kesalahan yang cukup sulit dideteksi. Program berhasil di kompile dan di 

Pindah antar drive 

Pindah ke direktori 

sebelumnya 

Pindah ke direktori 

LatihanJava 

Kompilasi/compile 

Menjalankan/running 

 16 

 

jalankan, tetapi ada  kesalahan yang dilakukan program saat program tersebut berjalan 

(program tidak berjalan semestinya). Contohnya, ketika kita membuat program untuk 

mendeteksi suhu mendidih dan normal pada air. User mencoba untuk memasukkan angka 

110 untuk melihat suhunya normal atau mendidih. Suhu mendidih seharusnya diatas 100 

derajat celcius. Tetapi output yang dihasilkan program adalah suhu normal. Untuk menangani 

masalah ini, programmer harus melakukan proses debugging. Debugging merupakan proses 

untuk mencari bug program dengan mencari pada setiap baris program yang menyebabkan 

bug tersebut muncul.  

2.6 Input Output Console 

Console merupakan istilah jaman dulu yang memiliki arti memasukkan teks dan 

menampilkan dilayar. Console input artinya kode program yang digunakan untuk 

memasukkan apa yang diketikkan oleh keyboard. Console output artinya kode program yang 

digunakan untuk menampilkan yang diketikkan tadi di layar monitor. Seperti program 

Hello.java yang sebelumnya sudah dijelaskan, disana ada  kode statement untuk console 

output yaitu System.out.println. Secara umum Java memiliki dua console output yaitu 

System.out.println dan System.out.print. Keduanya memberikan output teks atau 

dikenal dengan tipe data String. Perbedaanya adalah output teks yang dihasilkan oleh 

println dimulai dari baris yang baru sedangkan pada print tidak demikian. Kode 2.1 

merupakan contoh kode program yang menerapkan console output println dan print. 

Kode 2.1 Hello.java 

public class Hello { 

 public static void main(String[] args) { 

           System.out.print(“Nama saya Budi!”); 

      System.out.println(“Selamat datang Java!”); 

     } 

 

Console input pada Java sedikit memerlukan mekanisme khusus. Java memiliki 

System.out untuk mendefinisikan output dan System.in untuk mendefinisikan input. 

Untuk melakukan console input tidak bisa langsung memanggil System.in, melainkan 

 17 

 

dengan menggunakan Scanner class. Scanner digunakan untuk membuat objek dari 

pembacaan input oleh System.in seperti kode berikut: 

Scanner input = new Scanner(System.in); 

Scanner merupakan class yang didefinisikan oleh java.util.Scanner sehingga dapat dipanggil 

dengan menambahkan import java.util.Scanner; terlebih dahulu. Variabel input 

merupakan Objek dari scanner yang terbentuk dari System.in. Untuk membuat input 

menjadi suatu tipe data yang kita ingginkan kita harus lakukan pemanggilan method khusus. 

Misalnya, ketika kita ingin tipe data input menjadi double maka kita panggil method 

nextDouble() seperti pada kode berikut: 

double beratbadan = input.nextDouble(); 

Variabel beratbadan dapat menerima apapun masukan user dengan tipe angka pecahan 

atau tipe data double. Kode 2.2 menjelaskan tentang penggunaan console input dan output 

untuk perhitungan luas persegi. 

Kode 2.2 HitungLuasPersegi.java 

10 

11 

12 

13 

14 

import java.util.Scanner; 

public class c { 

 public static void main(String[] args) { 

           // Buat objek Scanner 

           Scanner input = new Scanner(System.in); 

           // Kabari user untuk memasukkan angka sisi persegi 

      System.out.print (“Masukkan sisi persegi: ”); 

      double sisi = input.nextDouble(); 

           // hitung luas 

      double luas = sisi * sisi; 

      // tampilkan hasil 

      System.out.print (“Luas persegi: ”+luas); 

      } 

 18 

 

Simpan kode 2.1 dengan nama HitungLuasPersegi.java dan lakukan kompilasi. Setelah itu 

jalankan program dan coba ketikkan 12 lalu tekan enter. Hasil yang akan ditampilkan 

program yaitu Luas persegi: 144. 

2.7 Identifier, Variabel, dan Assignment 

Identifier merupakan nama-nama yang dibuat sendiri untuk mengidentifikasi variabel, 

method, atau class. Perhatikan bahwa penamaan identifier di Java adalah case-sensitive. 

Semua identifier di Java harus mengikuti kaidah-kaidah aturan sebagai berikut: 

 Terdiri dari urutan karakter yang terdiri dari huruf, angka, garis bawah “_”, dan 

penkita dollar “$”. 

 Identifier harus dimulai dari huruf, garis bawah, atau penkita dollar. Tidak boleh 

dimulai dengan angka. 

 Identifier tidak boleh memuat kata-kata yang sudah disiapkan oleh Java. Misalnya 

menamai variabel dengan class. 

 Bisa terdiri dari satu atau lebih karakter. 

Variabel pada Java digunakan untuk merepresentasikan suatu nilai yang mungkin akan 

berubah-ubah didalam program. Nilai tersebut mengikuti suatu tipe data tertentu atau objek 

tertentu. Perlu mekanisme pengenalan variabel yang disebut dengan deklarasi variabel. 

Deklarasi variabel meminta kompiler untuk mengalokasikan ruang memori yang benar 

berdasarkan kepada tipe data/objek dari variabel tersebut. Deklarasi variabel dapat dilakukan 

dengan cara berikut: 

<tipe data> <nama variabel> 

int x; 

double rata2; 

Kita dapat memberikan nilai awal dari sebuah variabel dengan cara inisialisasi variabel. 

Berikut adalah cara inisialisasi variabel: 

int y = 10; 

double panjang; 

panjang = 9.5;  

 19 

 

Setelah deklarasi variabel, kita dapat membuat assignment statement. Assignement dilakukan 

varibel dengan cara memerintah (assign) suatu nilai yang ditujukan ke variabel tersebut. 

Assignment statement dapat digunakan sebagai ekspresi. Ekspresi mewakili komputasi 

perhitungan yang melibatkan nilai, variabel, dan operator untuk mengevaluasi suatu nilai 

tertentu. Jadi aturan sintak untuk assigment adalah sebagai berikut: 

variabel = ekspresi 

Assignment diwakili oleh simbol sama dengan “=”. Berikut adalah contoh assignment kepada 

nilai langsung, varibel lain, dan ekspresi aritmatika: 

double x = 10; 

double sisi = x; 

double luas = sisi * sisi; 

Perhatikan bahwa yang di-assign berada pada sisi sebelah kanan dan tidak boleh terbalik. 

Selain itu kita juga bisa melakukan assignment pada banyak variabel sekaligus dalam satu 

statement. Berikut adalah contoh dari assignment pada banyak variabel: 

i = j = k = 100;  

sama dengan, 

i = 100; 

j = 100; 

k = 100; 

Programmer juga dapat melakukan assignment pada statement atau method. Berikut adalah 

contoh penerapannya pada console output: 

System.out.print(a = 10); 

Sama dengan, 

a = 10; 

System.out.print(a); 

2.8 Tipe data dan Operasi 

Pada deklarasi variabel, variabel harus memiliki tipe data sebagai bentuk representasi dari 

nilai variabel tersebut. Java memiliki beberapa tipe data numerik, karakter, dan bolean. Selain 

itu, setiap tipe data memiliki jangkauan nilai yang berbeda-beda. Compiler akan 

 20 

 

mengalokasikan memori dari variabel sesuai dengan tipe data-nya. Tabel 2.2 memperlihatkan 

tipe data numerik yang didukung lengkap dengan jangkauan nilai dan ukuran 

penyimpanannya. 

Tabel 2.2 Tipe data numerik di Java 

Nama Jangkauan nilai Ukuran penyimpanan 

int -231 s/d 231-1 32-bit signed (4 byte) 

short -215 s/d 215-1 16-bit signed (2 byte) 

long -263 s/d 263-1 64-bit signed (8 byte) 

float Negatif : -3.4028235E + 38 s/d -1.4E -45 

Positif: 1.4E -45 s/d 3.4028235E+38 

32-bit IEEE 754 (4 byte) 

double Negatif : -1.7976931348623157E+308 s/d -4.9E -324 

Positif: 4.9E -324 s/d 1.7976931348623157E+308 

64-bit IEEE 754 (8 byte) 

byte -27 s/d 27-1 8-bit signed 

 

Tipe data yang lain (selain numerik) yaitu, karakter diwakili dengan char, urutan karakter 

diwakili dengan String, dan logika boolean dengan boolean. Tipe data char memiliki 

ukuran 1 byte. Tipe data String memiliki ukuran banyaknya karakter dikalikan dengan 1 

byte. Tipe data boolean memiliki ukuran 1 byte. Kembali ke tipe data numerik, untuk 

membaca dari keyboard (atau melakukan console input), programmer akan menggunakan 

Scanner. Pada Kode 2.1, kita telah membuat scanner dan menerapkan method 

nextDouble() untuk mendapatkan input dengan tipe data double.  Untuk input yang lain 

disajikan pada Tabel 2.2. 

 

 

 

 

 21 

 

Tabel 2.3 Method untuk objek scanner 

Method Deskripsi 

nextInt() Membaca bilangan bulat dari tipe data int 

nextShort() Membaca bilangan bulat dari tipe data short 

nextLong() Membaca bilangan bulat dari tipe data long 

nextFloat() Membaca bilangan riil dari tipe data float 

nextDouble () Membaca bilangan riil dari tipe data double 

nextByte() Membaca bilangan bulat dari tipe data byte 

 

Tipe data numerik memiliki operasi dasar aritmatika, sehingga membutuhkan operator dasar 

seperti: penjumlahan “+”, pengurangan “-”, pembagian “/”, perkalian ”*”, dan sisa bagi “%”. 

Istilah operan merupakan nilai yang dioperasikan oleh operator. Ketika kedua operan bertipe 

bilangan bulat (integer) dan kemudian akan dilakukan operasi pembagian, jika hasilnya 

bilangan riil maka angka dibelakang koma akan dihilangkan. Misalnya 5 / 2 akan 

menghasilkan nilai 2 bukan 2,5. Agar hasilnya menjadi 2,5 kedua operan harus diganti 

dengan tipe bilangan riil (misalnya float). Kode 2.2 merupakan contoh penggunaan operasi 

pada variabel yang telah ditentukan. 

Kode 2.3 CetakWaktu.java 

 

import java.util.Scanner; 

public class CetakWaktu { 

 public static void main(String[] args) { 

           Scanner input = new Scanner(System.in); 

           System.out.print (“Masukkan waktu dalam detik: ”); 

      int detik = input.nextInt(); 

           int menit = detik / 60; 

           int sisadetik = detik % 60; 

           System.out.print (detik+ “ detik adalah ”+menit+ 

” menit ”+sisadetik+” detik.”); 

 22 

 

10 

11 

      } 

 

ada  operator khusus yang digunakan untuk menaikkan 1 nilai variabel atau increment 

dan menurunkan 1 nilai variabel atau decrement. Misalnya ada  variabel int x = 2; dan 

kemudian ada  operasi increment x++;. Operasi increment tersebut sama dengan x = x + 

1;. Begitu juga dengan operator decrement, misalnya: x--; sama dengan x = x -1;. 

Meskipun demikian kita dapat menuliskan ++ atau -- sebelum variabelnya, contoh ++x; atau 

--x;. Dengan demikian increment atau decrement yang dilakukan setelah variabel disebut 

dengan postincrement atau postdecrement. Kemudian untuk increment atau decrement yang 

dilakukan sebelum variabel disebut dengan preincrement atau predecrement. Berikut adalah 

perbedaan keduanya. 

int x = 10; 

int xa = 100 * x++; 

 

int y = 10; 

int ya = 100 * (++y); 

 

Jika nilai xa dan ya dioutputkan, mereka memiliki hasil yang berbeda, yaitu xa = 1000 dan 

ya = 1100.  

Programmer dapat melakukan konversi bilangan bulat (integer) ke bilangan riil (float atau 

double) atau sebaliknya dengan cara explicit casting. Misalnya, ada  variabel double x = 

90.5;, kita dapat melakukan assigment ke variabel yang bertipe integer dengan cara int y = 

(int) x; sehingga y akan memiliki nilai 90 bukan 90,5. 

2.9 Seleksi Pengambilan Keputusan 

Program dapat memilih statement yang mana yang akan di eksekusi berdasarkan suatu 

kondisi. Misalnya, programmer membuat program untuk menentukan air mendidih atau air 

yang tidak mendidih. ada  variabel suhu air yang dimasukkan oleh user. Untuk dapat 

int xa = 100 * x; 

x = x + 1; 

y = y + 1; 

int ya = 100 * y; 

 23 

 

mengoutputkan air mendidih atau air tidak mendidih berdasarkan nilai suhu yang dimasukkan 

oleh user, program harus memiliki mekanisme untuk memilih atau mengambil keputusan. 

Lalu bagaimana mekanismenya? Java menyediakan selection statement yang dapat 

membiarkan kita untuk membuat pilihan aksi dengan berbagai alternatif jawaban. Berikut 

adalah contoh kode selection statement: 

double suhuair = 205.1; 

if(suhuair > 100) 

 System.out.println(“mendidih”); 

else 

 System.out.println(“tidak mendidih”); 

Perhatikan pada kode sebelumnya boleh untuk tidak menggunakan blok kurung-kurawal jika 

hanya ada satu statement didalamnya. Selection statement menggunakan kondisi dari ekspresi 

boolean (true atau false). Ekspresi boolean biasanya berkaitan dengan operator relasional. 

Tabel 2.3 merupakan operator relasional dengan disertai simbol.  

Tabel 2.4 Operator relasional 

Simbol Java Simbol Matematika Keterangan 

== = Sama dengan 

!= ≠ Tidak sama dengan 

> > Lebih dari 

>= ≥ Lebih dari sama dengan 

< < Kurang dari 

<= ≤ Kurang dari sama dengan 

Setiap penerapan dari ekspresi boolean akan menghasilkan nilai true atau false. Misalnya, 

pada kode sebelumnya if (suhuair > 100) jika menggunakan output console, akan 

mengembalikan nilai true.  

double suhuair = 205.1; 

System.out.println(suhuair > 100); //true 

System.out.println(suhuair <= 100); //false 

 24 

 

Secara umum kerangka untuk pengambilan keputusan dengan statement IF terdiri dari 

beberapa jenis. Jenis pertama adalah one-way IF, two-way IF, multi-way IF, dan nested IF. 

Pada jenis one-way IF, statement didalam IF akan dieksekusi jika dan hanya jika kodisinya 

bernilai true. Berikut adalah kerangka sintak dari one-way IF: 

if (ekspresi boolean) 

 statement; 

Pada jenis two-way IF, statement didalam IF akan dieksekusi jika kodisinya bernilai true jika 

tidak maka akan mengeksekusi statement didalam ELSE. Berikut adalah kerangka sintak dari 

two-way IF: 

if (ekspresi boolean) 

 Statement untuk kasus true; 

else 

 Statement untuk kasus false; 

Jenis lebih lanjut untuk IF adalah multi-way IF. Multi-way IF memiliki banyak alternatif 

pilihan kondisi (lebih dari satu) dengan masing-masing statement didalamnya. Berikut adalah 

kerangka sintak dari multi-way IF: 

if (ekspresi boolean kasus 1) 

 Statement untuk kasus 1 bernilai true; 

else if (ekspresi boolean kasus 2) 

Statement untuk kasus 2 bernilai true; 

else 

 25 

 

 Statement untuk kasus selain yang disebutkan sebelumnya; 

Jenis IF yang lain adalah nested IF. Nested IF memungkinkan programmer untuk dapat 

membuat statement IF yang lain berada didalam statement IF (bersarang). Dengan demikian, 

IF yang ada didalam statement IF disebut dengan inner IF dan IF yang diluar adalah outer IF. 

Tidak ada batasan inner IF pada praktiknya di Java. Berikut adalah kerangka sintak dari 

nested IF: 

if (ekspresi boolean kasus 1) 

 if (ekspresi boolean kasus 2) 

  Statement untuk kasus 1 dan 2 bernilai true; 

else 

 Statement untuk kasus selain yang disebutkan sebelumnya; 

Kode 2.3 merupakan contoh penerapan semua jenis statement IF. Perhatikan bahwa pada 

Kode 2.3, user diminta untuk memasukkan nilai. Setiap nilai yang dimasukkan oleh user akan 

ditanggapi oleh program dengan membuat output A atau B atau C atau D. Saat user 

memasukkan nilai 100 maka statement IF pertama bernilai true dan kemudian dilanjutkan 

pada inner IF. Pada inner IF juga bernilai true sehingga program akan menghasilkan output 

A. Jika user memberikan input 99, output yang dihasilkan adalah B karena pada inner IF 

bernilai false sehingga yang dieksekusi adalah bagian ELSE didalam outer IF. Bagaimana 

jika user memberikan input 10 dan 50? Apa hasil outputnya? 

Kode 2.4 TestIF.java  

import java.util.Scanner; 

public class TestIF{ 

 public static void main(String[] apa) 

 { 

  Scanner input = new Scanner(System.in); 

 26 

 

10 

11 

12 

11 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

  System.out.print("Masukkan nilai: "); 

  int angka = input.nextInt(); 

 

  if(angka > 60) 

  { 

   if(angka%2 == 0) 

   { 

    System.out.println("A"); 

   } 

   else 

   { 

    System.out.println("B"); 

   } 

  } 

  else if(angka > 30) 

  { 

   System.out.println("C"); 

  } 

  else 

  { 

   System.out.println("D"); 

  } 

 } 

 

Terkadang programmer menginginkan suatu eksekusi program yang dihasilkan dari 

kombinasi lebih dari satu kondisi. Misalnya, saat programmer akan membuat konversi nilai 

huruf dari nilai angka yang didapatkan oleh mahasiswa. Mahasiswa akan mendapatkan nilai 

B jika memiliki nilai pada kisaran angka 70 sampai 84. Bagaimana caranya memasukkan 

kondisi nilai angka minimal 70 sampai dengan 84 pada program? Kita dapat melakukan 

konversi kondisi tersebut dengan operasi logika. Misalnya, nilai angka disimbolkan x 

sehingga ada  dua kondisi x ≥ 70 dan x < 85. Kata “dan” disini disebut dengan operasi  

 27 

 

logika. Pada bahasa pemrograman Java, ada  beberapa operasi logika yang disajikan pada 

Tabel 2.4. 

Tabel 2.5 Operator logika 

Simbol Java Nama Deskripsi 

&& Dan Logika Konjungsi 

|| Atau Logika Disjungsi  

! Tidak Logika Negasi 

^ Eksklusif Atau (XOR) Logika Eksklusif 

 

Contoh penerapan operator logika di Java disajikan pada Kode 2.3. Kode 2.3 merupakan 

penyelesaian masalah untuk konversi nilai angka kedalam nilai huruf dengan aturan: A 

didapatkan dari nilai angka lebih dari 85, B didapatkan dari nilai angka 70-84, C didapatkan 

dari nilai angka 60-69, D didapatkan dari nilai angka 50-59, dan E didapatkan dari nilai 

angka kurang dari 50. 

Kode 2.5 TestNilaiHuruf.java 

10 

11 

12 

11 

import java.util.Scanner; 

public class TestNilaiHuruf{ 

 public static void main(String[] apa) 

 { 

  Scanner input = new Scanner(System.in); 

  System.out.print("Masukkan nilai angka: "); 

  int angka = input.nextInt(); 

  if(angka > 85) 

  { 

   System.out.println("A"); 

  } 

  else if(angka >= 70 && angka <= 84) 

  { 

 28 

 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

   System.out.println("B"); 

  } 

  else if(angka >= 60 && angka <= 69) 

  { 

   System.out.println("C"); 

  } 

  else if(angka >= 50 && angka <= 59) 

  { 

   System.out.println("D"); 

  } 

  else 

  { 

   System.out.println("E"); 

  } 

 } 

2.10 Perulangan 

Perulangan merupakan cara menuliskan statement secara berulang-ulang. Hal ini sangat 

memudahkan programmer, misalnya ketika ingin memberikan output “aku bisa” selama 1000 

kali. Apakah programmer akan menuliskan console output selama 1000 kali? 

System.out.println(“aku bisa”); 

System.out.println(“aku bisa”); 

System.out.println(“aku bisa”); 

..... 

System.out.println(“aku bisa”); 

Tentu hal tersebut akan membutuhkan tenaga dan waktu yang besar. Java menyediakan 

mekanisme untuk menulis statement sekali (atau dalam kasus lain bisa beberapa kali tetapi 

tidak banyak) dalam satu metode perulangan. Secara sederhana bentuk dari statement 

perulangan tersebut adalah sebagai berikut: 

int count = 0; 

while(count < 1000) 

 29 

 

    System.out.println(“aku bisa”); 

    count++; 

Variabel count di berikan nilai awal (inisialisasi) dengan nilai 0. Kemudian kode while akan 

melakukan pengecekan apakah count < 1000 bernilai true. Jika benar bernilai true, maka 

program akan mengeksekusi statement console output “aku bisa” dan akan melakukan 

pembaharuan nilai count dengan ditambah satu (increment). Sehingga, console output “aku 

bisa” akan terus dieksekusi berulang-ulang sampai nilai count menjadi 1001 dan kondisi 

pengecekan didalam while menjadi false.  

Di java bentuk perulangan tidak hanya dapat dilakukan dengan blok statement while, tetapi 

ada do-while, dan for. Seperti contoh sebelumnya, while mengeksekusi statement secara 

berulang-ulang selama kondisi didalam while terpenuhi atau bernilai true. Sintak dari 

perulangan dengan while di Java adalah sebagai berikut: 

 

while (kondisi didalam perulangan) 

Statement s; 

Tambahan statement untuk mengendalikan perulangan; (opsional) 

Variasi dari perulangan while adalah do-while. Berikut adalah sintak dari perulangan 

dengan do-while di Java: 

do { 

 Statement s; 

} while (kondisi didalam perulangan) 

Pada perulangan do-while, didalam blok do merupakan isi utama dari badan perulangan. 

Dimana didalam do tersebut bisa disisi beberapa statement. Kode 2.4 merupakan contoh 

penerapan do-while untuk membuat user memasukkan apapun angka kecuali 0 untuk 

menghitung nilai penjumlahan dari yang sudah dihitung sebelumnya. 

 

 30 

 

Kode 2.6 TestPenjumlahanDoWhile.java  

10 

11 

12 

11 

13 

14 

import java.util.Scanner; 

public class TestPenjumlahanDoWhile { 

 public static void main(String[] apa) 

 { 

      int angka; 

      int sum = 0; 

           Scanner input = new Scanner(System.in); 

           do { 

          System.out.println(“Masukkan angka kecuali 0”); 

               data = input.nextInt(); 

               sum += data; 

           } while(data != 0); 

           System.out.println(“Hasil Penjumlahannya adalah ”+sum); 

 } 

 

Perulangan terakhir dapat dilakukan dengan mekanisme for. Perulangan dengan for 

merupakan cara yang dapat dipahami dengan mudah oleh programmer pemula. Pada 

perulangan sebelum yaitu dengan while atau do-while, terkadang programmer lupa untuk 

mengendalikan varibel yang akan di ulang-ulang dan akhirnya akan berakhir pada perulangan 

tidak terhingga. Secara sederhana perulangan for dapat dibandingkan dengan perulangan 

while seperti berikut: 

 

 

 

 

 

Gambar 2.8 Perulangan 

For (i = nilaiAwal; i < nilaiAkhir; i++){ 

//perulangan 

... 

}  

i = nilaiAwal 

while(i < nilaiAkhir) { 

//perulangan 

... 

i++; 

 31 

 

Secara umum, sintak dari perulangan for adalah sebagai berikut: 

for (aksi-awal; kondisi didalam perulangan;  

aksi setelah setiap iterasi) { 

Statement s; 

Perulangan juga dapat dibuat bersarang atau dikenal dengan istilah nested loop. Program 

akan mengeksekusi lebih dahulu pada perulangan terdalam (inner loop) baru perulangan yang 

luar (outer loop).  Kode 2.5 merupakan contoh penggunaan perulangan bersarang pada tabel 

perkalian. 

Kode 2.7 TabelPerkalian.java 

10 

11 

12 

11 

13 

14 

15 

16 

17 

18 

19 

20 

public class TabelPerkalian { 

 public static void main(String[] apa) 

 { 

      // Judul dan heading tabel 

      System.out.println(" Multiplication Table"); 

           // Angka judul 

           System.out.print(" "); 

           for (int j = 1; j <= 9; j++) 

                System.out.print(" " + j); 

           System.out.println("\n --------------------------"); 

           // isi tabel 

           for (int i = 1; i <= 9; i++) { 

                System.out.print(i + " | "); 

                for (int j = 1; j <= 9; j++) { 

                     // tampilkan perkalian 

                     System.out.printf("%4d", i * j); 

                 } 

                 System.out.println(); 

            } 

      } 

 32 

 

2.11 Kesimpulan 

BAB ini merupakan BAB untuk mengulas kembali materi-materi tentang pemrograman dasar 

dengan bahasa pemrograman Java. Materi-materi dasar pemrograman tersebut meliputi 

input/output console, identified, variabel, assignment, tipe data, operasi, logika pengambilan 

keputusan, dan perulangan. Dengan pengantar ini, diharapkan pada BAB-BAB berikutnya 

akan lebih mudah untuk memahami sintak dalam memprogram dengan pendekatan 

berorientasi objek pada bahasa pemrograman Java.  

2.12  Latihan Soal 

Jawablah pertanyaan-pertanyaan dibawah ini dengan tepat! 

1. Sebutkan kelebihan bahasa pemrograman Java? 

2. Sebutkan apa saja tipe data primitif yang didukung oleh Java? 

3. Sebutkan operator relasional di Java? 

4. Sebutkan dan jelaskan jenis-jenis statement IF yang didukung oleh Java? 

5. Sebutkan apa saja mekanisme perulangan yang didukung oleh Java? 

2.13  Praktikum 

Lakukan praktik dibawah ini sesuai dengan permintaan input dan output yang telah diberikan 

dengan bahasa pemrograman Java! 

1. Kasus 1: Ganjil-Genap 

ada  kasus plat nomer ganjil genap yang diterapkan di Kota XXX. Dari plat 

nomor tersebut, ganjil genap ditentukan oleh angkanya saja, tidak dengan huruf. Buat 

program untuk mengotputkan lajur yang dipilih, jika genap lajur kiri, jika ganjil lajur 

kanan. 

Contoh Input/Output: 

Input #1: 1234 

Output #1: Lajur kiri 

Input #2: 1231 

 33 

 

Output #2: Lajur kanan 

2. Kasus 2: Palindrom 

Palindrom merupakan suatu rangkaian kata yang sama ketika dibaca baik dari depan 

ataupun dari belakang. Misalnya, “katak”, “malam”,”makam” merupakan contoh dari 

kata palindrom. Pada praktikum ini, programmer diminta untuk mengecek apakah 

kata yang di masukkan merupakan palindrom atau bukan. 

Contoh Input/Output: 

Input #1: makan 

Output #1: makan bukan palindrom 

Input #2: malam 

Output #2: malam merupakan palindrom 

3. Kasus 3: Segitiga sama siku 

Gambarkan segitiga sama siku dengan rangkaian karakter ‘*’. Alas dari segitiga sama 

siku tersebut ditentukan oleh angka yang dimasukkan oleh user. 

Contoh Input/Output: 

Input #1: 3 

Output #1:  * 

  ** 

  *** 

Input #2: 4 

Output #2:  * 

  ** 

  *** 

  **** 

 34 

 

BAB 3 CLASS DAN OBJEK DALAM PBO 

3.1 Mendefinisikan Class dari Objek 

Pemrograman berbasis objek (PBO) adalah pemrograaman yang menggunakan konsep objek. 

Objek sendiri mewaliki representasi entitas di dunia nyata dapat diidentifikasi secara jelas. 

Contoh seorang mahasiswa, TV, persegi panjang, lingkaran, dan bahkan pembayaran dapat 

dilihat sebagai objek. Objek memiliki identitas, status, dan perilaku yang unik. Class adalah 

blueprint, cetak biru, atau kontrak yang menentukan apa yang akan menjadi bidang data dan 

metode objek. Objek adalah turunan dari kelas. Hubungan antar class dan objek dapat 

dianalogikan dengan hubungan antara resep bakso dan bakso. Artinya Kita dapat membuat 

bakso sebanyak yang Kita inginkan dari satu resep. Di dalam class ada  property, method, 

dan konstruktor.  

3.2 Property dan Method 

3.2.1 Property 

Property atau keadaan objek (sering juga disebut atribut atau variabel) diwakili oleh bidang 

data dengan nilai saat itu. Contohnya adalah objek mahasiswa yang memiliki property NIM, 

nama, jenis kelamin, dan lain-lain. Objek persegi panjang memiliki bidang data panjang dan 

lebar. Panjang dan lebar tersebut merupakan property yang menjadi ciri sebuah persegi 

panjang. Cara penulisan dalam kode program sebagai berikut:  

                  

  

 

Gambar 3.1 Cara mendefinisikan property 

3.2.2 Method 

Method atau bisa disebut sebagai fungsi di pemrograman fungsional merupakan perilaku dari 

suatu objek. Misalnya kita dapat mendefinisikan method bernama getLuas() dan 

getKeliling() untuk objek persegi panjang. Sebuah objek persegi panjang dapat 

memanggil getLuas() untuk mengembalikan nilai luas dan getKeliling() untuk 

public int panjang; public int lebar; 

Modifier tipeData  namaProperty; 

 35 

 

mengembalikan nilai keliling. Selain itu, kelas menyediakan method khusus, yang dikenal 

sebagai konstruktor, yang dipanggil untuk membuat objek baru. Konstruktor dirancang untuk 

melakukan tindakan inisialisasi, seperti menginisialisasi bidang data objek. Penjelasan 

tentang konstruktor yang lebih lengkap ada  pada Bab 3.4. Cara penulisan method yang 

sederhana dalam kode program sebagai berikut:  

modifier tipeNilaiKembalian namaMethod(parameter masukan){ 

 //badan method 

Kepala method mendefinisikan modifier, tipe nilai kembalian, nama method, dan parameter 

masukan. Badan method berisi kode program untuk melaksanakan suatu tujuan. Modifier 

yang digunakan pada gambar 3.2 adalah public static. Modifier selengkapnya akan dijelaskan 

pada bab 3.6. 

 

 

 

 

 

 

 

 

(a) 

 

 

 

 

(b) 

Gambar 3.2 Cara mendefinisikan (a) dan memanggil (b) method dengan nilai kembalian 

       modifier     tipeNilaiKembalian     namaMethod    parameter masukan 

 

kepala  

method                   public static int max( int angka1, int angka2 ){ 

      if(angka1 > angka2) 

badan                        return angka1; 

method                 else 

          return angka2; 

                 } 

 

namaMethod  parameter aktual 

 

int x = max(5,  2); 

System.out.println("Angka terbesar dari 3 dan 9 adalah "+max(3, 9)); 

 36 

 

Method bisa saja memiliki atau tidak memiliki nilai kembalian. Gambar 3.2 merupakan 

method yang dapat mengembalikan suatu nilai. Sedangkan method yang tidak memiliki nilai 

kembalian menggunakan kata kunci void seperti pada Gambar 3.3. 

 

 

 

 

 

 

(a) 

 

 

 

(b) 

Gambar 3.3 Cara mendefinisikan (a) dan memanggil (b) method tanpa nilai kembalian 

Parameter masukan pada method bekerja seperti placeholder. Ketika method tersebut 

dipanggil, Kita dapat memasukkan suatu nilai ke dalam parameter. Nilai tersebut dikenal 

dengan istilah parameter aktual. Jumlah parameter masukan sangat beragam sesuai 

kebutuhan, bahkan yang tidak mencantumkan parameter masukan juga tidak apa-apa. 

Kembali pada PersegiPanjang, Gambar 3.3 adalah contoh UML class diagram dimana 

PersegiPanjang memiliki 2 objek. Class PersegiPanjang sendiri memiliki 2 property bertipe 

data integer yaitu panjang dan lebar. Memiliki 2 konstuktor dan 2 method. 

 

 

 

 

namaMethod  parameter aktual 

 

printHello(); 

       modifier     void     namaMethod    parameter inputan 

 

kepala 

method                   public static void printHello(){ 

    badan method   System.out.println("Hello”); 

                  } 

 37 

 

PersegiPanjang 

panjang: int 

lebar: int 

PersegiPanjang() 

PersegiPanjang(panjangBaru: int, lebarBaru: int) 

getLuas(): int 

getKeliling(): int 

 

 

 

 

Gambar 3.3 Class dan objek dalam UML class diagram 

Implementasi dari UML Gambar 3.3 tersebut disajikan pada Kode 3.1 dan Kode 3.2. 

Kode 3.1 PersegiPanjang.java 

10 

11 

12 

11 

13 

14 

public class PersegiPanjang { 

    //panjang dan lebar dari persegi panjang 

    int panjang; 

    int lebar; 

     

    //konstruktor dari objek PersegiPanjang 

    PersegiPanjang(){ 

         

    } 

     

    //konstruktor dari objek PersegiPanjang 

    PersegiPanjang(int panjangBaru, int lebarBaru){ 

        panjang = panjangBaru; 

        lebar = lebarBaru; 

    } 

persegiPanjang2: PersegiPanjang 

panjang = 8 

lebar = 5 

persegiPanjang1: PersegiPanjang 

panjang = 0 

lebar = 0 

Property 

Konstruktor 

 38 

 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

     

    //mengembalikan nilai luas persegi panjang 

    int getLuas(){ 

        return panjang*lebar; 

    } 

     

    //mengembalikan nilai keliling persegi panjang 

    int getKeliling(){ 

        return 2*(panjang+lebar); 

    } 

  

Kode 3.2 PersegiPanjangDemo.java 

 

10 

11 

12 

11 

 

 

12 

13 

public class PersegiPanjangDemo { 

    /* Main Method */ 

    public static void main(String[] args){ 

        //membuat objek peregi panjang dengan panjang=0 dan lebar=0 

        PersegiPanjang persegiPanjang1 = new PersegiPanjang(); 

        //memanggil variabel dari class 

        //memanggil method dari class 

        System.out.println("Luas persegi panjang 1 ="+ 

        persegiPanjang1.panjang+" * "+persegiPanjang1.lebar+" = 

"+persegiPanjang1.getLuas()); 

         

        //membuat objek peregi panjang dengan panjang=8 dan lebar=5 

        PersegiPanjang persegiPanjang2 = new PersegiPanjang(8, 5); 

        System.out.println("Luas persegi panjang 2 = "+ 

persegiPanjang2.panjang+" * "+persegiPanjang2.lebar+ 

" = "+persegiPanjang2.getLuas()); 

    } 

Method 

 39 

 

Output: 

Luas persegi panjang 1 = 0 * 0 = 0 

Luas persegi panjang 2 = 8 * 5 = 40 

 

Berdasarkan Kode 3.1 ada  template atau cetak biru persegi panjang yang didalamnya 

terdiri dari property, konstruktor, dan method. Sedangkan untuk membuat objek ada  

pada file PersegiPanjangDemo.java. Sintaks penulisan objek sebagai berikut: 

NamaClass namaObjek = new NamaClass(parameter masukan); 

 

 

 

 

 

Gambar 3.4 Sintak penulisan objek 

Saat objek pertama kali diinisialisasi, otomatis memanggil method konstruktor. ada  2 

konstruktor di class Persegi, konstruktor pertama tidak memiliki parameter masukan dan 

konstruktor ke-2 memiliki 2 parameter masukan. Memiliki nama method yang sama namun 

parameter yang berbeda disebut dengan overloading method. Penjelasan tentang overloading 

method yang lebih lengkap ada  pada Bab 3.3.  

Pada Gambar 3.4, menunjukkan bahwa objek persegiPanjang1 memanggil konstruktor 

pertama (PersegiPanjang.java baris ke-7). Konstruktor tersebut tidak melakukan tindakan apa 

pun, jadi property panjang dan lebar memiliki nilai awal yaitu 0. Sedangkan persegiPanjang2 

memanggil konstruktor kedua. Konstruktor kedua ini menginisialisasi property panjang 

dengan nilai masukan panjangBaru dan menginisialisasi property lebar dengan nilai masukan 

lebarBaru. 

Gambar 3.4 dan Kode 3.1 sama-sama menunjukkan pemanggilan method, namun dengan 

cara berbeda. Gambar 3.4 memanggil method biasa sedangkan kode 3.1 memanggil method 

dari class. Jika method biasa hanya menggunakan sintak namaMethod(parameter 

masukan). Jika method dari class menggunakan sintak namaObjek.namaMethod(parameter 

   NamaClass      namaObjek       NamaClass      parameter inputan 

 

PersegiPanjang persegiPanjang1 = new PersegiPanjang(); 

 

   NamaClass      namaObjek       NamaClass      parameter inputan 

 

PersegiPanjang persegiPanjang2 = new PersegiPanjang(8, 5); 

 

 

 40 

 

masukan). Begitu pula cara memanggil variabel dari class menggunakan sintak 

namaObjek.namaVariabel sedangkan variabel biasa menggunaan sintak namaVariabel. Lihat 

Gambar 3.5 untuk mendapatkan informasi yang lebih jelas. 

Pemanggilan method biasa Pemanggilan method dari Class 

namaMethod(parameter masukan) 

 

printHello();                   max(5,  2) 

namaObjek.namaMethod(parameter masukan) 

 

persegiPanjang1.getLuas() 

Pemanggilan variabel biasa Pemanggilan variabel dari Class 

namaVariabel 

 

lebar = lebarBaru; 

 

namaObjek.namaVariabel 

 

persegiPanjang1.panjang          persegiPanjang2.lebar 

Gambar 3.5 Sintak pemanggilan method dan variabel dari class 

3.3 Overloading Method 

Overloading method adalah method-method yang memiliki nama yang sama namun berbeda-

beda parameter masukannya. Dengan ini, akan membuat program lebih jelas dan lebih mudah 

dibaca. Tidak hanya dapat diterapkan pada konstruktor, overloading method juga dapat 

diterapkan pada method biasa. Contoh pada method max yang berfungsi untuk 

mengembalikan nilai terbesar.  

public static int max(int angka1, int angka2){ 

     if(angka1 > angka2) 

          return angka1; 

     else 

          return angka2; 

Kode program method max diatas bekerja hanya untuk tipe data integer dengan 2 parameter 

masukan. Namun bagaimana jika ingin membuat method max yang bekerja untuk tipe data 

double atau lebih dari 2 parameter masukan? Solusinya adalah membuat method dengan 

 41 

 

nama yang sama namun berbeda parameter masukannya. Berikut contoh kode program yang 

terdiri dari 3 method dengan nama yang sama namun dengan beberapa variasi parameter 

masukan. 

Kode 3.3 MethodOverloadingDemo.java 

 

 

10 

11 

 

12 

11 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

public class MethodOverloadingDemo { 

    /* Main Method */ 

    public static void main(String[]args){ 

        /* Memanggil method max dengan parmeter masukan integer */ 

        System.out.println("Angka terbesar dari 3 dan 9 adalah  

"+max(3, 9)); 

         

        /* Memanggil method max dengan parmeter masukan double */ 

        System.out.println("Angka terbesar dari 4.25 dan 4.0 adalah  

"+max(4.25, 4.0)); 

         

        /* Memanggil method max dengan parmeter masukan 3 double */ 

        System.out.println("Angka terbesar dari 4.25, 4.0, dan 5.6  

adalah "+max(4.25,4.0,5.6)); 

    } 

     

    // Mengembalikan nilai terbesar dari 2 parameter masukan integer  

    public static int max(int angka1, int angka2){ 

        if(angka1 > angka2) 

            return angka1; 

        else 

            return angka2; 

    } 

     

    // Mengembalikan nilai terbesar dari 2 parameter masukan double  

    public static double max(double angka1, double angka2){ 

        if(angka1 > angka2) 

            return angka1; 

 42 

 

25 

26 

27 

28 

29 

30 

 

31 

32 

33 

        else 

            return angka2; 

    } 

     

    // Mengembalikan nilai terbesar dari 3 parameter masukan double  

    public static double max(double angka1, double angka2, double  

angka3){ 

        return max(max(angka1, angka2), angka3); 

    } 

 

Ketika memanggil max(3, 9), method max yang digunakan adalah method max yang 

memiliki 2 parameter masukan integer. Ketika memanggil max(4.25, 4.0), method max 

yang digunakan adalah method max yang memiliki 2 parameter masukan double. Ketika 

memanggil max(4.25, 4.0, 5.6), method max yang digunakan adalah method max yang 

memiliki 3 parameter masukan double.  

Misal, jika kita memanggil max(2, 3.0) apakah bisa dijalankan? Jawabannya adalah bisa. 

Ketika memanggil max(2, 3.0), method max yang digunakan adalah method max yang 

memiliki 2 parameter masukan double. Masukan 2 akan otomatis berubah menjadi nilai 

double dan memenuhi method ini. 

Kenapa method max(double, double) tidak digunakan untuk max(3, 9), sedangkan baik 

max(double, double) dan max(int, int) dapat digunakan? Karena compiler Java 

menemukan bahwa method yang cocok untuk max(3, 9) adalah max(int, int) dibanding 

max(double, double). 

3.4 Konstruktor dan Destruktor 

Konstruktor merupakan method khusus yang dirancang dan dipanggil untuk melakukan 

tindakan inisialisasi, seperti menginisialisasi bidang data objek. Dalam satu class, 

memungkinkan untuk memiliki lebih dari satu konstruktor namun memiliki parameter yang 

berbeda-beda yang disebut dengan overloading method. Sintak penulisan konstruktor sebagai 

berikut:     

 43 

 

modifier NamaClass(parameter masukan){ 

 //badan konstruktor 

PersegiPanjang(){ 

           

 

PersegiPanjang(int panjangBaru, int lebarBaru){ 

        panjang = panjangBaru; 

        lebar = lebarBaru; 

    } 

Gambar 3.6 Sintak penulisan konstruktor 

Destruktor merupakan method khusus yang akan dipanggil saat objek dihapus dari 

memori. Pada bahasa pemrograman Java yang sekarang kita gunakan, tidak memiliki method 

destructor karna Java memiliki garbage collector untuk mengelola memori. Garbage 

collector dapat menghapus objek yang tidak terpakai dengan otomatis. 

3.5 Static Variable dan Constant 

Property panjang dan lebar dalam class persegiPanjang dikenal sebagai variabel 

instance. Variabel instance terkait dengan instance spesifik dari kelas, variabel tersebut tidak 

dibagikan di antara objek dari kelas yang sama. Misalnya, pada objek di bawah ini: 

PersegiPanjang persegiPanjang1 = new PersegiPanjang(); 

PersegiPanjang persegiPanjang2 = new PersegiPanjang(8, 5); 

Panjang dan lebar pada persegiPanjang1 tidak tergantung pada panjang dan lebar di 

persegiPanjang2 dan disimpan di lokasi memori yang berbeda. Perubahan yang dilakukan 

pada panjang atau lebar persegiPanjang1 tidak memengaruhi panjang atau lebar 

persegiPanjang2, dan sebaliknya. 

Jika Kita ingin semua variable instance dapat berbagi data, gunakan variabel static 

atau dikenal juga sebagai variabel class. Variabel static menyimpan nilai untuk variabel di 

lokasi memori umum. Karena lokasi umum ini, jika satu objek mengubah nilai variabel static, 

semua objek dari kelas yang sama akan terpengaruh. Java mendukung variabel static dan juga 

method static. Method static dapat dipanggil tanpa membuat turunan dari kelas. 

Mari kita modifikasi class PersegiPanjang dengan menambahkan variabel-variabel 

jumlahObjek untuk menghitung jumlah objek PersegiPanjang yang dibuat. Ketika objek 

pertama class ini dibuat, jumlahObjek adalah 1. Ketika objek kedua dibuat, jumlahObjek 

menjadi 2. UML dari class PersegiPanjang yang baru ditunjukkan pada Gambar 3.7. Class 

 44 

 

PersegiPanjang mendefinisikan variabel panjang dan lebar sebagai variabel instance dan 

metode getLuas(), getKeliling() sebagai method instance sedangkan variabel 

jumlahObjek sebagai variabel static dan method getJumlahObjek sebagai method static. 

(Perhatikan variabel dan metode statis digarisbawahi dalam diagram kelas UML.) 

PersegiPanjang 

+panjang: int 

+lebar: int 

+jumlahObjek: int= 0 

+PersegiPanjang() 

+PersegiPanjang(panjangBaru: int, lebarBaru: int) 

+getJumlahObjek(): int 

+getLuas(): int 

+getKeliling(): int 

 

 

 

 

 

 

 

 

Setelah 2 object PersegiPanjang dibuat, maka jumlahObjek = 2 

Gambar 3.7 UML class diagram dengan variabel dan method static 

 

Kode 3.4 merupakan implementasi dari Class PersegiPanjang setelah ditambahkan variabel 

static dan method static. Kode 3.5 merupakan kode untuk pengetesan Class PersegiPanjang 

yang telah dimodifikasi sebelumnya. 

Kode 3.4 PersegiPanjang.Java 

public class PersegiPanjang { 

    //panjang dan lebar dari persegi panjang 

persegiPanjang1: PersegiPanjang 

panjang = 0 

lebar = 0 

jumlahObjek = 2 

persegiPanjang2: PersegiPanjang 

panjang = 8 

lebar = 5 

jumlahObjek = 2 

 45 

 

10 

11 

12 

11 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

    public int panjang;  

    public int lebar; 

    public static int jumlahObjek = 0;     

 

    //konstruktor dari objek PersegiPanjang 

    public PersegiPanjang(){ 

        jumlahObjek++; 

    } 

     

    //konstruktor dari objek PersegiPanjang 

    public PersegiPanjang(int panjangBaru, int lebarBaru){ 

        panjang = panjangBaru; 

        lebar = lebarBaru;  

        jumlahObjek++; 

    } 

     

   //mengembalikan nilai getJumlahObjek 

    public static int getJumlahObjek(){ 

        return jumlahObjek; 

    } 

  

   //mengembalikan nilai luas persegi panjang 

    public int getLuas(){ 

        return panjang*lebar; 

    } 

 

    //mengembalikan nilai keliling persegi panjang 

    public int getKeliling(){ 

        return 2*(panjang+lebar);  

    } 

 

Method Static 

Menambah nilai 1 pada 

variabel jumlahObjek 

Menambah nilai 1 pada 

variabel jumlahObjek 

Variabel static 

 46 

 

Kode 3.5 PersegiPanjangDemo.java 

 

10 

11 

12 

13 

 

14 

15 

16 

 

17 

18 

19 

20 

21 

22 

 

23 

24 

25 

 

26 

public class PersegiPanjangDemo { 

    /* Main Method */ 

    public static void main(String[] args){ 

        System.out.println("Sebelum membuat objek"); 

        //memanggil variabel static 

        System.out.println("Jumlah objek = "+ 

PersegiPanjang.jumlahObjek); 

 

        //Membuat objek persegiPanjang1 

        PersegiPanjang persegiPanjang1 = new PersegiPanjang(); 

        System.out.println("\nSetelah membuat objek persegiPanjang1"); 

         

        //memanggil variabel instance 

        System.out.println("Panjang = "+persegiPanjang1.panjang+ 

“\nLebar = “+persegiPanjang1.lebar); 

 

        //memanggil method static 

        System.out.println("Jumlah objek = "+ 

PersegiPanjang.getJumlahObjek()); 

         

        //Membuat objek persegiPanjang2 

        PersegiPanjang persegiPanjang2 = new PersegiPanjang(8, 5); 

        System.out.println("\nSetelah membuat objek persegiPanjang1"); 

        //memanggil variabel instance                                                            

        System.out.println("Panjang = "+ persegiPanjang2.panjang + 

"\nLebar="+persegiPanjang2.lebar); 

        

       //memanggil variabel static          

       System.out.println("Jumlah objek = "+ 

PersegiPanjang.jumlahObjek); 

       } 

 47 

 

27 } 

Output: 

Sebelum membuat objek 

Jumlah objek = 0 

Setelah membuat objek persegiPanjang1 

Panjang = 0 

Lebar   = 0 

Jumlah objek = 1 

Setelah membuat objek persegiPanjang2 

Panjang = 8 

Lebar   = 5 

Jumlah objek = 2 

Berdasarkan Kode 3.4 dan Kode 3.5, variabel instance (panjang dan lebar) milik 

instance dan memiliki penyimpanan memori yang tidak tergantung satu sama lain. Variabel 

static (jumlahObjek) dibagikan oleh semua instance dari kelas yang sama. 

3.6 Visibility Modifiers 

Visibility modifiers dapat digunakan untuk menentukan visibilitas kelas dan 

anggotanya. Kita dapat menggunakan visibility modifier public untuk class, method, dan 

property untuk menyatakan bahwa mereka dapat diakses dari kelas lain. Jika tidak ada 

visibility modifiers yang digunakan, maka visibility modifiers nya default yang berarti class, 

method, dan property dapat diakses oleh kelas apa pun dalam package yang sama, dikenal 

sebagai package-private atau package-access. Gambaran modifier public dan default untuk 

package ada  pada gambar 3.8. 

 

 

 

 

 

Gambar 3.8 Gambaran modifier public dan default untuk package 

package p1; 

 

class C1{ 

      ….. 

package p1; 

 

public class C2{ 

      /*dapat mengakses C1*/ 

package p2; 

 

public class C3{ 

     /*tidak dapat mengakses p1.C1*/ 

      /*dapat mengakses p1.C2*/ 

 48 

 

Selain visibility modifier public dan default, Java menyediakan visibility modifier 

private dan protected untuk anggota kelas. Modifier private membuat method dan property 

hanya dapat diakses dari dalam kelasnya sendiri. Untuk modifier protected, Kita dapat 

mengakses bidang data yang dilindungi atau metode dalam superclass dari subclassnya.  

Modifier protected mengizinkan subclass untuk mengakses property atau metode yang 

didefinisikan dalam superclass, tetapi tidak mengizinkan non subclass dalam package yang 

berbeda untuk mengakses itu. Materi superclass dan subclass akan dibahas selengkapnya 

pada Bab 7. Skema visibility modifier meningkat dalam urutan di bawah ini, sesuai Gambar 

3.9. 

Cakupan visibility modifiers 

private, default (no modifier), protected, public 

Gambar 3.9 Cakupan visibility modifier 

Dari gambar 3.9 menjelaskan bahwa cakupan paling kecil adalah private, dimana 

modifier private hanya dapat diakses pada class yang sama. Selanjutnya adalah modifier 

default, dimana modifier default hanya dapat diakses pada class dan package yang sama. 

Disusul modifier protected, dimana modifier protected dapat diakses pada class dan 

package yang sama serta subclass baik di package yang berbeda atau package yang sama. 

Terakhir, cakupan paling besar adalah public, dimana modifier public dapat diakses pada 

class dan package yang sama maupun berbeda serta subclass baik di package yang berbeda 

atau package yang sama. Ringkasan cakupan visibilitas ke-empat modifier dapat dilihat pada 

Tabel 3.1 

 

 

 

 

 

 

 

 49 

 

Tabel 3.1 Visibilitas property dan method 

Modifier pada 

anggota class 

Akses dari 

class yang 

sama 

Akses dari 

package yang 

sama 

Akses dari 

subclass di 

luar package 

Akses dari 

luar 

package 

Public (+) v v v v 

Protected (#) v v v - 

Default/ no modifier v v - - 

Private (-) v - - - 

 

3.7 Kesimpulan 

1. Class adalah template, cetak biru, atau kontrak yang menentukan apa yang akan 

menjadi bidang data dan metode objek.  

2. Objek adalah turunan dari kelas. Kita dapat menggunakan kata kunci new untuk 

membuat objek baru dan operator titik (.) untuk mengakses property dan method dari 

objek tersebut.  

3. Overloading method adalah method-method yang memiliki nama yang sama namun 

berbeda-beda parameter masukannya. 

4. Konstruktor merupakan method khusus yang dirancang dan dipanggil untuk 

melakukan tindakan inisialisasi. Destruktor merupakan method khusus yang akan 

dipanggil saat objek dihapus dari memori. Bahasa pemrograman Java tidak memiliki 

method destructor karna Java memiliki garbage collector untuk mengelola memori. 

5. ada  2 macam property/ method antara lain: 

a. Property/ method instance terkait dengan instance spesifik dari kelas, property/ 

method tersebut tidak dibagikan di antara objek dari kelas yang sama. Cara 

pemanggilannya yaitu NamaObjek.property atau NamaObjek.namaMethod. 

b. Property/ method statis dapat digunakan bersama oleh semua instance dari 

kelas yang sama. Cara pemanggilannya menggunakan NamaClass.property 

atau  NamaClass.namaMethod. 

 50 

 

6. Visibility modifiers dapat digunakan untuk menentukan visibilitas kelas dan 

anggotanya. ada  4 variasi visibility modifiers antara lain: 

a. Visibility modifier public untuk class, method, dan property untuk menyatakan 

bahwa mereka dapat diakses dari kelas lain.  

b. Jika tidak ada visibility modifiers yang digunakan, maka visibility modifiers 

nya default (no modifier) yang berarti class, method, dan property dapat 

diakses oleh kelas apa pun dalam package yang sama. 

c. Modifier private membuat method dan property hanya dapat diakses dari 

dalam kelasnya sendiri.  

d. Modifier protected mengizinkan subclass untuk mengakses property atau 

metode yang didefinisikan dalam superclass, tetapi tidak mengizinkan non 

subclass dalam package yang berbeda untuk mengakses itu. 

3.8 Kuis dan Latihan Soal 

1. Template, cetak biru, atau kontrak yang menentukan apa yang akan menjadi bidang 

data dan metode objek disebut ...  

2. Jelaskan apa perbedaan property dan method! 

3. Mengapa diperlukan overloading method? 

4. Apakah pada pemrograman Java ada  destructor? Jelaskan penyebabnya! 

5. Property/ method yang dapat digunakan bersama oleh semua instance dari kelas yang 

sama disebut ... 

6. Jelaskan masing-masing perbedaan dari ke-4 visibility modifier! 

3.9 Praktikum 

1. Buatlah program class Lingkaran yang merepresentasikan template lingkaran. Di 

dalam class tersebut ada : 

a. Property jari_jari dengan tipe data double 

b. Property phi dengan tipe data double bernilai 3.14 

c. Property static jumlahLingkaran dengan tipe data integer bernilai 0 

d. Konstruktor pertama tanpa ada masukan dan tidak melakukan apa-apa 

e. Konstruktor kedua memiliki 1 masukan yaitu jari_jari_baru bertipe data 

double 

f. Method getLuas, mengembalikan nilai luas lingkaran 

 51 

 

g. Method getKeliling, mengembalikan nilai keliling lingkaran 

h. Method static getJumlahLingkaran, mengembalikan nilai jumlah lingkaran 

yang dibuat 

Gunakan modifier default untuk semua property dan method. Buat juga 3 objek, 

objek pertama tanpa inisialisasi jari_jari, objek kedua dengan inisialisasi jari_jari 

dari property, dan objek ketiga dengan inisialisasi jari_jari dari konstuktor. 

Gambar pula UML class diagramnya. 

2. Buatlah program class Piramida yang merepresentasikan bentuk piramida. Kreasikan 

konten property, method, dan objek sesuai keinginan Anda. 

3. Buatlah program class Mahasiswa berdasarkan UML class diagram di bawah ini 

Mahasiswa 

+nim: string 

+nama: string 

+alamat: string 

+ipk: double  

+Mahasiswa() 

+Mahasiswa(nim: string) 

+Mahasiswa(nimBaru: string, namaBaru: string, alamatBaru: string, ipkBaru: string) 

+predikat(ipk: double): string   

+cetak(): void   

Penjelasan UML class diagram Mahasiswa  

Atribut 

 nim bertipe data string dengan modifier public 

 nama bertipe data string dengan modifier public 

 alamat bertipe data string dengan modifier public 

 ipk bertipe data double dengan modifier public 

Konstruktor 

 Mahasiswa() 

Tidak melakukan apapun 

 Mahasiswa(nim: string) 

o Beri nilai property nim milik class diisi dengan nilai nim masukan method 

 52 

 

 Mahasiswa(nimBaru: string, namaBaru: string, alamatBaru: string, ipkBaru: 

string) 

o Beri nilai property nim milik class diisi dengan nilai nimBaru masukan 

method 

o Beri nilai property nama milik class diisi dengan nilai namaBaru masukan 

method 

o Beri alamat property nama milik class diisi dengan nilai alamatBaru 

masukan method 

o Beri nilai property ipk milik class diisi dengan nilai ipkBaru masukan 

method 

Method 

 predikat(ipk: double): String   

Jika ipk diantara 2.0 sampai 2.75, kembalikan string “Memuaskan” 

Jika ipk diantara 2.76 sampai 3.5, kembalikan string ‘Sangat memuaskan” 

Jika ipk diantara 3.51 sampai 4.0, kembalikan string “Dengan pujian” 

Jika tidak, kembalikan string “-“ 

 cetak(): void   

o Menampilkan nim, nama, alamat, ipk dan predikat dalam susunan vertical 

 

Contoh output: 

Nama      = Dilan 

Alamat    = Bandung 

NIM        = 1 

IPK          = 3.51 

Predikat   = Dengan Pujian 

 

 53 

 

BAB 4 ENKAPSULASI 

4.1 Konsep Enkapsulasi 

Konsep enkapsulasi adalah membuat property menjadi modifier private sehingga dapat 

melindungi data dan membuat kelas mudah dikelola. Encapsulasi ini memungkinkan 

programmer untuk aturan membuat kode program seperti: read-only atau write-only. Sebagai 

contoh, ketika programmer Google membuat API Google Map, tidak mungkin Google 

memberikan akses untuk satelit secara langsung kepada programmer third-party 

(programmer biasa yang mengunakan API Google Map untuk mengakses peta). Hal tersebut 

dapat dilindungi dengan membuat beberapa akses terbatas pada method atau property 

sehingga programmer third-party hanya dapat membaca atau mengambil nilainya saja tanpa 

bisa merubah nilainya. Lebih sederhananya, perhatikan pemberian nilai pada property 

panjang dan lebar pada class PersegiPanjangDemo sebelumnya. 

   persegiPanjang2.panjang = 6; 

   persegiPanjang2.lebar = 7; 

Pemberian nilai tersebut dilakukan secara langsung ke property. Cara seperti itu merupakan 

contoh yang tidak bagus karena dua alasan, yaitu: 

1. Data dapat dirusak. Misalnya, property jumlahObjek berfungsi untuk menampung nilai 

jumlah objek yang dibuat, tetapi bisa saja diset dengan manual misalnya,  

  Lingkaran.jumlahObjek = 10; 

2. Class menjadi sulit dipertahankan dan rentan terhadap bug. Misalkan kita ingin 

memodifikasi class PersegiPanjang untuk memastikan bahwa nilai panjang tidak negatif 

setelah yang lain program sudah menggunakan class tersebut. Kita harus mengubah tidak 

hanya class Circle tetapi juga program yang menggunakannya karena klien mungkin telah 

memodifikasi nilai panjang secara langsung misalnya 

  persegiPanjang2.panjang = -6; 

Untuk mencegah modifikasi property secara  langsung, Kita harus mendeklarasikan property 

dengan modifier private. Cara tersebut dikenal sebagai enkapsulasi. Property dengan 

modifier private tidak dapat diakses oleh objek dari luar class. Namun, klien sering 

mengambil dan memodifikasi property. Untuk membuat sebuah property private dapat 

diakses, Kita perlu menyediakan method setter dan getter. 

 54 

 

4.2 Setter-Getter Method 

Method setter berfungsi untuk memperbarui nilai dari property private sedangkan 

method getter berfungsi untuk mengambil nilai dari property private. Method setter juga 

dikenal dengan nama mutator dan method getter dikenal dengan nama accesor. Kedua 

method tersebut memiliki sintak sebagai berikut: 

Method setter 

public void setNamaProperty(parameter masukan) 

 

 

public void setPanjang(int panjang) 

Method getter 

public tipeDataKembalian getNamaProperty() 

 

 

public int getPanjang() 

Gambar 4.1 Sintak method setter dan getter 

Mari kita buat class PersegiPanjang biasa pada Gambar 3.7 pada Bab sebelumnya ke 

dalam bentuk enkapsulasi dengan dilengkapi method setter dan getter. 

PersegiPanjangEnkapsulasi 

-panjang: int 

-lebar: int 

-jumlahObjek: int= 0 

+PersegiPanjang() 

+PersegiPanjang(panjangBaru: int, lebarBaru: int) 

+setPanjang(panjangBaru: int): void 

+getPanjang(): int 

+setLebar(lebar: int): void 

+getLebar(): int 

+getJumlahObjek(): int 

+getLuas(): int 

+getKeliling(): int 

 

 

 55 

 

 

 

 

 

 

 

 

Gambar 4.2 Class dan Objek PersegiPanjangEnkapsulasi dalam UML Class Diagram 

Pada gambar UML class diagram di atas, ada  beberapa perbedaan. Pertama pada 

property, lambang + diganti dengan – agar modifier public berganti dengan private. Kedua 

bertambahnya 4 method, yaitu method setter dan getter untuk panjang serta method setter 

dan getter untuk lebar. Dari Gambar 4.2 kita bisa membuat kode program seperti pada Kode 

4.1 dan pengetesannya pada Kode 4.2. 

Kode 4.1 PersegiPanjangEnkapsulasi.java 

10 

11 

12 

 

13 

14 

public class PersegiPanjangEnkapsulasi { 

    //panjang, lebar, dan jumlahObjek dengan modifier private 

    private int panjang; 

    private int lebar;  

    private int jumlahObjek = 0; 

     

    //konstruktor dari objek PersegiPanjang 

    public PersegiPanjangEnkapsulasi(){ 

        jumlahObjek++; 

    } 

    //konstruktor dari objek PersegiPanjang 

    public PersegiPanjangEnkapsulasi(int panjangBaru, int  

lebarBaru){ 

        panjang = panjangBaru; 

        lebar = lebarBaru; 

pp3: PersegiPanjangEnkapsulasi 

panjang = 8 

lebar = 5 

pp1: PersegiPanjangEnkapsulasi 

panjang = 0 

lebar = 0 

pp2: PersegiPanjangEnkapsulasi 

panjang = 6 

lebar = 7 

Property private 

 56 

 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

43 

44 

45 

46 

        jumlahObjek++; 

    } 

    //method setter untuk property panjang 

    public void setPanjang(int panjangBaru){ 

        panjang = panjangBaru; 

    } 

    //method getter untuk property panjang  

    public int getPanjang(){ 

        return panjang; 

    } 

    //method setter untuk property lebar 

    public void setLebar(int lebar){ 

        //gunakan kata kunci this karena nama masukan parameter  

        //lebar sama dengan nama property lebar 

        this.lebar = lebar; 

    } 

    //method getter untuk property lebar 

    p