Anda di halaman 1dari 113

MODUL

OBJECT ORIENTED
PROGRAMMING
(OOP)

Disusunoleh : Agung Setiawan, S.Kom, MM, M.Kom

Program StudiSistemInformasi
FakultasIlmuKomputer
UniversitasPasirPengaraian

2017

1
BAB I
PENDAHULUAN

Objek adalah benda, baik yang berwujud nyata seperti yang dijumpai
dalam kehidupan kita, maupun yang tidak nyata seperti halnya berupa sistem atau
konsep. Dalam OOP (Object Oriented Programming). Object adalah unit terkecil
pemrograman yang memiliki data (sifat karakteristik) dan fungsi.
Contoh: Pena yang kita pegang untuk menulis, mobil/motor yang kita
kendarai saat bepergian, kue yang kita makan, kucing yang kita pelihara,
telefon yang kita gunakan untuk berkomunikasi, kesemuanya adalah benda
nyata dan merupakan objek. Pembayaran tagihan melalui internet, sistem antrian
tiket di bioskop, penyimpanan uang di bank, atau pengendalian komunikasi data
pada port I/O komputer, meskipun bukan benda nyata, namun kesemuanya juga
merupakan objek.
Bagi anda yang pernah mempelajari bahasa pemrograman lain seperti
Delphi, Visual Basic atau Visual C, pada saat mendesain layout grafis user
interface tentulah tidak asing lagi dengan komponen CommandButton, EditText,
Label, MessageBox, ProgressBar dan lain sebagainya. Ini semua juga merupakan
objek. Masing-masing komponen memiliki data atau yang biasa dikenal sebagai
properties, dan juga fungsi (method).

1.1.Tujuan Pembelajaran
a. Memahami konsep Pemrograman Berbasis Obyek atau Object Oriented
Programming (OOP)
b. Memahami perbedaan antara pemrograman OOP dengan pemrograman
prosedural

1.2.Perbandingan Pemrograman Prosedural dengan Pemrograman OOP


a. Pemrograman Prosedural
• Diselesaikan dalam bentuk proseduratau fungsi
• Program merupakan urut-urutaninstruksi
• Program dipecah-pecah ke dalam subprogram yang lebih sederhana
• Fokus utama pada prosedur dan fungsi
• Fungsi dan prosedur digunakan untukmemanipulasi data
• Sedangkan data sendiri bersifat pasif

b. Pemrograman OOP
• Fungsi dan data menjadi satu kesatuan yang disebut obyek
• Obyek-obyek dalam OOP bersifat aktif

1
• Cara pandang : program bukan urut-urutan instruksi tapi diselesaikan
oleh obyek-obyek yang bekerjasama untuk menyelesaikan masalah
Sehingga dapat ditarik kesimpulan perbedaan antara prosedural dan OOP, yaitu :
a. Prosedural
Fokus pada bagaimana cara komputer menangani masalah.
b. OOP
Fokus pada masalah yang ditangani dengan menggunakan komputer
1.3.Tentang Obyek
a. Apa yang dimaksud Obyek
Semua hal yang ada dalam dunia nyata, baik konkrit maupun abstrak
Contoh obyek konkrit : rumah, sekolah, dosen, mahasiswa, dll.
Contoh obyek abstrak : mata kuliah, penjadwalan, dll.

b. Ciri-ciri atau Karakteristik Obyek


• Obyek memiliki status (state) dan tingkah laku (behavior)
• Status (state) disebut juga dengan atribut
Contoh obyek : obyek mobil
– Atribut : merek, warna, bahan bakar
– Method : pindah persnelling, kecepatan bertambah, dll
• Pada OOP : status disimpan dalam variabel, dan tingkah laku
disimpan dalam method

1.4.Tentang Class
Kelas adalah wadah yang berisi abstraksi (pemodelan) dari suatu objek
(benda), yang mendeskripsikan data (sifat karakteristik) dan fungsi yang dimiliki
oleh objek tersebut. Karena kelas merupakan wadah yang akan digunakan untuk
menciptakan objek, jelaslah bahwa kita harus membuat kelas terlebih dahulu
sebelum membuat objek.
Hubungan antara kelas dan objek dapat diilustrasikan sebagai resep kue
dengan kue-nya, di mana resep kue adalah kelas dan kue adalah objeknya.
Sebelum membuat kue, kita harus membaca dan mempelajari resep kue tersebut
terlebih dahulu. Di dalam resep disebutkan data mengenai kue, yaitu bahan-
bahan yang diperlukan serta fungsi-fungsi yaitu bagaimana cara mengolah
bahan tersebut hingga menjadi kue yang siap disajikan. Pada OOP, kita tidak
hanya
menggunakan resep kue yang sudah ada untuk membuat kue, namun juga
menciptakan resep-resep kue yang baru sesuai selera kita. Oleh sebab itu, yang
menjadi fokus dalam OOP adalah bagaimana menciptakan dan mendefinisikan
kelas yang kelak menjadi wadah untuk membuat objek-objek.
Suatu kelas dapat dibuat sebagai kelas yang benar-benar baru, atau dapat
juga dibentuk dari kelas yang sudah ada. Baru di sini dalam pengertian, semua
data dan method yang dimiliki oleh kelas tersebut kita deskripsikan dan buat

2
sendiri. Sedangkan bila membentuk dari kelas yang sudah ada, bermakna kita
menggunakan data dan method yang telah dideskripsikan dalam
suatu kelas acuan (fundamen). Proses pembentukan kelas baru dari kelas yang
sudah ada disebut sebagai pewarisan (inheritance). Kelas yang menjadi basis bagi
pembentukan kelas lainnya disebut sebagai Kelas Super, sedangkan kelas yang
terbentuk dinamakan Kelas Sub.
Proses pewarisan ini akan menghasilkan suatu hierarki kelas. Kelas yang
terletak pada puncak hierarki disebut sebagai Kelas Abstrak. Sifat dari kelas
abstrak adalah, ia hanya berisi deskripsi data dan method yang sangat umum,
sehingga tidak mungkin diimplementasikan secara terperinci. Oleh sebab itu, kelas
abstrak ini tidak dapat langsung diinstansiasi menjadi objek.
Sebagai ilustrasi, tinjaulah hierarki kelas dari Kelas Hewan Darat Berkaki
Empat yang memiliki objek (instans) berupa sapi, anjing, harimau, kuda, dan
kucing. Kelas tersebut dihasilkan dari pewarisan kelas Hewan Darat, yang
merupakan kelas sub dari Kelas Hewan, dan seterusnya sampai ke puncak kelas,
yakni Kelas Mahluk Hidup. Dalam ilustrasi ini, Kelas Mahluk Hidup adalah
kelas abstrak. Kita tidak mungkin menginstans objek-objek tersebut langsung
dari Kelas Mahluk Hidup, karena ia hanya mengandung deskripsi data dan
method yang sangat umum. Data bisa berupa organ-organ tubuh, sedangkan
method berupa bernafas, makan, menghasilkan keturunan, dan sebagainya.

Gambar 1.1. Hirarki Class

a. Apa itu Class


• Class merupakan tempat untuk membuat obyek

3
• Di dalam class dideklarasikan variabel dan method yang dimiliki oleh
obyek
• Proses pembuatan obyek dari sebuah class disebut dengan instantiation
• Jadi obyek merupakan hasil instansiasi dari class
• Obyek disebut juga dengan instance

b. Anggota Class (Class Member)


• Anggota Class terdiri dari atribut dan method.
• Tiap anggota class memiliki kontrol pengaksesan tersendiri, artinya
apakah anggota tersebut dapat diakses dengan bebas (tipe public) atau
hanya dapat diakses melalui sebuah interface.

1.5.Tentang Atribut
a. Apa itu Atribut?
Atribut adalah data yang dapat membedakan antara satu obyek dengan
obyek yang lain.
Contoh untuk class mahasiswa terdapat obyek mahasiswa si A, dan obyek
mahasiswa si B. Yang membedakan antara obyek si A dan obyek si B
adalah NRP-nya yang merupakan atribut dari obyek tersebut.

b. Instance Variable Vs Class Variable


1. Instance Variable
• Atribut yang dimiliki oleh obyek dari class yang sama
• Tiap obyek memiliki instance variable dan menyimpan nilainya
tersendiri
• Jadi beberapa obyek yang berasal dari class yang sama, nilai instance
variablenya boleh sama boleh tidak.

2. Class Variable
• Atribut yang dimiliki oleh semua obyek yang berasal dari class yang
sama
• Semua obyek memiliki nilai class variable yang sama
• Jadi semua obyek yang berasal dari class yang sama, nilai class
variable-nya harus sama

c. Ilustrasi Perbedaan Class Variable dengan Instance Variable


• Ada seekor kucing bernama pusi dan seorang anjing bernama heli.
• Keduanya merupakan dua obyek yang berbeda dan berasal dari class
yang sama yaitu binatang.
• Obyek pusi dan obyek heli memiliki class variable :
– Jenis : binatang

4
– Ekor : ada
• Obyek pusi memiliki instance variable :
– Suara : meong
• Obyek heli memiliki instance variable :
– Suara : guggug

d. Tentang Behaviour atau Method


• Dalam Class, behavior disimpan dalam bentuk method.
• Method merupakan hal-hal yang bisa dilakukan oleh obyek dari suatu
class
• Yang bisa dilakukan oleh method :
– Merubah nilai atribut suatu obyek
– Menerima informasi dari obyek lain
– Mengirim informasi ke obyek lain untuk melakukan sesuatu

e. Method dalam class


• Method merupakan bagian dari class yang menangani suatu tujuan
tertentu dan berisi serangkaian perintah (perintah=baris program)
• Obyek yang sama dengan obyek yang lain dapat berkomunikasi dengan
menggunakan method.

Contoh :
class Mobil {String aktifitas, warna;
int kecepatan;
void cekKecepatan() {
if (kecepatan==0)
aktifitas=“parkir”;}
void cetakAtribut() {
System.out.println(“Aktifitas = “+aktifitas);
System.out.println(“Warna = “+warna);
System.out.println(“Kecepatan=“+kecepatan);
}}

f. Penciptaan Obyek dari sebuah Class


• Obyek diciptakan dengan perintah
new
• Misal akan diciptakan obyek baru dari class mobil dengan nama
mobilku
• Maka perintah penciptaan obyek
mobilku dari class Mobil :
• Mobil mobilku = new Mobil();

5
1.6.Tentang OOP
a. Karakteristik OOP
Suatu program disebut dengan pemrograman berbasis obyek(OOP) karena
terdapat :
– Encapsulation (pembungkusan)
– Inheritance (pewarisan)
– Polymorphism (polimorfisme –perbedaan bentuk)

b. Encapsulation (Pembungkusan)
• Variabel dan method dalam suatu obyek dibungkus agar terlindungi
• Untuk mengakses, variabel dan method yang sudah dibungkus tadi
perlu interface
• Setelah variabel dan method dibungkus, hak akses terhadapnya bisa
ditentukan.
• Konsep pembungkusan ini pada dasarnya merupakan perluasan dari
tipe data struktur

c. Mengapa Variabel dan Method perlu dibungkus?


• Supaya terlindungi, artinya hak akses terhadapnya bisa ditentukan.
• Bersifat pribadi, artinya kita tidak perlu tahu semua method yang ada
dalam obyek
• Contoh : obyek Roti, obyek ini mempunyai method Pembuatan Roti
• Jika kita ingin memakan roti, tentu kita tidak perlu tahu bagaimana
cara membuatnya
• Demikian juga jika kita ingin mengakses obyek Roti, tentu kita tidak
perlu tahu isi dari method Pembuatan Roti.

d. Inheritance (Pewarisan)
• Sebuah class bisa mewariskan atribut dan method-nya ke class yang
lain
• Class yang mewarisi disebut superclass
• Class yang diberi warisan disebut subclass
• Sebuah subclass bisa mewariskan atau berlaku sebagai superclass bagi
class yang lain => disebut multilevel inheritance

e. Contoh Pewarisan
• Class Nenek adalah superclass dari class Ibu
• Class Ibu adalah superclass dari class Anak
• Sebuah subclass memiliki beberapa kesamaan dengan superclass-nya,
dalam hal atribut/variabel dan method
• yang dimilikinya

