Anda di halaman 1dari 135

MODUL Hendri Maradona, Program Studi Sistem Informasi

Pemrograman Berorientasi
Objek
Menggunakan C#-Java
Matakuliah Inti Prodi

www.upp.ac.id hendrimaradona@upp.ac.id 2023

Modul Praktikum Pemrograman Berorientasi Objek

Sistem Informasi Fakultas Ilmu Komputer Universitas Pasir Pengaraian


KATA PENGANTAR

Puji syukur kepada Allah atas limpahan rahmatNya kepada punulis, hingga
akhirnya penulis dapat merampungkan bahan ajar mahasiswa dalam bentuk
modul ajar atau diktat. Modul ini dirancang untuk membantu mahasiswa
dalam memahami konsep dan praktis algoritma pemrograman komputer
secara umum, dan secara khusus Pemrograman Berorientasi Objek.
Modul ini disusun dari dasar hingga akhir sesuai dengan silabus yang
dirancang untuk memperkaya referensi mahasiswa dalam memahami konsep
dan praktis pemrograman berorientasi objek. Tentu saja keberadaan modul
akan menjadi sangat bermanfaat jika mahasiswa membaca dan
menerapkannya secara mandiri diluar perkuliahan.
Harapan penulis dengan dirancangkannya modul ini adalah tercapainya
kompetensi pengetahuan dan praktis pemrograman berorientasi objek oleh
mahasiswa, karenanya praktek mandiri harus lebih diperbanyak untuk
memenuhi capaian pembelajaran.
Penulis juga berterimakasih kepada Dekan Fakultas Ilmu Komputer UPP,
secara khusus ketua Program Studi Sistem Informasi atas dukungan dan
bimbingannya, serta rekan dosen yang tidak disebutkan satu-persatu,
sehingga penulis bersemangat dalam melakukan tugas penulisan modul ini.
Rancangan modul ini mungkin terlalu sederhana dan banyak kekurangan
baik dari sisi konten, struktur penulisan hingga modelnya. Pengembangan
dan revisi akan terus diupayakan untuk meningkatkan kualitas dan mutunya
dimasa mendatang. Akhirnya kepada pembaca penulis mohon maaf atas
segala kekurangan, dan kepada Allah penulis mohon ampun. Demikian
pengantar ini, penulis sampaikan alhamdulillahirabbil’alamiin.
Wassalamu’alaikum warahmatullahi wabarakaatuh.

Rokan Hulu, Oktober 2023

Hendri Maradona, M.Kom

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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
33
Listing Program 2

4.13Keyword (Kata Kunci) this


Beberapa kegunaan dari keyword this :

34
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
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
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
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
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
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
40
Latihan 2

Jelaskan perbedaan antara kedua program berikut :

41
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
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
43
Latihan 2

Latihan 3
Class Diagram Tanggal dengan constructor

44
44
Listing Program

Latihan 4
Class Diagram Tabungan

Listing Program

45
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
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
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
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
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
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
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
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
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
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
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
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
57
int nomor=0;
do
{
JOptionPane.showMessageDialog (null,"Nomor ke - " +nomor);
System.out.println("Nomor ke"+nomor);
nomor++;
}
while (nomor <=batas);
}
}

58
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
76
public void setpendidikan(String vpendidikan){
pendidikan = vpendidikan;
}
public void setgelar(String vgelar){
pendidikan = vgelar;
}}

