Anda di halaman 1dari 173

HALAMAN JUDU L

LAPORAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

Disusun oleh :

NAMA : SAKINAH
NIM : 32601700023

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS ISLAM SULTAN AGUNG
SEMARANG
2019

i
HALAMAN PENGESAHAN
LAPORAN PRAKTIKUM
Pemrograman Berorientasi Objek
Disusun oleh
Sakinah (32601700023)

Telah di setujui sebagai syarat untuk memenuhi mata kuliah Praktikum


Pemrograman Berorientasi Objek. Jurusan Teknik Informatika Fakultas Teknologi
Industri Universitas Islam Sultan Agung Semarang.

Hari : Rabu
Tanggal : 23 Januari 2019

Asisten Praktikum
1. Noor Arzam Khadma Alifi 1....................

Mengetahui,

Laboran Dosen Praktikum

Werdha Wilubertha H, S.Kom Sam Farisa Chaerul Haviana, ST.,M.Kom

ii
KATA PENGANTAR

Puji syukur penulis panjatkan kepada Allah SWT, yang telah melimpahkan
rahmat, taufik serta hidayah-Nya, sehingga laporan Praktikum Pemrograman
Berbasis Objek dapat terselesaikan.
Tak lupa penulis mengucapkan terimakasih kepada :
1. Rektor UNISSULA Bapak Ir. H. Prabowo Setiyawan, M.T.,Ph.D. yang telah
mengijinkan penulis untuk menimba ilmu di kampus ini.
2. Dekan Fakultas Teknologi Industri Ibu Dr. Hj. Sri Arttini Dwi Prasetyowati,
M.Si
3. Dosen pengampu penulis Bapak Sam Farisa Chaerul Haviana, ST.,M.Kom
yang telah memberikan ilmu mengenai Pemrograman Berorientasi Objek.
4. Asisten dosen saudara Noor Arzam Khadma Alifi yang telah membantu
dalam memberikan penjelasan mengenai praktikum Pemrograman
Berorientasi Objek.
5. Orang tua penulis yang telah mengijinkan untuk menyelesaikan laporan ini.
6. Dan kepada semua pihak yang tidak dapat disebutkan satu persatu.
Penulis menyadari sepenuhnya bahwa dalam penyusunan laporan ini masih
terdapat banyak kekurangan, untuk itu penulis mengharap kritik dan saran dari
pembaca untuk sempurnanya laporan ini. Semoga dengan ditulisnya laporan ini
dapat menjadi sumber ilmu bagi setiap pembacanya.

Semarang, 23 Januari 2019

Penulis

iii
DAFTAR ISI

HALAMAN JUDUL ............................................................................................. i


HALAMAN PENGESAHAN ............................................................................... ii
KATA PENGANTAR .......................................................................................... iii
DAFTAR ISI ......................................................................................................... iv
DAFTAR GAMBAR ............................................................................................ ix
DAFTAR TABEL ............................................................................................... xii
BAB 1 INSTALASI JDK DAN NETBEANS ...................................................... 1
1.2 Dasar Teori ............................................................................................... 1

1.2.1 Text Editor Program Java .................................................................. 1

1.2.2 NetBeans ........................................................................................... 2

1.2.3 JDK (Java Development Kit) ............................................................ 3

1.3 Langkah Praktikum .................................................................................. 3

1.3.1 Meng-install JDK 8 ........................................................................... 3

1.3.2 Meng-install NetBeans IDE 8 ........................................................... 5

1.3.3 Pengoprasian NetBeans IDE 8 .......................................................... 9

1.3.5 Penambahan Komentar ................................................................... 13

1.4 Tugas ...................................................................................................... 14

1.5 Kesimpulan ............................................................................................. 16

BAB II VARIABEL, TIPE DATA, DAN OPERATOR ................................. 17


2.1 Tujuan ..................................................................................................... 17

2.2 Dasar Teori ............................................................................................. 17

2.2.1 Variabel ........................................................................................... 17

2.2.2 Tipe Data ......................................................................................... 18

2.2.2 Operator........................................................................................... 19

2.2 Langkah Praktikum ................................................................................ 20

iv
2.3 Tugas ...................................................................................................... 24

2.4 Kesimpulan ............................................................................................. 31

BAB III ARRAY DAN STRING ....................................................................... 32


3.1 Tujuan ..................................................................................................... 32

3.2 Dasar Teori ............................................................................................. 32

3.2.1 Array ............................................................................................... 32

3.2.2 Array Satu Dimensi ......................................................................... 34

3.2.3 Array Tiga Dimensi......................................................................... 34

3.2.4 String ............................................................................................... 35

3.3 Pembahasan Praktikum .......................................................................... 37

3.4 Tugas ...................................................................................................... 54

3.5 Kesimpulan ............................................................................................. 57

BAB IV KONSEP DASAR PEMROGRAMAN JAVA ................................... 59


4.1 Tujuan ..................................................................................................... 59

4.2 Dasar Teori ............................................................................................. 59

4.2.1 Pengantar Pemrograman Berorientasi Objek .................................. 59

4.2.2 Pengertian Kelas.............................................................................. 60

4.2.3 Mendefinisikan Kelas...................................................................... 61

4.2.4 Contoh Kelas Sederhana ................................................................. 61

4.2.5 Instansiasi Objek ............................................................................. 62

4.2.6 Mengisi Nilai Pada Referensi Objek ............................................... 63

4.2.7 Method............................................................................................. 63

4.2.8 Mendefinisikan Method .................................................................. 64

4.2.9 Pengembalian Nilai Di Dalam Method ........................................... 64

4.2.10 Method Berparameter ...................................................................... 65

v
4.2.11 Constructor ..................................................................................... 66

4.2.12 Kata Kunci This .............................................................................. 66

4.2.13 Melakukan Overload Terhadap Method ......................................... 68

4.2.14 Overload Pada Constructor ............................................................ 68

4.2.15 Menentukan Tingkat Akses Data dan Method ................................ 68

4.2.16 Kata Kunci Static ............................................................................ 69

4.2.17 Kata Kunci Final ............................................................................. 70

4.2.18 Kelas di dalam kelas (Inner Class) ................................................. 71

4.3 Pembahasan Praktikum .......................................................................... 71

4.4 Tugas ...................................................................................................... 97

4.5 Kesimpulan ........................................................................................... 102

BAB V103 PEWARISAN (INHERITANCE) ................................................. 103


5.1 Tujuan ................................................................................................... 103

5.2 Dasar Teori ........................................................................................... 103

5.2.1 Pewarisan ...................................................................................... 103

5.2.2 Hierarki class ................................................................................ 104

5.2.3 Overreding .................................................................................... 105

5.2.4 Overloading .................................................................................. 106

5.3 Latihan .................................................................................................. 107

5.4 Tugas .................................................................................................... 116

5.5 Kesimpulan ........................................................................................... 119

BAB VI POLIMORIFISME ............................................................................. 120


6.1 Tujuan ................................................................................................... 120

6.2 Dasar Teori ........................................................................................... 120

6.2.1 Polimorifisme ................................................................................ 120

vi
6.2.2 Keuntungan Polimorfisme ............................................................ 120

6.3 Latihan .................................................................................................. 121

6.4 Tugas .................................................................................................... 125

6.5 Kesimpulan ........................................................................................... 128

BAB VII PENANGANAN EKSEPSI .............................................................. 129


7.1 Tujuan ................................................................................................... 129

7.2 Dasar Teori ........................................................................................... 129

7.2.1 Java................................................................................................ 129

7.2.2 Menggunakan Kata Kunci try dan cath ........................................ 130

7.2.3 Penjebakan Beberapa Tipe Eksepsi .............................................. 130

7.2.4 Menggunakan Kata Kunci throw .................................................. 131

7.2.5 Menggunakan Kata Kunci throws................................................. 131

7.2.6 Menggunakan Kata Kunci finally ................................................. 131

7.2.7 Exception handling ....................................................................... 131

7.3 Latihan .................................................................................................. 132

7.4 Tugas .................................................................................................... 140

7.5 Kesimpulan ........................................................................................... 141

BAB VIII PENANGANAN EKSEPSI ............................................................. 143


8.1 Tujuan ................................................................................................... 143

8.2 Dasar Teori ........................................................................................... 143

8.2.1 Pengertian Stream ......................................................................... 143

8.2.2 Tipe Stream ................................................................................... 143

8.2.3 Melakukan Input ........................................................................... 144

8.2.4 Membaca Input Data Karakter ...................................................... 145

8.2.5 Membaca input data string ............................................................ 145

vii
8.2.6 Membaca Input Data Numerik ...................................................... 145

8.2.7 Dasar-dasar Baca Tulis File .......................................................... 145

8.2.8 File ................................................................................................ 146

8.3 Latihan .................................................................................................. 146

8.4 Tugas .................................................................................................... 153

8.5 Kesimpulan ........................................................................................... 158

DAFTAR PUSTAKA
LAMPIRAN

viii
DAFTAR GAMBAR

Gambar 1.1 Setup jdk .............................................................................................. 4


Gambar 1.2 Tampilan awal instalasi JDK ............................................................... 4
Gambar 1.3 Proses instalasi .................................................................................... 4
Gambar 1.4 Proses instalasi .................................................................................... 5
Gambar 1.5 Setup netbeans ..................................................................................... 5
Gambar 1.6 Konfigurasi instalasi ............................................................................ 6
Gambar 1.7 Perizinan lisensi ................................................................................... 6
Gambar 1.8 Pemilihan lokasi penyimpanan ............................................................ 7
Gambar 1.9 Persetujuan instalasi ............................................................................ 7
Gambar 1.10 Proses instalasi .................................................................................. 8
Gambar 1.11 Instalasi selesai .................................................................................. 8
Gambar 1.12 Tampilan awal ................................................................................... 9
Gambar 1.13 Toolbars netbeans .............................................................................. 9
Gambar 1.14 Memilih proyek ............................................................................... 10
Gambar 1.15 Penamaan Proyek ............................................................................ 10
Gambar 1.16 Proyek yang telah dibuat ................................................................. 11
Gambar 1.17 Output program 1 ............................................................................ 12
Gambar 1.18 Tampilan hasil ................................................................................. 13
Gambar 1.19 Output penambahan komentar......................................................... 14
Gambar 2.3 Operator Aritmatik ............................................................................ 23
Gambar 2.2 Operator relasi ................................................................................... 23
Gambar 2.3 Operator logika .................................................................................. 24
Gambar 2.4 Output penjumlahan .......................................................................... 26
Gambar 2.5 Output pengurangan .......................................................................... 26
Gambar 2.6 Output perkalian ................................................................................ 27
Gambar 2.7 Output pembagian ............................................................................. 27
Gambar 2.8 Output operasi AND,OR, dan NOT ................................................... 29
Gambar 2.9 Output casting ................................................................................... 30

ix
Gambar 3.1 Output array 1 dimensi ..................................................................... 38
Gambar 3.2 Output array 2 dimensi ..................................................................... 39
Gambar 3.3 Output panjang string ........................................................................ 41
Gambar 3.4 Output kesamaan dua string .............................................................. 42
Gambar 3.5 Output perbandingan karakter string ................................................. 44
Gambar 3.6 Output posisi mendapatkan karakter ................................................. 46
Gambar 3.7 Output posisi karakter ....................................................................... 47
Gambar 3.8 Output konversi huruf kecil ke besar ................................................ 49
Gambar 3.9 Output penyambungan antar string ................................................... 50
Gambar 3.10 Output stirng baru ........................................................................... 51
Gambar 3.11 Output modifikasi string ................................................................. 52
Gambar 3.12 Output array karakter string............................................................ 54
Gambar 3.13 Output tugas 1 ................................................................................. 57
Gambar 4.1 Hasil Output latihan 1........................................................................ 72
Gambar 4.2 Hasil Output latihan 2........................................................................ 73
Gambar 4.3 Hasil Output latihan 3........................................................................ 75
Gambar 4.4 Hasil Output latihan 4........................................................................ 77
Gambar 4.5 Hasil Output latihan 5........................................................................ 79
Gambar 4.6 Hasil Output latihan 6........................................................................ 80
Gambar 4.7 Hasil Output latihan 7........................................................................ 82
Gambar 4.8 Hasil Output latihan 8........................................................................ 84
Gambar 4.9 Hasil Output latihan 9........................................................................ 86
Gambar 4.10 Hasil Output latihan 10.................................................................... 87
Gambar 4.11 Hasil Output latihan 11.................................................................... 89
Gambar 4.12 Hasil Output latihan 12.................................................................... 91
Gambar 4.13 Hasil Output latihan 13.................................................................... 92
Gambar 4.14 Hasil Output latihan 14.................................................................... 93
Gambar 4.15 Hasil Output latihan 15.................................................................... 94
Gambar 4.16 Hasil Output latihan 16.................................................................... 96
Gambar 4.17 Hasil Output tugas 1 ...................................................................... 101
Gambar 5.1 Hirarki class dosen .......................................................................... 104

x
Gambar 5.2 class diagram untuk hirarki dosen ................................................... 104
Gambar 5.3 output Latihan 1............................................................................... 110
Gambar 5.4 output latihan 2 ................................................................................ 113
Gambar 5.5 output latihan 3 ................................................................................ 114
Gambar 5.6 output latihan 4 ................................................................................ 115
Gambar 5.7 output tugas 1 .................................................................................. 118
Gambar 6.1 output latihan 1 ................................................................................ 124
Gambar 6.2 output tugas 1 .................................................................................. 127
Gambar 7.1 output latihan 1 ................................................................................ 132
Gambar 7.2 output latihan 2 ................................................................................ 133
Gambar 7.3 output latihan 3 ................................................................................ 135
Gambar 7.4 output latihan 4 ................................................................................ 137
Gambar 7.5 output latihan 5 ................................................................................ 138
Gambar 7.6 output latihan 6 ................................................................................ 139
Gambar 8.1 output latihan 1.................................................................................148
Gambar 8.2 output latihan 2 ................................................................................ 148
Gambar 8.3 output latihan 3 ................................................................................ 149
Gambar 8.4 output latihan 4 ................................................................................ 151
Gambar 8.5 isi file di consle ................................................................................ 151
Gambar 8.6 Hasil Output latihan 5...................................................................... 152
Gambar 8.7 File Output.txt ................................................................................. 152
Gambar 8.8 Output pilihan 1 ............................................................................... 156
Gambar 8.9 Bukti output latihan 1 ...................................................................... 156
Gambar 8.10 Output pilihan 2 ............................................................................. 156
Gambar 8.11 Bukti output latihan 2 .................................................................... 156
Gambar 8.12 Output pilihan 3 ............................................................................. 157
Gambar 8.13 Output pilihan 4 ............................................................................. 157
Gambar 8.14 Bukti output pilihan 4 .................................................................... 157
Gambar 8.15 Output pilihan 5 ............................................................................ 157
Gambar 8.16 Bukti output pilihan 5 .................................................................... 157
Gambar 8.17 output tugas 1 ................................................................................ 158

xi
DAFTAR TABEL

Tabel 3.1 Daftar Nilai PBO Mahasiswa ................................................................ 33


Tabel 3.2 Konversi nilai ke huruf.......................................................................... 34

xii
BAB I
INSTALASI JDK DAN NETBEANS

1.1 Tujuan Praktikum


Adapun tujuan dari praktikum bab 1 ini adalah sebagai berikut :
1. Praktikan dapat melakukan instalasi dan setting Java Development Kit
2. Praktikan dapat menggunakan Netbeans IDE sebagai editor
pemrograman
3. Praktikan dapat menjalankan (eksekusi) program Java sederhana yang
ditulis dengan Netbeans IDE

1.2 Dasar Teori