6
• Contoh pewarisan yang lain : class kendaraan merupakan superclass
bagi class mobil, truk dan bis

f. Keuntungan Penggunaan Pewarisan


• Subclass memiliki atribut dan method yang spesifik yang
membedakannya dengan superclass, meskipun keduanya mirip (dalam
hal kesamaan atribut dan method)
• Dengan demikian pada pembuatan subclass, programmer bisa
menggunakan ulang source code dari superclass yang ada => ini yang
disebut dengan istilah reuse
• Class-class yang didefinisikan dengan atribut dan method yang bersifat
umum yang berlaku baik pada superclass maupun subclass disebut
dengan abstract class

g. Konsep Multiple Inheritance dan Single Inheritance


• Suatu subclass bisa menjadi superclass bagi class yang lain => berlaku
untuk C dan Java
• Suatu class diperbolehkan memiliki lebih dari satu superclass =>
berlaku hanya di C
• Suatu class hanya boleh memiliki satu superclass => hanya berlaku
pada Java

h. Polimorphism (Polimorfisme)
Polimorfisme artinya penyamaran dimana suatu bentuk dapat memiliki
lebih dari satu bentuk

7
BABII
PENGENALAN JAVA

2.1 Tujuan
Pada BAB ini akan dibahas secara singkat tentang sejarah Javadan definisi
teknologiJava. BAB ini juga akan sedikit menyinggung tentang fase–fase dalam
programJava.
Pada akhir pembahasan, diharapkan pembaca dapat :
1. Menjelaskan fitur–fitur teknologi dari Java meliputi Java Virtual
Machine(JVM), garbage collection, dan code security.
2. Menjelaskan perbedaan fase pada pemrograman Java

2.2 Latar Belakang Bahasa Java


Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton dan
JamesGosling ingin merancang bahasa komputer untuk perangkat konsumer
seperti cableTV Box. Dikarenakan perangkat tersebut tidak memiliki banyak
memori, bahasaharus berukuran kecil dan mengandung kode yang liat. Juga
karena manufaktur-manufakturberbeda memilih processor yang berbeda pula,
maka bahasa harusbebas dari manufaktur manapun. Proyek diberi nama
kode”Green”.
Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap
platformmengantar tim mempelajari implementasi Pascal yang pernah dicoba.
Niklaus Wirth,pencipta bahasa Pascal telah merancang bahasa portabel yang
menghasilkanintermediate code untuk mesin hipotesis. Mesin ini sering disebut
dengan mesin maya (virtual machine). Kode ini kemudian dapat digunakan di
sembarang mesinyang memiliki interpreter. Proyek Green menggunakan mesin
maya untuk mengatasiisu utama tentang netral terhadap arsitektur mesin.
Karena orang–orang di proyek Green berbasis C++ dan bukan Pascal
makakebanyakan sintaks diambil dari C++, serta mengadopsi orientasi objek dan
bukanprosedural. Mulanya bahasa yang diciptakan diberi nama ”Oak” oleh James
Gosling
yang mendapat inspirasi dari sebuah pohon yang berada pada seberang
kantornya,namun dikarenakan nama Oak sendiri merupakan nama bahasa
pemrograman yangtelah ada sebelumnya, kemudian SUN menggantinya dengan
Java. Nama Javasendiri terinspirasi pada saat mereka sedang menikmati secangkir
kopi di sebuahkedai kopi yang kemudian dengan tidak sengaja salah satu dari
merekamenyebutkan kata Javayang mengandung arti asal bijih kopi. Akhirnya
merekasepakat untuk memberikan nama bahasa pemrograman tersebut dengan
nama Java.
Produk pertama proyek Green adalah Star 7 (*7), sebuah kendali jarak jauh
yangsangat cerdas. Dikarenakan pasar masih belum tertarik dengan produk

8
konsumercerdas maka proyek Green harus menemukan pasar lain dari teknologi
yangdiciptakan. Pada saat yang sama, implementasi WWW dan Internet
sedangmengalami perkembangan pesat. Di lain pihak, anggota dari proyek Green
jugamenyadari bahwa Java dapat digunakan pada pemrograman internet,
sehinggapenerapan selanjutnya mengarah menjadi teknologi yang berperan di
web.Java telah mengakomodasi hampir seluruh fitur penting bahasa–
bahasapemrograman yang ada semenjak perkembangan komputasi modern
manusia :
1. Dari SIMULA, bahasa pada tahun 65-an, bahasa yang paling
mempengaruhiJava sekaligus C++. Dari bahasa ini diadopsi bentukan–
bentukan dasar daripemrograman berorientasi objek.
2. Dari LISP – bahasa tahun 55-an. Diadopsi fasilitas garbage collection,
sertakemampuan untuk meniru generic list processing, meski fasilitas ini
jarangyang memanfaatkannya.
3. Dari Algol – bahasa pada tahun 60-an, diambil struktur kendali
yangdimilikinya.
4. Dari C++, diadopsi sintaks, sebagian semantiks dan exception handling
5. Dari bahasa Ada, diambil strongly type, dan exception handling.
6. Dari Objective C, diambil fasilitas interface.
7. Dari bahasa SmallTalk, diambil pendekatan single-root class
hiérarchie,dimana object adalah satu kesatuan hirarki pewarisan
8. Dari bahasa Eiffel, fasilitas assertion yang mulai diterapkan di sebagian JDK

2.2.1Apa itu Teknologi Java?


2.2.1.1 Sebuah Bahasa Pemrograman
Sebagai sebuah bahasa pemrograman, Java dapat membuat seluruh bentuk
aplikasi,desktop, web dan lainnya, sebagaimana dibuat dengan menggunakan
bahasapemrograman konvensional yang lain.Java adalah bahasa pemrograman
yang berorientasi objek (OOP) dan dapatdijalankan pada berbagai platform sistem
operasi. Perkembangan Java tidak hanyaterfokus pada satu sistem operasi, tetapi
dikembangkan untuk berbagai sistemoperasi dan bersifat open source.

2.2.1.2 Sebuah Development Environment


Sebagai sebuah peralatan pembangun, teknologi Java menyediakan banyak
tools :compiler, interpreter, penyusun dokumentasi, paket kelas dan sebagainya.

2.2.1.3 Sebuah Aplikasi


Aplikasi dengan teknologi Java secara umum adalah aplikasi serba guna
yang dapatdijalankan pada seluruh mesin yang memiliki Java Runtime
Environment (JRE).

2.2.1.4 Sebuah Deployment Environment

9
Terdapat dua komponen utama dari Deployment Environment. Yang
pertama adalahJRE, yang terdapat pada paket J2SDK, mengandung kelas–kelas
untuk semua paketteknologi Java yang meliputi kelas dasar dari Java, komponen
GUI dan sebagainya.Komponen yang lain terdapat pada Web Browser. Hampir
seluruh Web Browserkomersial menyediakan interpreter dan runtime
environment dari teknologi Java.

2.2.1.5Mengapa Mempelajari Java?


Berdasarkan white paper resmi dari SUN, Java memiliki karakteristik
berikut:
1. Sederhana
Bahasa pemrograman Java menggunakan sintaks mirip dengan C++
namunsintaks pada Java telah banyak diperbaiki terutama
menghilangkanpenggunaan pointer yang rumit dan multiple inheritance. Java
jugamenggunakan automatic memory allocation dan memory garbage
collection.
2. Berorientasi objek (Object Oriented)
Java mengunakan pemrograman berorientasi objek yang membuat
programdapat dibuat secara modular dan dapat dipergunakan kembali.
Pemrogramanberorientasi objek memodelkan dunia nyata kedalam objek dan
melakukan interaksi antar objek-objek tersebut.
3. Dapat didistribusi dengan mudah
Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya
libraries networking yang terintegrasi pada Java.
4. Interpreter
Program Java dijalankan menggunakan interpreter yaitu Java Virtual
Machine(JVM). Hal ini menyebabkan source code Java yang telah dikompilasi
menjadiJavabytecodes dapat dijalankan pada platform yang berbeda-beda.
5. Robust
Java mempuyai reliabilitas yang tinggi. Compiler pada Java
mempunyaikemampuan mendeteksi error secara lebih teliti dibandingkan
bahasapemrograman lain. Java mempunyai runtime-Exception handling
untukmembantu mengatasi error pada pemrograman.
6. Aman
Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi,
Javamemiliki beberapa mekanisme keamanan untuk menjaga aplikasi
tidakdigunakan untuk merusak sistem komputer yang menjalankan
aplikasitersebut.
7. Architecture Neutral
Program Java merupakan platform independent. Program cukup
mempunyaisatu buah versi yang dapat dijalankan pada platform yang berbeda
denganJava Virtual Machine.

10
8. Portabel
Source code maupun program Java dapat dengan mudah dibawa ke
platformyang berbeda-beda tanpa harus dikompilasi ulang.
9. Performance
Performance pada Java sering dikatakan kurang tinggi. Namun
performanceJava dapat ditingkatkan menggunakan kompilasi Java lain seperti
buatanInprise, Microsoft ataupun Symantec yang menggunakan Just In
TimeCompilers (JIT).
10. Multithreaded
Java mempunyai kemampuan untuk membuat suatu program yang
dapatmelakukan beberapa pekerjaan secara sekaligus dan simultan.
11. Dinamis
Java didesain untuk dapat dijalankan pada lingkungan yang dinamis.
Perubahanpada suatu class dengan menambahkan properties ataupun method
dapatdilakukan tanpa menggangu program yang menggunakan class tersebut.

2.2.2Sebagian Fitur dari Java


2.2.2.1 Java Virtual Machine (JVM)
JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai
aplikasipada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan
platformdimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat
aplikasiberbasis Java menjadi bebas dari platform manapun karena proses
kompilasidiselesaikan oleh JVM.Aplikasi program Java diciptakan dengan file
teks berekstensi .Java. Program inidikompilasi menghasilkan satu berkas bytecode
berekstensi .class atau lebih.
Bytecode adalah serangkaian instruksi serupa instruksi kode mesin.
Perbedaannyaadalah kode mesin harus dijalankan pada sistem komputer dimana
kompilasiditujukan, sementara bytecode berjalan pada Java interpreter yang
tersedia disemua platform sistem komputer dan sistem operasi.

2.2.2.2 Garbage Collection


Banyak bahasa pemrogaman lain yang mengijinkan seorang
programmermengalokasikan memori pada saat dijalankan. Namun, setelah
menggunakan alokasimemori tersebut, harus terdapat cara untuk menempatkan
kembali blok memoritersebut supaya program lain dapat menggunakannya.
Dalam C, C++ dan bahasalainnya, adalah programmer yang mutlak
bertanggung jawab akan hal ini. Hal inidapat menyulitkan bilamana programmer
tersebut alpa untuk mengembalikan blokmemori sehingga menyebabkan situasi
yang dikenal dengan nama memory leaks.Program Java melakukan garbage
collection yang berarti program tidak perlumenghapus sendiri objek–objek yang
tidak digunakan lagi. Fasilitas ini mengurangibeban pengelolaan memori oleh

11
programmer dan mengurangi atau mengeliminasisumber kesalahan terbesar yang
terdapat pada bahasa yang memungkinkan alokasidinamis.

2.2.2.3 Code Security