77
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
class B1 extends A1{ void hello(){
hello-nya B1
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
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
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
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
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
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
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
100
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
101
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
102
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
103
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
104
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
105
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
106
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
107
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
108
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
109
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
110
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
PENGENALAN BAHASA PEMROGRAMAN C#

Tujuan :
1. Pengenalan Framework. NET
2. Mampu menggunakan variable, pernyataan, operator dan tipe data
3. Mampu membuat aplikasi sederhana menggunakan C#

1.1 Pengenalan Framework .NET


Framework .NET adalah suatu komponen windows terintegrasi yang dibuat
dengan tujuan untuk mendukung pengembangan berbagai macam jenis
aplikasi serta untuk dapat menjalankan berbagai macam aplikasi generasi
mendatang termasuk pengembangan aplikasi Web Services XML.
Framework .NET didisain untuk dapat memenuhi beberapa tujuan berikut ini :
 Untuk menyediakan lingkungan kerja yang konsisten bagi bahasa
pemrograman yang berorientasi objek ( object-oriented programming -
OOP )
 Untuk menyediakan lingkungan kerja di dalam mengeksekusi kode yang
dapat meminimaliasi proses software deployment dan menghindari konflik
penggunaan versi software yang dibuat.
 Untuk menyediakan lingkungan kerja yang aman dalam hal
pengeksekusian kode, termasuk kode yang dibuat oleh pihak ketiga (
third party).
 Untuk menyediakan lingkungan kerja yang dapat mengurangi masalah
pada persoalan performa dari kode atau dari lingkungan interpreter nya.

Sekilas Pemrograman C#
Pada tahun 2000 Microsoft meluncurkan bahasa pemrograman baru yang diberi
nama C# Programming Language. C# dikembangkan oleh Microsoft oleh tim
yang dipimpin oleh Anders Hejlsberg dan Scott Wiltamuth. C# memiliki
kesamaan bahasa dengan C, C++, dan Java, sehingga memudahkan developer
yang sudah terbiasa dengan bahasa C untuk menggunakannya, C# mengambil
fitur-fitur terbaik dari ketiga bahasa tersebut dan juga menambahkan fitur-fitur
baru. C# adalah bahasa pemrograman Object Oriented dan memiliki class library
yang sangat lengkap yang berisi prebuilt component sehingga memudahkan
programer untuk men-develop program lebih cepat. C# juga distandarkan oleh
Ecma International pada bulan desember 2002.
Dengan C# dapat dibuat bermacam aplikasi seperti aplikasi console, aplikasi
windows form, aplikasi Web, aplikasi Web services, dan aplikasi untuk mobile
device. Jadi cukup belajar satu bahasa saja tapi sudah dapat digunakan untuk
mengembangkan berbagai macam aplikasi.
Ada dua komponen utama dalam .NET Framework yaitu CLR (Common
Language Runtume) dan FCL (.NET Framework Class Library).
Common Language Runtime (CLR) adalah pondasi utama dari Framework .NET.
CLR merupakan komponen yang bertanggung jawab terhadap beberapa tugas,
seperti mengatur managemen memory, melakukan eksekusi kode, melakukan
verifikasi terhadap keamanan kode, menentukan hak akses dari kode,
melakukan kompilasi kode, dan berbagai tugas lainnya. Dengan adanya
komponen CLR ini, maka aplikasi berbasis .NET biasa juga disebut dengan
managed code, sedangkan aplikasi di luar .NET disebut dengan un-managed
code.
Pada .NET ada dua tahap kompilasi yang dilakukan, pertama CLR akan
melakukan kompilasi kode-kode aplikasi kita menjadi bahasa assembly MSIL
(Microsoft Intermediate Language), kedua ketika aplikasi dieksekusi compiler
yang lain yang bernama JIT (Just-in-time compiler) yang juga salah satu
kompenen dalam CLR untuk menterjemahkan MSIL kedalam bahasa mesin yang
disesuaikan dengan platformnya.

Editor C#
 Notepad
Kita dapat membuat aplikasi C# dalam notepad . File-file C# disimpan dengan
ekstension .cs, jika kita tidak hati-hati pada saat menyimpan file C# di
Notepad, misal kita bermaksud menyimpan file dengan nama test.cs maka
tidak tertutup kemungkinan file tersebut akan menjadi test.cs.txt kecuali kita
telah mensetting terlebih dahulu box drop down list pada fungsi Save As
menjadi “All Files”.
 Visual Studio 6
Jika anda telah terbiasa menggunakan Visual Studio 6, maka tools tersebut
bisa digunakan untuk membuat aplikasi dengan C#, khususnya dengan
menggunakan editor Microsoft Visual C++.
Salah satu keuntungan menggunakan editor khusus buat pemrograman
(seperti Microsoft Visual C++) adalah adanya syntax highlighting , yang
memudahkan kita pada saat membaca dan menganalisa kode-kode program
kita. Namun, karena Visual Studio 6 (khususnya Visual C++) ini di buat
sebelum adanya bahasa C#, maka perlu sedikit “kreatifitas” kita untuk
memodifikasi setting editor tersebut agar dapat menampilkan syntax
highlighting C#.
 Visual Studio .NET
Visual Studio .NET merupakan editor yang paling ideal untuk membuat
aplikasi yang berbasis Framework .NET, termasuk aplikasi dengan bahasa
C#. Editor ini tidak hanya menyediakan berbagai macam tools dan wizard
untuk membuat aplikasi C#, tapi juga termasuk fitur-fitur produktif seperti
IntelliSense dan bantuan yang dinamis.

Menulis Aplikasi dengan Notepad


1. Buka file baru pada aplikasi Notepad. Lalu simpanlah dengan nama
HaloDunia.cs
2. Ketiklah kode berikut ini
using System;
class HaloCsharp
{
// Bagian utama program C#
public static void Main( string [] args)
{
System.Console.WriteLine("Ini adalah program pertamaku dengan C#");
}
}

3. Untuk proses kompilasi, kamu perlu buka “Visual Studio 2008 Command
Prompt”. Kemudian atur path sesuai dengan tempat penyimpanan
HaloDunia.cs. Perintah yang digunakan untuk kompilasi:
csc HaaloCsharp.cs
Perintah tersebut akan mengkompilasi program HaloDunia.cs menjadi
HaloCsharp.exe.

4. Setelah dikompilasi, jalankan/eksekusi program tersebut dengan perintah :


HaloCsharp atau HaloCsharp.exe

Buat aplikasi Console baru, pilih


1. File > New Project > Console Application kemudian beri nama Baru
kemudian klik tombol OK

2. Kemudian tuliskan source code sebagai berikut :


using System;
using System.Collections.Generic;
using System.Text;
namespace Latihan1 {
class Program {
static void Main( string [] args) {
Console .WriteLine( "Selamat belajar C#" );
}
}
}
3. Kemudian jalankan dengan menekan tombol Ctrl + F5 (untuk Run tanpa
debug) maka akan ditampilkan hasilnya sebagai berikut.

Penjelasan perbagian dari Latihan1.1 dan 1.2 di atas adalah sebagai berikut:
1. Tag // digunakan sebagai komentar, pada C# digunakan tag // (jika hanya satu
baris saja) atau diapit tag /* */ (jika komentarnya lebih dari satu baris). Kode
atau keterangan di dalam tag komentar tidak akan dieksekusi oleh compiler.
2. Keyword using digunakan untuk memberitahu compiler class yang digunakan
pada aplikasi. Salah satu keunggulan dari C# adalah tersedianya predefined
class yang dapat langsung digunakan dalam aplikasi.
3. Keyword namespace digunakan untuk mendeklarasikan ruang lingkup dari
class yang kamu buat. Class di dalam namespace dapat dipanggil dengan
mencantumkan nama namespace-nya terlebih dahulu.
4. Keyword using System; pada baris pertama mempunyai arti kamu dapat
menggunakan class-class yang ada pada namespace System.
5. Keyword class digunakan untuk mendeklarasikan class dengan nama
Program.
6. Deklarasi static void Main(string[] args) adalah method utama yang
dijalankan pada class Program.
7. Sintaks Console.WriteLine digunakan untuk menampilkan output ke layar
console.

1.2 Tipe Data


C# mempunyai dua jenis built-in tipe data yaitu value types dan reference
types. Referenced type didefinisikan dengan menggunakan class.
C# mempunyai 13 tipe data dasar yang ditunjukan pada table dibawah ini.
Type Keterangan Type Keterangan
Bool Merepresentasikan nilai true/false Sbyte 8-bit signed integer
Byte 8-bit unsigned integer Short Short integer
Char Character Uint Unsigned integer
Decimal Numeric type untuk financial Ulong Unsigned long integer
calculations
Double Double-precision floating point ushort Unsigned short integer
Float Single-precision floating point
Int Integer
Long Long Integer
Tipe-tipe data yang ada diatas disebut dengan simple types

Tipe Data Integer


C# mempunyai sembilan tipe integer: char, byte, sbyte, short, ushort, int,
uint, long, dan ulong. Tetapi char type digunakan untuk mendefinisikan tipe
data karakter, delapan sisanya digunakan untuk kalkulasi numerik.

Latihan1.3 :
using System;
class Latihan1_3 {
static void Main( string [] args) {
ushort hari, bulan, tahun;
Console .WriteLine( "Hitung Usia" );
Console .WriteLine( "-----------" );
try {
Console .Write( "Tanggal Lahir\t : " );
hari = Convert .ToUInt16( Console .ReadLine());
Console .Write( "Bulan Lahir\t : " );
bulan = Convert .ToUInt16( Console .ReadLine());
Console .Write( "Tahun Lahir\t : " );
tahun = Convert .ToUInt16( Console .ReadLine());
DateTime ultah = new DateTime (tahun, bulan, hari);
DateTime hariIni = DateTime .Now;
TimeSpan usia = hariIni.Subtract(ultah);
Console .WriteLine( "------------------------------------------------------------------------" );
Console .WriteLine( "Umur kamu adalah {0} hari, {1} jam " + "{2} menit.",
usia.Days, usia.Hours, usia.Minutes);
}
catch ( FormatException e) {
Console .WriteLine( "Data tanggal, bulan, tahun harus berupa angka." );
}
catch ( Exception e) {
Console .WriteLine( "Terjadi Kesalahan : " ,e.Message);
}
}
}
1.3 Tugas Praktikum
1. Buatlah program untuk menginputkan biodata terdiri dari nama lengkap,
nama panggilan, npm, umur, tempat lahir,telepon, dan alamat.
Output :
Assalamu‟alaikum.Let me introduce my self. My name is (nama lengkap),
but you can call me (nama panggilan). My NPM is (npm). I was born in
(tempat lahir) and I am (umur) years old. I am very glad if you want to
invite my house in (alamat). So, don‟t forget to call me before with the
number (telepon).Thank you.
2. Buatlah program konversi waktu dari detik ke jam, menit, detik!
3. Buatlah program konversi suhu dari Celcius (C) ke Fahrenheit (F),
Reamur (R), dan Kelvin (K). Suhu Celsius di masukkan melalui keyboard
saat program dieksekusi !
F = C * 9/5 +32
K =C+273,15
R = 4/5*C
BAB II
STRUKTUR RUNTUTAN & PERCABANGAN

Tujuan :
1. Memahami struktur runtutan
2. Memahami struktur pemilihan if-else dan switch-case
3. Mampu membuat program sederhana dengan menggunakan struktur
percabangan

2.1 Pendahuluan
Struktur kontrol yang ada pada bahasa C# adalah struktur runtutan,
struktur pemilihan dan struktur pengulangan. Struktur kontrol pemilihan dan
pengulangan memanfaatkan operator dalam menentukan suatu kondisi.
Operator-operator yang terkait dengan proses seleksi kondisi adalah
Operator Logika dan Relasional (hubungan).

Relational dan Logical Operators


Berikut daftar relational operator pada C# :
Operator Meaning
> Lebih besar
>= Lebih besar sama dengan
< Lebih kecil
<= Lebih kecil sama dengan
== Sama dengan
!= Tidak sama dengan

Relational operator pada C# biasanya digunakan dalam statement If untuk


pengecekan kondisi. Dan berikut adalah logical operator pada C#:
Operator Meaning
& AND
I OR
^ XOR (Exclusive OR)
&& Short-circuit AND
II Short-circuit OR
! Not
2.2 Struktur Runtutan
Secara umum, cara compiler bekerja adalah membaca perintah mulai dari
baris atas ke bawah secara berurutan . Setiap baris dibaca mulai dari kiri
ke kanan. Namun tidak menutup kemungkinan dalam Pemrograman ada
struktuk lain seperti struktur percabangan, strukur pengulangan atau
lainnya, dibahas pada sub bab selanjutnya.

Latihan 2.1
//program menjumlahkan dua buah bilangan
using System;
class Tambah{
static void Main(string[] args){
int number1; //variabel unt menampung nilai pertama
int number2; //variabel unt menampung nilai kedua
int sum; //variabel yg menampung hasil penjumlahan
Console.Write("Masukan nilai pertama :");
//konversi dari tipe string ke integer
number1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Masukan nilai kedua :");
number2 = Convert.ToInt32(Console.ReadLine());
sum = number1 + number2;
Console.WriteLine("Jadi hasil penjumlahannya : "+sum);
}
}

2.3 Struktur Pemilihan


Bentuk umum If
if (kondisi yang diseleksi){
Pernyataan 1;
:
:
:
Pernyataan n ;
}
Jika kondisi yang diseleksi benar maka pernyataan 1 sampai pernyataan n
akan dikerjakan, sedangkan jika kondisi tersebut tidak terpenuhi maka
program akan keluar dari struktur if. Jika lebih dari satu pernyataan , maka
harus menggunakan tanda „{„ dan „}‟.
Bentuk umum if – else
if (kondisi yang diseleksi)
{
Pernyataan 1;
}
Else
{
Pernyataan 2;
}

Jika kondisi yang diseleksi bernilai benar atau terpenuhi maka pernyataan
pertama yang dilaksanakan dan jika kondisi yang diseleksi bernilai salah
maka pernyataan yang kedua yang dilaksanakan. Setiap pernyataan
diakhiri tanda titik koma (;) walaupun sebelum else.

Bentuk umum Nested if


if (kondisi yang diseleksi){
Pernyataan 1;
}
Else
if (kondisi yang diseleksi){
Pernyataan 2;
}
Else
if (kondisi yang diseleksi){
Pernyataan 3;
}
Else
{
Pernyataan 4;
}
Bentuk Umum Switch
Switch (ekspresi)
{
case konst-1 :
Pernyataan -1;
break;
case konst-2 :
Pernyataan -2;
break;
:
:
case konst-n :
Pernyataan -n;
break;
default :
Pernyataan -df;
break;
}

Struktur switch–case–default digunakan untuk penyeleksian kondisi


dengan kemungkinan yang terjadi cukup banyak. “ekspresi” dapat berupa
konstanta integer atau karakter.
 Case digunakan sebagai label yang menandai awal eksekusi deret
instruksinya hingga ditemukan pernyataan break
 Default adalah label yang jika label-label Case diatasnya tidak ada yang
memenuhi maka label ini yang akan dieksekusi
 Break adalah perintah pengontrol alur program yang berfungsi untuk
keluar dari suatu blok kondisi ataupun iterasi.

Latihan2.2 :
using System;
class Latihan2_2 {
static void Main( string [] args) {
Console .Write( "Masukan IPK : " );
float ipk = Convert .ToSingle( Console .ReadLine());
string predikat;
if (ipk > 3.5)
predikat = "Cum Laude" ;
else if (ipk > 3)
predikat = "Sangat Memuaskan" ;
else if (ipk >= 2.75)
predikat = "Memuaskan" ;
else if (ipk >= 2)
predikat = "Cukup" ;
else
predikat = "Memuakkan" ;
Console .WriteLine( "Predikat Anda adalah : {0}" , predikat);
}
}

Latihan2.3 :
using System;
class Pileg {
static void Main() {
int intHari;
Console.Write("Masukan Pilihan Hari (1-7) :");
intHari = Int32.Parse(Console.ReadLine());
switch (intHari){
case 1:
Console.WriteLine("Hari Minggu");
break;
case 2:
Console.WriteLine("Hari Senin");
break;
case 3:
Console.WriteLine("Hari Selasa");
break;
case 4:
Console.WriteLine("Hari Rabu");
break;
case 5:
Console.WriteLine("Hari Kamis");
break;
case 6:
Console.WriteLine("Hari Jumat");
break;
case 7:
Console.WriteLine("Hari Sabtu");
break;
default:
Console.WriteLine("Anda salah memasukan input (1-7)");
break;
}
}
}

2.4 Tugas Praktikum


1. Buatlah Program untuk mengetahui karakter yang diinputkan, apakah
huruf Besar, huruf kecil, spasi, digit, atau yang lainnya !
Input :
Masukkan Karakter : A
Output: Karakter yang diinputkan adalah huruf besar
2. Buatlah program untuk mempermudah pembayaran di suatu bioskop
Jenis No Judul Harga
Horor 1 Jelangkung Rp 75.000
2 Pengabdi Setan Rp 50.000
3 Hantu Jeruk Purut Rp 45.000
Romantik 1 Ayat-ayat cinta II Rp 75.000
2 Kesucian Cinta Rp 50.000
3 Asmara Rp 50.000

Output :
a. Buatlah Tampilan Menu
b. Baru pilih horror atau romantic
Horor : 2
Romantic : 3
c. Hitung total harga
Total Harga Rp. 8500,-
BAB III
STRUKTUR PENGULANGAN

Tujuan :
1. Memahami struktur pengulangan for, while, do-while,foreach
2. Memahami struktur lompat break, continue dan goto
3. Mampu membuat program sederhana dengan menggunakan struktur
pengulangan

3.1 Pendahuluan
Sering kali dalam membuat program, kamu menuliskan beberapa perintah
baris yang sama. Penulisan perintah tersebut dapat disingkat dengan
menggunakan struktur pengulangan, seperti for, while, dan do-while.
Beberapa hal penting pada struktur pengulangan adalah adanya
inisialisasi, kondisi, dan iterasi. Ada empat struktur pengulangan yang
dapat digunakan pada bahasa C#, yaitu:
a. Struktur for
b. Struktur while
c. Struktur do…while
d. Struktur foreach
Berkaitan dengan proses pengulangan, pemrograman C# juga
menyediakan pernyataan break (untuk mengakhiri pengulangan) , goto ,
dan continue(untuk melakukan pengulangan selanjutnya).

3.2 Struktur for


Struktur pengulangan for biasa digunakan untuk mengulang suatu proses
yang telah diketahui jumlah pengulangannya.
Bentuk Umum :
for (inisialisasi;kondisi;iterasi)
{
Pernyataan ;
}
Keterangan:
 Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variable
kontrol.
 Kondisi : ekspresi relasi yang menyatakan kondisi untuk keluar dari
pengulangan.
 Iterasi : pengatur perubahan nilai variabel kontrol.

Latihan3.1 :
static void Main(string[] args)
{
//mencetak bilangan dari 1-10, increment
for (int i = 1; i <= 10; i++)
Console.WriteLine(i);
Console.WriteLine();
//mencetak bilangan dari 10 ke 1, decrement
for (int i = 10; i >= 1; i--)
Console.WriteLine(i);
}

3.3 Struktur While


Pengulangan ini banyak digunakan bila jumlah pengulangannya belum
diketahui. Proses pengulangan akan terus berlanjut selama kondisinya
bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah.
Bentuk Umum :
Inisialisasi; <optional>
while (kondisi){
pernyataan;
iterasi; <optional)
}