1.2.1 Text Editor Program Java
Untuk menulis program JAVA dapat digunakan berbagai editor,
bahkan editor paling sederhana (seperti Notepad pun dapat digunakan.
Namun pada umumnya, agar penulisan program lebih terarah, beberapa
editor telah disediakan untuk membantu para programmer. Beberapa editor
atau IDE (Integrated Development Environment) yang telah ada untuk
Java, antara lain:

1. NetBeans (Open Source - Common Development and Distribution


License (CDDL))
2. NetBeans yang disponsori Oracle, yang dilengkapi dengan GUI Editor
3. Eclipse JDT (open source- Eclipse Public License)
4. Eclipse dibuat dari kerja sama antara perusahaan-perusahaan anggota
‘Eclipse Foundation’ (beserta individu-individu lain). Banyak nama
besar yang ikut dalam 'Eclipse Foundation', termasuk IBM, BEA, Intel,
Nokia, Borland. Eclipse bersaing langsung dengan Netbeans IDE.
Plugin tambahan pada Eclipse jauh lebih banyak dan bervariasi
dibandingkan IDE lainnya.
5. IntelliJ IDEA (commercial, free 30-day trial)
6. Oracle JDeveloper (free)

1
2

7. JCreator (ada versi berbayar maupun free)


8. JCreator ditulis dalam C/C++ sehingga lebih cepat (dan mengguna ka n
memori lebih sedikit) dari kebanyakan IDE lain.

1.2.2 NetBeans
NetBeans adalah Integrated Development Environment (IDE)
berbasiskan Java dari Sun Microsystems yang berjalan diatas swing. Swing
sebuah teknologi Java untuk pengembangan aplikasi Dekstop yang dapat
berjalan di berbagai macam platforms seperti Windows, Linux, Mac OS X
and Solaris. NetBeans merupakan software development yang Open
Source, dengan kata lain software ini dibawah pengembangan bersama,
bebas biaya NetBeans merupakan sebuah proyek kode terbuka yang sukses
dengan pengguna yang sangat luas, komunitas yang terus tumbuh, dan
memiliki hampir 10 mitra. Sun Microsystems mendirikan proyek kode
terbuka NetBeans pada bulan Juni 2000 dan terus menjadi sponsor utama.

Suatu IDE adalah lingkup pemrograman yang diintegrasikan


kedalam suatu aplikasi perangkat lunak yang menyediakan pembangunan
Graphic User Interface (GUI), suatu text atau kode editor, suatu compiler
atau interpreter dan suatu debugger. NetBeans IDE adalah sebuah
lingkunga n pengembangan sebuah berkas untuk pemrogram menulis,
mengompilasi, mencari kesalahan dan menyebarkan program. NetBeans
IDE ditulis dalam Java, namun dapat mendukung bahasa pemrograman
lain. Terdapat banyak modul untuk memperluas NetBeans IDE. NetBeans
IDE adalah sebuah produk bebas dengan batasan bagaimana digunakan.
NetBeans IDE mendukung pengembangan semua tipe aplikasi Java (J2SE,
web, EJB, dan aplikasi mobile). Fitur lainnya adalah sistem proyek
berbasis Ant, kontrol versi, dan refactoring. (Widi, 2008)
3

1.2.3 JDK (Java Development Kit)


Java Development Kit (JDK) memuat program-program dan library
yang dibutuhkan untuk meng-compile dan me-launch program Java. Dua
program utama yang ada di JDK adalah javac dan java. Untuk meng-install
JDK, terlebih dahulu men-download installation file dari
http://java.sun.com dan men-download JDK untuk Linux, Solaris, dan
Windows, Installation file untuk Linux dari JDK versi 1.4 adalah j2sdk-
1.4.1.02-linux-i586.bin. Yang perlu dilakukan hanyalah meng-execute file
ini. File ini akan mengalami de-compression, akan mendapatkan sebuah
directory j2sdk1.4.1.02 yang memuat JDK. Directory ini dikenal sebagai
JAVA HOME sebagai environment variable.
Program java dan javac berada di sub-directory bin/ di bawah JAVA
HOME. Agar bisa meng-compile dan me-launch program java dari
directory mana saja dan bisa menambahkan JAVA HOME /bin ke dalam
environment variable bernama PATH. Untuk mengetahui cara penggunaan
dari javac – help melalui terminal. Untuk mengetahui cara penggunaan dari
java, yaitu java application launcher, bisa menjalankan perintah java –help
melalui terminal. (Kadril, 2004)
1.3 Langkah Praktikum
1.3.1 Meng-install JDK 8

Sebelum memulai pemrograman Java, kita harus meng-instal Java


Development Kit (JDK) dan NetBeans IDE yang disediakan secara gratis oleh
Oracle. Java Development Kit tersedia dan dapat di download pada situs :
http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK 8 untuk berbagai platform tersedia pada situs tersebut. Installer


yang mengekstrak file JDK akan membuat direktori yang diperlukan, dan
sekaligus menyalin file-file ke dalam direktori tersebut. Install shield
Wizard memberikan tampilan bahwa Java siap di instalasi.
4

Gambar Gambar
1. 1 Setup
1.1jdk
Setup jdk
Tampilan gambar 1.1 menampilkan ikon jdk yang
kemudian akan dijalankan untuk diinstalasi. Caranya dengan
meng-klik dua kali gambar ikon.

Gambar
Gambar
1. 2 Tampilan
1.2 Tampilan
awalawal
instalasi
instalasi
JDKJDK

Tampilan gambar 1.2 menampilkan gambar tahapan proses instalasi


java, untuk melanjutkan pilih next.

Gambar 1. 3 Proses
Gambar instalasi
1.3 Proses instalasi
Tampilan gambar 1.3 menampilkan gambar proses instalasi, dimana
aplikasi akan disimpan.
5

Gambar 1. 4 Proses instalasi

Tampilan gambar 1.4 setelah meng-klik next pada tampilan gambar


1.3, maka akan dilanjutkan ke proses instalasi, pada gambar 1.4
menunjukkan proses instalasi sedang berjalan. Setelah instalasi telah
selesai dan memilih next.

1.3.2 Meng-install NetBeans IDE 8


Netbeans versi terbaru dapat di download secara gratis pada situs
Netbeans yaitu : https://netbeans.org/downloads/. Untuk memulai instalasi
Netbeans, jalankan aplikasi file netbeans yang sudah di download
sebelumnya dan lanjutkan langkah instalasi.

Gambar 1. 5 Setup netbeans

Tampilan gambar 1.5 menampilkan setup NetBeans. Untuk memulai


proses instalasi bisa meng-klik dua kali.
6

Gambar 1. 6 Konfigurasi instalasi

Tampilan gambar 1.6 menampilkan beberapa layanan yang disediakan


oleh NetBeans, untuk melanjutkan user dapat meng-klik next.

Gambar 1. 7 Perizinan lisensi

Tampilan gambar 1.7 menampilkan perizinan lisensi penginstalan dari


NetBeans yang akan di instal, apabila user setuju maka user dapat
mencentang pilihan yang ada dan meng-klik next.
7

Gambar 1. 8 Pemilihan lokasi penyimpanan

Tampilan gambar 1.8 menampilkan proses instalasi yang berfungsi


untuk lokasi penyimpanan aplikasi.

Gambar 1. 9 Persetujuan instalasi


Tampilan gambar 1.9 menampilkan keterangan ukuran folder yang
akan digunakan oleh NetBeans, dan letaknya. Setelah memperhatikan
detail, untuk melanjutkan klik next.
8

Gambar 1. 10 Proses instalasi

Tampilan gambar 1.10 menunjukan proses instalasi sedang berjalan,


proses tersebut membutuhkan waktu beberapa menit.

Gambar 1. 11 Instalasi selesai


Tampilan gambar 1.11 proses instalasi telah selesai, memilih finish
untuk keluar.
9

1.3.3 Pengoprasian NetBeans IDE 8


Pada praktikum Pemrograman Berorientasi Objek ini akan
digunakan NetBeans sebagai editor pemrograman. Berikut langkah-
langkah penggunaan NetBeans.

Gambar 1. 12 Tampilan awal

Tampilan gambar 1.12 setelah menjalankan program tersebut akan


muncul tampilan seperti gambar 1.12

Gambar 1. 13 Toolbars netbeans

Tampilan gambar 1.13 memilih New Project atau dengan menekan


tombol Ctrl + Shift + N untuk membuat project baru.
10

Gambar 1. 14 Memilih proyek

Tampilan gambar 1.14 menampilkan proyek apa yang akan dibuat.


Terdapat beberapa pilihan diantaranya adalah java, php, dan C/C++. Untuk
melanjutkan klik java kemudian java application.

Gambar 1. 15 Penamaan Proyek

Tampilan gambar 1.15 memberi nama project dan menentukan


lokasi project yang akan dibuat.
11

Gambar 1. 16 Proyek yang telah dibuat

Tampilan gambar 1.16 menampilkan sebuah project baru yang telah


berhasil di buat.

1.3.4 Program Sederhana


Pada project hello_world yang dibuat tambahkan perintah sebagai berikut:
System.out.println("Hallo sakinah");

Pada baris ke-13. Sehingga program yang terbentuk seperti pada gambar 1.17
/*

* To change this license header, choose License


Headers in Project Properties.
* To change this template file, choose Tools |
Templates
* and open the template in the editor.
*/

package Praktikum;

/**
* @author admin */

public class PerkenalanJava {

public static void main(String[] args) {


System.out.println("Hallo Sakinah");
12

Gambar 1. 17 Output program 1

Keterangan :
a. Syntax utama untuk program yang ditulis dengan
JAVA adalah:
[modifier][class] nama_class
{

}
Ada beberapa modifier pada JAVA, yaitu public, private dan
protected.
Modifier public diperlukan agar program dapat dikompilasi dengan
baik.
b. Bagian ini merupakan bagian utama yang ditempatkan pada bagian
awal pada program JAVA. static menunjukkan tipe method. Void
menunjukka n bahwa method tidak mengembalikan nilai atau objek.
Main merupakan nama method utama program JAVA. String
merupakan tipe argumen yang akan diterima sebagai parameter dari
command Java. args merupakan array argumen yang dapat
ditambahkan pada saat mengunakan command Java untuk
menjalankan program Java.
13

c. Perintah untuk menampilkan “Hallo sakinah” pada layar monitor.


Selanjutnya, program dapat dieksekusi dengan klik tombol
.Hasilnya dapat dilihat pada window output dengan hasil
sebagaimana terlihat pada gambar 1.18.

Gambar 1. 18 Tampilan hasil

1.3.5 Penambahan Komentar


Untuk membantu mengingat arti (tujuan) penulisan serangkaian
kode yang telah ditulis, biasanya kita memberikan beberapa komentar
pada program yang kita buat. Pada Java, untuk membuat komentar dapat
dilakukan dengan cara:
1. Komentar dengan menggunakan tanda //. Tanda ini digunakan untuk
memberikan komentar dalam satu baris. Tanda // diletakkan pada
awal baris.
2. Komentar dengan menggunakan tanda /* dan */. Tanda ini digunakan
untuk memberikan komentar yang ditulis dalam beberapa kalimat. Tanda
/* diletakkan pada awal kalimat, dan tanda */ ditulis diakhir kalimat.
/*

* To change this license header, choose License


Headers in Project Properties.
* To change this template file, choose Tools Templates

* and open the template in the editor


*/
package Praktikum;

/**

*
14

* @author
admin */
public class PerkenalanJava {
public static void
main(String[] args) {
System.out.println("Hall
o sakinah");
}
}

Gambar 1. 19 Output penambahan komentar

1.4 Tugas
1. Buatlah sebuah program yang mencetak data
berikut :
Nama : Sakinah
Nim : 32601700023
Alamat : jalan taman udan riris 1 no.43
No.Telp : 0856-0215-2577
E-mail : sakinah@std.unissula.ac.id
15

a. Kode Program
package Praktikum;
public class Bab1 {
public static void main(String[] args) {
System.out.println("Nama : sakinah");
System.out.println("Nim : 32601700023");
System.out.println("Alamat : jalan taman udan riris 1
no.43");
System.out.println("No.Telp : 0856-0215-2577");
System.out.println("E-mail : sakinah@st.unissula.ac.id”);
}
}
b. Output

Gambar 1.4 Ouput tugas 1

c. Penjelasan
Pada tampilan gambar 1.20 program ini terdiri dari satu class
dinamakan Bab1 yang menggunakan modifier public agar dapat
dikompilasi dengan baik. Didalam program class Bab1 terdapat satu
method yang dinamakan ‘main’ dengan modifier public agar dapat
dikompilasi dengan baik. Static merupakan non access modifier
yang digunakan agar method tidak perlu ditambahkan instance dari
kelas tersebut. Void menunjukkan method tidak mengembalikkan
nilai apapun. Bagian ini berisi perintah untuk menampilkan
beberapa data.
Dalam bagian ini terlihat perintah System.out.println
()yang digunakan untuk menampilkan data atau kalimat yang ada
di dalam kurung. Contoh pada Tugas, baris pertama akan
menampilkan “Nama : Sakinah” dan baris kedua akan menampilkan
16

kalimat kedua dibawah kalimat pertama, begitu pun seterusnya


hingga kalimat akhir.
1.5 Kesimpulan
Pada praktikum bab 1 ini dapat disimpulkan bahwa untuk
menjalankan sebuah aplikasi NetBeans dibutuhkan JDK karena
merupakan sebuah freamwork untuk dapat menjalankan NetBeans, dalam
struktur kode program terdapat syntax public static void
main(String[] args) merupakan bagian utama yang ditempatkan
pada bagian awal pada program Java. Dan untuk menambahlan komentar
Java diawali dengan tanda // pada awal baris atau tanda /* dan */ pada awal
dan akhr kalimat, syntax System.out.println digunakan untuk
mencetak atau menampilkan ke output. Dengan begitu si-user dapat
membuat program apa saja sesuai keinginan sendiri.
BAB II
VARIABEL, TIPE DATA, DAN OPERATOR

2.1 Tujuan
Adapun tujuan dari praktikum bab 2 ini adalah sebagai berikut :
1. Praktikum dapat membuat variabel dengan benar.
2. Praktikum mampu menggunakan beberapa tipe data dalam berbagai
kepentingan.
3. Praktikum mampu menggunakan berbagai operator dan
mengimplementasikannya.

2.2 Dasar Teori


2.2.1 Variabel
Variabel adalah nama dari suatu lokasi di memori yang digunakan
untuk menyimpan data sementara. Variabel diberi nama tertentu yang
menunjukkan domain yang diwakilinya. Dalam memberikan nama variabel,
ada beberapa ketentuan yang harus diperhatikan yaitu:
1. Panjang karakter nama variabel tidak dibatasi.
2. Nama variabel diawali dengan huruf, tanda garis bawah (underscore) atau
tanda dolar ($). Selanjutnya dapat diikuti oleh karakter lain, selain operator
(/,*, -, +).
3. Bersifat case sensitive (membedakan antara huruf kapital dan huruf kecil).
4. Tidak diperbolehkan menggunakan kata-kata kunci yang digunakan pada
java, seperti: if, for, while, dll.
Data yang tersimpan dalam variabel memiliki tipe tertentu. Sebelum
digunakan dalam aplikasi, suatu variabel harus dideklarasikan terlebih
dahulu.
Syntax: [tipe_data] [nama_variabel]

Beberapa tipe data yang dapat digunakan akan dibahas pada sub
bagian berikut.

17
18

2.2.2 Tipe Data


1. Karakter
Karakter tunggal, diberikan dengan tipe data char. Data yang
memiliki tipe data ini ditulis dengan diapit tanda petik tunggal, seperti:
‘A’, ‘S’, ‘?’, dll. Char berbeda dengan String . String adalah kumpulan dari
beberapa karakter . Data yang memiliki tipe data ini ditulis dengan diapit
tanda petik ganda.
Contoh :
String nama, golDarah; Nama = “Sakinah”;
golDarah = “Tidak Tahu”;
2. Integer
Tipe data integer merupakan bilangan bulat (positif, nol, atau
negatif).
Contoh :
int x1, x2, Jumlah;
Jumlah = x1 + x2;
Selain int, bilangan integer juga dapat memeiliki tipe data byte, short
atau long yang masing-masing dibedakan oleh panjang memori yang
ditempati.
1) Byte menempati lokasi sebesar 1 byte.
2) Short menempati lokasi memori sebesar 2 byte.
3) Int menempati memori sebesar 4 byte.
4) Long menempati lokasi sebesar 8 byte.
3. Floating Point
Untuk mempresentasikan data pecahan (bukan integer) dapat
digunakan dua macam tipe data, yaitu float dan double. Tipe data float
memiliki panjang lokasi penyimpanan sebesar 4 byte, sedangkan double
sepanjang 8 byte.
Contoh :
int x1, x2; float
Rata2; double
19

PanjangJalur; Rata2 =
(x1 + x2) /2;
PanjangJalur = 1.5E3;
4. Boolean
Tipe data boolean hanya memilikai dua kemungkinan nilai, yaitu
benar atau salah.
Contoh :
Boolean Selesai;
Selesai = true;
5. Short
Tipe data dengan nilai 16 bit, merupakan tipe data yang menyimpan
bilangan bulat dan memiliki nilai minimum -32.768 dan nilai maksimum
+32.767. Sama halnya dengan bit, tipe data ini bisa digunakan untuk
angka-angka kecil dan bisa dipakai untuk menyatakan nilai array yang
lebih besar dari byte. (Minmin, 2013)
6. Byte
Byte juga hampir sama dengan integer, yang membedakan integer
adalah range yang lebih kecil dari integer. Byte memiliki range dari -128
sampai +127 dan menempati 1 byte (8 bits) di memory. (Minmin, 2013)
2.2.2 Operator
1. Operator Aritmatik
Operator-operator aritmatik di Java seperti pada umumnya terdiri
dari: penjumlahan (+), pengurangan (-), pembagian (/), perkalian (*), dan
modulo (%). Kode program pada gambar 2.1. berikut menunjukkan
operasi aritmatik untuk nilai A=100 dan B=30.
Menunjukkan output yang dihasilkan apabila pernyataan pada baris ke-16
diganti dengan :
float bagi = A/B
Disamping operator-operator dasar tersebut, ada beberapa cara
singkat untuk menuliskan operator aritmatika, seperti:
20

a. x = x + 1, dapat disingkat menjadi x++


b. x = x - 1, dapat disingkat menjadi x—
c. x = x + 3, dapat disingkat menjadi x+=3
d. x = x - 5, dapat disingkat menjadi x-=3
2. Operator Relasi
Operator relasi digunakan dalam ekspresi boolean yang akan
menghasilkan nilai boolean guna melakukan langkah eksekusi blok
pernyataan tertentu. Berikut merupakan beberapa operator logika:
tabel 2. 1 Operator relasi
Symbol Keterangan
> Lebih dari
< Kurang dari
>= Lebih dari atau sama dengan
<= Kurang dari atau sama dengan
== Sama dengan
!= Tidak sama dengan
3. Operator Logika
Operator logika digunakan juga dalam ekspresi boolean yang akan
menghasilkan nilai boolean guna menentukan langkah eksekusi blok
pernyataan tertentu. Beberapa operator logika seperti AND (&&), OR (||),
atau NOT (!).

2.2 Langkah Praktikum


Lakukan ujicoba pada program di atas sebegai bentuk latihan kemudian
lakukan analisa.
1. Latihan 1 : Operator Aritmetik
a. Kode Program
package latihanBab2;
// sakinah (32601700023)
public class latihan1_bab2 {
public static void main(String[] args) {
int A = 100, B = 30;
21

int jumlah = A+B;


int kurang = A-B;
int kali = A*B;
int bagi = A/B;
int modulo = A%B;

System.out.println("Nama : Sakinah");
System.out.println("Nim : 32601700023");
System.out.println("=====Calculator Sederhana");
System.out.println("Penjumlahan"+A+"+"+B+"="+jumlah);
System.out.println("Pengurangan"+A+"-"+B+"="+kurang);
System.out.println("Perkalian"+A+"*"+B+"="+kali);
System.out.println("Pembagian"+A+"/"+B+"="+bagi);
System.out.println("Modulo"+A+"%"+B+"="+modulo);
}
}
b. Output

Gambar 2. 1 Operator aritmatika

Penjelasan:
Pada tampilan gambar 2.1 hasil output program kalkulator.
Program dengan menggunakan operator Aritmatika. Terdapat syntax
public static void main(String[]args)yang merupakan fungsi
utama dari suatu program atau tempat data suatu program yang akan di
output. Program ini menjelaskan tentang nilai dari suatu variabel yang
bertipe data Interger dijalankan melalui operator Aritmatika yaitu (+, -
, *, / dan %).
22

2. Latihan 2 : Operator Relasi


a. Kode Program
//sakinah(32601700023)
package latihanBab2;
public class latihan2_bab2 {
public static void main(String[] args) {
int A=100, B=30;

boolean lb = A > B;
boolean lk = A < B;
boolean lbs = A >= B;
boolean lks = A <= B;
boolean sm = A == B;
boolean tsm = A != B;

System.out.println("Nama :sakinah");
System.out.println("Nim :32601700023");
System.out.println("-------------------------");

System.out.println(A+" > "+B+" => "+lb);

System.out.println(A+" < "+B+" => "+lk);

System.out.println(A+" >= "+B+" => "+lbs);

System.out.println(A+" <= "+B+" => "+lks);


System.out.println(A+" = "+B+" => "+sm);
System.out.println(A+" != "+B+" => "+tsm);
}
}
23

b. Output

Gambar 2. 2 Operator relasi


c. Penjelasan
Pada tampilan gambar 2.2 program menggunakan operator relasi,
dimana menggunakan ekspresi boolean atau sejenis data yang memiliki
satu dari dua jenis saja yaitu bit 1 atau bit 0 (true or false). Program ini
menjelaskan tentang nilai dari suatu variabel yang bertipe data Interger
dijalankan melalui operator relasi dengan ekspresi boolean.
3. Latihan 3 : Operator Logika
a. Kode Program
//sakinah(32601700023)
package latihanBab2;
public class latihan3_bab2 {
public static void main(String[] args) {

boolean A=true, B=false;


boolean o_and = A && B;
boolean o_or = A || B;
boolean o_notA = !A;
boolean o_notB = !B;

System.out.println("Nama :sakinah");
System.out.println("Nim :32601700023");
System.out.println("-------------------------");
System.out.println(A+" AND "+B+" => "+o_and);
System.out.println(A+" OR "+B+" => "+o_or);
System.out.println("NOT "+A+" => "+o_notA);
24

System.out.println("NOT "+B+" => "+o_notB);


}
}
b. Output

Gambar 2. 3 Operator logika


c. Penjelasan
Pada tampilan gambar 2.3 hasil output operator logika AND
(&&), OR (||), atau NOT(!). Dimana pada fungsi AND bernilai TRUE
jika semua kondisi argumen terpenuhi dan bernilai FALSE jika salah
satu argumen tidak terpenuhi. Pada fungsi OR bernilai TRUE jika salah
satu argumen atau keduanya terpenuhi dan bernilai FALSE jika
keduanya tidak terpenuhi dan pada fungsi NOT bernilai TRUE jika
pernyataan itu tidak terpenuhi dan bernilai False jika pernyataan itu
terpenuhi.
2.3 Tugas
1. Tugas 1
Buatlah program kalkulator sederhana yang mengimplementasikan
beberapa operator yang sudah di jelaskan
a. Kode Program
//sakinah (32601700023)
package latihanBab2;
import java.util.Scanner;
public class tugas1_bab2 {
public static float public static float
Calc(float A, float B, int C){
float X=0;
25

switch (C) {
case 1:
X = A + B;
break;
case 2:
X = A - B;
break;
case 3:
X = A * B;
break;
case 4:
X = A / B;
break;
default:
System.out.println("Perintah salah.");
break;
}
return X;
}

public static void main(String[] args) {


float X, Y;
int Z;
Scanner kb = new Scanner(System.in);

System.out.println("Nama :sakinah");
System.out.println("Nim :32601700023");
System.out.println("-------------------------");
System.out.println("Kalkulator sederhana");
System.out.println();
System.out.println("Masukkan angka pertama: ");
X = kb.nextFloat();
System.out.println("Masukkan angka kedua: ");
Y = kb.nextFloat();
System.out.println();
System.out.println("1. Tambah");
System.out.println("2. Kurang");
System.out.println("3. Kali");
26

System.out.println("4. Bagi");
System.out.println("Pilih operasi: ");
Z = kb.nextInt();
System.out.println();
System.out.println("Hasilnya adalah " + Calc(X,
Y, Z));
}
}

b. Output

Gambar 2. 4 Output penjumlahan

Gambar 2. 5 Output pengurangan


27

Gambar 2. 6 Output perkalian

Gambar 2.7 Output pembagian


c. Penjelasan
Pada tampilan gambar hasil output dari kalkulator sederhana yang
mana dalam program tersebut menggunakan tipe data float untuk
mempresentasikan data pecahan. Pada program tersebut menggunakan
pernyataaan switch case yang merupakan pernyataan yang
dirancangan khusus untuk menangani pengambilan keputusan yang
melibatkan sejumlah atau banyak alternatif penyelesaian.
Pernyataan switch - case ini memiliki kegunaan sama seperti if
– else bertingkat. Java menyediakan intruksi Switch untuk
memudahkan pembacaan alur program bercabang yang sangat banyak.
28

meskipun Switch didesain untuk mengganti If-Else, akan tetapi Switch


memiliki batasan dimana data yang diperiksa haruslah bertipe Integer
(int) atau Karakter (char) dan range data yang diperiksa bernilai 0 s/d
255
2. Tugas 2
Buatlah sebuah program untuk menampilkan hasil dasar logika AND,OR,
dan NOT.
a. Kode Program
//sakinah(32601700023
package latihanBab2;
public class tugas2_bab2 {
public static void main(String[] args) {
boolean A = true, B = false;
boolean x;

System.out.println("Nama :sakinah");
System.out.println("Nim :32601700023");
System.out.println("-------------------------");
System.out.println("A = True");
System.out.println("B = False");
System.out.println("Maka");
System.out.println();

//And
x = A && B;
System.out.print("A AND B adalah " + x);
System.out.println();

//Or
x = A || B;
System.out.print("A OR B adalah " + x);
System.out.println();

//Not
x = !A;
29

System.out.print("NOT A adalah " + x);


System.out.println();

x = !B;
System.out.print("NOT B adalah " + x);
System.out.println();
}

}
b. Output

Gambar 2. 8 Output operasi AND,OR, dan NOT

c. Penjelasan
Pada gambar 2.9 merupakan tampilan dari program operator
logika, dengan menggunakan nama class tugas2. Memiliki tipe data int
sebagai nilai A dan B, serta menggunakan ekspresi boolean atau sejenis
data yang memiliki satu dari dua jenis saja yaitu TRUE atau FALSE.
pada fungsi AND bernilai TRUE jika semua kondisi argumen terpenuhi
dan bernilai FALSE jika salah satu argumen tidak terpenuhi.
Pada fungsi OR bernilai TRUE jika salah satu argumen atau
keduanya terpenuhi dan bernilai FALSE jika keduanya tidak terpenuhi
dan pada fungsi NOT bernilai TRUE jika pernyataan itu tidak terpenuhi
dan bernilai False jika pernyataan itu terpenuhi.
30

3. Tugas 3
Buatlah sebuah program yang melibatkan proses casting nilai pada sebuah
variabel.
a. Kode Program
//sakinah(32601700023)
package latihanBab2;
public class tugas3_bab2 {
public static void main(String[] args) {
int b=65;
String str;
str=Character.toString((char)b);
System.out.println("b="+str);
}
b. Output

Gambar 2. 9 Output casting


c. Penjelasan
Dari output pada gambar 2.10 merupakan program yang
menggunakan metode casting. Casting adalah perubahan tipe data ke
tipe data lainnya dengan memperhatikan ukuran kapasitas di setiap tipe
data. contoh pemrograman ini mengubah nilai tipe data bilangan bulat
(Integer) yaitu 78 menjadi nilai dari tipe data Karakter (char) dengan
nilai N yang disesuaikan dengan konversi ASCII
31

2.4 Kesimpulan
Dari praktikum bab 2 ini dapat disimpulkan bahwasannya dalam
pengoperasian java terdapat beberapa tipe data seperti Karakter(Char),
Bilangan bulat (Integer), pecahan (Float, double), Boolean dan Short. Selain
itu, dalam pengoperasian java juga terdapat beberapa operator seperti
Aritmatika, Relasi, dan Logika dimana masing-masing operator memiliki
fungsi cara kerja yang berbeda-beda.
BAB III
ARRAY DAN STRING

3.1 Tujuan
Adapun tujuan dari praktikum ini adalah sebagai berikut :
1. Mengerti dan memahami penggunaan array dan string.
2. Mampu menggunakan beberapa operator dan method yang menyertai
penerapan array dan string.

3.2 Dasar Teori


3.2.1 Array
Array merupakan tipe data yang digunakan apabila data diberikan
sebelum kelompok data yang disajikan secara berurutan. Setiap elemen data
memiliki tipe data yang sama. Array menggunakan sekelompok lokasi
memori yang berurutan dengan nama dan tipe data yang berbeda.
syntax :
tipe_data nama_variabel_array[]
Besarnya alokasi memori yang akan digunakan perlu di berikan
sebelum variabel bertipe array tersebut digunakan. Apabila alokasi memori
tidak diberikan secara eksplisit, maka Java akan membeikannya secara
implisit. Kemudian, setiap elemen data disebut dengan
nama_variabel_array yang diikuti dengan indeks pemogramannya.
Sebagai contoh, apabila akan dibuat variabel penjualan bertipe array
dengan alokasi memori sebesar 11, dan akan memberikan nilai 125 untuk
penjualan ke-11, maka dapat dituliskan:
Syntax:
int penjualan[];
penjualan = new int[12];
penjualan[11] = 125;

32
33

Untuk mengetahui jumlah elemen dari sekelompok data yang bertipe


array, dapat digunakan perintah length. Syntax:
Nama_variabel_array.length
Model array sebagaimana yang dijelaskan diawal merupakan array
satu dimensi. Sangat dimungkingkan satu variabel membutuhkan array dua
dimensi, misalkan pada aplikasi matriks. Syntax untuk array dua dimensi
diberikan sebagai berikut.
Sintaks:
tipe_data nama_variabel_array[][]
Sebagai contoh, apabila akan dibuat variabel penjualan bertipe array
dua dimensi, dengan alokasi memori sebesar 12 untuk dimensi pertama dan
31 untuk dimensi kedua, serta akan memberikan nilai 125 untuk penjualan
pada dimensi (11,23) maka dapat dituliskan:
int penjualan[][];
penjualan = new int [12][31];
penjualan[11][23] = 125;
Diketahui daftar nilai matakuliah PBO untuk 5 mahaiswa sebagaimana
terlihat pada Tabel 3.1.

Tabel 3 1 Daftar Nilai PBO Mahasiswa

Nilai
MahasiswaKe
Rata 2 Tugas UTS UAS

1 50 60 70

2 70 75 87

3 89 90 90

4 65 76 89

5 65 70 80

Selanjutnya akan dicari nilai akhir unuk setiap mahasiswa yang


merupakan nilai rata-rata dari ketiga komponen penilaian (rata2 tugas, UTS,
UAS). Selanjuntya, pemberian nilai dengan huruf diberikan sebagai berikut.
34

Tabel 3 2 Konversi nilai ke huruf

Nilai Huruf

Nilai > 80 A

70 < Nilai ≤80 B

60 < Nilai ≤70 C

50 < Nilai ≤60 D

Nilai ≤50 E

3.2.2 Array Satu Dimensi


Pada dasarnya array satu dimensi merupakan kumpulan dari variabel
yang memiliki tipe data yang sama.
Tipe-data nama –array[];
Tipe-data[] nama-array;
Variasi cata pendeklarasian ini hanyalah untuk memudahkan
programer, bentuk mana yang digunkan adalah terserah kepada programer
karena pada dasarnya keduanya sama.
Tipe data merupakan tipe data yang akan di tampung oleh variabel
array ini. Semua tipe data yang di kenal dalam java, baik yang primitif
maupun beberapa class dapat di gunakan disini. Untuk nama array,
merupakan identifer yang menggunakan nama dari variabel array itu sendiri
sama seperti Java bahwa variabel ini bertipe array. (Indrajani, 2007)

3.2.3 Array Tiga Dimensi


Array 3 dimensi adalah array uang tidak jauh bereda dengan array satu
dimensi dan dua dimensi yang telah dijelaskan sebelumnya, kecuali pada
indek dari array. Pada tipe ruang misalnya type ruang = array [1..8,1..5,1..3]
ofinteger; menunjukkan bahwa ruang adalah nama-pengenal atau variabel
yang berupa array yang komponennya bertipe integer dan terdiri atas 8 baris,
mempunyai 5 kolom, dan 3 halaman.
35

Bedanya array 3 dimensi dengan 1 dan 2 dimensi yaitu menggunakan


3 index misalnya deklarasi array yang sebagai berikut :
int banyak data [5] [2] [3]
a. Index pertama menunjukkan banyak garis.
b. Index kedua menunjukkan banyak isi baris.
c. Index ketiga menunjukkan banyak kolom. (Sinaga, 2015)

3.2.4 String
String merupakan deretan karakter. Pada java, string merupakan objek
dari kelas string. Penulisan string di lakukan dengann mengapit data
menggunakan tanda petik (ganda).
Contoh :
String judul = “ Pemrograman Berorientasi Objek”;
String dapat dioperasikan dengan menggunakan beberapa operator atau
method untuk beberapa kepentingan yang berbeda.

1. Mengetahui panjang string


Untuk mengetahui panjang string dapat digunkan method length ().
2. Mengetahui kesamaan antara dua string
Untuk mengetahui lesamaan antara dua string dapat digunakan operator
== atau method equal (string)atau method equal.IgnoreCase
(String).
3. Melakukan pembandingan karakter-karakter pada string
Untuk melakukan pembandinan karakter-karakter secara berurutan dari
awal string dapat diiginkan.
4. Mendapatkan karakter pada posisi tertentu
Untuk mendapatkan karakter pada posisi tertentu dapat digunakan method
charAt(int Posisi). Posisi pertama bernilaiinteger 0, hingga posisi
terakhir bernilai N-1 (dengan N adalah panjang string).
5. Mendapatkan posisi karakter pada string.
Untuk mendapatka posisi karakter pada string dapat dilakukan dengan dua
cara sebagai berikut:
36

a. Apabila posisi awal pencarian tidak ditentukan, maka untuk


mendapatkan posisi karakter pada string dapat digunakan
methodindexOf (char Karakter). Apabila karakter tidak ditemukan,

maka akan diberikan nilai-1.


b. Apabila posisi awal pencarian telah ditentukan, maka untuk
mendapatkan posisi karakter pada string dapat digunakan method
indexOf(char Karakter, int Awal). Nilai awal merupakan
bilangan integer yang menunjukkan posisi awal pencarian. Apabila
karakter tidak ditemukan, maka akan diberikan nilai-1.
6. Melakukan konversi huruf besar (kapital) ke huruf kecil
Untuk melakukan konversi huruf besar ke huruf kecil dapat digunakan
method toLowerCase().

7. Melakukan konversi huruf kecil ke huruf besar (kapital)


Untuk melakukan konversi huruf kecil ke huruf besar dapat digunakan
method toUpperCase().
8. Melakukan penyambungan antar dua string
Untuk melakukan penyambungan antar dua string dapat digunakan
operator +.
9. Membuat string baru
Untuk membuat string baru dari string yang sudah pernah ada dapat
dilakukan dengan dua cara sebagai berikut:
a. Untuk membuat string baru dari string yang telah ada mulai dari
karakter awal string dapat digunakan method substring(int awal).
b. Untuk membuat string baru dari string yang telah ada mulai dari
karakter awal hingga karakter akhir string dapat digunakan method
substring(int awal, int akhir).

10. Melakukan modifikasi string


Untuk melakukan modifikasi string dapat dilakukan dengan dua cara
sebagai berikut.
37

a. Untuk me-replace karakter pada string dengan karakter baru dapat


digunakan method replace(char karakterLama, char
baruterbaru)
b. Untuk menghilangkan spasi di awal dan di akhir string dapat digunakan
method trim().
11. Membuat array karakter dari string
Untuk membuat array karakter dari string yang telah ada dapat dilakukan
dengan dua cara sebagai berikut:
a. Menggunakan method toChartArray() yang diperoleh dari class
String. Implementasi dari method ini membutuhkan adanya
pendeklarasian variabel arraychar untuk menampung larik karakter
yang dihasilkan
b. Menggunakan method getChars(int awal, int akhir, char[]
arrayChar, int posAwal), dengan awal merupakan posisi akhir
karakter pada string, arrayChar merupakan variabel untuk menyimpan
larik karakter yang dihasilkan, dan posAwal merupakan indeks awal
untuk menyimpan karakter.

3.3 Pembahasan Praktikum


1. Membuat Array Satu Dimensi
a. Kode program
//sakinah (32601700023
package bab3;
public class latihan1 {
public static void main(String[] args) {

int penjualan[] = {100, 120, 112, 105, 105,


122,108, 121, 122, 130, 115, 125};
int N = penjualan.length;

for (int i=0; i<N; i++){

System.out.println("Penjualan ke-"+i+" =
"+penjualan[i]);
38

}
}
}
b. Output

Gambar 3.1 Output array 1 dimensi


c. Penjelasan
Program pada gambar 3.1 adalah contoh dari array 1
dimensi, dimana pada program tersebut telah dialokasikan memori
sebesar 11, dan akan memberikan nilai 125 untuk penjualan ke-11.
Sintaks untuk mengoprasikam program tersebut adalah for (i=0;
i<N; i++) dimana i sama dengan 0 (nol),i kurang dari N, dan i
akan ditambah sebanyak nilai i, dan untuk menampilkan
hasil menggunakan sintaks System.out.println(“Penjualan
ke-“+i+” = “+penjualan[i]);
2. Membuat program array dua dimensi
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Latihan2 {
public static void main(String[] args) {
double nilai[][]={{50, 60, 70}, {70, 75, 87},{89,
90, 90},{65, 76, 89},{65, 70, 80}};
int N = nilai.length;
char huruf;
for (int i=0;i<N;i++)
{
39

int M = nilai[i].length;
double totNilai=0;
for(int j=0;j<M;j++){
totNilai+= nilai[i][j];
}
double rata2 = totNilai/M;
if (rata2 > 80.0d)
{
huruf='A';
}
else if (rata2 > 70.0d){
huruf='B';
}
else if (rata2 > 60.0d){
huruf='C';
}
else if (rata2 > 50.0d){
huruf='D';
}
else
{
huruf='E';
}
System.out.println("Nilai mahasiswa ke-"+1+"
= "+rata2+" ("+huruf+")");
}
}
b. Output

Gambar 3.2 Output array 2 dimensi


40

c. Penjelasan
Program pada gambar 3.2 adalah program untuk menentukan
nilai mahasiswa, didalam program tersebut menggunakan tipe data
double, integer, dan char. Dalam program diatas terdapat sintaks for

yang berfungsi untuk melakukan perulangan dimana dalam program


terdapat sintaks for (int i=0; i<N; i++); yang dimaksud adalah i
sama dengan 0, i kurang dari N dan i akan ditambah sebanyak nilai i,
kemudian terdapat for (int j=0; j<M; j++); dimana j sama dengan
0, j kurang dari M dan j akan ditambah sebanyak nilai j. Kemudian pada
tipe data double rata2 = totNilai/M terdapat fungsi if (rata2 >
80.0d)dimana jika nilai dari rata2 lebih besar dari 80 maka akan
menampilkan huruf A, dan begitupun selanjutnya.
3. Mengetahui Panjang String
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Latihan3 {
public static void main(String[] args) {
String A = "Pemrograman Berorientasi Object";
String B = "Jurusan Teknik Informatika";
String C, D, E;
C = "Fakltas Teknologi Industri";
D = "Uneversitas Islam Sultan Agung";
E = "Semarang";

int nA = A.length();
int nB = B.length();
int nC = C.length();

System.out.println(A+"--> panjang string: " + nA);


System.out.println(B+"--> panjang string: " + nB);
System.out.println(C+"--> panjang string: " +
C.length());
System.out.println(D+"--> panjang string: " +
D.length());
41

System.out.println(E+"--> panjang string: " +


E.length());
}
}
b. Output

Gambar 3.3 Output panjang string


c. Penjelasan :
Program pada gambar 3.3 adalah program untuk menentukan
panjang string dengan menggunakan metode length().sebelum program
dioperasikan terlebih dulu string A telah diinisialisasikan
“Pemrograman Berorientasi Objek” dan string-string selanjutnya telah
diinisialisasikan sesuai modul. Kemudian program mengeksekusi
fungsi int nA = A.length() yang berfungsi untuk menghitung
panjang string, setelah panjang string didapatkan maka hasilnya akan
dinisialisaikan ke nA untuk nantinya dipanggil untuk keluaran pada
variabel A dan begitupun pada fungsi selanjutnya.
4. Mengetahui kesamaan antara dua String
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Latihan4 {
public static void main(String[] args) {
String A = "Laboratorium Komputasi dan Sistem
Cerdas";
String B = "LABORATORIUM KOMPUTASI DAN SISTEM
CERDAS";
String C = "Laboratorium Komputasi Sistem Cerdas";
42

String D = "LABORATORIUM KOMPUTASI SISTEM CERDAS";


String E = "Laboratorium Komputasi dan Sistem
Cerdas";

boolean tes1, tes2, tes3;


tes1 = A.equals(B);
tes2 = (A==C);

tes3 = A.equals(E);

System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");
System.out.println("===============KESAMAAN DUA
STRING===============");
System.out.println("("+A+") == ("+B+") -->
"+tes1);
System.out.println("("+A+") == ("+C+") -->
"+tes2);
System.out.println("("+A+") == ("+E+") -->
"+tes3);
System.out.println("("+B+") == ("+D+") -->
"+B.equals(D));
System.out.println("("+C+") == ("+E+") -->
"+(C==E));
}

}
b. Output

Gambar 3.4 Output kesamaan dua string


c. Penjelasan
Program pada gambar 3.4 adalah program yang digunakan untuk
mengetahui kesamaan antara dua string. Dimana pada program tersebut
43

hampir sama dengan program latihan 3, yang meninisialisasikan nilai


string nya. Setelah string diinisialisasikan maka fungsi boolean tes1,
tes2, tes3; akan dieksekusi dengan ketentuan tes1 = A.equals
(B) yang dimaksud adalah membandingkan antara string A dan B,
apabila nilai string sama makan menghasilkan true, tapi bila tidak sama
maka akan menampilkan flase. Dan begitupun pada fungsi-fungsi
selanjutnya.
5. Perbandingan karakter pada String
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Latihan5 {
public static void main(String[] args){
String[] nama = {"Megawati Sukarno Putri",
"Susilo BambangYudoyono",
"Jusuf Kalla",
"Prabowo Subiyanto",
"Boediono","Wiranto"};

String sementara;
int N = nama.length;

//menampilkan nama awal sebelum diurutkan


System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");
System.out.println("======Perbandingan Karakter
String======");
System.out.println("Daftar nama sebelum
diurutkan");
for (int i=0; i<N; i++){
System.out.println((i+1)+". "+nama[i]);
}

//pengurutan nama
for (int i=0; i<=N-2; i++)
{
44

for (int j=i+1; j<=N-1; j++)


{
if (nama[i].compareTo(nama[j])>0)
{
sementara = nama[i];
nama[i] = nama[j];
nama[j] = sementara;
}
}
}
//Menampilkan setelah diurutkan
System.out.println("Daftar nama setelah
diurutkan");
for (int i=0; i<N; i++){
System.out.println((i+1)+". "+nama[i]);
}
}
}
b. Output

Gambar 3.5 Output perbandingan karakter string


45

c. Penjelasan
Program pada gambar 3.5 adalah program untuk melakukan
pembandingan karakter-karakter secara berurutan dari awal string,
untuk melakukan pembandingan tersebut dapat digunakan method
compareTo().Sebelumnya program menginisialisai isi untuk string
[] nama, didalam program tersebut juga terdapat fungsi for, yang
berfungsi untuk melakukan pengulangan. Kemudain untuk melakukan
pembandingan karakter-karakter menggunkan fungsi
if(nama[i].compareTo(nama[j])>0) dimana nama [i] akan di
compare ke nama [j]. Didalam fungsi if juga terdapat sementara =
nama[i] dimana yang dimaksud adalah isi dari nama [i]
diinisialisasikan ke sementara, dan begitupun selanjutnya.
6. Mendapatkan karakter pada posisi tertentu
a. Kode program
package Bab3;
import java.util.Random;
//Sakinah (32601700023)
public class Latihan6{
public static void main(String[] args) {
System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");
System.out.println("=====Mendapatkan
Karakter=====");
String A = "Laboratorium Komputasi dan Sistem
Cerdas";
Random rand = new Random();
for (int i=0; i<=10; i++){
int ke = rand.nextInt(A.length());
System.out.println("Karakter ke-"+ke" =
"+A.charAt(ke));
}
}
}
46

b. Output

Gambar 3.6 Output posisi mendapatkan karakter


c. Penjelasan
Program pada gambar 3.6 adalah untuk mendapatkan karakter
pada posisi tertentu dengan menggunkan metode charAt (int posisi),
posisi pertama bernilai integer 0, hingga posisi terakhir bernilai N-1
(dengan N adalah panjang string). Program akan menampilkan karakter
pada posisi tertentu yang diberikan secara acak dan diulang sebanyak
10 kali.
7. Mendapatkan posisi karakter pada String
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Latihan7 {
public static void main(String[] args) {

String A = "Laboratorium Komputasi dan Sistem


Cerdas";

System.out.println("Nama : sakinah");
System.out.println("NIM : 32601700023");
47

System.out.println("=====Posisi Karakter Pada


String=====");
System.out.println("Karakter (s) terletak pada
posisi ke : "+A.indexOf('s'));
System.out.println("Karakter (a) terletak pada
posisi ke : "+A.indexOf('a'));
System.out.println("Karakter (v) terletak pada
posisi ke : "+A.indexOf('v'));
System.out.println("Setelah posisi ke 10,
karakter (s) terletak pada posisi ke :
"+A.indexOf('s',10));
System.out.println("Setelah posisi ke 10,
karakter (a) terletak pada posisi ke :
"+A.indexOf('a',10));
}

b. Output

Gambar 3.7 Output posisi karakter


c. Penjelasan
Program pada gambar 3.7 adalah program untuk mendapatkan
posisi karakter pada string dengan dua cara yaitu apabila posisi awal
48

pencarian tidak ditentukan, maka untuk mendapatkan posisi karakter


pada string dapat digunakan methodindexOf(char Karakter). Apabila
karakter tidak ditemukan, maka akan diberikan nilai -1, dan Apabila
posisi awal pencarian telah ditentukan, maka untuk mendapatkan posisi
karakter pada pada string dapat digunakan methodindexOf
(charKarakter, int Awal). Nilai Awal merupakan bilangan integer
yangmenunjukkan posisi awal pencarian. Apabila karakter tidak
ditemukan, maka akan diberikan nilai -1.
8. Melakukan konversi huruf kecil ke huruf besar (kapital)
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Latihan8 {
public static void main(String[] args) {
String A = "laboratorium Komputasi dan Sistem
Cerdas";
String Besar = A.toUpperCase();
String Kecil = A.toLowerCase();

System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");
System.out.println("=====Konversi huruf kecil ke
besar=====");
System.out.println("Kalimat awal : "+A);
System.out.println("Diubah ke huruf besar :
"+Besar);
System.out.println("Diubah ke huruf kecil :
"+Kecil);
}
}
49

b. Output

Gambar 3.8 Output konversi huruf kecil ke besar


c. Penjelasan
Program pada gambar 3.8 adalah program untuk melakukan
konversi karakter dari huruf kecil ke huruf besar dengan meggunakan
sintaks String Besar = A.toUpperCase();dan untuk melakukan
konversi dari huruf besar ke huruf kecil menggunkan sintaks String
kecil = A.toLowerCase();
9. Melakukan penyambungan antar dua String
a. Kode program
package Bab3_sakinah;
//Sakinah (32601700023)
public class Latihan9 {
public static void main(String[] args) {
String A;
String B;
String C;

A = "Laboratorium ";
B = " Komputasi";
C = " Sistem Cerdas";

String Lab = A + B + C;
System.out.println("Nama : Sakinah");

System.out.println("NIM : 32601700023");
System.out.println("=====Penyambungan antar
string=====");
System.out.println(Lab);
}
50

}
b. Output

Gambar 3.9 Output penyambungan antar string


c. Penjelasan
Program pada gambar 3.9 adalah berfungsi untuk
menyambungkan antara dua string atau lebih dengan menggunkan
operator +. Dalam program diatas terdapat sintaks String Lab = A +
B + C; yang berfungsi untuk menyambungkan beberapa string yang
berada dalam program diatas.
10. Membuat String baru
a. Kode program
package Bab3_sakinah;
//Sakinah (32601700023)
public class Latihan10 {

public static void main(String[] args) {

String A = " Laboratorium Komputasi dan Sistem


Cerdas";

String penggal1 = A.substring(10);

String penggal2 = A.substring(20);

String penggal3 = A.substring(10,30);

String penggal4 = A.substring(20,25);

System.out.println("Nama : sakinah");

System.out.println("NIM : 32601700023");
51

System.out.println("=====Menmbuat String
Baru=====");

System.out.println("Kalimat asli: "+A);

System.out.println("Pemenggalan mulai karakter


ke-10 : "+penggal1);

System.out.println("Pemenggalan mulai karakter


ke-20 : "+penggal2);

System.out.println("Pemenggalan mulai karakter


ke-10 sampai ke-30 : "+penggal3);

System.out.println("Pemenggalan mulai karakter


ke-20 sampai ke-25 : "+penggal4);

}
}
b. Output

Gambar 3.10 Output stirng baru


c. Penjelasan
Program pada gambar 3.10 adalah program untuk membuat string
baru dari string yang sudah pernah ada, yang dapat dilakukan dengan
dua cara yaitu, untuk membuat string baru dari string yang telah ada
mulai dari karakter awal string dapat menggunakan method
substring(int awal),dan untuk membuat string baru dari string
yang telah ada mulai dari karakter hingga karakter akhir string dapat
menggunakan method substring(int awal, int akhir). Seperti
pada program tersebut.
52

11. Melakukan Modifikasi String


a. Kode Program
package Bab3;
//Sakinah (32601700023)
public class Latihan11 {
public static void main(String[] args) {
String A = "Laboratorium Komputasi dan Sistem
Cerdas";

String B = A.replace("a", "A");


String C = A.replace("i", "u");
String D = A.trim();

System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");

System.out.println("Kalimat asli : "+A);


System.out.println("Replace a dengan A: "+B);
System.out.println("Replace i dengan u: "+C);
System.out.println("Hilangkan spasi awal & akhir:
"+D);

}
b. Output

Gambar 3. 11 Output modifikasi string


c. Penjelasan
Program pada gambar 3.11 adalah program untuk melakukan
memodifikasi string. Dengan cara me-replace karakter pada string
dengan karakter baru menggunkan method replace(char karakter
53

lama,char karakter baru),dan untuk menghilangkan spasi di awal


dan di akhir dapat menggunakan method trim().
12. Membuat Array Karakter dari String
a. Kode program
package Bab3;
import java.util.Arrays;
//Sakinah (32601700023)
public class Latihan12 {
public static void main(String[] args) {
String A = "Lab. KSC";
char[] karakter0 = A.toCharArray();
char[] karakter1 = new char[7];
A.getChars(2, 6, karakter1, 1);
System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");

System.out.println("kalimat Asli : "+A);


System.out.println("Per karakter : ");
for (int i=0; i<A.length(); i++){
System.out.println("Karakter ke-"+(i+1)+":
"+karakter0[i]);
}
System.out.println("Karakter ke-2 sampai ke-6 :
");
for (int i=1; i<karakter1.length; i++){
System.out.println("Karakter ke-"+i+":
"+Arrays.toString(karakter1));
}
}
}
54

b. Output

Gambar 3.12 Output array karakter string


c. Penjelasan
Program pada gambar 3.12 adalah program untuk membuat array
karakter dari string yang telah ada, dapat dilakukan dua cara yaitu
dengan menggunkan method to Char Array() yang diperoleh dari
class String. Implementasi dari method ini membutuhkan adanya
pendeklarasian variabel array char untuk menampung larik karakter
yang dihasilkan, dan dengan menggunkan method larik karakter yang
dihasilkan, dan dengan menggunakan method get Char (int awal,
int akhir, char[] array Char, int pos Awal), dengan awal
merupakan posisi awal karakter pada string.

3.4 Tugas
1. Membuat program antrian FIFO
a. Kode program
package Bab3;
//Sakinah (32601700023)
public class Tugas1 {
55

static int ekor = -1;


static int maxEkor = 5;
public static void addQueue(String antrian[], String
data)
{
if (ekor >= maxEkor)
System.out.println("Maaf, antrian penuh");
else
{
ekor++;
antrian[ekor]=data;
}
}
public static String deQueue(String antrian[])
{
String hasil="";
if (ekor<0)
hasil="Maaf, antrian kosong";
else
{
hasil = antrian[0];
antrian[0]=null;
for (int i=1;i<=ekor;i++)
{
antrian[i-1]=antrian[i];
antrian[i]=null;
}
ekor--;
}
return (hasil);
}
public static void bacaAntrian(String antrian[])
{
System.out.println("Kondisi Antrian : ");
for (int i=0;i<=maxEkor;i++)
{
if (i==ekor)
56

System.out.println(i+". "+ antrian[i]+"


ekor");
else if (antrian[i]==null)
System.out.println(i+". ");
else
System.out.println(i+". "+antrian[i]);
}
}
public static void main(String []wawan)
{
System.out.println("Nama : Sakinah");
System.out.println("NIM : 32601700023");
System.out.println("===== Antrian FIFO =====");

String antrian[]=new String [16];


addQueue (antrian, "Mobil A");
addQueue (antrian, "Mobil B");
addQueue (antrian, "Mobil C");
addQueue (antrian, "Mobil D");
addQueue (antrian, "Mobil E");
addQueue (antrian, "Mobil F");

System.out.println("\n");
System.out.println(" ");
bacaAntrian(antrian);
System.out.println("\n\nURUTAN KELUAR\nQueue :
"+deQueue (antrian));
System.out.println("Queue : "+deQueue (antrian));
System.out.println("Queue : "+deQueue (antrian));
System.out.println("Queue : "+deQueue (antrian));
System.out.println("Queue : "+deQueue (antrian));
System.out.println ("\n\nSedangkan Mobil F masih
mengantri");
}
}
57

b. Output

Gambar 3.13 Output tugas 1


c. Penjelasan
Pada gambar 3.13 adalah program antrian FIFO (First In First
Out) atau enqueue. Tipe data yang digunakan yaitu static int. Static
adalah variable atau method yang dideklarasikan dengan perintah static
dapat dipanggil langsung tanpa perlu membuat instance dari class
tersebut. Pada string hasil = “ “; jika ekor kurang dari 0 maka
antrian kosong, selain itu hasil sama dengan [0]; dan antrian [0] sama
dengan null, maka akan tampil isi dari variabel dari hasil yang di
masukkan. Fungsi addQueue digunakan untuk menambahkan elemen
kedalam queue. Dan terdapat juga fungsi dequeue untuk mengambil
elemen satu langkah ke posisi depannya sehingga elemen yang paling
depan tertimpa. Program akan menampilkan sesuai perintah.

3.5 Kesimpulan
Dari praktikum bab 3 ini dapat disimpulkan bahwa array merupakan
tipe data yang digunakan apabila data diberikan berupa kelompok data yang
disajikan secara berurutan. Setiap elemen data memiliki tipe data yang sama.
58

Array menggunakan sekelompok lokasi memori yang berurutan dengan nama


dan tipe data yang berbeda.Besarnya alokasi memori yang akan digunakan
perlu diberikan sebelum variabel bertipe array tersebut digunakan. Apabila
alokasi memori tidak diberikan secara eksplisit, maka Java akan
memberikannya secara implisit. Kemudian, setiap elemen data disebut
dengan nama_variabel_array yang diikuti dengan indeks penomorannya.
Sedangkan String merupakan deretan karakter. Pada java, string merupakan
objek dari kelas String. Penulisan string dilakukan dengan mengapit data
menggunakan tanda petik (ganda). String dapat dioperasikan dengan
menggunakan beberapa operator atau method untuk beberapa kepentingan
yang berbeda.
BAB IV

KONSEP DASAR PEMROGRAMAN JAVA

4.1 Tujuan
Adapun tujuan dari praktikum bab 4 ini adalah sebagai berikut :
1. Praktikan mampu memahami konsep dasar pemrograman java.
2. Praktikan dapat membedakan arti dan pemakaian kelas, objek, refrensi
objek, method, constructor, dan beberapa kata kunci dalam pemrograman
java.

4.2 Dasar Teori


4.2.1 Pengantar Pemrograman Berorientasi Objek
Secara umum, sebuah program computer terdiri atas kode (proses logis
program) dan data yang didapat berupa variabel maupun konstanta. Kode dan
data tersebut kemudian diatur sehingga dapat bekerja sama untuk
menghasilkan program keluaran yang akan digunakan untuk menyelesaikan
sebuah permasalahan.
Pada model pemrograman procedural, alur kerja program berorientasi
pada proses (proses oriented). Program merupakan gabungan dari data dan
kode dengan struktur program yang berupa urutan proses. Pendekatan ini
memiliki kelemahan, yaitu akan menemui banyak kesulitan ketika menangani
kasus-kasus yang kompleks, membutuhkan ribuan baris kode. Kondisi seperti
itu akan menyulitkan programmer dalam melacak kesalahan (debugging),
menyisipkan modul baru dalam modul dan sebaginya.
Pemrograman berorientasi objek hadir untuk menjadi solusi kelemahan
yang terdapat pada pendekatan procedural biasa. Dalam pemrograman
beorientasi objek, pendekatan yang dilakukan adalah dengan memodelkan
sistem menjadi objek – objek. Objek dapat didefinisikan sebagai suatu entitas
yang memiliki data dan method.

59
60

Dalam bab ini akan dibahas konsep-konsep dasar yang merupakan inti
dari pemrograman berorientasi objek.
Beberapa hal yang merupakan keuntungan dari konsep pemrograman
berorientasi objek adalah sebagi berikut :
a. Objek-objek yang dibuat bersifat reusable, sehingga dapat digunakan
untuk program-program lain.
b. Struktur program lebih jelas, trackable, dan mudah untuk dikembangkan.
c. Lebih natural dan alami, karena pendekatan berorientasi objek lebih dekat
dengan realitas yang ada di sekitar kita.

4.2.2 Pengertian Kelas


Kelas merupakan inti dari pemrograman java karena java adalah bahasa
pemrograman yang mendukung dan mengimplementasikan konsep
pemrograman berorientasi objek sepenuhnya. Setiap program java
merupakan kelas, sehingga konsep atau kasus pemrograman yang akan
mengimplementasikan dengan java harus dibungkus ke dalam sebuah kelas.
Kelas dapat didefinisikan sebagai cetak biru (blueprint) atau prototype
/ kerangka yang mendefinisikan variabel-variabel (data) dan method-method
(perilaku) umum dari sebuah objek tertentu. Sebagai contoh, kita ambil objek
Mahasiswa. Mahasiswa memiliki data seperti nim, nama, alamat, IPK, jenis
kelamin, jurusan dan sebagainya. Selain data atau ciri-ciri fisik tersebut,
mahasiswa juga memiliki perilaku-perilaku spesifik yang dapat membedakan
antara mahasiswa yang satu dengan yang lainnya, seperti cara presentasi, cara
belajar, cara mengerjakan tugas dan sebagainya.
Dalam dunia pemrograman, sebenarnya kelas tidak jauh berbeda
dengan tipe data sederhana seperti integer, char, Boolean, dan sebagainya.
Perbedaannya, tipe data sederhana digunakan untuk mendeklarasikan
variabel ‘normal’, sedangkan kelas digunakan untuk mendeklarasikan sebuah
variabel yang berupa objek. Variabel yang berupa objek ini sering disebut
dengan referensi objek (object reference).
61

4.2.3 Mendefinisikan Kelas


Dalam java, kelas didefinisikan dengan menggunakan kata kunci class.
Berikut ini bentuk umum yang digunakan untuk mendefinisikan sebuah kelas.
Class NamaKelas{
Tipe data1;
Tipe data2;

Tipe dataN;
Tipe method1(daftar-parameter){
//kode untuk method1
}
Tipe method2(daftar-parameter){

//kode untuk method2

Tipe method(daftar-parameter){

//kode untuk method

Data atau variabel yang didefinisikan didalam sebuah kelas sering


disebut dengan instance variable yang selanjutnya akan diakses melalui
method-method yang ada. Data dan method yang tergabung dalam suatu kelas
sering dinamakan sebagai class members.

4.2.4 Contoh Kelas Sederhana


Pada bagian ini akan diberikan pembahasan terkait dengan pembuatan
sebuah kelas sederhana. Disini kita akan membuat kelas Karyawan, yang
memiliki data-data : ID, nama, divisi dan gaji. Untuk saat ini, belum
ditambahkan method ke dalam kelas tersebut. Method akan dibahas terpisah
pada bagian selanjutnya dalam bab ini.
Objek aktual dari sebuah kelas harus dibuat sendiri melalui kode berikut :
//membuat objek karyawan dengan nama Aurel
62

Karyawan Aurel = new Karyawan();


Di sini, Karyawan adalah kelas dan Aurel adalah objek atau instance
dari kelas Karyawan. Melalui objek Aurel, kita dapat mengakses dan
memanipulasi data-data yang terdapat pada kelas Karyawan, dengan cara
menggunakan dat-data yang terdapat pada kelas Karyawan, dengan cara
menggunakan perator titik (.), seperti yang tampak pada kode di bawah ini.
Aurel.ID = “K001”;
Aurel.nama = “Aurel Dian”;
Aurel.divisi = “Marketing”;
Aurel.gaji = “2500000”;
Kode tersebut digunakan untuk mengisikan nilai kedalam data ID,
nama, divisi dan gaji yang dimiliki oleh objek Aurel masing-masing dengan
nilai “K001”, “Aurelia Dian”, “Marketing” dan 2500000.
Perlu diketahui bahwa setiap objek atau instance dari suatu kelas akan
memiliki Salinan data sendiri-sendiri. Ini artinya, antara objek satu dengan
yang lainnya, nilai data-datanya bisa berbeda.

4.2.5 Instansiasi Objek


Untuk membuat objek baru dari tipe kelas yang telah didefinisikan
secara eksplisit, kita perlu melakukan dua tahap. Pertama, kita perlu
mendeklarasikan variabel yang digunakan sebagai referensi ke objek dari
kelas bersangkutan. Kedua, kita perlu menginstansiasi kelas dengan
menggunakan operator new dan memasukkan instance-nya kedalam variabel
referensi yang baru saja dideklarasikan. Operator new secara dinamis akan
mengalokasikan ruang memori untuk menyimpan suatu objek tertentu dan
mengembalikan nilai berupa referensi ke objek bersangkutan.
Berikut ini kode yang mengilustrasikan dua tahapan proses yang di
maksud di atas. Untuk mempermudah pembahasan, disini masih
menggunakan kelas Karyawan yang telah dibuat sebelumnya.
// mendeklarasikan variabel Aurel bertipe Karywan
Karyawan Aurel;
//instansiasi & memasukkan referensi ke variabel Aurel
Aurel = new Karyawan();
63

Pada praktiknya, dua tahap di atas biasanya ditulis dalam satu baris,
seperti berikut :
Karyawan Arena = new Karyawan();

4.2.6 Mengisi Nilai Pada Referensi Objek


Terdapat satu buah catatan penting yang perlu diperhatikan pada ssat
kita memasukkan nilai pada sebuah variabel referensi. Sebelumnya,
perhatikan terlebih dahulu kode berikut :
Karyawan Karyawan001, karyawan002;
Karyawan001 = new Karyawan();
Karyawan002 = Karyawan001;
Baris pertama digunakan untuk mendeklarasikan variabel referensi ke
objek Karyawan dengan nama Karyawan001 dan Karyawan002. Baris kedua
berfungsi untuk membuat objek Karyawan dan menyimpan referensinya ke
dalam variabel Karyawan001. Dan baris ketiga digunakan untuk
memasukkan Karyawan001 ke dalam Karyawan002. Ini artinya, variabel
Karyawan002 berperan sebagai referensi ke objek yang sedang ditunjuk oleh
Karyawan001. Dengan demikian, variabel Karyawan001 dan Karyawan002
masing-masing menunjuk ke objek Karyawan yang sama. Maka dari itu,
setiap perubahan yang terjadi pada objek bersangkutan melalui Karyawan001
akan berpengaruh juga pada objek yang ditunjuk oleh Karyawan002, karena
keduanya sebenarnya adalah objek yang sama, begitu pula sebaliknya.

4.2.7 Method
Dalam java, kelas berisi kumpulan data dan method yang selanjutnya
akan saling bekerja sama dalam melakukan tugas-tugas spesifik tertentu
dengan perilaku objek yang dimodelkan.
Berikut ini bentuk umum dari pembuatan method di dalam kelas.
Tipe namaMethod(daftar-parameter){
//kode yang akan dituliskan
}
Pada bentuk umum di atas, tipe adalah tipe data yang dikembalikan oleh
method. Sebagai catatan dalam java method terbagi menjadi dua : void dan
64

non-void. Method void adalah method yang tidak mengembalikan nilai,


sedangkan method non-void adalah method yang mengembalikan nilai. Jika
method yang kita buat ditujukan untuk mengembalikan suatu nilai tertentu,
maka dalam method tersebut harus dapat statement return, yang diikuti
dengan nilai yang akan dikembalikan, seperti berikut :
Return nilaiKembalian;
Nilai kembalian dapat berupa konstanta maupun variabel, yang
digunakan untuk menandakan nilai yang akan dikembalikan oleh method.

4.2.8 Mendefinisikan Method


Setelah mengetahui bentuk umum yang digunakan, di sini kita akan
langsung mendefinisikan sebuah contoh method ke dalam kelas yang
sebelumnya kita buat, yaitu kelas LapanganFutsal. Kita akan menambahkan
method cetak Pengelola () untuk mencetak nama pengelola dari objek
LapanganFutsal. Method ini merupakan method yang tidak mengembalikan
nilai. Maka dari itu, kita harus mengganti tipe kembalian dengan kata kunci
void
Pemanggilan method dalam suatu kelas dilakukan dengan menuliskan
objek pemiliknya dan diikuti oleh operator titik (.) beserta nama method yang
akan dieksekusi. Berikut ini contoh kode yang digunakan untuk memanggil
method cekData()yang telah dideklarasikan didalam kelas Karyawan.
//memanggil method cekData
Karyawan001.cekData();
Hasil yang diberikan oleh method cekData()akan menyesuaikan
dengan data-data yang tersimpan pada objek dimana cetakData tersebut
dideklarasikan.

4.2.9 Pengembalian Nilai Di Dalam Method


Sekarang kita akan melanjutkan pembahasan dengan memperlihatkan
cara pendefinisian method yang dapat mengembalikan nilai. Method yang
mengembalikan nilai akan menghasilkan nilai ketika method ini dipanggil.
Untuk mengembalikan nilai harus menggunakan keyword return. Yang perlu
65

diperhatihan tipe data yang dikembalikan harus sama dengan tipe data nilai
yang dikembalikan. Cara kerja method non-void sama seperti fungsi
(function). (Timposu, 2016)

4.2.10 Method Berparameter


Pada kenyataannya sebagian besar method yang ditulis dalam program
memiliki satu atau beberapa parameter. Dengan adanya parameter, sebuah
method dapat bersifat dinamis dan general. Artinya, method tersebut dapat
mengembalikan nilai yang beragam sesuai dengan nilai parameter yang
dilewatkannya. Coba perhatikan terlebih dahulu pendefinisian method tanpa
parameter berikut ini.
double volumeTabung() {
return (3.14 * 7 * 10)
}
Secara sintaks, method diatas benar dan akan mengembalikan nilai
1538.5. Namun, dilihat dari sisi desain program, method diatas dikatakan
tidak fleksibel atau tidak bersifat general. Pasalnya, method tersebut hanya
dapat digunakan untuk tabung yang memiliki jari-jari alas 7 dan tinggi 10.
Bagaimana jika terdapat tabung dengan jari-jari alas 10 dan tinggi 12 ?
Method diatas tidak dapat digunakan untuk menghitung volume dari tabung
dengan ukuran tersebut. Untuk mengatasi hal semacam ini, maka Java
mengizinkan kita untuk menempatkan parameter di dalam sebuah method
agar method di atas dapat digunakan untuk segala ukuran tabung. Berikut
ini kode yang seharusnya dituliskan untuk mendefinisikan method di atas.
double volumeTabung(int jejari, int tinggi){
return (3.14 * jejari * tinggi); }
Melalui cara seperti ini, kita dapat melewatkan nilai berapa pun ke
dalam method tersebut. Sebagai contoh, perhatikan kode berikut:
Int volume1, volume2, volume3;
//menghasilkan nilai 1538.6
volume1 = volumeTabung(7,10)
//menghasilkan nilai 3768
Volume2 = volumeTabung(10,12)
66

//menghasilkan nilai 4019.2


Volume2 = volumeTabung(8,20)
Seperti kita lihat, volume1 merupakan variabel penampung untuk
perhitungan volume tabung dengan jari-jari alas 7 dan tinggi 10, volume2
dengan jari-jari alas 10 dan tinggi 12, dan volume3 dengan jari-jari alas 8
dan tinggi 20; padahal method yang didefinisikan hanya satu (bukan tiga
buah method).

4.2.11 Constructor
Constructor adalah method khusus yang didefinisikan di dalam kelas
dan akan dipanggil secara otomatis tiap kali terjadi instansiasi objek.
Constructor itu sendiri berfungsi untuk melakukan inisialisasi nilai terhadap
data-data yang terdapat pada kelas yang bersangkutan. Jika kita tidak
mendefinisikan constructor pada kelas yang kita buat, maka secara otomatis
Java akan membuatkannya untuk kita. Constructor semacam ini dinamakan
dengan default constructor. Default constructor akan menginisialisasi
semua data yang ada dengan nilai nol. Sama halnya seperti method,
constructor juga dapat memiliki parameter dan juga dapat di-overload.

4.2.12 Kata Kunci This


Pada kasus-kasus tertentu, terkadang method perlu mengacu ke objek
yang memilikinya. Untuk mengizinkan hal ini, Java menyediakan kata
kunci this. this sebenarnya merupakan referensi ke objek yang sedang aktif.
this digunakan di dalam method untuk mewakili nama kelas bersangkutan.
Sebagai contoh, perhatikan kode berikut ini.

//constructor kelas Karyawan


Karyawan (String kode, String Nama, String Div, double Gaji)
{
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;}
67

Sebenarnya kode di atas juga dapat ditulis dengan menggunakan


referensi this, seperti berikut:
//contructor kelas Karyawan
Karyawan (String kode, String Nama, String Div, double Gaji)
{
this.ID = kode;
this.nama = Nama;
this.divisi = Div;
this.gaji = Gaji;
}
Untuk kasus di atas, kehadiran kata kunci this memang justru akan
sedikit merepotkan dan bias dikatakan tidak perlu. Meskipun demikian,
dalam konteks lain, penggunaan kata kunci this ini justru diharuskan.
Seperti yang telah kita ketahui bersama, Java tidak mengizinkan kita
untuk mendeklarasikan variabel dengan nama sama di dalam satu blok
tertentu. Di sisi lain, Java memperbolehkan kita untuk mendeklarasikan
nama parameter yang sama dengan nama data yang terdapat di dalam kelas
dengan resiko variabel yang digunakan sebagai parameter akan menimpa
nama data yang terdapat di dalam kelas bersangkutan. Untuk menghindari
proses penimpaan variabel ini, maka kita harus menggunakan kata kunci
this, seperti yang tampak pada kode berikut:
//constructor kelas Karyawan
Karyawan (String ID, String nama, String divisi, double gaji)
{
this.ID = ID;
this.nama = nama;
this.divisi = divisi;
this.gaji = gaji;
}
Di sini, this.ID, this.nama, this.divisi, dan this.gaji menunjuk ke data
ID, nama, divisi, dan gaji yang terdapat dalam kelas Karyawan; bukan
parameter yang terdapat pada constructor.
68

4.2.13 Melakukan Overload Terhadap Method


Kita dapat mendefinisikan lebih dari satu method dengan nama yang
sama dalam sebuah kelas, dengan syarat parameter yang terdapat pada
method-method tersebut berbeda. Parameter dalam suatu method dikatakan
berbeda dari method yang lainnya apabila :
a. Jumlahnya berbeda, meskipun tipe datanya sama
b. Tipe daatanya berbeda, meskipun jumlahnya sama
c. Jumlah dan tipe datanya berbeda
Proses pendefinisian method dengan nama sama ini disebut dengan
overload.

4.2.14 Overload Pada Constructor


Selain pada method, proses overload juga dapat diaplikasikan ke dalam
constructor suatu kelas. Hal ini disebabkan karena sebenarnya constructor
juga adalah sebuah method yang mengembalikan tipe kelas (dirinya
sendiri). Pada kenyataannya, suatu kelas pada umumnya justru memiliki
lebih dari satu constructor.

4.2.15 Menentukan Tingkat Akses Data dan Method


Seperti yang telah dibahas pada bab-bab sebelumnya, dalam
pembungkusan (encapsulation), sebenarnya kita menggabungkan data dan
kode (method) menjadi satu. Pada situasi semacam ini, kita dapat
menentukan tingkat akses dari data dan method tersebut menggunakan kata
kunci private, public, maupun protected.
Dalam pemrograman berorientasi objek, data pada umumnya didesain
untuk bersifat private atau hanya dapat diakses oleh kelas yang memilikinya
saja. Pengaksesan data dari bagian luar hanya dapat dilakukan melalui
method-method yang ada. Ini artinya, method berperan sebagai antarmuka
(interface). Maka dari itu, method pada umumnya bersifat public. Meskipun
demikian, apabila kita ingin mendefinisikan method yang hanya dapat
diakses oleh kelas itu sendiri, maka kita pun harus mendeklarasikannya
dengan kata kunci private. Dan jika kita menginginkan data dan method
69

yang kita definisikan di dalam kelas hanya dapat diakses oleh kelas-kelas
turunan dari kelas yang bersangkutan, maka data dan method tersebut harus
dideklarasikan dengan kata kunci protected.
Secara umum, pembungkusan data dan method dari suatu kelas dapat
dituliskan seperti berikut:
class NamaKelas { tingkat-akses data1; tingkat-akses data2;
…. tingkat-akses dataN;
tingkat-akses method1(daftar-parameter) {
//kode untuk method1
}
tingkat-akses methodN(daftar-parameter) {
//kode untuk methodN
} …. tingkat-akses methodN(daftar-parameter) {
//kode untuk methodN
}
}
Dalam hal ini tingkat-akses adalah salah satu dari kata kunci private,
public, maupun protected. Apabila kita tidak mencantumkan salah satu kata
kunci tersebut pada saat mendeklarasikan data maupun method, maka secara
default Java akan menganggapnya sebagai data atau method dengan sifat
public.
Berikut ini contoh program yang akan menunjukkan pengaruh dari
tingkat akses public dan private di dalam suatu kelas. Tingkat akses
protected akan dijelaskan lebih lanjut pada bab lain di modul ini, yaitu yang
membahas mengenai pewarisan sifat terhadap kelas turunan (inheritance).

4.2.16 Kata Kunci Static


Secara normal, suatu anggota kelas (baik data maupun method) hanya
dapat diakses melalui objek referensinya. Meskipun demikian, Java
mengizinkan kita untuk mengakses suatu anggota kelas tanpa harus
membuat objek atau instance-nya terlebih dahulu. Untuk membuat anggota
kelas semacam ini, kita harus menjadikan data atau method tersebut dengan
sifat statis, yaitu dengan membubuhkan kata kunci static pada awal
70

deklarasi. Berikut ini contoh pendeklarasian sebuah data dan method statis
dalam suatu kelas.
class ContohDeklarasiStatik { //mendeklarasikan data statis
static int dataStatis1;
….
//mendeklarasikan method statis
Static methodStatis1() {….} ….
}
Melalui cara ini, variabel dataStatis1 dan methodStatis1() dapat
dipanggil secara langsung tanpa harus membuat objek atau instance dari
kelas ContohDeklarasiStatik terlebih dahulu.Sama halnya seperti data dan
method normal (non-statis), data dan method statis juga dapat dipanggil
melalui operator titik (.). Perbedaannya, pemanggilan data atau method
statis tidak perlu menggunakan objek referensi, melainkan nama kelas yang
memilikinya.
Bentuk umum dari pengaksesan data dan method statis dapat dituliskan
sebagai berikut:
NamaKelas.data
Atau
NamaKelas.method()

4.2.17 Kata Kunci Final


Dalam java, kata kunci final dapat user gunakan untuk mendeklarasikan
sebuah konstanta. Jika user ingin menggunakan kata kunci final untuk
mendeklarasikan suatu variabel sebagai konstanta, maka user perlu
mengisikan nilai ke dalam variabel tersebut. nilai tersebut akan bersifat tetap
atau tidak dapat diubah selama eksekusi program berlangsung. Berikut ini
bentuk umum dari pendeklarasikan sebuah konstanta di dalam Java.
tingkat-akses final tipe-data nama-konstanta = nilai;
Seperti halnya pada bahasa C/C++, dalam Java, konstanta pada
umumnya ditulis dengan huruf kapital. Berikut ini beberapa contoh
pendeklarasian konstanta.
71

Berikut ini contoh program yang akan menunjukkan penggunaan kata


kunci final untuk mendeklarasikan sebuah konstanta.
final double PHI = 3.14; private final int ERROR = -1;
private final String NEGARA = “INDONESIA”;

4.2.18 Kelas di dalam kelas (Inner Class)


Java mengizinkan user untuk mendefinisikan suatu kelas di dalam kelas
lainnya. Kelas semacam ini dinamakan sebagai inner class (kelas bagain
dalam). Inner class dapat mengakses data dan method dari kelas yang berada
di bagian luarnya, meskipun data dan method tersebut bersifat private.

4.3 Pembahasan Praktikum


Lakukan praktek diatas sebagai bentuk latihan dan lakukan evaluasi
1. Latihan 1
Contoh instansi objek dan pengaksesan data pada objek
a. Kode program
//sakinah(32601700023)
package latihan1_bab4;
public class latihan1bab4 {
public static void main(String[] args) {
Karyawan Aurel = new Karyawan();

Aurel.ID = "K001";
Aurel.divisi = "Marketing";
Aurel.nama = "Aurel Dian";
Aurel.gaji = 2500000;

System.out.println("Data Karyawan");
System.out.println("ID : "+Aurel.ID);
System.out.prsssintln("Nama : "+Aurel.nama);
System.out.println("Divisi : "+Aurel.divisi);
System.out.println("Gaji : "+Aurel.gaji);
}
}
72

b. Output

Gambar 4. 1 Hasil Output latihan 1


c. Penjelasan
Kode program pada gambar 4.1 menunjukkan contoh
implementasi dari kelas Karyawan yang telah dibuat sebelumnya,
yaitu dimulai dengan membuat objek Karyawan, mengisi nilai ke
dalam data-data yang dimiliki oleh objek Karyawan yang telah
diinstansiasi, kemudian mencetak data-data objek Karyawan tersebut.
Kode diatas digunakan untuk mengisikan nilai kedalam data ID,
nama, divisi dan gaji yang dimiliki oleh objek Aurel masing-masing
dengan nilai “K001”, “Aurelia Dian”, “Marketing” dan 2500000.
Setelah itu user menampilkan dengan langsung menggunakan source
code System.out.println();
2. Latihan 2
Contoh instansiasi lebih dari satu objek dari satu kelas yang sama
a. Kode program
//sakinah(32601700023)
package latihan2_bab4;
public class latihan2_bab4 {
public class ImplementasiKelasKaryawan {
String ID,nama,divisi;
double gaji;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//membuat objek karyawan dengan nama Aurel
73

Karyawan Aurel = new Karyawan();


//membuat objek karyawan dengan nama Dhennis
Karyawan Dhennis = new Karyawan();
//mengisi nilai kedalam data-data Objek Karyawan2
Aurel.ID = "K001";
Aurel.nama = "Marketing";
Aurel.divisi = "Aurel Dian";
Aurel.gaji = 2500000;
//mengisi nilai kedalam data-data Objek Karyawan2
Dhennis.ID = "K002";
Dhennis.nama = "Keuangan";
Dhennis.divisi = "Muhamad Dhennis";

Dhennis.gaji = 2250000;
//mencetak data-data object karyawan ke-1
System.out.println("ID : " + Aurel.ID);
System.out.println("Nama : " + Aurel.nama);
System.out.println("Divisi : " + Aurel.divisi);
System.out.println("Gaji : " + Aurel.gaji);
//mencetak data-data object karyawan ke-2
System.out.println("ID : " + Dhennis.ID);
System.out.println("Nama : " + Dhennis.nama);
System.out.println("Divisi : " + Dhennis.divisi);
System.out.println("Gaji : " + Dhennis.gaji);
}
}

b. Output

Gambar 4. 2 Hasil Output latihan 2


74

c. Penjelasan
Program pada gambar 4.2 adalah implementasi dari
classkaryawan. Pada program tersebut terdapat class Karyawan yang
berisi variabel ID, nama, divisi yang bertipe data string dan variabel
gaji yang bertipe data double. Program akan membuat object
karyawan yaitu Aurel dan Dhennis. Lalu program akan memasukan
nilai kedalam data object Aurel dan Dhennis seperti ID, nama, divisi
dan juga gaji. Setelah itu program akan mencetak data dalam object.
3. Latihan 3
Contoh pengaruh refrensi objek (1)
a. Kode program
//sakinah(32601700023)
package latihan3_bab4;
public class latihan3_bab4 {
String ID, nama, divisi;
double gaji;

public static void main(String[] args) {


/*Instansiasi 2 objek referensi yang mengacu pada
1
objek karyawan */
karyawan Karyawan001 = new karyawan();
karyawan Karyawan002 = Karyawan001;
//mengisi data Objek Karyawan melalui objek referensi 1
Karyawan001.nama = "Mischella";
Karyawan001.divisi = "HRD";
//mencetak data object karyawan yang di acu 2 objek
referensi
System.out.println("Data Karyawan001");
System.out.println("Nama : " + Karyawan001.nama);
System.out.println("Divisi : " + Karyawan001.divisi);
System.out.println(" ");
System.out.println("Data Karyawan002");
System.out.println("Nama : " + Karyawan002.nama);
System.out.println("Divisi : " + Karyawan002.divisi);
75

}
}
b. Output

Gambar 4. 3 Hasil Output latihan 3


c. Penjelasan
Program dari gambar 4.3 tampak bahwa kita hanya
memasukkan nilai untuk objek karyawan001, namun pada saat kita
mencetak data pada karyawan002, hasil yang diberikan adalah sama
seperti yang dihasilkan oleh karyawan001. Ini disebabkan karena
karyawan001 dan karyawan002 sebenarnya menunjuk ke objek
Karyawan yang sama. Saat dieksekusi, program tersebut di atas akan
memberikan hasil yang sama.
Sebagai catatan penting, meskipun keduanya menunjuk ke
objek yang sama, akan tetapi tidak terdapat hubungan antara variabel
karyawan001 dan karyawan002. Artinya, kita bisa saja melepas salah
satu variabel tersebut untuk menunjuk ke objek lain, tanpa
berpengaruh terhadap variabel lainnya.
4. Latihan 4
Contoh pengaruh refrensi objek (2)
a. Kode program
//sakinah (32601700023
package latihan4_bab4;
public class karyawan {
String ID,nama,divisi;
double gaji;
76

public static void main(String[] args) {


// TODO code application logic here
/*Instansiasi 2 objek referensi yang mengacu pada
1 objek karyawan */
karyawan karyawan001 = new karyawan();
karyawan karyawan002 = karyawan001;
//mengisi data Objek Karyawan melalui objek
referensi 1
karyawan001.nama = "Mischella";
karyawan001.divisi = "HRD";
//mencetak data object karyawan yang di acu 2
objek referensi
System.out.println("Data Karyawan001");
System.out.println("Nama : " +
karyawan001.nama);
System.out.println("Divisi : " +
karyawan001.divisi);
System.out.println(" ");
System.out.println("Data Karyawan002");
System.out.println("Nama : " +
karyawan002.nama);
System.out.println("Divisi : " +
karyawan002.divisi);
//memindahkan objek referensi ke-2 untuk mengacu
objek baru
karyawan002 = new karyawan();
karyawan002.nama="Yahya Al-Mahandis";
karyawan002.divisi="Produksi";
//mencetak data objek setelah perubahan
referensi
System.out.println(" ");
System.out.println("Setelah Perubahan
Referensi");
System.out.println(" ");
System.out.println("Data Karyawan001");
System.out.println("Nama : " +
karyawan001.nama);
System.out.println("Divisi : " +
77

karyawan001.divisi);
System.out.println(" ");
System.out.println("Data Karyawan002");
System.out.println("Nama : " +
karyawan002.nama);
System.out.println("Divisi : " +
karyawan002.divisi);
}
}
b. Output

Gambar 4. 4 Hasil Output latihan 4


c. Penjelasan :
Pada program gambar 4.4 merupakan program pengaruh referensi
object. Pada program tersebut terdapat class Karyawan yang berisi
variabel ID, nama, divisi yang bertipe data string dan variabel gaji
yang bertipe data double. Lalu program akan instansiasi 2 object
referensi yang mengacu pada 1 object Karyawan. Setelah itu program
akan mengisi data object Karyawan melalui object referensi. Setelah
itu program akan memindahkan memindakah object referensi ke 2
untuk mengacu pada object baru. Kemudian program akan mencetak
data object setelah di referensi
Dari hasil tersebut dapat terlihat bahwa pada saat variabel
karyawan002 dipindahkan untuk menunjuk ke objek lain (terjadi
78

perubahan referensi objek), data-data karyawan002 yang dicetak akan


berbeda dengan data-data dari karyawan001.
5. Latihan 5
Penambahan method void pada pendeklarasian kelas karyawan
a. Kode program
 ImplementasiMethodVoid.java
//sakinah(32601700023)
package latihan5_bab4;
public class ImplementasiMethodVoid { public static
void main(String[] args) {
//instansiasi objek karyawan
karyawan karyawan001 = new karyawan();
//mengisi data pada objeck karyawan
karyawan001.ID = "K001";
karyawan001.nama = "Agus Ramadhan";
karyawan001.divisi = "Keuangan";
karyawan001.gaji = 185.0000;
//memanggil method cetakData();
karyawan001.cetakData();
}
}
 Karyawan.java
//sakinah(32601700023)
package latihan5_bab4;
public class karyawan {
String ID, nama, divisi;
Double gaji;
void cetakData() {
System.out.println("Data karyawan ");
System.out.println("ID : " + ID);
System.out.println("Nama : " + nama);
System.out.println("Divisi : " + divisi);
System.out.println("Gaji : " + gaji);
}
}
79

b. Output

Gambar 4. 5 Hasil Output latihan 5


a. Penjelasan
Program pada gambar 4.5 merupakan program pemanggilan
method. Pada program tersebut terdapat classKaryawan yang berisi
variabel ID, nama, divisi,yang bertipe data String dan variabel gaji
bertipe data double. Dana juga pada class ImplementasiMethodVoid.
Pada class ImplementasiMethodVoid program akan membuat
objectkaryawan001. Lalu program akan mengisi data kedalam
objectkaryawan001seperti ID, nama, divisi, dan gaji. Setelah itu
program akan menjalankan method cetak Data() yang ada pada
classKaryawan sehingga akan muncul tampilan seperti pada gambar
4.5.
6. Latihan 6
Contoh pemanggilan methodnon-void
a. Kode program
 ImplementasiMethodNonVoid.java
//sakinah(32601700023)
package latihan6_bab4;
public class ImplementasiMethodNonVoid { public
static void main(String[] args) {
//instantiasi objek Karyawan
karyawan karyawan001 = new karyawan();
//mengisi data pada objek Karyawan
karyawan001.ID = "K001";
karyawan001.nama = "Agus Ramadhan";
karyawan001.divisi = "Keuangan";
karyawan001.gaji = 1850000;
80

//memanggil method cetakDAta()


karyawan001.cetakData();
//memanggil method hiungSumbanganZakat()
System.out.println("Sumbangan Zakat : " +
karyawan001.hitungSumbanganZakat());
}
}
 Karyawan.java
//sakinah(32601700023)
package latihan6_bab4;
public class karyawan {
String ID, nama, divisi;
double gaji;
void cetakData() {
System.out.println("Data Karyawan : ");
System.out.println("ID : " + ID);
System.out.println("Nama : " + nama);
System.out.println("Divisi : " + divisi);
System.out.println("Gaji : " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
}

b. Output

Gambar 4. 6 Hasil Output latihan 6


81

c. Penjelasan
Pada gambar 4.6 merupakan program pemanggilan method.
Pada program tersebut terdapat class Karyawan yang berisi method
cetakData dan juga method hitung Sumbangan Zakatdan juga
terdapat class ImplementasiMethodVoid1. Pada class
ImplementasiMethodVoid1 program akan membuat object baru
bernama karyawan001.Lalu program akan mengisi data kedalam
objectkaryawan001seperti ID, nama, divisi, dan gaji. Setelah
itu program akan memanggil methodvoid cetakData()yang ada pada
class Karyawan. Pada class Karyawan, method void
cetakData()akan menampilkan data karyawan seperti ID, nama,
divisi, dan juga gaji. Sedangkan pada methodhitungSumbanganZakat
program akan menghitung zakat berdasarkan perintah zakat = gaji
* 0,025. Apabila dijalankan program akan menampilkan tampilan
seperti pada gambar 4.6
7. Latihan 7
Pemanggilan method berparameter pada class karyawan
a. Kode program
 ImplementasiMethodBerparameter.java
//sakinah (32601700023)
package latihan7_bab4;
public class ImplementasiMethodBerparameter {
public static void main(String[] args) {
//instatiasi objek Karyawan
karyawan karyawan001 = new karyawan();
/*mengisi data pada objek Karyawan
melalui method isiData()*/
karyawan001.isiData("k001", "Rommy",
"Marketing", 2350000);
//memanggil method cetakData();
karyawan001.cetakData();
}
}
82

 karyawan.java
//sakinah(32601700023)
package latihan7_bab4;
public class karyawan {
String ID, nama, divisi;
double gaji;
void isiData(String kode, String Nama, String
Div, double Gaji) {
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;
}
void cetakData() {
System.out.println("Data Karyawan : ");
System.out.println("ID : " + ID);
System.out.println("Nama : " + nama);
System.out.println("Divisi : " + divisi);
System.out.println("Gaji : " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
b. Output

Gambar 4. 7 Hasil Output latihan 7


c. Penjelasan
Pada gambar 4.7 mendefinisikan method yang tidak
mengembalikan nilai dan memiliki empat (4) buah parameter, yaitu
83

kode, Nama, Div, dan Gaji. Parameter ini selanjutnya dapat diisi
dengan nilai yang dikehendaki pada saat proses pemanggilan method
tersebut. Dalam contoh di atas, kita melewatkan nilai “K001”,
“Arzam”, “Marketing”, dan 2350000 sebagai argumen dari method
isiData() untuk mengisikan data ID, nama, divisi, dan gaji dari objek
Karyawan.
8. Latihan 8
Instansiasi objek karyawan dengan menggunakan contructor
a. Kode program
 ImplementasiMethodConstructor.java
//sakinah(32601700023)
package latihan8_bab4;
public class ImplementasiContructor { public static
void main(String[] args) {
karyawan karyawan001 = new karyawan();
karyawan001.cetakData();
}
}
 karyawan.java
//sakinah(32601700023)
package latihan8_bab4;
public class karyawan {
String ID, nama, divisi;
double gaji;
//constructor kelas karyawan
karyawan() {
ID = "k001";
nama = "Budi";
divisi = "Produksi";
gaji = 1750000;
}
void cetakData() {
System.out.println("Data Karyawan :");
System.out.println("ID : " + ID);
System.out.println("Nama : " + nama);
84

System.out.println("Divisi : " + divisi);


System.out.println("Gaji : " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
}
b. Output

Gambar 4. 8 Hasil Output latihan 8

c. Penjelasan
Pada gambar 4.8 user mengisikan nilai awal untuk data ID,
nama, divisi, dan gaji masing-masing dengan nilai “K001”, “Arzam”,
“Produksi”, dan 1750000. Hal ini berlaku untuk setiap pembentukan
objek Karyawan.
Proses inisialisasi dengan cara tersebut masih dapat dikatakan
kurang dinamis. Pasalnya, setiap kali pembentukan objek Karyawan,
nilai yang dijadikan nilai awal selalu “K001”, “Arzam”, “Produksi”,
dan 1750000. Untuk menjadikan constructor lebih bersifat dinamis,
maka kita dapat membubuhkan parameter ke dalamnya. Hal ini mirip
dengan implementasi method isiData()pada pembahadan method
berparameter yang sebelumnya sudah dibahas.
85

9. Latihan 9
Instansiasi objek karyawan dengan menggunakan constructor dinamis
a. Kode program
 ImplementasiConstructorDinamis.java
//sakinah(32601700023)
package latihan9_bab4;
public class ImplementasiConstructorDinamis {
public static void main(String[] args) {
karyawan karyawan001 = new karyawan("k005",
"Bella", "HRD", 2150000);
karyawan001.cetakData();
}
}
 karyawan.java
//sakinah(32601700023)
package latihan9_bab4;
public class karyawan {
String ID, nama, divisi;
double gaji;
//constructor kelas Karyawan
karyawan(String kode, String Nama, String Div,
double Gaji) {
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;
}
void cetakData() {
System.out.println("Data Karyawan :");
System.out.println("ID : " + ID);
System.out.println("Nama : " + nama);
System.out.println("Divisi : " + divisi);
System.out.println("Gaji : " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
86

}
}
b. Output

Gambar 4. 9 Hasil Output latihan 9


c. Penjelasan
Pada gambar 4.9 merupakanprogram implementasi constructor
dinamis. Pada program tersebut terdapat classKaryawan yang berisi
constructor, methodvoid cetakData(), dan juga method
hitungSumbanganZakat dan juga terdapat class
ImplementasiConstructorDinamis.

Pada class ImplementasiConstructorDinamis program akan


membuat object baru bernama karyawan001. Lalu program akan
memasukkan data kedalam objectkaryawan001 seperti ID, nama,
divisi, dan gaji. Setelah itu program akan memanggil
methodcetakData(). Pada class Karyawan, terdapat constructor
yang dapat digunakan untuk memasukkan data kedalam
objectkaryawan karyawan001 yang sebeumnya sudah dimasukkan.
Apabila dijalankan program akan menampilkan seperti gambar 4.9.
10. Latihan 10
a. Kode program
/sakinah(32601700023)
package latihan10_bab4;
public class OverLoadMethod {
public static void main(String[] args) {
Pembagian b = new Pembagian();
int x = b.bagi(10, 4);
double y = b.bagi(10.0, 4.0);
87

System.out.println("Hasil bagi tipe int =" + x);


System.out.println("Hasil bagi tipe double =" + y);
}
}
//sakinah(32601700023)
package latihan10_bab4;
public class pembagian {
//method dengan dua parameter bertipe int
int bagi(int a, int b) {
return a / b;
}
//method dengan dua parameter bertipe double
double bagi(double a, double b) {
return a / b;
}
}
b. Output

Gambar 4. 10 Hasil Output latihan 10


c. Penjelasan :
Pada gambar 4.10 merupakan program overload terhadap
method. Pada program tersebut terdapat 2 class yaitu class Pembagian
dan class Contoh OverLoadMethod. Pada class Pembagian berisi
method dengan dua parameter bertipe int dan double. Keduanya sama-
sama menggunakan variabel yang sama yaitu a dan b. Sedangkan pada
class ContohOverLoadMethod berisi variabel x yang bertipe data int
dan juga variabel y yang bertipe data double. Variabel x berisi
b.bagi(10, 4) sedangkan variabel y berisib.bagi(10.0,
4.0);.Setelah itu program akan menghitung variabel x dan juga
88

variabel y sehingga akan di dapat hasil seperti pada output gambar


4.10
11. Latihan 11
Instansiasi objek karyawan menggunakan constructor yang telah di
overload
a. Kode program
//sakinah(32601700023)
package latihan11_bab4;
public class ImplementasiOverloadConstructor { public
static void main(String[] args) {
//instantiasi menggunakan constructor pertama
karyawan karyawan001 = new karyawan("k006", "Zaky");
//instantiasi menggunakan constructor kedua
karyawan karyawan002 = new karyawan("k007"," Deva",
"Keuangan", 2250000);
karyawan001.cetakData();
System.out.println("");
karyawan002.cetakData();
}
}
//sakinah(32601700023)
package latihan11_bab4;
public class karyawan {
String ID, nama, divisi;
double gaji;
//constructor pertama
karyawan(String ID, String nama) {
this.ID = ID;
this.nama = nama;
}
//constructor kedua
karyawan(String ID, String nama, String divisi,
double gaji) {
this.ID = ID;
this.nama = nama;
this.divisi = divisi;
89

this.gaji = gaji;
}
void cetakData() {
System.out.println("Data Karyawan :");
System.out.println("ID : " + ID);
System.out.println("Nama : " + nama);
System.out.println("Divisi : " + divisi);
System.out.println("Gaji : " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
}
b. Output

Gambar 4. 11 Hasil Output latihan 11

c. Penjelasan
Pada gambar 4.11 merupakan program implementasi
overloadconstructor. Pada program tersebut terdapat classKaryawan
yang berisi 2constructor, method voidcetakData(), dan juga
method hitungSumbanganZakat dan juga terdapat
classImplementasiOverloadConstructor.
PadaclassImplementasiOverloadConstructor program akan
membuat object baru bernama karyawan001 dan karyawan002.
Lalu program akan memasukan data kedalam objectkaryawan001 dan
90

objectkaryawan002 seperti ID, nama, divisi dan gaji. Setelah


itu, program akan memanggil methodcetakData(). Pada
classKaryawan, terdapat 2 constructor, constructor yang pertama
digunakan untuk memasukan data ke dalam objectkaryawan001
sedangkan constructor yang kedua digunakan untuk memasukan data
ke dalam objectkaryawan002. Sedangkan methodcetakData()
digunakan untuk menampilkan data objectkaryawan001 dan
objectkaryawan002 yang sebelumnya sudah di masukan.
12. Latihan 12
Contoh pengaruh tingkat akses data dan method pada kelas Mahasiswa
a. Kode program
//sakinah(32601700023)
package latihan12_bab4;
public class PengaruhHakAkses {
public static void main(String[] args) {
Mahasiswa Yahya = new Mahasiswa();
//BENAR, karena nim secara default bersifat public
Yahya.nim = 1009;
//BENAR, karena nama bersifat public
Yahya.nama = "Yahya Al-Mahandiz";
Yahya.ipk = 3.77;//SALAH,karena ipk bersifat private
//BENAR, karena method setC() bersifat public
Yahya.setIPK(3.77);
System.out.println("NIM : " + Yahya.nim);
System.out.println("Nama : " + Yahya.nama);
System.out.println("IPK : " +
Yahya.getIPK());
}
}
//sakinah(32601700023)
package latihan12_bab4;
public class mahasiswa { int nim;
public String nama;
double ipk;
public void setIPK(double nilai) {
91

ipk = nilai;
}
public double getIPK() {
return ipk;
}
}
b. Output

Gambar 4. 12 Hasil Output latihan 12


c. Penjelasan :
Pada gambar 4.12 merupakan program contoh tingkat akses pada
method. Pada program tersebut terdapat dua class yaitu
classMahasiwa dan juga classPengaruhHakAkses. Di dalam
classMahasiwa terdapat variabel nim, dan juga variabel
publicnama dan juga variabel private ipk. Terdapat pula
methodpublicgetIPK(). Sedangkan pada classPengaruhHakAkses,
program akan membuat object baru bernama Yahya. Setelah object
dibuat, program selanjutnya akan memasukkan data kedalam object
Yahya seperti nama dan nim. Setelah dimasukkan ke dalam object
Yahya selanjutnya data yang di dalam object Yahya akan ditampilkan.
Namun pada program terjadi error, dan apabila dipaksakan maka akan
muncul tampilan seperti pada gambar 4.12.
13. Latihan 13
Contoh implementasi data dan method statis
a. Kode program
//sakinah(32601700023)
package latihan13_bab4;
public class Contohstatic {
static int dataA = 10;
92

static int dataB = 7;


int dataC = 4;//data non-statik
static void test() {
int dataC = dataA + dataB;
System.out.println("dataA + dataB = " + dataC);
//System.out.println("dataC = "+dataC);
//SALAH, karena dataC non-statik
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
test();
}

}
b. Output

Gambar 4. 13 Hasil Output latihan 13

c. Penjelasan
Pada gambar 4.13 merupakan memanggil methodtest() tanpa
harus membuat objek atau instance dari kelas ContohStatic. Satu hal
lagi, methodtest() tidak dapat mengakses dataC, karena data tersebut
tidak dideklarasikan sebagai data statis. Sama halnya seperti data dan
method normal (non-statis), data dan method statis juga dapat
dipanggil melalui operator titik (.). Perbedaannya, pemanggilan data
atau method statis tidak perlu menggunakan objek referensi,
melainkan nama kelas yang memilikinya.
93

14. Latihan 14
Contoh pemanggilan data dan method statis
a. Kode program
//sakinah(32601700023)
package latihan14_bab4;
public class ContohStatic2 { public static void
main(String[] args) {
RobotStatic.nama = "Gathotkaca";
RobotStatic.asalNegara = "Indonesia";
RobotStatic.test();
}
}
//sakinah(32601700023)
package latihan14_bab4;
public class RobotStatic {
static String nama;
static String asalNegara;
static void test() {
System.out.println("Hello..");
System.out.println("Saya adalah robot " + nama);
System.out.println("Saya berasal dari " + asalNegara);
}
}
b. Output

Gambar 4. 14 Hasil Output latihan 14

c. Penjelasan
Pada gambar 4.14 tampak jelas bahwa user dapat mengakses data
nama dan asalNegara beserta method test() dari kelas
RobotStatictanpa harus membentuk objek atau instance dari kelas
RobotStatic terlebih dahulu. Namun, yang perlu diperhatikan, kita
94

dituntut untuk membubuhkan nama kelas yang memiliki data atau


method yang akan diakses.
15. Latihan 15
Contoh implementasi kata kunci final
a. Kode program
//sakinah(32601700023)
package latihan15_bab4;
public class ImplementasiFinal {
public static void main(String[] args) {
Pegawai Dhennis = new Pegawai();
Dhennis.nama = "Dhennis Al-MAhandiz";
System.out.println("Data Karyawan : ");
System.out.println("nama : " + Dhennis.nama);
System.out.println("Bonus lembur : " +
Dhennis.hitungBonusLembur(7));
}
}
//sakinah(32601700023)
package latihan15_bab4;
public class pegawai {
String nama;
final double bonusLembur = 50000;
double hitungBonusLembur(double jumlahLembur) {
return bonusLembur * jumlahLembur;
}
}
b. Output

Gambar 4. 15 Hasil Output latihan 15


95

c. Penjelasan
Pada gambar 4.15 merupakan program kata kunci final. Pada
program tersebut terdapat class Pegawai yang berisi variabel string
nama, variabel finaldoublebonusLembur yang berisi nilai 50000
dan method doublehitungBonusLembur(doublejumlahLembur) dan
juga class ImplemetasiFinal. Pada class ImplemetasiFinal
program akan membuat object baru bernama Dhenis. Lalu program
memasukan data ke dalam object Dhenis seperti nama = Dhenis
Al-Mahandiz. Setelah itu program akan menampilkan tampilan data
karyawan dan juga program akan memanggil method
hitungBonusLembur yang berisi perkalian antara bonusLembur di
kali dengan jumlahLembur. Variable bonusLembur berisi5000dan
variabel jumlahLembur berisi 7 sehingga total bonus lembur sebesar
35000. Saat dieksekusi, program akan memberikan hasil seperti
gambar 4.15
16. Latihan 16
Implementasi konsep inner class
a. Kode program
//sakinah(32601700023)
package latihan16_bab4;
public class ImplementasiInnerClass {
public static void main(String[] args) {
Notebook myNotebook = new Notebook();
myNotebook.cetakdata();
}
}
//sakinah(32601700023)
package latihan16_bab4;
public class notebook {
private String merk = "Lenovo";
class SistemOperasi {
private String namaOS = "Windows 7";
public void cetakData() {
96

System.out.println("Merk notebook : " +


merk);
System.out.println("Sistem operasi : " +
namaOS);
}
}
public void cetakdata() {
SistemOperasi OS = new SistemOperasi();
OS.cetakData();
}
}
b. Output

Gambar 4. 16 Hasil Output latihan 16


c. Penjelasan
Pada gambar 4.16 merupakan program implementasi innerclass.
Pada program tersebut terdapat 2 class yaitu classNotebook dan
classImplementasiInnerClass. Pada classNotebook berisi
privatestringmerk, terdapat pula class SistemOperasi didalam
class Notebook. Terdapat pula method
publicvoidcetakData()yang digunakan untuk menampilkan merk
notebook dan sistem operasinya. Pada class Notebook, program
akan membuat object baru bernama OS. Setelah objectOS dibuat,
program akan menjalankan perintah methodcetakData().
Sedangkan pada classImplementasiInnerClass, program
akan membuat object baru bernama myNotebook. Setelah object
myNotebook dibuat, lalu program menjalankan perintah
methodcetakData().Saat dieksekusi, program akan memberikan
hasil seperti gambar 4.16
97

4.4 Tugas
1. Tugas 1
Buatlah sebuah program sederhana untuk menghitung IPK Mahasiswa
untuk 5 Mata Kuliah. Anda harus mengimplementasikan method
berparameter, constructor, object dan inner class pada aplikasi Anda.
a. Kode program
//sakinah(32601700023)
package tugas1_bab4;
import java.util.Scanner;
public static void daftar(double[]nilai, char[]huruf,
int[] sks){

System.out.println("==================================
================");
System.out.println("MatKuliah Nilai
Huruf Sks");

System.out.println("==================================
================");
System.out.println("PAI "+nilai[0]+"
"+huruf[0]+" "+sks[0]);
System.out.println("Pancasila "+nilai[1]+"
"+huruf[1]+" "+sks[1]);
System.out.println("Bahasa Inggris
"+nilai[2]+" "+huruf[2]+" "+sks[2]);
System.out.println("Sistem Operasi
"+nilai[3]+" "+huruf[3]+" "+sks[3]);
System.out.println("Basis Data "+nilai[4]+"
"+huruf[4]+" "+sks[4]);
}//Sub Program daftar yang akan diprint. berisi
parameter nilai, huruf dan sks.

public static void ip(double[]nilai, char[]huruf,


int[] sks, int[] angka)
{
double Total1=0;
98

for (int i = 0; i <= 4; i++) {


double total2=sks[i]*angka[i];
Total1=Total1+total2;
}//Berisi For untuk mengalikan masing-masing
sks dengan nilai angka sesuai dengan angka huruf.

double
totalsks=sks[0]+sks[1]+sks[2]+sks[3]+sks[4];
double ip=Total1/totalsks;
System.out.println("");
System.out.println("IPK = "+ip);
System.out.println("\n");
}//Menghitung hasil ip yang akan diprint. dengan
cara membagi total nilai dengan total jumlah sks.

public static void main(String[] args) {


// TODO code application logic here
Scanner input= new Scanner(System.in);
Scanner input1= new Scanner(System.in);
//Sistem inputan nilai menggunakan inptan Scanner.

double nilai[]=new double[5];


int angka[]=new int[5];
char huruf[]=new char[5];
int sks[]=new int[5];
//Pendeklarasian tipe data nilai, angka, huruf dan sks
menggunakan Array.

System.out.print("Masukkan Nilai PAI : ");


nilai[0]=input.nextDouble();
System.out.print("Jumlah SKS : ");
sks[0]=input1.nextInt();
System.out.println("");
//Memberi inputan pada varibel nilai dan sks.

System.out.print("Masukkan Nilai Pancasila: ");


nilai[1]=input.nextDouble();
System.out.print("Jumlah SKS : ");
99

sks[1]=input1.nextInt();
System.out.println("");
//Memberi inputan pada varibel nilai dan sks.

System.out.print("Masukkan Nilai Bahasa Inggris


: ");
nilai[2]=input.nextDouble();
System.out.print("Jumlah SKS :
");
sks[2]=input1.nextInt();
System.out.println("");
//Memberi inputan pada varibel nilai dan sks.

System.out.print("Masukkan Nilai Sistem Operasi


: ");
nilai[3]=input.nextDouble();
System.out.print("Jumlah SKS :
");
sks[3]=input1.nextInt();
System.out.println("");
//Memberi inputan pada varibel nilai dan sks.

System.out.print("Masukkan Nilai Basis Data :


");
nilai[4]=input.nextDouble();
System.out.print("Jumlah SKS :
");
sks[4]=input1.nextInt();
System.out.println("");
//Memberi inputan pada varibel nilai dan sks.

for (int i = 0; i <= 4; i++) {


if(nilai[i]<40){
angka[i]=0;
huruf[i]='E';
}
else if(nilai[i] >= 40 && nilai[i] <= 54){
angka[i]=1;
100

huruf[i]='D';
}
else if(nilai[i] >= 55 && nilai[i] <= 69){
angka[i]=2;
huruf[i]='C';
}
else if(nilai[i] >= 70 && nilai[i] <= 84){
angka[i]=3;
huruf[i]='B';
}
else if(nilai[i] >= 85 && nilai[i] <= 100){
angka[i]=4;
huruf[i]='A';
}
}//Menentukan batasan nilai angka dan nilai
huruf menggunakan For dan If.

daftar(nilai, huruf, sks);


ip(nilai, huruf, sks, angka);
//Memanggil Sub Program daftar dan ip yang akan diprint.

}
}
101

b. Output

Gambar 4. 17 Hasil Output tugas 1


c. Penjelasan
Pada gambar 4.17 merupakan program untuk menghitung nilai
IPK. Pada program tersebut terdapat class NilaiIPK yang
didalamnya berisi banyak method seperti method public static
void daftar(double[] nilai, char[]huruf, int[]sks) dan

juga ada method public static void ip(double[]nilai,


char[]huruf, int[]sks, int[]angka). Apabila program
dijalankan maka tampilan pertama yang muncul adalah user diminta
untuk menginputkan nilai dari masing-masing mata kuliah beserta
dengan jumlah sks masing-masing mata kuliah tersebut. Setelah itu
program akan menjalankan perintah if yang ada didalam program.
Jika nilai <40 maka nilai hurufnya adalah ‘E’. Dan jika nilai <= 54
maka nilai huruf nya ‘D’. Dan jika nilai <= 69 maka nilai huruf nya
adalah ‘C’. Dan jika nilai <=84 maka nilai hurufnya adalah ‘B’. Dan
102

jika nilai <=100 maka nilai hururfnya adalah ‘A’. Untuk menghitung
nilai IPK maka dengan rumus nilai Total1 dibagi dengan totalsks,
sehingga apabila dijalankan maka akan muncul tampilan output
seperti pada gambar 4.17.

4.5 Kesimpulan
Kesimpulan dari praktikum bab 4 ini adalah Objek adalah entitas
dasar saat runtime. Pada saat Code program dieksekusi, objek berinteraksi
satu sama lain tanpa harus mengetahui detil data atau kodenya. Interaksi
antara objek ini dilakukan menggunakan suatu message.Pada
pemrograman berbasis objek, objek dijadikan sebagai komponen utama
dalam program, objek menggabungkan data dan fungsi sebagai satu
kesatuan. Dalam Pemrograman berbasis objek terdapat dua istilah yang
sangat terkenal yaitu class dan objek. Pengertiannya adalah sebagai berikut
class adalah cetak biru dari sebuah objek, jadi kita dapat membuat banyak
objek dari sebuah class, atau kita dapat analogikan, class itu adalah cetakan
puding, sedangkan objek adalah puding. Method didefinisikan pada class
akan tetapi dipanggil melalui object. Metode menentukan perilaku objek,
yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang
dapat dilakukan oleh objek.
BAB V
PEWARISAN (INHERITANCE)

5.1 Tujuan
Adapun tujuan dari praktikum bab 5 ini adalah sebagai berikut :
1. Praktikan mampu menterjemahkan UML ke dalam bentuk pemrograman.
2. Praktikan dapat membedakan pemakaian overloading dan overriding.
3. Praktikan mampu menerapkan konsep pewarisan, overloading dan
overriding dalam pemrograman dengan Java.

5.2 Dasar Teori


5.2.1 Pewarisan
Pewarisan (inheritance) adalah suatu cara pembuatan class baru dengan
menggunakan kembali class yang sudah didefinisikan sebelumnya dengan
menambahkan atribut dan method baru. Sehingga dengan demikian class baru
tersebut tetap memiliki variabel dan fungsi yang dimiliki oleh class
sebelumnya. Pada konsep pewarisan ada beberapa istilah yang perlu
diketahui, yaitu:
1. Subclass, di gunakan untuk menunjukan class anak atau turunan secara
hirarki dari superclass.
2. Superclass, digunakan untuk menunjukan class induk secara hirarki dari
subclass (class anak).
3. Extends, digunakan untuk menunjukan bahwa suatu class merupakan
turunan dari class lain, misal A extends B, berarti class A adalah turunan
dari class B. A merupakan subclass, sedangkan B merupakan superclass.
4. Super, digunkan untuk memanggil konstruktor dari superclass atau
memanggil variabel yang mengacu pada superclass. Misal super(x,y,z),
berarti atribut x,y, dan z diambil dari atribut pada class induk.
Menunjukkan hirarki klas dosen. Klass dosen tersebut memili ki turunan
berupa klas rektor, klas dekan dan klas kalab. Apabila dirancang ke dalam
diagram class.

103
104

Gambar 5. 1 Hirarki class dosen

Pada gambar 5.1 merupakan program penurunan yaitu Dosen sebagai


objek utama nya atau super class nya, dan class Dosen mewarisi semua atribut
yang ada di class Dosen. Class Rektor, Dekan , dan Kalah bisa memakai
atribut yang ada di Class Dosen.

Gambar 5. 2 class diagram untuk hirarki dosen

Pada Gambar 5.2 tersebut, class induk (class dosen) memiliki atribut
nama, nik dan jurusan. Method yang dimiliki oleh class dosen adalah
view(). Class turunan dari class dosen ada tiga class. Pada class rektor,
terdapat tambahan atribut berupa th_mulai dan jabatan_ke, serta method
viewRektor(). Pada class dekan terdapat tambahan atribut fakultas, dan
method viewDekan(). Pada class kalab terdapat tambahan atribut
laboratorium, dan method viewKalab().

5.2.2 Hierarki class


Langkah awal dalam pemodelan sistem adalah memikirkan bagaimana
hierarki class yang kita buat. Pembuatan hierarki yang tidak tepat sasaran
dapat membuat program tidak efisien dan susah untuk dikembangkan lagi.
Dalam java, hierarki class dibuat dengan mekanisme pewarisan
105

(inheritence). class yang mewarisi sifat dari class lain disebut dengan
subclass. Sedangkan class yang mewarisi sifat dari class lain disebut dengan
superclass. Sifat yang diwariskan adalah filed dan method. Jadi, semua
subclass mempunyai filed dan metode yang ada pada superclass masing-
masing.
Satu class hanya dapat mempunyai sebuah superclass saja (single
inheritance). Tetapi dapat mempunyai banyak subclass. Java tidak
mengizinkan adanya pewarisan sifat lebih dari satu class atau (multiple
inheritance) dengan alasan dapat membingungkan. Namun, hubunga n
superclass dan subclass dapat terjadi secara bertingkat.
Dengan adanya pewarisan tidak perlu dilakukan definisi ulang kode
untuk filed dan metode dalam subclass. Dengan demikian, kode progr am
lebih ringkas dan mudah dikerjakan. Dengan mengedit filed dan metode pada
superclass, seluruh subclass juga akan mengikuti. Penentuan hierarki class
perlu difikirkan dengan masak. Jika tidak tepat, dapat menimbul ka n
kesulitan-kesulitan dimasa mendatang. Kesulitan dapat terjadi jika kondisi
lapangan yang berubah atau karena program harus dikembangkan lagi untuk
mengkomodasi fasilitas baru.
5.2.3 Overreding
Overriding adalah suatu cara untuk mendefinisikan ulang method yang
ada pada class induk apabila class anak mengingi nkan adanya informasi yang
lain. Overriding dilakukan dengan cara menulis ulang method yang ada pada
class induk dengan syarat bahwa nama dan parameter fungsi tersebut harus
sama (tidak boleh diubah). Meskipun fungsi telah ditulis ulang oleh class
anak, fungsi yang asli pada class induk masih dapat dipanggil di class anak
dengan menggunakan class super.
Konsep pewarisan pada contoh gambar 5.1 dapat dipadukan dengan
konsep overriding. Gambar 5.8 menunjukkan class dosen yang tidak jauh
berbeda dengan class dosen pada contoh 5.1.
Konsep overriding digunakan pada method view(). Method ini ditulis
ulang pada setiap subclass yaitu subclass rektor, dekan, dan kalab dengan
106

menambahkan instruksi tambahan yang dibutuhkan pada setiap class.


5.2.4 Overloading
Overloading fungsi adalah penulisan beberapa fungsi (dua atau lebih)
yang memiliki nama yang sama. Pada bahasan overloading dikenal istilah
signature. Signature sebuah fungsi adalah parameter lengkap dengan tipe
datanya yang terdapat dalam fungsi tersebut. Misal terdapat fungsi:
Public int jumlah Mahasiswa (int laki2, int perempuan string kelas); maka
signature dari fungsi tersebut adalah (int, int, String).
Suatu fungsi dikatakan di-overload manakala terdapat beberapa fungsi
dengan nama yang sama namun memiliki signature yang berbeda-beda,
sebagai contoh:
Public void infoMahasiswa (int laki2, int perempuan, string
kelas)
{
...
}
public void infoMahasiswa (int mhsLama, int mhsBaru, int
mhsCuti, int angkatan)
{
...
}
Berikut terdapat class mahasiswa program diatas. Pada class tersebut
terdapat dua subclass dengan nama yang sama yaitu infoMahasiswa namun
memiliki signature yang berbeda. Subclass pertama digunakan untuk
menghitung jumlah mahasiswa kelas A angkatan 2008. Sedangkan pada
subclass kedua digunakan untuk menghitung jumlah mahasiswa aktif sampai
tahun 2008.
Overloading fungsi ditentukan oleh signature nya, tidak ditentukan oleh
nilai balikan fungsi. Dalam satu class, apabila ada dua atau lebih fungsi yang
memiliki nilai balikan yang berbeda namun memiliki signatue yang sama,
maka fungsi tersebut tidak dapat dikatakan sebagai overloading.
Berikut terdapat dua class bernama jumlah untuk untuk menjumlahka n dua
bilangan. Class jumlah yang pertama memiliki nilai balikan yang bertipe
107

integer untuk signature (int x1, int x2). Sedangkan class jumlah yang kedua
memiliki nilai balikan yang bertipe double untuk signature (double y1,
double y2). Class yang dibentuk sebagaimana terlihat pada Gambar 5.15.
Overloading fungsi ditentukan oleh signature nya, tidak ditentukan oleh
nilai balikan fungsi. Dalam satu class, apabila ada dua atau lebih fungsi yang
memiliki nilai balikan yang berbeda namun memiliki signatuer yang sama,
maka fungsi tersebut tidak dapat dikatakan sebagai overloading.

5.3 Latihan
Lakukan praktek di atas dan lakukan evaluasi
1. Latihan 1
a. Kode program
package bab5.latihan1;
//sakinah (32601700023)
public class dosen {
protected String nama;
protected String nik;
protected String jurusan;
//membuat constructor
dosen (String namaX, String nikX, String jurX) {
nama = namaX;
nik = nikX;
jurusan = jurX;
}
//menampilkan informasi
public void view(){
System.out.println("Nama: "+nama);
System.out.println("Nik: "+nik);
System.out.println("Jurusan: "+jurusan);
}
}
package bab5.latihan1;
//sakinah (32601700023)
public class rektor extends dosen{
private int th_mulai;
108

private int jabatan_ke;


//inisialisasi
rektor(String namaX, String nikX, String jurX, int
thX, int keX) {
super(namaX, nikX, jurX);
th_mulai = thX;
jabatan_ke = keX;
}
public void viewRektor()
{
System.out.println("Th mulai jabatan:
"+th_mulai);
System.out.println("Jabatan rektor ke:
"+jabatan_ke);
}
}
package bab5.latihan1;
//sakinah (32601700023)
public class dekan extends dosen {
private String fakultas;
dekan (String namaX, String nikX, String jurX, String
fakX) {
super(namaX, nikX, jurX);
fakultas = fakX;
}
public void viewdekan()
{
System.out.println("Fakultas: "+fakultas);
}

}
package bab5.latihan1;
//sakinah (32601700023)
public class kalab extends dosen{
private String laboratorium;
kalab(String namaX, String nikX, String jurX, String
labX) {
super(namaX, nikX, jurX);
109

laboratorium = labX;
}
public void viewkalab()
{
System.out.println("Laboratorium:
"+laboratorium);
}

}
package bab5.latihan1;
//sakinah (32601700023)
public class main {
public static void main (String [ ] args) {
rektor rek = new rektor ( " Andi " , " 885230202
" , " Informatika " , 2006 , 2 ) ;
dekan dek = new dekan ( " Ahmad " , " 995230101
" , " T.Kimia " , " TI " ) ;
kalab lab = new kalab ( " Indah " , " 035230302
" , " Informatika " , " KSC " ) ;

rek.view();
rek.viewRektor();
dek.view();
dek.viewdekan();
lab.view();
lab.viewkalab();
}
}
110

b. Output

Gambar 5. 3 output Latihan 1

c. Penjelasan
Pada gambar 5.3 merupakan hierarki class dosen, dimana class
dosen memiliki turunan class rektor dengan syntax public static
class rektor extends dosen, class dekan denagn syntax public
static class dekan extends dosen dan class kalab dengan syntax
public static class kalab extends dosen.

2. Latihan 2
a. Kode program
package bab5.latihan2;
//sakinah (32601700023)
public class dosen {
protected String nama;
protected String nik;
protected String jurusan;
//inisialisasi

dosen(String namaX, String nikX, String jurusanX) {


nama = namaX;
nik = nikX;
jurusan = jurusanX;
}
public void view(){
System.out.println("Nama: "+nama);
System.out.println("NIK: "+nik);
111

System.out.println("Jurussan: "+jurusan);
}
}
package bab5.latihan2;
//sakinah (32601700023)
public class rektor extends dosen{
private int th_mulai;
private int jabatan_ke;
rektor(String namaX, String nikX, String jurusanX,
int thX, int keX) {
super(namaX, nikX, jurusanX);
th_mulai = thX;
jabatan_ke = keX;
}
public void view(){
super.view();
System.out.println("Tahun mulai: "+th_mulai);
System.out.println("Jabatan rektor ke:
"+jabatan_ke);
}
}
package bab5.latihan2;
//sakinah (32601700023)
public class dekan extends dosen{
private String fakultas;

dekan(String namaX, String nikX, String jurusanX,


String fakX) {
super(namaX, nikX, jurusanX);
fakultas = fakX;
}
public void view(){
super.view();
System.out.println("fakultas: "+fakultas);
}
}
package bab5.latihan2;
//sakinah (32601700023)
112

public class kalab extends dosen{


private String laboratorium;
kalab(String namaX, String nikX, String jurusanX,
String labX) {
super(namaX, nikX, jurusanX);
laboratorium = labX;
}
public void view(){
super.view();
System.out.println("Laboratorium:
"+laboratorium);
}
}
package bab5.latihan2;
//sakinah (32601700023)
public class main {
public static void main(String[] args) {
dosen p;
rektor rek = new rektor ( " Andi " , " 885230202
" , " Informatika " , 2006 , 2 ) ;
dekan dek = new dekan ( " Ahmad " , " 995230101
" , " T.Kimia " , " TI " ) ;
kalab lab = new kalab ( " Indah " , " 035230302
" , " Informatika " , " KSC " ) ;
p = rek;
p.view();
p = dek;
p.view();
p = lab;
p.view();
}
}
113

b. Output

Gambar 5. 4 output latihan 2

c. Penjelasan
Pada gambar 5.4 diatas merupakan konsep pewarisan yang
dipadukan dengan konsep overriding yang digunakan pada method
view(). Pada class dosen memiliki turunan class rektor dengan
syntax public static class rektor extends dosen, class dekan
denagn syntax public static class dekan extends dosen
dan class kalab dengan syntax public static class kalab

extends dosen seperti pada latihan 1. Pada program utama


menunjukkan konsep overriding class dosen.

3. Latihan 3
a. Kode program
package bab5.latihan3;
//sakinah (32601700023)
public class mahasiswa {
public void infomahasiswa (int laki2, int perempuan,
String kelas)
{
int jumlah = laki2 + perempuan;
System.out.println(kelas+", Jumlah Mahasiswa =
"+jumlah);
114

}
public void infomahasiswa(int mhslama, int mhsbaru,
int mhscuti, int angkatan)
{
int jumlah = mhslama + mhsbaru + mhscuti;
System.out.println("Sampai Tahun "+angkatan+ "
Jumlah mahasiswa = "+jumlah);
}
}
package bab5.latihan3;
//sakinah (32601700023)
public class main {
public static void main(String[] args) {
mahasiswa m = new mahasiswa();
m.infomahasiswa(60, 18, "Kelas A angkatan 2008");
m.infomahasiswa(1000, 400, 25, 2008);
}
}
b. Output

Gambar 5. 5 output latihan 3

c. Penjelasan
Pada gambar 5.5 diatas terdapat dua class infoMahasiswa dengan
signature yang berbeda. Pada program utama dilakukan pemanggilan
kedua fungsi yang di-overload dengan syntax M.infoMahasiswa(60,
18, "Kelas A ngkatan 2008");dan M.infoMahasiswa(1000,
400, 25, 2008);.
115

4. Latihan 4
a. Kode Program
package bab5.latihan4;
//sakinah (32601700023)
public class penjumlahan {
public int jumlah (int x1, int x2){
return (x1+x2);
}
//Bilangan real
public double jumlah (double y1, double y2){
return (y1+y2);
}
public static void main(String[] args) {
int x1=10, x2=15;
double y1=10.5, y2=15.8;
penjumlahan p = new penjumlahan();
System.out.println(x1+" + " +x2+ " = "
+p.jumlah(x1, x2));
System.out.println(x1+" + " +x2+ " = "
+p.jumlah(y1, y2));
}
}
b. Output

Gambar 5. 6 output latihan 4

c. Penjelasan
Pada gambar 5.6 tersebut terdapat dua class bernama jumlah
dengan signature yang berbeda. Pada class pertama bertipe integer
untuk signature(int x1, int x2)dan pada class kedua bertipe
double untuk signature(double y1, double y2). Pada program
utama dilakukan pemanggilan fungsi terhadap kedua class yang di-
overload.
116

5.4 Tugas
1. Tugas 1
Buatlah sebuah class kendaraan dengan turunannya kedaraan darat,
kendaraan laut, kemudian diturunkan lagi menjadi sepeda motor dan
perahu layar. Kemudian buatlah fungsi-fungsi untuk menampilkan data
kendaraan berupa : kecepatan, kapasitas_tangki, tahun_keluar, warna,
daya_angkut_barang, daya_angkut_manusia dan total_daya_angkut.
a. Kode program
package tugas5.tugas1;
//sakinah (32601700023)
public class kendaraan {
protected String kecepatan;
protected String kapasitas_tangki;
protected String tahun_keluar;
protected String warna;
protected String daya_angkut_barang;
protected String daya_angkut_manusia;
protected String total_daya_angkut;

kendaraan(String kecepatanX, String


kapasitas_tangkiX, String tahun_keluarX, String warnaX,
String daya_angkut_barangX, String
daya_angkut_manusiaX, String total_daya_angkutX) {
kecepatan = kecepatanX;
kapasitas_tangki = kapasitas_tangkiX;
tahun_keluar = tahun_keluarX;
warna = warnaX;
daya_angkut_barang = daya_angkut_barangX;
daya_angkut_manusia = daya_angkut_manusiaX;
total_daya_angkut = total_daya_angkutX;
}
public void view(){
System.out.println("kecepatan : "+kecepatan);
System.out.println("kapasitas tangki
:"+kapasitas_tangki);
117

System.out.println("tahun_keluar :
"+tahun_keluar);
System.out.println("warna : "+warna);
System.out.println("daya angkut barang
:"+daya_angkut_barang);
System.out.println("daya angkut manusia :
"+daya_angkut_manusia);
System.out.println("total daya angkut :
"+total_daya_angkut);
}
public static class darat extends kendaraan{
darat(String kecepatanX, String
kapasitas_tangkiX, String tahun_keluarX, String warnaX,
String daya_angkut_barangX, String daya_angkut_manusiaX,
String total_daya_angkutX) {
super(kecepatan X , kapasitas _ tangki X , tahun
_ keluar X , warnaX , daya _ angkut _ barangX , daya _
angkut _ manusiaX , total_daya_angkutX);
}
public void viewdarat(){
System.out.println();
}
}
public static class laut extends kendaraan{
laut(String kecepatanX, String
kapasitas_tangkiX, String tahun_keluarX, String warnaX,
String daya_angkut_barangX, String daya_angkut_manusiaX,
String total_daya_angkutX) {
super(kecepatanX, kapasitas_tangkiX,
tahun_keluarX, warnaX, daya_angkut_barangX,
daya_angkut_manusiaX, total_daya_angkutX);
}
public void viewlaut(){
System.out.println();
}
}
public static void main(String[] args) {
118

darat dar = new darat("100 km/jam","20


ltr","2010","Merah","50 kg","100 kg","150 kg");
laut lau = new laut("75 km/jam","20
ltr","2008","Hijau","100 kg","200 kg","300 kg");
dar.view();
dar.viewdarat();
System.out.println();
lau.view();
lau.viewlaut();
}
}
b. Output

Gambar 5. 7 output tugas 1

c. Penjelasan
Pada gambar 5.7 merupakan program dengan beberapa class,
dimana class utama adalah class kendaraan lalu ada class turunan
yaitu class-class perahu dan sepeda motor. Konsep program ini sama
dengan program pada latihan 1. Untuk menjalankannya cukup di-run
pada main class-nya .
119

5.5 Kesimpulan
Kesimpulan dari bab 5 adalah Secara umum, inheritance,
encapsulation, dan polymorphism merupakan pilar dasar dalam bahasa
pemrograman OOP yaitu pemograman berorientasi objek. inheritance
merupakan penurunan atau pewarisan atribut dan method. Kata kunci untuk
inheritance adalah "extends". Inheritance merupakan penurunan atribut dan
method dari suatu kelas , kelas induk ke sub kelas, kelas anak. Pewarisan ini
bersifat menyeluruh sehingga semua attribute dan method yang di miliki
kelas super dapat diturunkan ke sub kelas. Inheritance / pewarisan
merupakan suatu subclass dapat mewarisi semua atau sebagian member dari
parent kelasnya untuk menerapkan inheritance dalam java kita harus
menambahkan keyword extends setelah deklarasi nama class kemudian
diikuti nama parent class-nya. Dalam inheritance semua file akan diwariskan
kecuali file bertipe private.
BAB VI
POLIMORIFISME

6.1 Tujuan
Adapun tujuan dari praktikum bab 6 ini adalah sebagai berikut :
1. Praktikum mampu menerapkan konsep polimorifisme dalam pemrogaman
dengan java.

6.2 Dasar Teori


6.2.1 Polimorifisme
Polimorfisme digunakan untuk menyatakan suatu nama yang meruj uk
pada beberapa fungsi yang berbeda (Sinaga, 2004). Pada polimorfisme,
rujukan dapat dilakukan pada berbagai tipe objek. Hal ini dilakukan karena
setiap objek dimungki nkan memiliki instruksi yang berbeda. Dalam
mengimplementasikan polimorfisme, perlu diperhatikan hal-hal sebagai
berikut (Rickyanto, 2005) :
1. Method yang dipanggil harus melalui variabel dari super class.
2. Method yang dipanggil juga harus merupakan method yang ada pada super
class.
3. Signature method harus sama baik yang ada pada super class maupun di
subclass.
4. Method access attribute pada subclass tidak boleh lebih terbatas daripada
yang ada pada super class.
6.2.2 Keuntungan Polimorfisme
1. Polimorfisem memunhkingkan koleksi heterogen di perlakukan secara
sama.
2. Dapat menghindari duplikasi objek.
3. Polimorfisme membuat objek-objek yang berasal dari subclass yang
berbeda, diperlakukan sebagai objek-objek dari satu super class. Hal ini
terjadi ketika memilih method yang sesuai untuk di implementasikan ke

120
121

objek tertentu bedasarkan pada subclass yang memilki method


bersangkutan (widiati, 2002)
6.3 Latihan
1. Latihan 1
Membuat program untuk membangun class kendaraan. Pada class
kendaraan mewarisi ketiga class, yaitu class pesawat, mobil, dan kapal.
a. Kode program
package bab6.latihan1;
//sakinah(32601700023)
public class kendaraan {
private String model;
public kendaraan(String model)
{
this.model = model;
}
public void informasi(){}
}
package bab6.latihan1;
//sakinah(32601700023)
public class pesawat extends kendaraan{
private String nama;
private String jenis;\
public pesawat(String nama) {
super("Pesawat");
this.nama = nama;
jenis = "Belum Teridentifikasi";
}
public pesawat (String nama, String jenis)
{
super ("Peswat");
this.nama = nama;
this.jenis = jenis;
}
public void informasi()
{
System.out.println("Nama Pesawat adalah :"+nama);
122

System.out.println("Jenis Pesawat
adalah:"+jenis);
}
}
package bab6.latihan1;
//sakinah(32601700023)
public class mobil extends kendaraan{
private String nama;
private String jenis;
public mobil(String nama)
{
super ("Mobil");
this.nama = nama;
jenis = "Belum Teridentifikasi";
}
public mobil(String nama, String jenis)
{
super ("Mobil");
this.nama = nama;
this.jenis = jenis;
}
public void informasi()
{
System.out.println("Nama Mobil adalah :"+nama);
System.out.println("Jenis Mobil adalah:"+jenis);
}
}
package bab6.latihan1;
//sakinah(32601700023)
public class kapal extends kendaraan{
private String nama;
private String jenis;
public kapal(String nama)
{
super ("Kapal");
this.nama = nama;
jenis = "Belum Teridentifikasi";
}
123

public kapal(String nama, String jenis)


{
super ("Mobil");
this.nama = nama;
this.jenis = jenis;
}
public void informasi()
{
System.out.println("Nama Mobil adalah :"+nama);
System.out.println("Jenis Mobil adalah:"+jenis);
}
}
package bab6.latihan1;
//sakinah(32601700023)
public class main {
public static void main(String[] args) {
kendaraan P;
pesawat psw =new pesawat ("Boeing","Pesawat
Komersial");
mobil mbl1 = new mobil("Toyota Kijang", "Jeep");
mobil mbl2 = new mobil("Suzuki Baleno", "Sedan");
mobil mbl3 = new mobil("VW Combi");
kapal kpl = new kapal ("Queen Mary 2","Kapal
Pesiar");
P = psw;
P.informasi();
P = mbl1;
P.informasi();
P = mbl2;
P.informasi();
P = mbl3;
P.informasi();
P = kpl;
P.informasi();
}
}
124

b. Output

Gambar 6. 1 output latihan 1

c. Penjelasan
Program 6.1 merupakan contoh program polimorfisme, dimana
terdapat sebuah superclass, dan super class tersebut di-extends ke
kelas-kelas extends-nya. Pada program tersebut terdapat beberapa
class dalam satu package. Class transportasi merupakan main class
(kelas utama) pada program tersebut. Class main ini juga nantinya yang
akan digunakan untuk me-run program, dan class lain tidak bisa. Pada
class transportasi terdapat syntax untuk memasukkan data ke dalam
class mobil, pesawat dan kapal. Salah satu syntax-nya yaitu pesawat
psw = new pesawat("Boeing 737","Pesawat komersial"); yang
merupakan syntax untuk menginputkan informasi ke class pesawat.
Class kendaraan merupakan super class yang bertugas
mendeklarasikan method yang akan dipakai di class-class extend-
nya. Class mobil, pesawat dan kapal merupakan class extend dari
kendaraan yang mengambil informasi pada class transportasi dan
terdapat syntax pada masing-masing class tersebut untuk
menampilkannya.
125

6.4 Tugas
1. Tugas 1
Buatlah semua program yang mengimplementasikan konsep
polymorphisme dari sebuah class dengan nama class hewan.
a. Kode program
package bab6.latihan2;
//sakinah(32601700023)
public class hewan {
private String model;
public hewan (String model)
{
this.model = model;
}
public void informasi(){}
}
package bab6. latihan2;
//sakinah(32601700023)
public class pemakan_daging extends hewan{
private String nama;
private String jenis;
public pemakan_daging(String nama)
{
super ("hewan");
this.nama = nama;
jenis = "Belum Teridentifikasi";
}
public pemakan_daging (String nama, String jenis)
{
super("hewan");
this.nama = nama;
this.jenis = jenis;
}
public void informasi()
{
System.out.println("Nama Hewan adalah :"+nama);
System.out.println("Jenis Hewan adalah: "+jenis);
}
126

}
package bab6.latihan2;
//sakinah(32601700023)
public class pemakan_tumbuhan extends hewan{
private String nama;
private String jenis;
public pemakan_tumbuhan(String nama)
{
super ("hewan");
this.nama = nama;
jenis = "Belum Teridentifikasi";
}
public pemakan_tumbuhan(String nama, String jenis)
{
super("hewan");
this.nama = nama;
this.jenis = jenis;
}
public void informasi()
{
System.out.println("Nama Hewan adalah :"+nama);
System.out.println("Jenis Hewan adalah: "+jenis);
}
}
package bab6.latihan2;
//sakinah(32601700023)
public class pemakan_segala extends hewan{
private String nama;
private String jenis;
public pemakan_segala(String nama)
{
super ("hewan");
this.nama = nama;
jenis = "Belum Teridentifikasi";
}
public pemakan_segala(String nama, String jenis)
{
super("hewan");
127

this.nama = nama;
this.jenis = jenis;
}
public void informasi()
{
System.out.println("Nama Hewan adalah :"+nama);
System.out.println("Jenis Hewan adalah: "+jenis);
}
}
package bab6.latihan2;
//sakinah(32601700023)
public class main {
public static void main(String[] args) {
hewan p;
pemakan_daging hwn1 = new
pemakan_daging("Singa","Karnivora");
pemakan_segala hwn2= new
pemakan_segala("Ayam","Omnivora");
pemakan_tumbuhan hwn3 = new
pemakan_tumbuhan("Kambing","Herbivora");
p = hwn1;
hwn1.informasi();
p = hwn2;
hwn2.informasi();
p = hwn3;
hwn3.informasi();
}
}
b. Output

Gambar 6. 2 output tugas 1


128

c. Penjelasan
Program 6.2 merupakan program polimorfisme. Pada dasarnya
program tersebut sama dengan program pada latihan, hanya saja pada
program ini tentang hewan. Yang merupakan main class pada
program ini adalah class Hewan_hewan. Class hewan merupakan
super class sedangkan class pemakan_daging dan pemakan_tumbuhan
merupakan class extends dari class hewan.

6.5 Kesimpulan
Kesimpulan yang dapat diambil dari bab 6 adalah Polyforfisme
merupakan salah satu konsep penting dalam Object Oriented Programming
(OOP) khususnya dibahasa pemrograman Java setelah abstraction dan
inheritance. Polymorphism berarti banyak bentuk. Ada beberapa definisi
berbeda tentang polymorphism yang berkaitan dengan pemrograman
berorientasi objek. Sedangkan apa yang dimaksud dengan polymorphism
sendiri, sebenarnya sulit untuk didefinisikan. Sejalan dengan contoh yang
diberikan, Anda diharapkan dapat mengerti dan memahami konsep
polymorphism itu sendiri.Polyforfisme sering dikaitkan dengan penggunaan
lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan
nama sama dapat diterapkan dengan method overloading dan method
overriding. Peran polymorphism sebenarnya tidak terbatas hanya pada hal
tersebut. Ada keterkaitan antara polymorphism dan inheritance (turunan).
BAB VII
PENANGANAN EKSEPSI

7.1 Tujuan
Adapun tujuan dari praktikum bab 7 ini adalah sebagai berikut :
1. Praktikum mampu menangani berbagai kesalahan dengan penanganan
eksepsi dalam pemrogaman java.
2. Saat kita membuat program, sebisa mungki n program kita terhindar dari
kesalahan. Namun, yang lebih penting adalah bagaimana dalam program
kita dapat mengantisipasi kemungkinan munculnya kesalahan pada saat
program kita dieksekusi. Java menyediakan sebuah mekani sme
penanganan kesalahan yang biasa disebut dengan exception-handling.
Dalam hal ini setiap kesalahan akan dibentuk menjadi objek.

7.2 Dasar Teori


7.2.1 Java
Dalam Java, runtime error (kesalahan-kesalahan yang terjadi pada saat
program sedang berjalan) direpresentasikan denga eksepsi. Eksepsi adalah
suatu objek yang dibuat pada saat program mengalami suatu kondisi yang
tidak wajar (abnormal). Eksepsi dapat dibangkitkan secara otomatis oleh
Java runtime maupun secara manual oleh kita sendiri melalui kode yang kita
tulis.
Java menyediakan lima buah kata kunci untuk menangani eksepsi,
yaitu: try, catch, throw, throws, dan finally. Kata kunci try digunakan untuk
membuat blok yang berisi statemenstatemen yang mungki n menimbul ka
n eksepsi. Jika dalam proses eksekusi runtunan statemen tersebut terjadi
sebuah eksepsi, maka eksepsi akan dilempar ke bagian blok penangkap yang
dibuat dengan kata kunci catch. Pada kasus-kasus tertentu, terkadang kita juga
ingi n melempar eksepsi secara manual. Untuk itu, kita harus menggunakan
kata kunci throw. Jika kita ingin membangkitkan sebuah eksepsi tanpa
menuliskan blok try, maka kita perlu menambahkan kata kunci throws

129
130

pada saat pendeklarasian method. Dalam mendefinisikan blok try, kita


dapat menuliskan statemen tambahan, yaitu menggunakan kata kunci finally.
Statemen tambahan ini pasti akan dieksekusi baik terjadi eksepsi maupun
tidak.
Berikut ini bentuk umum penanganan eksepsi di dalam Java.
Try {
//kumpulan statement yang mungkin menimbulkan eksepsi
} catch (tipeeksepsi1 objekeksepsi1){
//penanganan untuk tipe eksepsi1
} cath (tipeeksepsi2 objekeksepsi2){
//penanganan untuk tipe eksespis2
}
....
Finally
{
//statement tambahan yang pasti akan di ekseskusi
}
Di sini, TipeEksepsi adalah tipe dari eksepsi yang terjadi. Tipe tersebut
direpresentasikan dengan sebuah kelas, misalnya: NullPointerException,
ArithmeticException, ArrayIndexOutOfBounds- Exception, dan sebagainya.
7.2.2 Menggunakan Kata Kunci try dan cath
Pada bagian sebelumnya telah dicontohkan bagaimana Java mencegah
eksepsi secara default. Namun, pada umumnya, pencegahan eksepsi
dilakukan oleh kita sendiri, sebagai programmer. Untuk melakukan hal
tersebut, kita dapat menggunakan blok try-catch.
7.2.3 Penjebakan Beberapa Tipe Eksepsi
Pada kenyataan di lapangan, sebuah blok try-catch biasanya terdiri atas
beberapa bagian blok penangkap. Hal tersebut bertujuan agar dalam satu blok
try-catch, kita dapat mengatasi beberapa kemungkinan eksepsi yang terjadi.
Berikut ini contoh program yang akan menunjukkan bagaimana cara
mendefinisikan sebuah blok try-catch yang dapat digunakan untuk
menjebak beberapa tipe eksepsi.
131

7.2.4 Menggunakan Kata Kunci throw


Kita dapat membangkitkan eksepsi secara manual dengan
menggunakan kata kunci throw. Berikut ini bentuk umum penggunaan kata
kunci tersebut.
Throw eksepsi;
eksepsi yang dimaksud harus berupa objek Throwable maupun objek
dari kelas-kelas turunannya. Kita tidak dapat melempar objek non-
Throwable, misalnya objek String. Sebagai contoh, Jika kita ingin
membangki t ka n eksepsi NullPointerException, maka kita dapat menuliskan
kodenya sebagai berikut:
throw nullpointerexception();

7.2.5 Menggunakan Kata Kunci throws


Jika kita tidak menyertakan blok try-catch di dalam method yang
mengandung kode-kode yang mungkin menimbulkan eksepsi, maka kita
harus menyertakan klausa throws pada saat pendeklarasian method yang
bersangkutan. Jika tidak, maka program tidak dapat dikompilasi. Berikut ini
bentuk umum dari penggunaan kata kunci throws.
7.2.6 Menggunakan Kata Kunci finally
Terkadang kita ingin menempatkan kode yang pasti akan dieksekusi,
baik terjadi eksepsi maupun tidak. Untuk melakukan hal itu, kita perlu
menempatkan kode tersebut di dalam bagian finalisasi dari blok try-catch.
Blok finalisasi ini dibuat dengan menggunakan kata kunci finally.
7.2.7 Exception handling
Exception adalah kejadian diluar alur yang terjadi selama eksekusi
program yang mengganggu alur normal yang diharapkan. Hal ini terjadi
dikarenakan terjadi kesalahan, baik dalam alur logika ataupun yang lainnya.
Peristiwa ini biasanya berupa kesalahan (error). Hal ini akan menyebabkan
program kita berakhir tidak normal.
Beberapa contoh dari exception adalah : Class Not Found,
ArrayIndexOutOfBounds, yang terjadi jika kita mencoba mengakses elemen
132

array yang tidak ada, atau NumberFormatException, yang terjadi ketika kita
mencoba melalui parameter bukan angka dalam method Integer.parseInt.
7.3 Latihan
Melakukan praktek di atas dan melakukan evaluasi
1. Latihan 1
Contoh program yang menimbulkan eksepsi.
a. Kode program
package bab7.latihan1;
//sakinah(32601700023)
public class contoheksepsi_sakinah {
public static void main(String[] args) {
int[]arrayInteger = new int[5];
//SALAH, karena tidak terdapat indeks ke 7
arrayInteger[7] = 9;

}
}
b. Output

Gambar 7. 1 output latihan 1

c. Penjelasan
Pada gambar 7.1 merupakan contoh program yang menimbulkan
eksepsi. Pada program tersebut terdapat variabel int[]

arrayInteger = new Int[5]. Jika dijalankan, program akan


membangkitkan dengan tipe ArrayIndexOutOfBoundsException
karena kita mengakses indeks yang tidak terdapat dalam array A. Array
A terdiri dari 5 elemen dengan indeks 0 sampai 4.
133

2. Latihan 2
Contoh implementasi blok trt-catch
a. Kode program
package bab7.latihan2;
//sakinah(32601700023)
public class contoheksepsi2_sakinah {
public static void main(String[] args) {
int pembilang = 7;
int penyebut = 0;
try{
int hasil = pembilang / penyebut;
System.out.println("hasil ="+hasil);
} catch (Exception e){
System.out.println("KESALAHAN :
"+"Terdapatpembagian dengan nol");
}
System.out.println("Statement setelah blok try
catch");
}
}
b. Output

Gambar 7. 2 output latihan 2

c. Penjelasn
Pada gambar 7.2 merupakan contoh program try dan catch. Pada
program tersebut terdapat variabel pembilang dan penyebut yang
masing masing memiliki nilai 7 dan 0. Apabila di jalankan program
akan langsung menjalankan kondisi catch pada saat terjadi eksepsi yaitu
program akan menampilkan tampilan KESALAHAN: Terdapat
pembagian dengan nol. Namun bagian statemen yang dituliskan setelah
134

blok try-catch tetap akan dieksekusi oleh program yaitu


menampilkan tampilan Statemen setelah blok try catch.
3. Latihan 3
Contoh penjebakan beberapa tipe eksepsi
a. Kode program
package bab7.latihan3;
//sakinah(32601700023)
public class multieksepsi_sakinah {
public static void cobaeksepsi ( int pembilang, int
penyebut)
{
try{
int hasil = pembilang / penyebut;
System.out.println("Hasil Bagi ="+hasil);
int[] Arr = {1,2,3,4,5};
//Array dengan 5 elemen
Arr[10] = 23; //engakes index ke-10
}catch (ArithmeticException eksepsi1) {
System.out.println("Terdapat pembagian dengan
0");
}catch (ArrayIndexOutOfBoundsException eksepsi2){
System.out.println("Index diluar rentang");
}
}
public static void main(String[] args) {
cobaeksepsi (4, 0);
System.out.println();
cobaeksepsi(12, 4);
}
}
135

b. Output

Gambar 7. 3 output latihan 3

c. Penjelasan

Pada gambar 7.3 merupakan contoh program penjebakan


terhadap beberapa eksepsi. Pada program tersebut terdapat method
cobaEksepsi yang di dalam nya terdapat try dan catch. ketika program
melewatkan argumen ke dalam method test() dengan nilai 4 dan
0, program akan membangkitkan eksepsi ArithmeticException.
Sedangkan Jika argumen bernilai 12 dan 4, maka program akan
melakukan pembagian dengan benar dan menghasilkan nilai 3 (hasil
dari 12/4). Bagian statemen yang dituliskan setelah blok try-catch tetap
akan dieksekusi oleh program
4. Latihan 4
Contoh penjebakan eksepsi dengan kata kunci throw
a. Kode program
package bab7.latihan4;
//sakinah(32601700023)
public class mahasiswa {
private String nim;
private String nama;
public void setnim(String inputnim){
try {
nim = inputnim;
if (inputnim == null){
throw new NullPointerException();
}
}catch (NullPointerException npe){
136

System.out.println("Kesalahan :"+"NIM
Mahasiswa tidak boleh null");
}
}
public String getnim(){
return nim;
}
public void setnama(String inputnama){
try{
nama = inputnama;
if (inputnama == null){
throw new NullPointerException();
}
}catch (NullPointerException npe){
System.out.println("Kesalahan :"+"Nama
mahasiswa tidak boleh null");
}
}
public String getnama(){
return nama;
}
}
class DemoThrow{
public static void main(String[] args) {
mahasiswa mhs = new mahasiswa();
mhs.setnim(null);
mhs.setnama("Sakinah");
System.out.println("\nNIM : "+mhs.getnim());
System.out.println("Nama : "+mhs.getnama());
}
}
137

b. Output

Gambar 7. 4 output latihan 4

c. Penjelasan
Pada gambar 7.4 merupakan contoh program kata kunci throw.
Pada program tersebut terdapat class Mahasiswa dan class
DemoThrow. Didalam class Mahasiswa terdapat 3 method yaitu method
setNIM, method getNIM dan juga method setNama. Tampak seperti
pada gambar 7.4, ketika program melewatkan nilai null ke dalam
method setNIM() dari kelas Mahasiswa, program akan
membangkitkan eksepsi NullPointerException yang di lempar atau di
bangkitkan secara manual dengan menggunakan kata kunci throw.
Bagian statemen yang dituliskan setelah blok try-catch tetap akan
dieksekusi oleh program.
5. Latihan 5
Contoh penjelasan eksepsi dengan kata kunci throws
a. Kode program
package bab7.latihan5;
//sakinah(32601700023)
public class latihanthrows_sakinah {
public static void cobaeksepsi() throws
IllegalAccessException{
throw new IllegalAccessException("Kesalahan :
illegal acces");
}
public static void main(String[] args) {
try{
cobaeksepsi();
}catch (Exception e){
138

System.out.println("Eksepsi Di tangkap
disini");
System.out.println(e.getMessage());
}
System.out.println("Statement setelah blok try
catch");
}
}
b. Output

Gambar 7. 5 output latihan 5

c. Penjelasan
Pada Gambar 7.5 merupakan contoh program kata kunci throws.
Pada program tersebut terdapat class DemoThrows dan juga method
cobaEksepsi yang berada di dalam class DemoThrows. Pada deklarasi
method cobaEksepsi() di atas, program menambahkan klausa throws
yang diikuti dengan nama eksepsi yang akan dilempar/dibangkitkan.
Melalui teknik seperti ini, compiler akan mengetahui bahwa method
tersebut dapat membangkitkan eksepsi IllegalAccessException
sehingga program dapat dikompilasi dengan sukses. Bagian statemen
yang dituliskan setelah blok try-catch tetap akan dieksekusi oleh
program.
6. Latihan 6
Contoh penggunaan kata kunci finally
a. Kode program
package bab7.latihan6;
//sakinah(32601700023)
public class demofinal_sakinah {
public static void cobaeksepsi (int pembilang, int
penyebut){
139

try{
int hasil = pembilang / penyebut;
System.out.println("hasil bagi :"+hasil);
int [] Arr = {1,2,3,4,5};
Arr[10] = 23;
}catch (ArithmeticException eksepsi1){
System.out.println("Terdapat pembagian dengan
angka 0");
}catch (ArrayIndexOutOfBoundsException eksepsi2){
System.out.println("Index di luar rentang");
}finally{
System.out.println("ini adalah statement di
blok finally");
}
}
public static void main(String[] args) {
cobaeksepsi (4,0);
System.out.println();
cobaeksepsi(12, 4);
}
}
b. Output

Gambar 7. 6 output latihan 6


140

c. Penjelasan
Pada gambar 7.6 merupakan contoh program kata kunci finally.
Pada program tersebut terdapat class DemoFinally dan
didalamnya terdapat method cobaEksepsi. Didalam method

cobaEksepsi terdapat try dan catch. Meskipun terjadi eksepsi atau


tidak pada program, program akan tetap menjalankan statemen yang
ada di dalam blok finally sehingga di setiap terjadi ekespsi maupun
tidak blok finally akan tetap dijalanlan. Bagian statemen yang
dituliskan setelah blok finally tetap akan dieksekusi oleh program.

7.4 Tugas
1. Tugas 1
Membuat program penyisipan array dan di gunakan blok try-catch untuk
menangani kesalahannya
a. Kode program
package bab7.latihan6;
//sakinah(32601700023)
public class tugas1_sakinah;
public static void cobaeksepsi (int x, int y){
try {
int arr[];
int arr2[];
arr = new int[2];
arr2 = new int[3];
arr[0] = 1;
arr[1] = 2;
for (int i=0; i<arr.length; i++){
System.out.println(arr[i]+" ");
}
System.out.println();
arr2[0] = 1;
arr2[1] = 3;
arr2[2] = 2;
for (int i=0; i<arr2.length; i++){
System.out.println(arr2[i]+" ");
141

}
System.out.println();
}catch (ArrayIndexOutOfBoundsException eksepsi2){
System.out.println("Indeks Di luar ruang");
}
}
public static void main(String[] args) {
cobaeksepsi(3, 6);
}
}
b. Output

Gambar 7. 7 output tugas 1

c. Penjelasan

Pada gamabar 7.7 Program tersebut contoh pengaplikasian kata


kunci try dan catch. Syntax pada try merupakan syntax untuk
menampilkan array dan menginputkan nilai baru. Apabila indeks
yang akan diinputkan nilai baru itu meleibihi dari indeks array yang
ada, maka syntax catch akan menangkap kesalahan dan menampilkan
pesan eror.
7.5 Kesimpulan
Kesimpulan yang dapat diambil dari bab 6 adalah Polyforfisme
merupakan salah satu konsep penting dalam Object Oriented Programming
(OOP) khususnya dibahasa pemrograman Java setelah abstraction dan
inheritance. Polymorphism berarti banyak bentuk. Ada beberapa definisi
berbeda tentang polymorphism yang berkaitan dengan pemrograman
142

berorientasi objek. Sedangkan apa yang dimaksud dengan polymorphism


sendiri, sebenarnya sulit untuk didefinisikan. Sejalan dengan contoh yang
diberikan, Anda diharapkan dapat mengerti dan memahami konsep
polymorphism itu sendiri.Polyforfisme sering dikaitkan dengan penggunaan
lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan
nama sama dapat diterapkan dengan method overloading dan method
overriding. Peran polymorphism sebenarnya tidak terbatas hanya pada hal
tersebut. Ada keterkaitan antara polymorphism dan inheritance (turunan).
BAB VIII

PENANGANAN EKSEPSI

8.1 Tujuan
Adapun tujuan dari praktikum bab 8 ini adalah sebagai berikut :
1. Praktikan mampu mengenali dan memahami input dan output (I/O) dalam
pemrograman dengan Java.
2. Memperkenalkan beberapa kelas yang terdapat pada paket java.io yang
diperlukan untuk melakukan proses input dan output di dalam java
8.2 Dasar Teori
8.2.1 Pengertian Stream
Program Java melakukan proses I/O melalui stream. Stream adalah
sebuah abstraksi yang dapat memberikan atau mendapatkan informasi.
Stream dapat dihubungkan dengan peralatan fisik yang terdapat dalam system
I/O Java, seperti: keyboard, file, layar console, dan yang lainnya. Cara kerja
stream selalu sama, meskipun jenis peralatan yang terhubung dengan
stream tersebut berbeda. Ini artinya, sebuah stream input dapat
mengabstraksikan beberapa tipe peralatan fisik, seperti: keyboard, file,
atau socket jaringan. Begitu pula dengan stream output, yang dapat
dihubungkan dengan layar console, file, maupun koneksi jaringan. Dengan
demikian, stream akan memudahkan kita dalam melakukan proses I/O,
karena kode program yang kita tulis akan sama untuk masing-mai sng
peralatan fisik yang dihubungkan dengan stream bersangkutan.
8.2.2 Tipe Stream
Terdapat dua buah tipe stream yang dapat digunakan, yaitu: stream
byte dan stream karakter. Sesuai dengan namanya, stream byte digunakan
untuk memberikan atau menyimpan informasi data dalam bentuk byte,
misalnya untuk menulis dan membaca file biner. Sedangkan stream karakter
digunakan untuk melakukan proses I/O yang melibatkan data-data dalam
bentuk karakter , misalnya pada saat kita melakukan proses baca/tulis ke file

143
144

teks. Dalam Java, stream didefinisikan dengan menggunakan empat kelas


abstrak, yaitu: InputStream, OutputStream, Reader, dan Writer. Kelas
InputStream dan OutputStream merupakan kelas abstrak yang dirancang
sebagai kelas induk atau superclass untuk kelaskelas yang termasuk ke
dalam kategori stream byte. Adapun kelas Reader dan Writer merupakan
kelas abstrak yang akan diturunkan menjadi kelaskelas baru yang termasuk ke
dalam kategori stream karakter.
Melalui proses pewarisan (inheritance), semua kelas yang diturunkan
dari InputStream maupun Reader akan memiliki method read(), yang akan
digunakan untuk proses pembacaan data. Adapun semua kelas yang
diturunkan dari OutputStream maupun Writer akan memiliki method
write(), yang akan digunakan untuk proses penulisan data. Kedua method
tersebut dideklarasikan sebagai method abstrak sehingga harus
diimplementasi oleh setiap kelas turunannya.
8.2.3 Melakukan Input
Dalam Java, input console dilakukan melalui pembacaan terhadap
stream System.in. Untuk mendapatkan karakter-karakter yang dimasukkan
melalui keyboard ke dalam layar console, kita perlu membungkus System.in
di dalam objek BufferedReader. Hal ini, dilakukan untuk membentuk
stream karakter karena System.in sebenarnya merupaka stream byte. Adapun
bentuk constructor dari BufferedReader sebagai berikut:
BufferdReader(Reader inputReader)
InputReader adalah stream yang akan dihubungkan dengan instance
atau objek dari kelas BufferedReader yang dibuat. Karena Reader berupa
kelas abstrak, maka kita perlu mencari kelas turunannya yang berupa kelas
konkrit. Salah satunya adalah kelas InputStreamReader, yang dapat
mengkonversi byte ke karakter. Sekarang, agar objek dari
InputStreamReader dapat dihubungka n dengan System.in, kita perlu
menggunakan bentuk constructor sebagai berikut:
InputStreamReader(InputStream inputStream)
145

InputStream dapat diisi dengan System.in. Dengan demikian,


untuk membuat objek BufferedReader yang dapat terhubung dengan
keyboard, kita perlu menggunakan kode berikut:
inputStreamReader isr = new
InputStreamReader(System.in);
BufferedReader br = new BufferredReader(isr);
Sampai tahap ini, objek br sudah siap digunakan untuk melakukan
proses input, yaitu dengan melakukan pemanggilan terhadap method read()
maupun readline(), yang akan kita bahas lebih lanjut.
8.2.4 Membaca Input Data Karakter
Untuk membaca input berupa karakter, kita bisa menggunakan
method read() yang terdapat pula pada kelas BufferedReader. Berikut ini
contoh program yang akan menunjukkan bagaimana menangani proses input
data karakter.
8.2.5 Membaca input data string
Untuk membaca input berupa string, kita bisa menggunakan
method readLine(), bukan method read().
8.2.6 Membaca Input Data Numerik
Untuk membaca input berupa data numerik, kita bisa menggunakan
method readLine() seperti pada saat menangani input data string, dan
selanjutnya string hasil input tersebut dikonversi ke tipe numerik.
8.2.7 Dasar-dasar Baca Tulis File
Java menyediakan dua buah stream yang paling sering digunakan
untuk melakukan proses pembacaan/penulisan data dari/ke dalam file, yaitu:
FileInputStream (untuk membaca data) dan FileOutputStream (untuk menul
i s data). Keduanya akan membentuk stream byte yang terhubung ke sebuah
file. Untuk membuka file, kita harus membentuk objek dari salah satu kelas
stream tersebut dengan menyertakan nama file sebagai argumen pada
constructor-nya.
Bentuk secara umum adalah sebagai berikut:
FileInputStream(String filename) throws
FileNotFoundException
146

FileOutputStream(String filename) throws


FileNotFoundException
FileName menunjukkan nama file yang akan dibuka. Pada
saat menggunakan stream input, jika file tidak ditemukan maka kedua
constructor akan membangki tkan eksepsi FileNotFoundException,
sedangkan pada saat menggunakan stream output, eksepsi tersebut akan
muncul jika file output tidak dapat terbentuk. Proses penulisan data ke dalam
file. Untuk melakukan hal ini, kita perlu menggunakan method write().
Bentuk umum dari method write() sebagai berikut:
void write(int nilaiByte).
8.2.8 File
File merupakan data yang siap di input dan diproses dalam Stream
yang merupakan data operasi dalam pemrograman. Keterkaitan antara
keduanya, proses Input dan Ouput tetap dilakukan walau dengan cara yang
berbeda, dari subclass maupun method yang digunakan. (widiati, 2002)

8.3 Latihan
1. Latihan 1
Program dengan proses input data karakter.
a. Kode program
package bab8.latihan1;
//sakinah(32601700023)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class inputkarakter {
public static void main(String[] args) throws
IOException {
System.out.print("Masukkan sebuah karakter : ");
char inputkarakter;
InputStreamReader isr = new
InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
inputkarakter = (char) br.read();
147

System.out.println("Karakter yang dimasukkan


adalah\'"+inputkarakter+"\'");
}
}
b. Output

Gambar 8. 1 output latihan 1


c. Penjelasan
Pada gambar 8.1 merupakan contoh program membaca input
data karakter. Pada program tersebut pertama akan mengimport
package agar program dapat dijalankan. Pada program tersebut
mula-mula program akan menampilkan tampilan masukkan sebuah
karakter yang nantinya akan di simpan di dalam variabel char
KarakterInput. Setelah itu program akan menangkap data yang di
inputkan dengan perintah KarakterInput = (char) br.read().
Setelah itu program akan menampilkan karakter yang telah di inputkan
sebelumnya.
2. Latihan 2
Contoh implementasi blok trt-catch
a. Kode program
package bab8.latihan2;
//sakinah(32601700023)
import java.io.*;
public class inputstring {
public static void main(String[] args) throws
IOException {
System.out.print("Masukkan Nama Anda : "); String
namaInput;
InputStreamReader isr = new
InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
148

namaInput = br.readLine();
System.out.println("Halo "+ namaInput + "...");
System.out.println("Semoga Anda Sukses Selalu..");
}
}
b. Output

Gambar 8. 2 output latihan 2

c. Penjelasan
Pada gambar 8.2 merupakan contoh program membaca input
data string. Pada program tersebut pertama program akan mengimport
package agar program dapat dijalankan dan tidak terjadi error.
Pada program tersebut mula-mula program akan menampilkan tampilan
Masukkan Nama Anda : yang nantinya akan di simpan di dalam
variabel char namaInput. Setelah itu program akan menangkap
inputan data yang telah di masukkan sebelumnya dengan perintah
setelah itu program akan menampilkan data yang telah di
inputkan sebelumnya.
3. Latihan 3
Contoh penjebakan beberapa tipe eksepsi
a. Kode program
package bab8.latihan3;
//sakinah(32601700023)
import java.io.*;
public class inputnumerik_sakinah {
public static void main(String[] args) throws
IOException {
String temp;
System.out.print("Masukkan sebuah bilangan bulat :");
149

int bilanganInput = 0; InputStreamReader isr = new


InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
temp = br.readLine();
try{
bilanganInput = Integer.parseInt(temp);
}catch (NumberFormatException nfe){
System.out.println("Nilai yang dimasukkan " +
"bukan bilangan bulat");
System.exit(1);
}
System.out.println("Bilangan yang anda masukkan
adalah " + bilanganInput);
}
}
b. Output

Gambar 8. 3 output latihan 3

c. Penjelasan

Pada gambar 8.3 merupakan contoh program input data numerik.


Pada program tersebut pertama program akan mengimport package
agar program dapat dijalankan dan tidak terjadi error. Pada program
tersebut mula-mula program akan menampilkan tampilan Masukkan
sebuah bilangan bulat : yang nantinya akan disimpan di dalam variabel
bilanganInput. Data tersebut kemudian akan dianggap sebagai string.
Setelah itu program akan menangkap data yang telah diinputkan
sebelmunya menggunakan perintah temp = br.readLine().

Kemudian program akan mengkonversi data dari string ke integer.


150

4. Latihan 4
Contoh penjebakan eksepsi dengan kata kunci throw
a. Kode program
package bab8.latihan4;
//sakinah(32601700023)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class demobacafile_sakinah {
public static void main(String[] args) {
int data;
FileInputStream finput = null;
try{
finput = new FileInputStream("D:/Input.txt");
}
catch (FileNotFoundException fnfe){
System.out.println("File tidak ditemukan.");
return;
}
try{
while ((data = finput.read()) != -1) {
System.out.print((char) data);
}
}
catch (IOException ioe){
System.out.println(ioe.getMessage());
return;
}
try{
finput.close();
}
catch (IOException ioe){
}
}
}
151

b. Output

Gambar 8. 4 output latihan 4

Gambar 8. 5 isi file di consle

c. Penjelasan
Pada gambar 8.4 merupakan contoh program dasar-dasar baca
tulis file pada program java. Pada program tersebut pertama akan
mengimport package agar program dapat dijalankan dan tidak
terjadi error. Pada program tersebut terdapat statemen try dan catch.
Mula mula program akan membaca dan membuka file yang terletak
pada direktori D:. Apabila file yang ada didalam direktori tersebut ada,
maka program akan menjalankan statemen try dan jika tidak ada maka
program akan menjalankan statemen catch. Kemudian program akan
membuka dan membaca file tersebut dan menampilkanya kedalam
layar console
5. Latihan 5
Contoh penjelasan eksepsi dengan kata kunci throws
a. Kode program
package bab8.latihan5;
//sakinah(32601700023)
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class tulisfile_sakinah {
public static void main(String[] args) {
FileOutputStream foutput = null;
152

String data = "Hello Gaees! \n Nama ku sakinah \n


Salam sukses dari saya..";
try{
foutput = new FileOutputStream("D:/output.txt");
}catch (FileNotFoundException fnfe){
System.out.println("File tidak dapat
terbentuk.");
return;
}
try{
for (int i=0; i<data.length(); i++) {
foutput.write((int) data.charAt(i));
}
}catch (IOException ioe){
System.out.println(ioe.getMessage());
return;
}
try{
foutput.close();
}catch (IOException ioe){
}
}
}
a. Output

Gambar 8. 6 Hasil Output latihan 5

Gambar 8. 7 File Output.txt


153

b. Penjelasan
Pada Gambar 8.6 merupakan contoh program input data numerik.
Pada program tersebut pertama akan mengimport package agar
program dapat dijalankan dan tidak terjadi error. pada program tersebut
terdapat statemen try dan catch. Pada program tersebut mula-mula
program akan menginisialisasi String data = "Hello Guys ! \n
Semoga \n Sukses selalu..". Setelah itu program akan membuka
file, apabila terjadi kesalahan maka program akan menjalankan
statemen try dan jika terjadi kesalahan maka program akan menjalankan
statemen catch. Setelah itu program kemudian akan menulis data String
sebelunya ke dalam file. Kemudian file akan terbentuk di direktori D:
dengan nama OUTPUT.txt

8.4 Tugas
1. Tugas 1
Membuat program penyisipan array dan di gunakan blok try-catch untuk
menangani kesalahannya
a. Kode program
package bab8.tugas1;
//sakinah(32601700023)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class ProgramFile {
public static void main(String[] args) {
int input;
Scanner baca = new Scanner(System.in);
System.out.println("Memilih Opsi Program
:");
System.out.println("1. Membuat File");
System.out.println("2. Mengisi File");
154

System.out.println("3. Rename File");


System.out.println("4. Menghapus File");
System.out.print("Masukkan Opsi :");
input = baca.nextInt();

System.out.println();
FileOutputStream foutput = null;
if (input == 1) {
System.out.println("Membuat file
baru");

System.out.println("=================");
try {
foutput = new
FileOutputStream("D:/programfiles/netbeans/praktikumPBO
-sakinah/Bab8/tugas1/tugas8.txt");
foutput = new
FileOutputStream("D:/programfiles/netbeans/praktikumPBO
-sakinah/Bab8/tugas1/tugas8dat");
System.out.println("Pembuatan
file berhasil...");
} catch (FileNotFoundException fnfe)
{
System.out.println("File tidak
terbentuk.");
return;
}
} else if(input == 2) {
System.out.println("Mengisi data pada
file");

System.out.println("======================");
String teks = "Assalamualaikum\n";
try {
foutput = new
FileOutputStream("D:/programfiles/netbeans/praktikumPBO
-sakinah/Bab8/tugas1/tugas8txt");
155

for (int i = 0; i < teks.length();


i++)
{

foutput.write((int)teks.charAt(i));
}
System.out.println("File berhasil di
isi data...");
} catch (IOException ioe) {

System.out.println(ioe.getMessage());
return;
}
} else if(input == 3) {
System.out.println("Mengganti Nama Pada
File");

System.out.println("========================");
File coba = new
File("D:/programfiles/netbeans/praktikumPBO-
sakinah/Bab8/tugas1/tugas8.txt");
File baru = new
File("D:/programfiles/netbeans/praktikumPBO-
sakinah/Bab8/tugas1/tugas8baru.txt");
coba.renameTo(baru);
System.out.println("file berhasil
diganti nama...");
} else if(input == 4) {
System.out.println("Menghapus File");
System.out.println("==============");
File data = new
File("D:/programfiles/netbeans/praktikumPBO-
sakinah/Bab8/tugas1/tugas8.dat");
data.delete();
System.out.println("file berhasil
dihapus...");
} else {
156

System.out.println("\n Opsi tidak sesuai


dengan pilihan di atas...");
}
}
}
b. Output

Gambar 8. 8 Output pilihan 1

Gambar 8. 9 Bukti output latihan 1

Gambar 8. 10 Output pilihan 2

Gambar 8. 11 Bukti output latihan 2


157

Gambar 8. 12 Output pilihan 3

Gambar 8. 13 Output pilihan 4

Gambar 8. 14 Bukti output pilihan 4

Gambar 8. 15 Output pilihan 5

Gambar 8. 16 Bukti output pilihan 5


158

Gambar 8. 17 output tugas 1


a. Penjelasan
Progam Tugas 1 gambar 8.8 sampai 8.17 merupakan Program
File. Pertama tama kita membuat Membuat file dengan due eksensi .txt
dan .dat yaitu file tugas8.txt dan tugas8.dat. Setelah itu program
kemudian akan menulis data String sebelumnya ke dalam file.
Kemudian file akan terbentuk di direktori D : tugas8 dengan namatxt.
Kemudian membuat file baru dengan mengetik 1 dan akan keluar
tulisan pembuatan file berhasil. . Kemudian mengisi data dengan file
tekan no. 2 lalu akan keluar hasil file berhasil diisi data yang
berisiString teks = "Assalamualaikum";. Kemudian tekan no.
3 untuk mengubah nama file yang semua namanya tugas8.txt sekarng
menjadi tugas8baru.txt dan hasil dari database akan keluar“file
berhasil diganti nama...”. Kemudian tekan no. 4 yaitu
menghapus file.“file berhasil dihapus...”. Berarti di dalam
localdisk D:/ file tugas8.dat telah hilang karena sudah dihapus melalui
database.
8.5 Kesimpulan
Berdasarkan praktikum yang telah di lakukan sebelumnya dapat
diambil kesimpulan bahwa dalam bahasa pemrograman java terdapat proses
input dan Output. Program Java melakukan proses I/O melalui stream.
Stream adalah sebuah abstraksi yang dapat memberikan atau mendapatkan
informasi. Stream dapat dihubungkan dengan peralatan fisik yang terdapat
dalam system I/O Java, seperti: keyboard, file, layar console, dan yang
lainnya. Sesuai dengan namanya, stream byte digunakan untuk memberikan
atau menyimpan informasi data dalam bentuk byte, misalnya untuk menulis
dan membaca file biner. Sedangkan stream karakter digunakan untuk
melakukan proses I/O yang melibatkan data-data dalam bentuk karakter,
159

misalnya pada saat kita melakukan proses baca/tulis ke file teks. Cara kerja
stream selalu sama, meskipun jenis peralatan yang terhubung dengan stream
tersebut berbeda. Ini artinya, sebuah stream input dapat mengabstraksikan
beberapa tipe peralatan fisik, seperti: keyboard, file, atau socket jaringan.
Begitu pula dengan stream Output, yang dapat dihubungkan dengan layar
console, file, maupun koneksi jaringan. Terdapat dua buah tipe stream yang
dapat digunakan, yaitu: stream byte dan stream karakter.
DAFTAR PUSTAKA

Indrajani, S. M. (2007). Pemograman Berbasisi Objek dengan Java. Jakarta: PT


Elex Media Komputindo, Kelompok Gramedia, Anggota IKAPI, Jakarta
2007.
Rickyanto. (2005).
Sinaga. (2015).
Timposu, U. (2016). Method dalam mengembalikan nilai. Java OOP, 15-23.
widiati. (2002).
LAMPIRAN

Anda mungkin juga menyukai