Code Security terimplementasi pada Java melalui penggunaan Java
RuntimeEnvironment (JRE). Java menggunakan model pengamanan 3 lapis untuk
melindungisistem dari untrusted Java Code.
a. Pertama, class-loader menangani pemuatan kelas Java ke runtimeinterpreter.
Proses ini menyediakan pengamanan dengan memisahkan kelas–kelas yang
berasal dari local disk dengan kelas–kelas yang diambil darijaringan. Hal ini
membatasi aplikasi Trojan karena kelas–kelas yang berasaldari local disk yang
dimuat terlebih dahulu.
b. Kedua, bytecode verifier membaca bytecode sebelum dijalankan danmenjamin
bytecode memenuhi aturan–aturan dasar bahasa Java.
c. Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi
denganmengendalikan apakah program berhak mengakses sumber daya
sepertisistem file, port jaringan, proses eksternal dan sistem windowing.
Setelah seluruh proses tersebut selesai dijalankan, barulah kode program
dieksekusi.Java juga menyediakan beragam teknik pengamanan lain :
a. Bahasa dirancang untuk mempersulit eksekusi kode perusak.
Peniadaanpointer merupakan langkah besar pengamanan. Java tidak mengenal
operasipointer. Di tangan programmer handal, operasi pointer merupakan hal
yangluar biasa untuk optimasi dan pembuatan program yang efisien
sertamengagumkan. Namun mode ini dapat menjadi petaka di
hadapanprogrammer jahat. Pointer merupakan sarana luar biasa untuk
pengaksesantak diotorisasi. Dengan peniadaan operasi pointer, Java dapat
menjadi bahasayang lebih aman.
b. Java memiliki beberapa pengaman terhadap applet. Untuk mencegahprogram
bertindak mengganggu media penyimpanan, maka applet tidakdiperbolehkan
melakukan open, read ataupun write terhadap berkas secarasembarangan.
Karena Javaapplet dapat membuka jendela browser yangbaru, maka jendela
mempunyai logo Java dan teks identifikasi terhadapjendela yang dibuka. Hal
ini mencegah jendela pop-up menipu sebagaipermintaan keterangan username
dan password.

2.2.3Fase – Fase Pemrograman Java


Gambar dibawah ini menjelaskan aliran proses kompilasi dan eksekusi
sebuahprogram Java :

12
Gambar 2.1: Fase dari sebuah Program Java

Langkah pertama dalam pembuatan sebuah program berbasis Java


adalahmenuliskan kode program pada text editor. Contoh text editor yang dapat
digunakanantara lain : notepad, vi, emacs dan lain sebagainya. Kode program
yang dibuatkemudian tersimpan dalam sebuah berkas berekstensi .Java.
Setelah membuat dan menyimpan kode program, kompilasi file yang berisi
kodeprogram tersebut dengan menggunakan Java Compiler. Hasil dari kompilasi
berupaberkas bytecode dengan ekstensi .class.
Berkas yang mengandung bytecode tersebut kemudian akan dikonversikan
oleh JavaInterpreter menjadi bahasa mesin sesuai dengan jenis dan platform yang
digunakan.

Proses Tool Hasil


Menulis kode program Text editor Berkas berekstensi .JavaKompilasi program
Java Compiler Berkas berekstensi .class(Java Bytecodes), Menjalankan program
Java Interpreter Program Output.

Tabel 1.1: Ringkasan Fase dari sebuah Program Java

13
BAB III
MEMBUAT DANMENGAKSES CLASS

Pada bagian ini, kita akan membuat program berbasis obyek menggunakan bahasa
Java. Sebelum itu, hal yang pertama dilakukan adalah mempelajari terlebih dahulu
tentang pembuatan class.

Review : (konsep OOP)


• Class adalah template untuk pembuatan obyek
• Class memiliki anggota :
– Atribut
– Method
3.1 Pembuatan Class
• Kita akan membuat Class dengan nama Lampu
• Class Lampu memiliki atribut :
– status => 0 atau 1
– merek =>‘phillips’ atau ‘national’
• Class Lampu memiliki method :
– lampuDinyalakan();
– lampuDimatikan();

3.2 Pembuatan Class di Java


• Jalankan Netbeans
• Klik New File New Project
• Dilanjutkan dengan klik tombol Next

Gambar 3.1. Tampilan Windows New Project

14
• Ketik nama project pada Project Name
• Kemudian tentukan tempat penyimpanan pada tombol Browse…
• Selanjutnya Klik Tombol Finish.

Gambar 3.2. Tampilan Windows New Java Application

• Langkah selanjutnya klik menu File-New File.


• Pilih / Klik Java Class
• Dilanjutkan dengan klik tombol Next.

Gambar 3.3. Tampilan Windows New File

• Ketik nama class pada class name, contohnya lampu


• Akhiri dengan finish

15
Gambar 3.4. Tampilan Windows New Java Class

• Selanjutnya Ketik perintah pembuatan class pada Editor Gel pada Java.
• Pembuatan class dilakukan pada baris setelah public class

Gambar 3.5. Tampilan Editor Gel Java

3.3 Pembuatan Class pada Editor Gel