Latihan3.2 :
static void Main(string[] args){
int bil;
int i = 1;
int banyak;
int besar = 0;
Console.Write("Masukan banyak bilangan yang akan dicek :");
banyak = Convert.ToInt32(Console.ReadLine());
while (i <= banyak){
Console.Write("Masukan Bilangan ke-"+i+": ");
bil = Convert.ToInt32(Console.ReadLine());
if (bil >= besar){
besar = bil;
}
i++;
}
Console.WriteLine("Jadi bilangan yang terbesar adalah :"+besar);}

3.4 Struktur do..while


Pengulangan ini digunakan bila jumlah pengulangan do..while sama saja
dengan struktur while, hanya saja pasa proses seleksi kondisi letaknya
berada di bawah batas pengulangan. Jadi dengan menggunakan struktur
do..while sekurang-kurangnya akan terjadi satu kali pengulangan.
Bentuk Umum :
Inisialisasi <optional>
do {
Pernyataan ;
iterasi ; <optional>
} while (kondisi);

Latihan3.3 :
static void Main(string[] args){
int num;
int nextdigit;
Console.Write("Masukan bilangan :");
num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Bilangan sebelum dibalik "+num);
Console.Write("Bilangan setelah dibalik :");
do{
nextdigit = num % 10;
Console.Write(nextdigit);
num = num / 10;
} while (num > 0);
}