• Deklarasi class dapat dilakukan dengan sintak :
<modifier> class <namaclass> {
[deklarasi atribut]
[deklarasi method]
• Deklarasi atribut sebagai berikut :
<modifier><tipe><nama atribut> ;
• Deklarasi method dapat dilakukan dengan cara :
<modifier><return type><nama_method> ([daftar

16
argumen])
{ }

3.4 Pembuatan Class Lampu


public class Lampu {
int status;
String merek;
void lampuDinyalakan() {
status=1;
}
void lampuDimatikan() {
status=0;
}
}
Perhatikan : hanya ada satu class dengan modifier public. Dengan nama class
yang sama dengan nama file tempat listing program disimpan.

3.5 Compile Class


Setelah class dibuat, agar dapat digunakan, class tersebut harus dicompile.
Untuk meng-compile Class pada Gel, pilih menu Run => Compile File (F9)

3.6 Membuat Obyek dari Suatu Class


• Sesuai definisi awal, class adalahtemplate untuk membuat obyek
• Sekarang kita akan membuat sebuahobyek yang berasal dari class Lampu
• Nama obyeknya misal : lampuku
• Perhatikan cara penulisan untuk pembuatan obyek berikut :

3.7 Dimana Meletakan Obyek?


• Obyek dapat diletakkan di class yang lain.
• Class yang lain ini bisa ditempatkan pada file yang sama dengan nama
Class

Gambar 3.6. Tampilan Editor Gel Lampu.Java

17
• Atau obyek diletakkan di class lain dan dalam file yang berbeda
• (ingat) : nama file sama dengan namaclass, dan hanya satu nama class
yangmemiliki modifier public

Gambar 3.7. Tampilan Editor Gel Lain.Java


3.8 Main Method dalam Java
• Main method dalam JAVA, tempat kita menempatkan obyek,
menampilkan suatu hasil ke layar, dsb adalah :
public static void main(String [] args) {
……….
}
• Seharusnya disinilah kita menempatkan obyek lampuku yang dibuat dari
class Lampu
• Setelah obyek ditempatkan dalam main method, maka kita bisa memanggil
method dari class Lampu (lampuku.lampuDinyalakan();)
• Untuk menampilkan pada layar menggunakan :
System.out.println(………);

Gambar 3.8. Tampilan Editor Gel Lain Java dengan Perintah

3.9 Menjalankan Java yang Ada Main Method


• Dan Class yang berisi main method ini satusatunya Class yang bisa
dijalankan
• Pilih menu Build => Run File atau klik icon
• Setelah menjalankan method lampu
• Hasilnya akan ditampilkan nilai dari variabel status

18
Gambar 3.9. Tampilan Hasil Kompilasi

19
Latihan 1

1. Dibuat program untuk menampilkan tulisan


2. Nama program : CobaTulis.java
3. Dalam program ada class Tulis yang berisi method Tulisan untuk
menampilkan data di layar
4. Dalam program utama diciptakan obyek baru bernama tulisanku yang berasal
dari class Tulis
5. Kemudian dengan menggunakan obyek tulisanku dipanggil method Tulisan
untuk menampilkan data pada layar

Listing Program
CobaTulis.java
public class CobaTulis {
public static void main(String [] args) {
Tulis tulisanku = new Tulis();
tulisanku.Tulisan();
}
}
class Tulis {
void tulisan() {
System.out.println(“Saya belajar Java”);
}
}

Listing Program

20
Hasil

Latihan 2
1. Pada percobaan 2 ini dibuat program yang hasilnya sama dengan Latihan 1
sebelumnya
2. Akan tetapi dibuat dari dua file terpisah, dengan nama Tulis.java dan
TesTulis.java
3. Pada TesTulis.java diciptakan obyek baru yang akan memanggil method
yang ada pada Tulis.java

Listing program Tulis.java


public class Tulis {
void Tulisan() {
System.out.println("Saya belajar JAVA");
}
}
Listing program
TesTulis.java
public class TesTulis {
public static void main(String [] args) {
Tulis tulisanku = new Tulis();
tulisanku.Tulisan();
}
}

Menjalankan program
• Untuk menjalankan program, pertama Tulis.java dicompile saja tanpa di-run,
inidikarenakan Tulis.java merupakan class yang tidak berisi program utama
(public static void main)
• Berikutnya, TesTulis.java dicompile lalu dijalankan.
• Hasil running program :

21
Latihan 3
• Program berikut mengimplementasikan class Mobil
• Class Mobil memiliki atribut : aktifitas (parkir atau jalan-jalan), warna,
kecepatan
• Class Mobil memiliki method :
– cekKecepatan jika kecepatan=0, maka aktifitas=parkir
– cetakAtribut mencetak semua nilai atribut

Listing program
class Mobil {
String aktifitas;
String warna;
intkecepatan;
void cekKecepatan() {
if (kecepatan==0)
aktifitas="parkir";
}
void cetakAtribut() {
System.out.println("Aktifitas = "+aktifitas);
System.out.println("warna = "+warna);
System.out.println("Kecepatan = "+kecepatan);
}
public static void main(String [] args) {
Mobil mobilku = new Mobil();
mobilku.kecepatan=0;
mobilku.warna="merah";
mobilku.cekKecepatan();
mobilku.cetakAtribut();
}
}

22
BAB IV
DASAR PEMROGRAMAN JAVA

4.1 Tujuan Pembelajaran


• Penggunaan Komentar dalam program
• Memahami perbedaan identifier yang valid dan yang tidak valid
• Memahami Keyword pada Java
• Memahami 8 tipe data dasar
• Menggunakan nilai literal untuk tipe numerik dan teks
• Memahami istilah variabel primitif dan variabel referensi
• Memahami penggunaan Operator dalam Java

4.2 Penggunaan Komentar


• Komentar digunakan untuk tulisan berupa keterangan dan tidak ikut
diproses pada saat program dijalankan
• Komentar digunakan untuk mengingat kembali perintah yang pernah
ditulis
• Komentar pada Java menggunakan dua cara :
– Komentar satu baris
// ini adalah komentar satu baris
– Komentar lebih dari satu bari
/* ini adalah komentar baris pertamadan ini komentar baris kedua*/

Latihan 1
• Memberi komentar pada program
• Berikan komentar pada Class Mobil yang dibuat pada BAB sebelumnya

Listing Program

class Mobil {
// atribut
String aktifitas;
String warna;
int kecepatan;
// method untuk memeriksa kecepatan
void cekKecepatan() {
if (kecepatan==0)
aktifitas="parkir";
}

23
// method untuk mencetak atribut
void cetakAtribut() {
System.out.println("Aktifitas = "+aktifitas);
System.out.println("warna = "+warna);
System.out.println("Kecepatan = "+kecepatan);
}
public static void main(String [] args) {
// membuat obyek baru bernama mobilku
Mobil mobilku = new Mobil();
// memberi nilai awal pada atribut
mobilku.kecepatan=0;
mobilku.warna="merah";
// memeriksa kecepatan
mobilku.cekKecepatan();
// mencetak atribut
mobilku.cetakAtribut();
}
}

4.3 Baris Perintah Blok Program


• Baris perintah pada Java selalu diakhiri dengan tanda (;)
total = total + x;
• Blok adalah kumpulan perintah yang diapit dengan tanda kurung buka {
dan kurung tutup }
{
a = b + c;
a = a + 1;
}
• Definisi sebuah class, diletakkan dalam blok
public class Tanggal {
private int tgl;
private int bulan;
private int tahun;
}
• Blok program bisa bersarang (nested) => di dalam blok program terdapat
blok program yang lain
public class CekTanggal {
if (bulan==2)
{ tgl=28;
}
}

24
4.4 Identifier
• Identifier digunakan untuk memberi nama variabel, class dan method
• Identifier dimulai dengan sembarang huruf, underscore(_) atau dollar ($)
• Contoh penamaan :
namaku
_var1
$harga
Adapun keyword yang dimiliki Java, antara lain :

Tabael 4,1 Tabel Keyword java

4.5 Tipe Data Dasar


Dalam Java, tipe data dasar ada 8 yaitu :
• Logika – boolean (1)
Tipe data boolean mempunyai dua kemungkinan nilai : true atau false
• Contoh :
– boolean ada = true;

• Teks – char (2)


o Direpresentasikan dalam 16 bit unicode

25
o Nilai karakter diapit dengan tanda petik tunggal
o Contoh :
– ‘a’  huruf a
– ‘\t’  tab
– ‘\u0063’ unicode karakter untuk huruf c

• Teks – String (2)


o Sebenarnya bukan tipe data dasar tapi sebuah class
o Perhatikan huruf besar pada karakter pertama yang merupakan ciri
class
o Nilai string diapit dengan tanda petik ganda
o Contoh :
– String salam=“Assalamu’alaikum”
– String pesanerror=“Record tidak ditemukan”

• Bilangan bulat – byte (3), short (4), int (5) dan long (6)
o Menggunakan tiga bentuk => desimal, oktal, hexadesimal
o Contoh :
– 2, Bentuk desimal untuk integer 2
– 077, Diawali dengan angka 0, menandakan bilangan oktal
– 0xBAAC, Diawali dengan 0x menandakan bilangan hexadesimal
o Defaultnya adalah int
o Untuk mendefinisikan tipe data long digunakan L atau I di belakang
nilai

26
Tabel 4.2. Range tipe data

Listing Program :

Hasil :

• Bilangan pecahan – float (7) dan double (8)


o Defaultnya adalah double
o Dapat dituliskan dalam bentuk :
– Bilangan desimal : 12.345
– Floating point : 6.02E34
– Float : 2.425F
– Double : 123.4E+342D

27
Listing Program :

Hasil :

4.6 Konversi
• Konversi tipe data terjadi pada saat :
– Suatu nilai diberikan pada variabel yang berbeda tipe datanya
• Aturan pada konversi :
– Tipe data boolean tidak bisa dikonversi ke tipe data lain
– Selain boolean bisa dikonversi dengan prinsip :
widening => tipe data variabel di sebelah kiri harus memiliki range
(jangkauan) yang lebih luas daripada tipe data variabel di sebelah
kanannya => jika syarat ini tidak bisa dipenuhi maka konversi tidak
bisa dilakukan dan harus dilakukan casting.
• Casting
• Jadi casting adalah perubahan data yang dilakukan oleh user karena
tidak bisa dilakukan konversi.
• Contoh penulisan :

• Contoh Casting

• Prinsip Widening pada Casting


Contoh casting :

28
short s = 5;
int i = 100;
s = (short) i;
=> dilakukan casting karena tipe data sebelah kiri lebih kecil jangkauan-
nya (short) dibandingkan tipe data sebelah kanan (int) atau dengan kata
lain prinsip widening tidak bisa dipenuhi
Contoh Program :

Pembetulan :

4.7 Promotion dari Data Primitif


Promotion terjadi pada saat operasi aritmatik dimana kompiler berusaha
mencari tipe data yang sesuai dengan tipe data operan yang berbeda-beda.
Contoh Promotion :

29
Short s dipromosikan ke int, kemudian dikalikan negatif hasilnya dikalikan
dengan int i kemudian hasilnya (hasil pertama) disimpan. Float f
dipromosikan jadi double selanjutnya dibagi dengan double d hasilnya
disimpan (hasil kedua) menjadi double. Hasil pertama (int) dipromosikan
menjadi double selanjutnya dikalikan dengan hasil kedua, hasil terakhir
disimpan dalam variabel hasil dalam bentuk double.

4.8 Meng-input-kan Suatu Nilai


• Untuk menginputkan suatu nilai dari keyboard, dapat menggunakan
JOptionPane
• Berikut ini program untuk menginputkan bilangan integer dari keyboard

Listing Program :

Hasil :

30
4.9 Menginisialisasi Obyek dengan Constructor
• Suatu obyek dapat diberi nilai awal atau diinisialisasi dengan
menggunakan constructor.
• Jadi constructor dijalankan hanya sekali yaitu saat suatu obyek diciptakan.
• Contoh : memberi nilai awal 1-Mei-2007 pada obyek yang diciptakan dari
classTanggal
• Contoh : Listing Program

• Menguji Class Tanggal

Hasilnya :

• Constructor juga dapat diberi parameter (argumen)

31
• Modifikasi class Tanggal sebelumnya :
Listing Program

• Menguji constructor dengan parameter

Listing Program

Hasil :

4.10Ilustrasi Alokasi Memori pada Constructor


• Deklarasi variabel untuk obyek baru
Tanggal hariini = new Tanggal(3,5,2007);

• Menggunakan operator new untuk mengalokasikan memori => constructor


dijalankan.
Tanggal hariini = new Tanggal(3,5,2007);

32
• Penandaan variable dibuat untuk me-refer ke obyek

4.11Merujuk ke Alamat Variabel Lain (Assigning Reference Type)

• int x = 7;
int y = x;

• Tanggal s = new
Tanggal(1,3,2007);
Tanggal t = s;

• t = new Tanggal(4,6,2007)

4.12Pass By Value
• Pada pemrograman Java, pada argumen hanya dilewatkan suatu nilai
bukan alamat (pass by value)
• Jika argumen berupa obyek, maka nilai dariargumen tersebut adalah
referensi ke obyekyang dilewatkan
• Isi dari obyek bisa berubah karena pemanggilansebuah method, tapi
pemanggilan suatu methoddengan argumen referensi ke obyek tidak
akanmerubah nilai obyek pada bagian program yangmemanggil
• Contoh :

Listing Program 1

33
Listing Program 2

4.13Keyword (Kata Kunci) this


• Beberapa kegunaan dari keyword this :

34
– Untuk merefer ke atribut dan method lokal
– Keyword this tidak membedakan antara method lokal atau variabel
constructor dengan variabel instance
– Keyword this digunakan untuk melewatkan current object sebagai
parameter ke method atau constructor yang lain
• Contoh :

• Contoh Penggunaan Keyword This

4.14Definisi Variabel Lokal


• Variabel yang didefinisikan di dalam metho
• Variabel diciptakan pada saat method dijalankan dan variabel dihapus
pada saat keluar dari method
• Variabel harus diinisialisasi sebelum digunakan
• Ruang lingkup variabel lokal

35
4.15Bentuk Operator
• Operator dapat digolongkan ke dalam dua bentuk yaitu : unary operator
dan binary operator
• Unary operator adalah operator yang hanya melibatkan 1 operan
• Binary operator adalah operator yang melibatkan dua operan
• Sedangkan jenis operator dalam Java ada banyak macamnya, yaitu
operator aritmatika operator logika, operator bitwise, dll.

36
• Operator Aritmatika
– Operator aritmatika adalah operator yang berfungsi untuk operasi
aritmatika
– Yang termasuk dalam operator aritmatika adalah : +, - , *, /, %
(modulus – sisa bagi)

• Operator Increment – Decrement


– Operator Increment adalah operator yang digunakan untuk menaikkan
satu nilai (--)
– Operator decrement adalah operator yang digunakan untuk
menurunkan satu nilai (++)

• Operator Bitwise

Contoh penggunaan

37
Listing Program Bitwise
public class Complement {
public static void main(String args[] ) {
int i;
i=~7;
System.out.println(i);
}
}

• Operator Boolean
- Operator boolean adalah operator yang menghasilkan nilai true (benar)
atau false (salah).

- Contoh Penggunaan

38
• Operator Logika
o Operator logika adalah operator yang dipakai untuk operasi
perbandingan dan selalu menghasilkan tipe boolean
o Yang termasuk operator logika : ==, !=, >, >=, <, <=

• Operator Shift
o Operator shift adalah operator yang berfungsi untuk menggeser
susunan bit pada suatu nilai, yaitu >> (right shift), << (left shift)
o Contoh penggunaan :

o Operator >>> digunakan untuk :


– Bit patterns
– Sign bit tidak dikopi selama proses shift
o Ilustrasi Shift

o Listing Program
public class LeftShift {
public static void main(String args[] ) {
int i=3;
i = i << 2;
System.out.println(i);
}
}

39
• Operator Kombinasi
o Operator yang terdiri dari gabungan dua operator
o Contoh : Operator += adalah gabungan dari operator = dan +

4.16Latihan-latihan

Latihan 1

Modifikasi program berikut agar dapat menginputkan nilai tanggal, bulan dan
tahun kemudian jika terjadi kesalahan pada input tanggal, program akan
memunculkan pesan kesalahan.

40
Latihan 2

Jelaskan perbedaan antara kedua program berikut :

41
BAB V
UML CLASS DIAGRAM

5.1 Tujuan Pembelajaran


• Memahami Definisi dari Unified Modelling Language (UML) Diagram
• Memahami tipe dari UML Diagram
• Memahami penggunaan salah satu UML Diagram yaitu Class Diagram
untuk Pemrograman Berbasis Obyek

5.2 Apa Itu UML?


• Unified Modeling Language (UML) adalah bahasa standart untuk
melakukan spesifikasi, visualisasi, konstruksi, dan dokumentasi dari
komponen-komponen perangkat lunak, dan digunakan untuk pemodelan
bisnis.
• UML menggunakan notasi grafis untuk menyatakan suatu desain
• Pemodelan dengan UML berarti menggambarkan yang ada dalam dunia
nyata ke dalam bentuk yang dapat dipahami dengan menggunakan notasi
standar UML

5.3 UML Diagram


• Pemodelan dengan UML terdiri dari 8 tipe diagram yang berbeda untuk
memodelkan sistem perangkat lunak.
• Masing-masing diagram UML didesain untuk menunjukkan satu sisi dari
bermacam-macam sudut pandang (perspektif) dan terdiri dari tingkat
abstraksi yang berbeda

5.4 Jenis Diagram UML


Diagram UML terdiri dari 8 (delapan), terdiri dari :
a. Use case Diagram
b. Class Diagram
c. Object Diagram
d. State Diagram
e. Activity Diagram
f. Sequence Diagram
g. Collaboration diagram
h. Component diagram
i. Deployment diagram
Pada mata kuliah pemrograman berbasis obyek ini kita hanya menggunakan
Class Diagram.

42
5.5 Class Diagram
• Bentuk :

• Contoh
o Class Buku terdiri dari :
– Atribut : judul, pengarang
– Method : ambilJenis(), ambilHalaman();
o Penggambaran dalam Class Diagram :

Latihan 1
– Mengimplementasikan Class Diagram Buku ke dalam program
– Keterangan : untuk judul buku “Pemrograman Java” jenisnya =
“Prog” dan jumlah halaman = 100;

• Class Diagram dengan Constructor


Class diagram dengan constructor mempunyai method yang sama dengan
nama class-nya.

43
Latihan 2

Latihan 3
Class Diagram Tanggal dengan constructor

44
Listing Program

Latihan 4
Class Diagram Tabungan

Listing Program

45
5.6 Tugas :
• Tugas 1
- Implementasikan Perluasan Class Diagram Mahasiswa seperti berikut:

- Buat program untuk menguji Class yang telah dibuat


• Tugas 2
- Implementasikan Class Diagram Tabungan seperti berikut :

- Buat program untuk menguji Class yang telah dibuat.

46
BAB VI
FLOW CONTROL

6.1 Tujuan Pembelajaran


• Mempelajari perintah pencabangan dengan if dan switch
• Mempelajari perintah perulangan dengan for, while, dan do-while
• Mempelajari fungsi khusus yang mengubah alur kontrol program seperti
break dan continue

6.2 Perintah Kontrol


Digunakan untuk merubah urutan eksekusi program
• Perintah kondisional : if
• Bentuk umum
if (kondisi)
<statement>;
if (kondisi)
<statement>;
else
<statement>;
if (kondisi)
<statement>;
elseif (kondisi)
<statement>;
…….
else
<statement>;

47
• Contoh penggunaan if untuk konversi nilai angka ke nilai huruf

Contoh Listing Program

import javax.swing.*;
public class Percabangan {
public static void main (String []args){
String input;
int angka=0;
input=JOptionPane.showInputDialog("Masukkan masa Kerja
Anda");
angka=Integer.parseInt(input);
if (angka < 3)
JOptionPane.showMessageDialog(null,"Anda Belum Bisa Jadi
Karyawan Tetap");
else if (angka <=15)
JOptionPane.showMessageDialog(null,"Jadi Karyawan Tetap");
else JOptionPane.showMessageDialog(null,"Anda tidak memenuhi
syarat");
}}

48
• Perintah kondisional : switch
• Cara penulisan :

• Penggunaan switch untuk mencari nama hari dalam seminggu

Contoh Listing Program 1

import javax.swing.*;
public class PercabanganSwitch {
public static void main (String [ ]args) {
String pilihan =JOptionPane.showInputDialog ("Input 1 - 3");
int angka=Integer.parseInt(pilihan);
switch(angka)
{
case 1:
JOptionPane.showMessageDialog
(null,"Program D3\n\nSaya Kurang Hebat");
break;

49
case 2:
JOptionPane.showMessageDialog
(null,"Program S1\n\nSaya Hebat");
break;
case 3:
JOptionPane.showMessageDialog
(null,"Program S2\n\nSaya Lebih Hebat");
break;
default:
JOptionPane.showMessageDialog
(null,"Pilihan Salah");
}}}

Contoh Listing Program 2

import javax.swing.*;
public class PercabanganSwitch2 {
public static void main (String [ ]args) {
String input; String input1; String input2;
String input3; String input4;
double nilai1; double nilai2; double nilai3;
double nilai4; double hasil;
String pilihan =JOptionPane.showInputDialog
("*********************************\n * "
+ "Masukan pilihan Saudara : *\n
*********************************\n "
+ "1. Luas Persegi Panjang \n "
+ "2. Keliling Persegi Panjang \n "
+ "3. Luas Kubus \n "
+ "4. Keliling Kubus \n "
+ "5. Keluar \n\n Pilihan (1-5");
int angka=Integer.parseInt(pilihan);
switch(angka)

{
case 1:
input1 =JOptionPane.showInputDialog("***** Luas Persegi Panjang
*****\n "
+ "Masukan Panjang : ");
nilai1=Double.parseDouble(input1);
input2 =JOptionPane.showInputDialog("***** Luas Persegi
Panjang *****\n "

50
+ "Masukan Lebar : ");
nilai2=Integer.parseInt(input1);
hasil=nilai1*nilai2;
System.out.println("Luas Persegi Panjang : ");
System.out.println("panjang : "+nilai1);
System.out.println("lebar : "+nilai2);
JOptionPane.showMessageDialog (null,"Luas Persegi Panjang :\n\n
"+hasil);

break;
case 2:
input2 =JOptionPane.showInputDialog("***** Keliling Persegi
Panjang *****\n "
+ "Masukan Panjang : ");
nilai1=Double.parseDouble(input2);
input2 =JOptionPane.showInputDialog("***** Keliling Persegi
Panjang *****\n "
+ "Masukan Lebar : ");
nilai2=Integer.parseInt(input2);
hasil=2*(nilai1*nilai2);
System.out.println("keliling Persegi Panjang : ");
System.out.println("panjang : "+nilai1);
System.out.println("lebar : "+nilai2);
System.out.println("keliling Persegi Panjang : "+hasil);
break;
case 3:
input3 =JOptionPane.showInputDialog("***** Luas Kubus *****\n "
+ "Masukan Sisi : ");
nilai3=Double.parseDouble(input3);
hasil=nilai3*nilai3;
System.out.println("Luas Kubus : ");
System.out.println("Sisi : "+nilai3);
System.out.println("Luas Kubus : "+hasil);
break;
case 4:
input4 =JOptionPane.showInputDialog("***** Keliling Kubus
*****\n "
+ "Masukan Sisi : ");
nilai4=Double.parseDouble(input4);
hasil=4*nilai4;
System.out.println("Luas Kubus : ");
System.out.println("Sisi : "+nilai4);

51
System.out.println("Luas Kubus : "+hasil);
break;
default:
JOptionPane.showMessageDialog (null,"Pilihan Salah");
}}}

• Perintah perulangan : for


o Mengulang urut-urutan perintah sebanyak yang sudah didefinisikan
o Bentuk umum :
for (<expr1>; <expr2>; <expr3>) <statement>
– <expr1> inisialisasi variabel kontrol
– <expr2> dikerjakan selama kondisi ini terpenuhi
– <expr3> perintah increment/decrement
o Urut-urutan eksekusi pada perulangan for :

Listing Logika Looping

class IncrementDecrement{
public static void main (String[] args){

int i = 1;
System.out.println("i : " + i);
System.out.println("++i : " + ++i);
System.out.println("i++ : " + i++);
System.out.println("i : " + i);
System.out.println("--i : " + --i);
System.out.println("i-- : " + i--);
System.out.println("i : " + i);
}}
o Latihan 1
Buat program untuk menampilkan bilangan ganjil yang lebih
kecil dari 20 menggunakan perulangan for

52
Listing Program

Hasil :

o Latihan 2
Menampilkan nilai Faktorial dari suatu bilangan menggunakan
perintah for :
N ! = N x (N-1) x (N-2) x … x 1
5 ! = 5 x 4 x 3 x 2 x 1 =120

Listing Program

\
Hasil

o Latihan 3
- Menampilkan deret Fibonacci menggunakan perulangan for

53
- Deret fibonacci dari suku ke-1 sampai 7
1 1 2 3 5 8 13
Fibo(i) = Fibo(i-1) + Fibo(i-2)

Listing Program

Hasil

• Perintah perulangan : while


o Bentuk umum :
while (<cond. Expr>)
<statement>;
o Urut-urutan eksekusi :

54
o Perbandingan for dengan while

o Latihan

Latihan 1
Buat program untuk menampilkan bilangan ganjil yang lebih kecil
dari 20 menggunaka while

Listing Program

Hasil

Latihan 2
Menampilkan nilai Faktorial dari suatu bilangan menggunakan
perintah while
N ! = N x (N-1) x (N-2) x … x 1
5 ! = 5 x 4 x 3 x 2 x 1 =120

55
Listing Program

Listing Program lain :

import java.awt.*;
import javax.swing.*;

public class Dowhile


{
public static void main (String args [] ){
int batas=6;
int nomor=0;
while (nomor <=batas)
{
JOptionPane.showMessageDialog (null,"Nomor ke - " +nomor);
System.out.println("nomor k3 -" + nomor);
nomor++;
}}}

• Perintah perulangan : dowhile


o Setelah menjalankan statement, kemudian kondisi diperiksa apakah
menghasilkan nilai true atau false
o Bentuk umum :
do
<statements>;
while (<cond. Expr>);
o Latihan
Latihan 1
Buat program untuk menampilkan bilangan ganjil yang lebih kecil dari
20 menggunakan while

56
Listing Program

Hasil

Latihan 2

Menampilkan nilai Faktorial dari suatu bilangan menggunakan perintah


do - while
N ! = N x (N-1) x (N-2) x … x 1
5 ! = 5 x 4 x 3 x 2 x 1 =120

Listing Program

Listing Program lain:

import javax.swing.JOptionPane;
public class DoWhile1
{
public static void main (String args [] ){
int batas=5;

57
int nomor=0;
do
{
JOptionPane.showMessageDialog (null,"Nomor ke - " +nomor);
System.out.println("Nomor ke"+nomor);
nomor++;
}
while (nomor <=batas);
}
}

58
BAB VII
ARRAY

7.1 Tujuan Pembelajaran


• Mendeklarasikan dan membuat Array
• Menginisialisasi eleman array
• Menentukan jumlah elemen dalam array
• Membuat array multi dimensi
• Menyalin (copy) nilai array
• Membuat metode dan menghasilkan nilai array

7.2 Definisi dan Deklarasi Array


• Array adalah kumpulan data yang memiliki tipe yang sama
• Array adalah sebuah obyek dan dibuat dengan perintah New.
• Cara mendeklarasikan array :
- Char S [ ];
- Point P [ ];
- Char [ ] S;
- Point [ ] P;
• Array 1 Dimensi
- Definisi dari array 1 dimensi
int i[ ];
- Menandai range untuk array 1 dimensi
I = new int[10];
- Deklarasi sekaligus menandai range array 1 dimensi
int [ ]=new int[10];
- Inisialisasi nilai elemen dalam array 1 dimensi
Int j[ ]= {0,1,2,3,4,5};
Int k[ ];
k = j;

7.3 Pembuatan Array


• Untuk membuat obyek array, digunakan perintah New.
• Contoh peembuatan array untuk menampung bilangan 1 sampai 10
Int [] bil;
bil = new int[11];
for (i=1;i<=10;i++)
bil(i)=I;
Latihan :

59
Buat array yang menampung bilangan 1 sampai 10, kemudian tampilkan
array tersebut
Listing program

Hasil

7.4 Perubahan Ukuran Array


• Array tidak bisa dirubah ukurannya atau tidak bisa di re-size.
• Array tidak bisa digunakan nama variabel yang sama untuk menciptakan
array baru
• Contoh
Int myarray = new int[6];
myarray = new int[10];

7.5 BatasanArray
• Indeks Array dimulai dari 0.
• Jumlah dari elemen array ditandai dengan keyword length.
• Latihan :
Buat array bilangan dengan ukuran 10, kemudian tampilkan ukurannya
menggunakan keyword length.

Listing program

60
Hasil

7.6 Menginisialisasi Array


• Contoh inisalisasi array :
String nama [ ];
nama = new String[3];
nama[0]=”daisy”;
nama[1]=”defi”;
nama[2]=”ical”
• Cara lain untuk menginisialisasi array :
String nama[ ]={“daisy”,”defi”,”ical”};
• Latihan
- Inisialisasi elemen array yang menampung tiga nama, kemudian
tampilkan isi dari elemen array tersebut.
- Perhatikan : indeks array selalu dimulai dari 0.

Listing program

Hasil

7.7 Inisilisasi Elemen Array dari Sebuah Class


• Elemen array juga bisa dibuat dari sebuah class
• Misal dibuat array dengan nama tanggalku berasal dari class Tanggal
• Cara deklarasi sekaligus inisialiasasi berasal dari class

61
Tanggal tanggalku;
tanggalku = Tanggal[3];
tanggalku[0] = new Tanggal(22.2.1995);
tanggalku[1] = new Tanggal(10.9.2004);
tanggalku[3] = new Tanggal(23.6.2006);
Cara lain bisa dituliskan
Tanggal tanggalku[] ={
new Tanggal(22.2.1995),
new Tanggal(10.9.2004),
new Tanggal(23.6.2006)};
• Latihan
Membuat elemen array dari class Tanggal, inisialisasi nilainya kemudian
tampilkan.

Listing program

62
Hasil :

7.8 Array Multi Dimensi


• Definisi Array Dua Dimensi
Float [] [];
• Menentukan Range untuk Array Dua Dimensi
Fa=new float[2][3];
• Deklarasi dan Penentuan Range untuk Array Dua Dimensi
Float fa[] = new float[2][3];
• Latihan

Latihan 1
Dengan menggunakan array 2 dimensi, buatlah program untuk meyimpan
nilai UTS, UAS dan Tugas dari 3 orang mahasiswa, sbb :

Listing Program

Hasil

63
Latihan 2
Sama dengan latihan satu diatas, hanya gunakan array multi dimensi
untuk menyimpan nilai.

Listing program

Hasil

Latihan 3
Buat program dengan menggunakan array untuk menghitung bilangan
Fibonacci tentukan n = 9 (bilangan Fibonacci adalah bilangan yang
memindahkan 2 bilangan sebelumnya.

64
Listing program

Hasil

7.9 Menyalin (Copy) Nilai Array


• Untuk menyalin nilai array digunakan metode System.array\copy();
• Latihan menyalin nilai array
Listing program

Hasil

65
7.10Pembuatan Method dari Array Suatu Tipe Data
Berikut ini dicontohkan pembuatan method yang menghasilkan array yang
berasal dari tipe char.
public char [ ] buat array( ) {
char s [ ]=new char [26];
for (int i=0;i<26,i++)
s [i] = (char)(‘A’+i);
}
Return s;
}

Latihan
Implementasi class yang memiliki method dimana return tipenya merupakan
array huruf ‘A’ sampai Z, lalu uji class tersebut

Listing program

Hasil

7.11Pembuatan Method dari Array Suatu Class


Berikut ini dicontohkan pembuatan method yang menghasilkan array yang
berasal dari suatu class

66
public titik [ ] buatarray( ) {
titik p[ ] = new titik[10];
for (int i=0’p<10;i++) {
p[i] = new titik(I,i+1);
}
return p
}

Latihan
Imlementasikan class yang memiliki method dimana return tipenya
merupakan array dari class titik, lalu uji class tersebut.
Listing program

67
Hasil

Program Array lainnya :

Latihan 1

public class Array1 {


public static void main(String[] args) {
int [] x;
x = new int[5];
x[0] = 0;
x[1] = 1;
x[2] = 2;
x[3] = 3;
x[4] = 4;
System.out.println("Nilai x[0] : " + x[0]);
System.out.println("Nilai x[1] : " + x[1]);
System.out.println("Nilai x[2] : " + x[2]);
System.out.println("Nilai x[3] : " + x[3]);
System.out.println("Nilai x[4] : " + x[4]);
}}

Latihan 2

public class Array2 {


public static void main(String[] args) {
int [] x; // Cara 1
x = new int[3];
x[0] = 20 ; x[1] = 10 ; x[2] = 30;
System.out.println("Nilai x[0] : " + x[0]);
System.out.println("Nilai x[1] : " + x[1]);
System.out.println("Nilai x[2] : " + x[2]);
int [] y = new int[3]; // Cara 2

68
y[0] = 20 ; y[1] = 10 ; y[2] = 30;
System.out.println("Nilai y[0] : " + y[0]);
System.out.println("Nilai y[1] : " + y[1]);
System.out.println("Nilai y[2] : " + y[2]);
}}

Latihan 3

public class Array3 {


public static void main(String[] args) {
int [] x; // Cara 1
x = new int[3];
x[0] = 20 ; x[1] = 10 ; x[2] = 30;
System.out.println("Nilai x[0] : " + x[0]);
System.out.println("Nilai x[1] : " + x[1]);
System.out.println("Nilai x[2] : " + x[2]);
int [] y = new int[3]; // Cara 2
y[0] = 20 ; y[1] = 10 ; y[2] = 30;
System.out.println("Nilai y[0] : " + y[0]);
System.out.println("Nilai y[1] : " + y[1]);
System.out.println("Nilai y[2] : " + y[2]);
int[] z = {20,10,30}; // Cara 3 tdk menggunakan new
System.out.println("Nilai z[0] : " + z[0]);
System.out.println("Nilai z[1] : " + z[1]);
System.out.println("Nilai z[2] : " + z[2]);
}}

Latihan 4

public class Array4 {


public static void main(String[] args) {
int [] x; // Cara 1
x = new int[3];
x[0] = 20 ;
x[1] = 10 ;
x[2] = 30;
int [] y = new int[3]; // Cara 2
y[0] = 20 ;
y[1] = 10 ;
y[2] = 30;
int[] z = {20,10,30}; // Cara 3 tdk menggunakan new

69
System.out.println("Nilai Array x, y dan z : " + x[0] + " " + y[0] + " " +
z[0]);
System.out.println("Nilai Array x, y dan z : " + x[1] + " " + y[1] + " " +
z[1]);
System.out.println("Nilai Array x, y dan z : " + x[2] + " " + y[2] + " " +
z[2]);
}}

Latihan 5

public class ArrayD {


public static void main(String[] args) {

int[][][] arr3 = {{{10,20,30},{40,50,60}},


{{11,21,31},{41,51,61}},
{{12,22,32},{42,52,62}}}; // ukuran 3 * 6 = 18

System.out.println("Nilai arr3[0] : " + arr3[0][0][0]);


System.out.println("Nilai arr3[0] : " + arr3[0][0][1]);
System.out.println("Nilai arr3[0] : " + arr3[0][0][2]);
System.out.println("Nilai arr3[0] : " + arr3[0][1][0]);
System.out.println("Nilai arr3[0] : " + arr3[0][1][1]);
System.out.println("Nilai arr3[0] : " + arr3[0][1][2]);

System.out.println("Nilai arr3[1] : " + arr3[1][0][0]);


System.out.println("Nilai arr3[1] : " + arr3[1][0][1]);
System.out.println("Nilai arr3[1] : " + arr3[1][0][2]);
System.out.println("Nilai arr3[1] : " + arr3[1][1][0]);
System.out.println("Nilai arr3[1] : " + arr3[1][1][1]);
System.out.println("Nilai arr3[1] : " + arr3[1][1][2]);

System.out.println("Nilai arr3[2] : " + arr3[2][0][0]);


System.out.println("Nilai arr3[2] : " + arr3[2][0][1]);
System.out.println("Nilai arr3[2] : " + arr3[2][0][2]);
System.out.println("Nilai arr3[2] : " + arr3[2][1][0]);
System.out.println("Nilai arr3[2] : " + arr3[2][1][1]);
System.out.println("Nilai arr3[2] : " + arr3[2][1][2]);

}}

70
Latihan 6

import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class LatihanArray{
public static void main (String [ ] args ) {
int array1[ ] =new int[4];
int array2[ ]={5,13,8,17 };
String output1="array1\nindex\tnilai\n";
for (int i=0;i<array1.length;i++){
output1+=i+"\t"+array1[i]+"\n";
}
String output2="array2\nindex\tnilai\n";
for (int i=0;i<array2.length;i++){
output2+=i+"\t"+array2[i]+"\n";
}
JTextArea outputArea1=new JTextArea();
outputArea1.setText(output1);
JTextArea outputArea2=new JTextArea();
outputArea2.setText(output2);
JOptionPane.showMessageDialog(null,outputArea1,"ARRAY",JOptionPane.
INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,outputArea2,"ARRAY",JOptionPane.
INFORMATION_MESSAGE);
}
}

71
BAB VIII
OVERLOADING DAN OVERRIDING

8.1 Review Constructor


Constructor mempunyai ciri, yaitu :
- Mempunyai nama yang sama denagn nama class
- Tidak mempunyai nilai kembalian (return type)

8.2 Overloading pada Constructor


• Suatu class boleh memiliki lebih dari satu constructor
• Constructor yang terdiri dari dua atau lebih disebut dengan overloading
constructor
• Overloading constructor termasuk salah satu dari ciri program OOP, yaitu
Polimorfisme (berbeda-beda bentuk)

8.3 Syarat pada Overloading Constructor


• Syarat pada overloading constructor adalah signature dari constructor-
constructor tersebut tidak sama.
• Signature adalah informasi untuk membedakan method seperti nama
method, jumlah parameter, tipe data, dan tipe kembalian (return type)
• Contoh Overloading Constructor

8.4 Overloading
• Overloading adalah suatu keaddan dimana beberapa method memiliki
nama yang sama tetapi fungsionalitasnya berbeda

72
• Contoh :
- Titik (x,y);
- Titik (x,y,z);
• Ciri Overloading
- Nama method harus sama
- Daftar parameter harus berbeda
- Return type boleh sama, boleh berbeda

8.5 Overriding
• Overriding menyatakan suatu keadaan dimana method pada subclass
menolak method pada parent class-nya.
• Ciri dari overriding :
- Nama method harus sama
- Daftar parameter harus sama
- Return type harus sama
• Contoh
class parent {
public void Info(){
System.out.println(“ini class Parent”);
}
class Child Extends Parent (
public void Info(){
System.out.println(“ini class Child”);
}

8.6 Peraturan pada Overriding


Method yang terkena Override (Overriden Method) tidak boleh memunyai
modifier yang lebih luas aksesnya daripada method yang meng-override
(Overriding Method)

73
8.7 Latihan Melakukan Overloading pada Method

74
8.8 Latihan Menguji Class pada Program

8.9 Latihan Polimorphisme

Listing program

public class Contohpoly {

75
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
s1 sarjana = new s1();
s2 magister = new s2();
informasikan (sarjana);
informasikan (magister);
}
static void informasikan (jenjang vjenjang){
System.out.println("=========================================
");
System.out.println("Pendidikan : " + vjenjang.pendidikan);
System.out.println("Gelar : " + vjenjang.gelar);
System.out.println("=========================================
");

}
}
abstract class jenjang{
String pendidikan;
String gelar;
abstract public void setpendidikan (String vpendidikan);
abstract public void setgelar (String vgelar);
}
class s1 extends jenjang{
public s1(){
pendidikan = "Strata Satu";
gelar = "Sarjana";
}
public void setpendidikan(String vpendidikan){
pendidikan = vpendidikan;
}
public void setgelar(String vgelar){
pendidikan = vgelar;
}}
class s2 extends jenjang{
public s2(){
pendidikan = "Strata Dua";
gelar = "Magister";
}

76
public void setpendidikan(String vpendidikan){
pendidikan = vpendidikan;
}
public void setgelar(String vgelar){
pendidikan = vgelar;
}}

77
BAB IX
CLASS LANJUTAN

9.1 Pembahasan
• Review
- Bentuk umum class
- Pembuatan class sederhana
- Menambahkan constructor
- Consructor Overloading
- Keyword this
- Local Variables dan Variable Scope
• Lanjutan
- Instance Variables dan Instance Methods
- Static Variables dan Static Methods
- Method Overloading
- Melewatkan Argument

9.2 Bentuk Umum Class

Deklarasi Sebuah Class

class namaclass{
// instance variables
tipedata1 namavar1 = nilai1;
tipedata2 namavar2 = nilai1;

tipedataN namavarN = nilaiN;
// Constructors
namaClass(parameters1){
// body costructor
}
namaClass(parametersN){
// body costructor
}

// Methods
return Tipe1 namaMethod(parameter1){
// body method
}
return TipeN namaMethod(parameterN){
// body method

78
}

9.3 Bentuk Sederhana Class


Class Contoh{
Int a;
Int b;
Int c;}
Listing Program

class Titik3D{
double x;
double y;
double z;
}
class ContohTitik3D{
public static void main(String args[]){
Titik3d p = new Titik3D();
p.x = 1.1;
p.y = 3.4;
p.z = -2.8;
System.out.println(“p.x = “ + p.x);
System.out.println(“p.y = “ + p.y);
System.out.println(“p.z = “ + p.z);
}}

Hasilnya
p.x = 1.1
P.y = 3.4
p.z = -2.8

9.4 Menambahkan Constructor


class Titik3D{
double x;
double y; Constructor
double z

Titik3D (double ax, double zy, double az){


x = ax;
y = ay;
z = az;
}
}

79
class ContohTitik3D{
public static void main(String args[]) {
Titik3D p = new TitikD(1.1,3.4,-2.8);
System.out.println("p.x = "+p.x);
System.out.println("p.y = "+p.y);
System.out.println("p.z = "+p.z);
}
}

Hasilnya
p.x = 1.1
P.y = 3.4
p.z = -2.8

9.5 Constructor Overloading


Signature adalah informasi untuk membedakan seperti nama method, jumlah
parameter, tipe data dan tipe return.

9.6 Keyword (Kata Kunci) This


• Perintah yang digunakan this.namaVar
• Pemanggilan Constructor menggunakan perintah this(args);
• Listing program
class Titik3D{
double x;
double y;
double z;

Titik3D(double x, double y, double z){

this.x=x;
this.y=y;
this.z=z;
}
}

class DemoThis{
public static void main(String args[]){
Titik3D p = new Titik3D(1.1,3.4,-2.8);
System.out.println("p.x = "+p.x);
System.out.println("p.y = "+p.y);
System.out.println("p.z = "+p.z);
}}

80
9.7 Local Variables dan Variable Scope

Latihan 1

Listing program

class x{
void f( ){
for (int j = 0; j<5;j++){
int k=100;
System.out.println("j = "+j+"; k = "+k);
}
}
}

class variablescope{
public static void main(String args[ ]){
X x = new X( );
x.f( );
}
}

Hasil :
j = 0; k = 100
j = 1; k = 100
j = 2; k = 100
j = 3; k = 100
j = 4; k = 100

Latihan 2

Listing Program

class Obyekku{
static short s = 400; // variabel static
int i = 200;
void f( ){

System.out.println("s = "+s);
System.out.println("i = "+i);
short s = 300; // variabel local

81
short I = 100; // variabel variable
double d = 1E100; // variabel local
System.out.println("s = "+s);
System.out.println("i = "+i);
System.out.println("d = "+d);
}
}
class cariabellocal{
public static void main(String args[]){
Obyekku obyekku = new Obyekku( );
Obyekku.f( );
}
}

Hasil ;
s = 400
i = 200
s = 300
i = 200
d = 1.0E100

9.8 Instance Variables dan Instance Method


• Deklarasi Instance Variable
Tipedata namavar1;
• Deklarasi Multiple InstanceVariable
Tipedata namavar1, namavar2, …, namavarN;
• Deklarasi dan Inisialisasi Instance Variable
Tipedata namavar1 expr1;
• Deklarasi dan Inisialisasi Multiple Instance Variable
Tipedata namavar1 = expr1, …, namavarN = exprN;
• Deklarasi Instance Method
tipeReturn namaMethod(parameters){
// body method
}

Latihan

class Bag{
boolean flag;
int i, j=2, k=3, l, m;
double array[]={-2.4,8.8e100, -9.2e-100};
String s1, s2=new String(“Hello”);

82
}
class Bagtest{
public static void main(String args[]){
Bag bag = new Bag( );
System.out.println(bag.flag);
System.out.println(bag.i);
System.out.println(bag.j);
System.out.println(bag,k);
System.out.println(bag.l);
System.out.println(bag.m);
for (int i = 0, I < bag.array.length; i++)
System.out.println(bag.array[i]);
System.out.println(bag.s1);
System.out.println(bag.s2);
}
}

Hasil :

False
0
2
3
0
0
-3.4
8.8E100
-9.2E-100
null
Hello

9.9 Static Variables dan Static Method


• Deklarasi Static Variables
static tipedata varnama1;
• Deklarasi Multiple Static Variables
static tipedata namavar1, namavar2, …, namavarN;
• Deklarasi dan Inisialisasi Static Variables
static tipedata namavar1 expr1;
• Deklarasi dan Inisialisasi Multiple Static Variables
static tipedata namavar1 = expr1, …, namavarN = exprN;
• Static Initialization Block
class namaclass{

83
static{
// body statement
}
}

Latihan

Latihan 1

class X{
static int array [ ];
static {
array = new int[6];
for (int i = 0; i < 6; i++)
array[i] = i;
}
}
class inisialisasistatic{
public static void main(String args[ ]){
for (int i=0;i<6;i++)
System.out.println(X.array[i]);
}
}

Hasil

0
1
2
3
4
5

9.10Method Overloading

class titik3d{
double x;
double y;
double z;

84
titik3d (double ax){
x=ax;
y=1;
z=1;
}
titik3d(double ax, double ay){
x=ax;
y=ay;
z=1;
} Overloaded Method
titik3d(double ax, double ay, double az){
x=ax;
y=ay;
z=az;
}
void tambahin (double x, double y, double z){
this.x=x;
this.y=y;
this.z=z;
}
}
class classlanjut{
public static void main (String [] args){
titik3d p = new titik3d(1.1,2.1,2.8);
System.out.println("p.x = "+p.x);
System.out.println("p.y = "+p.y);
System.out.println("p.z = "+p.z);
p.tambahin(5.6,3.4,8.9);
System.out.println("p.x = "+p.x);
System.out.println("p.y = "+p.y);
System.out.println("p.z = "+p.z);
p.tambahin(10.11,12.13,14.19);
System.out.println("p.x = "+p.x);
System.out.println("p.y = "+p.y);
System.out.println("p.z = "+p.z);
}
}

85
BAB X
PACKAGE DAN IMPORT CLASS

10.1 Package
• Package adalah cara mengelola class-class yang kita buat
• Package mengelompokkan class-class sesuai dengan kategori tertentu
• Class-class dalam satu package harus disimpan pada directory yang
sama dengan nama package-nya,
• Contoh package

10.2 Import Class pada Suatu Package


• Suatu class dapat meng-import class yang lain
• Pada saat meng-import class dalam suatu package, pastikan letak
package tersebut satu directory dengan class yang meng-import-nya.
• Contoh
import it.Siswa;
public class IsiData{
}

10.3 Keyword (Kata Kunci)This


• Kata kunci this menunjukan suatu member dalam class-nya sendiri
• This dapat digunakan untuk member atribut, member method dan
constructor
• Cara penulisan
- this.member_atribut;
- this.member_method();
- this()  merujuk pada constructor

10.4 Penggunaan Keyword This


• Dari class diagram berikut

86
• Dapat diimplementasikan kedalam program berikut :
public class Mahasiswa {
public int nrp;
public String nama;
public Mahasiswa(int nrp, String nama){
this.nrp=nrp;
this.nama=nama;
}
}

10.5 Memakai Kata Kunci pada Overloading Constructor


• Dari Class diagram berikut ini :

• Dapat diimplementasikan kedalam program berikut :


public class Mahasiswa {
public int nrp;
public String nama;
public Mahasiswa(){
this(0,””);}
public Mahasiswa(String nama){
this(0,nama);}
public Mahasiswa(int nrp, String nama){
this(nrp, nama);}
}

10.6 Menggunakan Package dan Import


• Dari Class diagram berikut ini :

87
• Dapat diimplementasikan kedalam program berikut :

Package sekolah;

public class Kelas{


public int kodekelas;
public String namakelas;
private Mahasiswa mahasiswa;
public Kelas(int kode, String nama){
this.kodekelas = kode;
this.namakelas = nama;
}
public void setMhs(Mahasiswa mhs){
this.mahasiswa = mhs;
}
}

Listing program lainnya :

Package sekolah;

public class Mahasiwa{


public int nrp;
public String nama;
public Mahasiswa(int nrp, String nama){
this.nrp = nrp;
this.nama = nama;
}
}

10.7 Mengimplementasikanm UML Class Diagram untuk Package


Perbankan
• Implementasikan Package berikut :

88
• Kemudian uji dengan program berikut :
public class TesLatihan{
public static void main(String args[]){
int tmp;
boolen status;
Nasabah nasabah=new Nasabah(“Agus”, “Daryanto);
System.out.println(“Nasabah atas nama : “ +
nasabah.getNamaAwal( ) + ” ” +
nasabah.getNamaAkhir( ));
nasabah.setTabungan(new tabungan(5000));
tmp=nasabah.getTabungan( ).getSaldo( );
System.out.println(“Saldo awal : ” + tmp);
nasabah.getTabungan( ).simpanUang(3000);
System.out.println(“Jumlah uang yang disimpan : 3000”);
status=nasabah.getTabungan().ambilUang(6000);
System.out.println(“Jumlah uang yang diambil : 6000”);
If (status)
System.out.println(“ok”);
Else
System.out.println(“Gagal”);

nasabah.getTabungan().simpanUang(3500);
status=nasabah.getTabungan().ambilUang(4000);
System.out.println(“jumlah uang yang diambil : 4000”);
If (status)
System.out.println(“ok”);
Else
System.out.println(“gagal”);
status = nasabah.getTabungabn().ambilUang(1600);
System.out.println(“Jumlah uang yang diambil : 1600);

89
If (status)
System.out.println(“ok”);
Else
System.out.println(“gagal”);
nasabah.getTabungan().simpanUang(2000);
System.out.println(“Jumlah uang yang disimpan : 2000”);
tmp=nasabah.getTabungan().getSaldo();
System.out.println(saldo sekarang = “+tmp);
}
}

90
BAB XI
INHERITANCE

11.1 Subclass
• Inheritance dari class
class namaclass2 extends namaclass1 {
//body of class
} Inheritance
• Deklarasi variabel class
Bentuk : namaclass namavar;

class X{
}
class X1 extends X{
}
class X2 extends X{
}
class X11 extends X1{
}
class X12 extends X1{
}
class X21 extends X2{
}
class X22 extends X2{
}

class inheritancehierarchy{
public static voidmain(String args[]){
X x;
Instantianing
System.out.println(“Instantianing x”);
x = new x();
System.out.println(“Instantianing x1”);
x1 = new x1();
System.out.println(“Instantianing x11”);
x11 = new x11();
System.out.println(“Instantianing x12”);
x12 = new x12();
System.out.println(“Instantianing x2”);
x2 = new x2();
System.out.println(“Instantianing x21”);
x21 = new x21();

91
System.out.println(“Instantianing x22”);
x22 = new x22();
}
}

• Referensi ke Variabel dari Subclass


Bentuk : super.namavar

Listing program
class X{
float f;
}
class X extends W{
StringBuffer sb;
}
class Y extends X{
String s;
}
class Z extends Y{
Integer i;
}
class Wxyz{
public static void main(String args[]){
Z z = new Z();
z.f = 4.567;
z.sb=new StringBuffer(“abcde”);
z.s=”Belajar Java”;
z.i=new Integer(41);
System.out.println(“z.f = “+z.f)’
System.out.println(“z.sb = “+z.sb);
System.out.println(“z.s = “+z.s);
System.out.println(“z.i = “+z.i);
}
}

Hasil :
z.f = 4.567
z.sb = abcde
z.s = Belajar java
z.i = 41

92
Latihan 1

class E{
int x;
}

class F extends E{
String x;
}

class Ef{
public static void main(String args[]){
F f = new F();
f.x = “Ini adalah string”;
System.out.println(“f.x = “+f.x);
E e = new E();
e.x = 45;
System.out.println(“e.x = “+e.x);
}
}

Hasil :
f.x = Ini adalah string
e.x = 45

Latihan 2

class P{
static int x;
}

class Q extends P{
static String x;
}

class Pq{
public static void main(String args[]){
P p = new P();
p.x = 55;
System.out.println(“p.x = “+p.x);
Q q = new Q();
q.x = “Ini adalah string”;

93
System.out.println(“q.x = “+q.x);
}
}

Hasil

p.x = 55
q.x = Ini adalah string

• Referensi ke Variabel dari Subclass


Bentuk : super.namavar

11.2 Method Overriding


• Overriding : pada saat method dengan signature yang sama didefinisikan
dalam Subclass
• Overloading : hanya namanya yang sama, tapi berbeda jumlah maupun
tipe parameternya.

Listing program

class A1{
void hello(){
System.out.println(“Hello dari A1”);
}
}
Di Overrided oleh
hello-nya B1
class B1 extends A1{
void hello(){
System.out.println(“Hello dari B1”);
}
}

class C1 extends B1{


void hello(){
System.out.println(“Hello dari C1”);
super.hello();
}
}

class MethodOverriding1{
public static void man(String args[]){
C1 obj = new C1();

94
obj.hello();
}
}

Hasil

Hello dari C1
Heloo dari B1

11.3 Inheritance dan Method


• Referensi Methods dalam Superclass
Bentuk : super.namaMethod(arg)
• Listing program

class I1{
void hello(String s){
System.out.println(“I1 : “+s);
}
}

class J1 extends I1{


void hello(String s){
super.hello(s);
System.out.println(“J1 : ”+s);
}
}

class K1 extends J1{


void hello(String s){
super.hello(s);
System.out.println(“K1 : ”+s);
}
}

class SuperForMethods1{
public static void man(String args[]){

System.out.println(“Instantiating : I1”);
I1 obj = new I1();
obj.hello(“Selamat pagi”);

System.out.println(“Instantiating : J1”);

95
obj = new J1();
obj.hello(“Selamat siangagi”);

System.out.println(“Instantiating : K1”);
obj = new K1();
obj.hello(“Selamat malam”);
}
}

Hasil
Instantiating I1
I1 : Selamat pagi
Instantiating J1
I1 : Selamat siang
J1 : Selamat siang
Instantiating K1
I1 : Selamat malam
J1 : Selamat malam
K1 : Selamat malam

11.4 Inheritance dan Constructor


• Pemanggilan Super Constructor
Bentuk : super(arg)
• Pemanggilan constructor dari class yang sama
Bentuk : this(arg)
• Listing program

class S1{
int s1;
S1(){
System.out.println(“S1 Constructor”);
s1 = 1
}
}

class T1 extends S1{


int t1;
T1(){
System.out.println(“T1 Constructor”);
t1 = 2;
}
}

96
class U1 extends T1{
int u1;
U1(){
System.out.println(“U1 Constructor”);
u1 = 2;
}
}

class InheritanceDanConstructor{
public static void man(String args[]){
U1 u1 = new U1();
System.out.println(“u1.s1 = ”+u1.s1);
System.out.println(“u1.t1 = ”+u1.t1);
System.out.println(“u1.u1 = ”+u1.u1);
}
}

Hasil

S1 Constructor
T1 Constructor
U1 Constructor
u1.s1 = 1
u1.t1 = 2
u1.u1 = 3

11.5 Urut-Urutan Constructor


- Constructor dar super class
- Inisialisasi field
- Constructor body

Listing program
class S2(
int s2;
S2(int s2){
this.s2=s2;
}
}

class T2 extends S2{


int t2;

97
T2(int s2, intt2){
super(s2);
this.t2 = t2;
}
}
class U2 extends T2{
int u2;
U2(int s2, int t2, int u2){
super(s2, t2);
this.u2 = u2;
}
}
class InheritanceAndConstructor2{
public static void man(String args[]){
U1 u1 = new U1(1,2,3);
System.out.println(“u2.s2 = ”+u2.s2);
System.out.println(“u2.t2 = ”+u2.t2);
System.out.println(“u2.u2 = ”+u2.u2);
}
}

Hasil

u2.s2 = 1
u2.t2 = 2
u2.u2 = 3

11.6 Class Modifier


• Qualifier dari Class
- Abstract : tidak dapat di instantiate
- Final : tidak dapat di extend
- Public : dapat di refer dari semua class
• Abstract Class
- Class yang memiliki abstract method(s).
- Tidak punya detail implementasi, dan dapat diimplementasikan
dalam subclass.
• Latihan
abstract class Bentuk{
void tampil() {
}
}
class Lingkaran extendss Bentuk{

98
void tampil(){
System.out.println(“Lingkaran”);
}
}
class Kotak extends Bentuk{
void tampil(){
System.out.println(“Kotak”);
}
}
class Segitiga extends Bentuk{
void tampil(){
System.out.println(“Segitiga”);
}
}

class AbstractClassDemo{
public static void main(String args[]){
Bentuk s = new Lingkaran();
s.tampil();
s=new Kotak();
s.tampil();
s=new Segitiga();
s.tampil();
}
}

Hasil
Lingkaran
Kotak
Segitiga

11.7 Variable Modifier


• Final : sebuah konstanta
• Private : dapat diakses hanya pada class yang sama
• Protected : dapat diakses dari subclass dan pada package yang sama
• Public : dapat di refer dasi semua class
• Static : bukan instance variable
• Listing program
class L{
static final int x = 5;
}

99
class FinalVariable{
public static void main(String args[]){
System.out.println(Lx);
}
}

Hasil
5

11.8 Constructor Modifier


• Private : hanua dapat diakses pada class yang sama
• Protected : dapat diakses dari subclass dan package yang sama
• Public : dapat di refer dari semua class
• Listing program
class Orang{
String nama;
int umur;

public Orang(String nama, int umur){


this.nama = nama;
this.umur = umur;
}
private Orang{
}
}

class PrivateConstructor{
public static void main(String args[]){

// Pemanggilan public constructor


Orang p1=new Orang(“John”, 30);
System.out.println(p1.nama);
System.out.println(p1, umur);

// pemangggilan private constructor


Orang p2 = new Orang();
}
}

11.9 Method Modifier


• Abstract : method tanpa implementasi
• Final : tidak dapat di-override

100
• Native : kode mesin semisal C++
• Private : dapat diakses hanya pada class yang sama
• Protected : dapat diakases dari subclass dan package yang sama
• Public : dapat di refer dari semua class
• Static : bukan isntance method
• Listing program

abstract class Pesawat{


abstract int jumlahMesin();
}
class DC8 extends Pesawat{
int jumlahMesin(){
return 4;
}
}
class DC10 extends Pesawat{
int jumlahMesin(){
return 3;
}
}

class Pesawatku{
public static void main(Stringargs[]){
System.out.println(new DC8().jumlahMesin());
System.out.println(new DC10().jumlahMesin());
}
}

Hasil
4
3

Latihan 1

package BABoop2;

public class Contohpewarisan {


public static void main (String []args){
System.out.println(" < POHON > ");
pohon ph=new pohon();
ph.tampil();

101
System.out.println("================================");
System.out.println(" < CEMARA > ");
cemara cmr=new cemara();
cmr.tampil();
System.out.println("================================");
System.out.println(" < MANGGA > ");
mangga mg=new mangga();
mg.tampil();
System.out.println("================================");
System.out.println(" < KELAPA > ");
kelapa klp=new kelapa();
klp.tampil();
System.out.println("================================");
}
}
class pohon{
String daun;
String batang;
String akar;
pohon(){
daun = "Daun Pohon";
batang = "Batang pohon";
akar = "Akar pohon";
}
public void tampil(){
System.out.println(daun);
System.out.println(batang);
System.out.println(akar);
System.out.println("Buahnya enak");
}
}
class cemara extends pohon(){
cemara(){
daun="Tipis bergerigi";
batang="Batang cemara bercabang";
akar="Akar cemara adalah tunjang";
}
public void tampil(){
System.out.println(daun);
System.out.println(batang);
System.out.println(akar);
System.out.println("Cemara bukan pohon berbuah enak");

102
}}
class kelapa extends pohon(){
kelapa(){
daun="Daun kelapa menjari";
batang="Batang lurus";
akar="Akar serabut";
}
public void tampil(){
System.out.println(daun);
System.out.println(batang);
System.out.println(akar);
System.out.println("Pohon kelapa berbuah enak");
}}
class mangga extends pohon(){
mangga(){
daun="Daun kelapa oval";
batang="Batang barcabang";
akar="Akar tunggal";
}
public void tampil(){
System.out.println(daun);
System.out.println(batang);
System.out.println(akar);
System.out.println("Pohon mangga berbuah enak");
}}

Latihan 2

package latihan;

abstract class Bentuk {


protected int panjang;
protected int lebar;
public String getBentuk() {
return "Bentuk Dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang1, int lebar1) {
this.panjang = panjang1;
this.lebar = lebar1;

103
}
public String getBentuk() {
return "Bentuk Bujur Sangkar";
}
public int hitungLuas() {
return panjang*lebar;
}
}
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
class Polimorfisme {
public static void cetakLuasBentuk(Bentuk btk) {
System.out.println(btk.getBentuk() + " dengan luas "
+ btk.hitungLuas());
}
public static void main(String[] args) {
BujurSangkar bs = new BujurSangkar(10,20);
BujurSangkar bs1 = new BujurSangkar(10,20);
SegiTiga st = new SegiTiga(5,10);
SegiTiga st1 = new SegiTiga(50,100);

cetakLuasBentuk(bs);
cetakLuasBentuk(bs1);
cetakLuasBentuk(st);
cetakLuasBentuk(st1);
}
}

104
BAB XII
IMPLEMENTASI POLIMORFISME DENGAN INTERFACE

12.1 Konsep Dasar Polimorphisme


• Polimorhisme artinya penyamaran, dimana bentuk dapat memiliki lebih
dari satu bentuk
• Dalam pemrograman berbasis obyek, polimorhisme adalah kemampuan
untuk mempunyai beberapa bentuk class yang berbeda
• Contoh polimorhisme yang dibahas disini adalah implementasi konsep
dasar polimorphisme dengan pembuatan interface

12.2 Definisi Interface


• Interface merupakan unit pemrograman yang erisi deklarasi method dan
konstanta yang diperlukan
• Deskripsi dari disain awal hanya memiliki konstanta dan method tanpa
implementasi
• Dengan interface dimungkinkan suatu implementasi multiple
inheritance

Latihan Interface Sederhana

interface Bahan {
String perunggu = “perunggu”;
String emas = “emas”;
String marmer = “marmer”;
String perak = “perak”;
String kayu = “kayu”;
}

abstract class bahanObject{


String bahan;
}

class Bola extends BahanObject{


Bola(String bahan){
this.bahan = bahan;
}
}

class Koin extends BahanObject{

105
Koin(String bahan}{
this.bahan = bahan;
}
}
class Cincin extends BahanObject{
Cincin(String bahan){
this.bahan = bahan;
}
}

class BahanObjects{
public static void main(String args[]){
Bola bola = new Bola(Bahan.kayu);
Koin.koin = new Koin(Bahan.Perak);
Cincin cincin = new Cincin(Bahan.emas);
System.out.println(bola.bahan);
System.out.println(koin.bahan);
System.out.println(cincin.bahan);
}
}

Hasil :
Kayu
Perak
emas

Latihan Variabel Interface

interface A{
void tampil(String s);
}
class C1 implements A{
public void tampil(String s){
System.out.println(“C1 : “+s);
}
}

class C2 implements A{
public void tampil(String s){
System.out.println(“C2 : “+s);
}
}

106
class C3 implements A{
public void tampil(String s){
System.out.println(“C3 : “+s);
}
}

class interfaceReferencevariable{
public static void main(String args[]){
A a;
a = new C1();
a .tampil (“String 1”);
a = new C2();
a .tampil (“String 2”);
a = new C3();
a .tampil (“String 3”);
}
}

Hasil
C1 : String 1
C2 : String 2
C3 : String 3

Latihan Interface Inheritance

interface J {
int j = 200;
int j1();
}

interface K {
double k1();
}

interface L extends J,K{


boolean l1();
}

class I implements L{
public int j1(){
return 4;

107
}
public double k1(){
return 6.8;
}
public boolean l1(){
return true;
}
}

class InterfaceInheritance{
public static void main(String args[]){
I I = new I()’
System.out.println(i,j);
System.out.println(i.j1());
System.out.println(i.k1());
System.out.println(i.l1());
}
}

Hasil
200
4
6.8
true

12.3 Interface Inheritance


• Semua method pada interface secara implisit betrsifat public
• Suatu interface dan interface yang mewarisinya (interface inheritance)
harus memiliki kesesuaian return type untuk method denagn nama yang
sama.
• Program berikut ini akan error jika di-compile karena pada interface
dan interface yang mewarisi suatu interface (interface inheritance)
terdapat ketidaksesuaian return type pada method dengan nama yang
sama.

interface L1{
void f();
void g();
}

interface L2 extends L1{


void f();

108
int g();
}

class CompileError{
public ststic void main(String args(){
// ini tidak akan bisa ditampilkan
// karena program akan erro jika di-compile
System.out.println(“Error jika di-compile”);
}

12.4 OperatorInstanceof
• Operator Instanceof digunakan untuk memeriksa apakah suatu obyek
merupakan instance dari suatu class yang spesifik
• Contoh : Class Ikan dari IkanAirTawar dan IkanAirAsin. Yang
merupakan golongan IkanAirTawar adalah ikan Tombro, sedangkan
yang termasuk golongan IkanAirAsin adalah Salmon dan Tuna.
• Pada latihan dibawah ini akan diimplementasikan Class Ikan yang
terdiri dari subClass IkanAirTawar dan IkanAirAsin. Yang termasuk
ikan air asin adalan Tunda dan Salmon. Dan Tombro untuk ikan air
tawar. Program akan menampilkan ikan yang termasuk ikan air asin
menggunakan instanceof.

109
Hasil

• Latihan lain ini akan diimplementasikan class mamalia yang terdiri dari
Beruang, gajah, Kuda dan Singa. Masing-masing obyek mamalia
mengimplementasikan interface Kendaraan, dimana hanya obyek gajah
dan kuda saja yang memiliki method tunggangan karena obyek tersebut
dapat ditunggangi.

110
Hasil

111
DAFTAR PUSTAKA

Bambang Haryanto, Dr (2011). “Esensi-esensi Bahasa Pemrograman Java”.


Informatika. Bandung.

G. Sri Hartati, B. Herry Suharto, M. Soesilo Wijono (2007). “Pemrograman GUI


Swing Java”. Andi Offset. Yogyakarta.

112

Anda mungkin juga menyukai