3.5 Struktur foreach


Pada struktur for, kamu menggunakan counter untuk iterasi. Dengan
struktur foreach, kamu tidak perlu membuat counter, karena proses iterasi
dilakukan secara internal array. Kelebihannya adalah cepat mendapatkan
nilai array secara keseluruhan. Kekurangannya adalah tidak bias
mengakses nilai dari suatu indeks tertentu.
Sintaks foreach
foreach ( tipe_data nama_var in nama_array)
statement;
tipe_data : menyatakan tipe data dari variable
nama_var : menyatakan tempat penampungan nilai elemen dari array
nama_array : menyatakan array yg digunakan
statement : menyatakan badan program yang akan diiterasi
Latihan 3.4
//Progam Demo foreach
using System;
public class ForeachDemo {
static void Main() {
string [] strings = { "Matematik" , "Bahasa" };
foreach ( string item in strings){
Console .WriteLine( "{0}" , item);
}
}
}
3.6 Pernyataan Break
Break statement digunakan untuk keluar dari kalang bila kondisi tertentu
yang tambahkan dipenuhi. Ketika break statement dieksekusi maka kalang
/ loop akan secara otomatis berhenti.

3.7 Pernyataan Continue


Pernyataan continue digunakan untuk mengarahkan eksekusi ke proses
berikutnya pada loop yang sama. Pada do-while dan while , pernyataan
continue menyebabkan eksekusi menuju ke pengulangan kembali.
do {
continue;

}while(kondisi)
while(kondisi){

continue;
}

3.8 Pernyataan Goto


Pernyataan goto ini merupakan perintah yang digunakan un ke pernyataan
yang di awali dengan suatu label. Label merupakan suatu pengenal yang
diikuti dengan tanda titik koma(;).

Tugas Praktikum
1. Buatlah program menggunakan nested loop!
a. Input : UNBAJA
Output : AJABNU
b. Masukan Bilangan : 7
1 1
2 3
3 6
4 10
5 15
6 21
7 28
2. Buatlah program dengan menggunakan conditional looping!

3. Masukan tiap program di atas kedalam suatu menu pilihan!

Anda mungkin juga menyukai