1
Textbook
2
Course Outline
1. OOP Concepts:
Konsep dan Paradigma Object-Oriented
2. Java Basics:
Memahami Sintaks dan Grammar Bahasa Java
3. Java GUI:
Swing, GUI Component, Event Handling, Pengembangan Aplik
asi GUI
4. Java Algorithms:
Pengantar Algoritma, Struktur Data, Algorithm Analysis
5. Java Advanced:
Eksepsi, Thread, Java API
6. Java Database:
Koneksi ke Database, Pengembangan Aplikasi Database
3
PreTest
1. Buatlah program Java sederhana yang menampilka
n tulisan di layar: “Halo Jakarta”
2. Menurut anda, apakah keunggulan Java dibanding
kan bahasa pemrograman lain?
3. Apakah perbedaan antara bahasa pemrograman p
rocedural dan object-oriented?
4. Apakah perbedaan antara object dan class pada o
bject-oriented programming?
5. Apa yang anda pahami tentang variabel dan meth
od?
4
Software Requirements
1. Copy dan ekstrak romi-java.zip ke HDD laptop
2. Buka folder software dalam romi-java
3. Instalasi Java SE dengan mengklik:
jdk-8-windows-i586.exe (32b) or
jdk-8-windows-x64.exe (64b)
4. Instalasi Netbeans dengan mengklik: netbean
s-8.0-windows.exe
5. Ikuti seluruh proses instalasi sampai selesai
5
1. OOP Concepts
6
OOP Concepts
1. Konsep Pemrograman dan Paradigmanya:
Tingkat Bahasa Pemrograman, Paradigma Pemrograman,
2. Teknologi Java dan Perangkat Pemrograman:
Java Family, Perangkat, Instalasi, Kompilasi
3. Konsep Dasar Pemrograman Berorientasi Objek:
Class, Object, Attribute, Method, Constructor
4. Karakteristik Pemrograman Berorientasi Objek:
Abstraction, Encapsulation, Inheritance, Polymorphisme
5. Pengorganisasian Class:
Package, Interface, JAR, Java API Documentation
7
1.1 Konsep Pemrograman dan Para
digmanya
8
Bahasa Pemrograman?
Komputer bekerja seperti switching dan hanya
mengenali 0 dan 1
Manusia tidak (paham) berbicara dengan baha
sa 0 dan 1
Perlu bahasa pemrograman yang dapat menja
di perantara percakapan antara komputer dan
manusia
Bahasa pemrograman diubah ke dalam bahasa
yang dipahami oleh komputer dengan menggu
nakan interpreter atau kompiler
9
Compiler or Interpreter?
1. Compiler:
Mengkompilasi source code menja
di bentuk file yang bisa dieksekusi
2. Interpreter:
Mengkompilasi dan menjalankan s
ource code secara langsung
10
C Language (Compiler)
#include <stdio.h>
000101000011
001010000100
main() 010010010101
{ C Compiler 010101010010
printf(“Hallo”);
}
11
Java Language (Compiler + Interpreter)
javac java
(Java Compiler) (Java Interpreter)
12
Tingkat Bahasa Pemrograman
13
Paradigma Pemrograman
Sudut pandang dan style pemrograman berhubung
an dengan bagaimana sebuah masalah diformulasik
an dalam bahasa pemrograman
14
1.2 Teknologi Java dan Perangkat P
emrograman
15
Sejarah Java
James Gosling, Mike Sheridan, and Patrick Naughton initia
ted the Java language project in June 1991
The language was initially called Oak after an oak tree that
stood outside Gosling's office. It went by the name Green l
ater, and was later renamed Java, from a list of random w
ords
Gosling aimed to implement a virtual machine and a langu
age that had a familiar C/C++ style of notation
Sun Microsystems released the first public implementatio
n as Java 1.0 in 1995
On May 8, 2007, Sun finished the process, making all of Ja
va's core code available under GNU Public License
16
Java Family Suite
1. Java Standard Edition (Ja
va SE)
For desktop, client/server ap
plication
18
Why Java?
Simple and familiar object oriented program
ming
Architecture neutral (platform independent)
Open Source
First rank in TIOBE Index
De-Facto standard programming language in
education
19
20
21
22
23
24
Programming Paradigm Index
25
Perangkat Pemrograman Java
1. Compiler (Interpreter):
Java Standard Edition (JSE)
2. Code Editor:
1. Text Editor:
TextPad, Notepad++
2. Integrated Development Environment (IDE):
Netbeans, Eclipse, JCreator
26
Instalasi Java SE dan Netbeans IDE
1. Instalasi Java SE dengan mengklik:
jdk-7u21-windows-i586.exe
(download dari: http://java.sun.com/javase/downloads)
27
Instalasi Text Editor dan Set Path
Set path dan instalasi text editor diperlukan
untuk yang mengembangkan aplikasi text-base
d dengan console
28
How Java Works?
Jalankan dengan:
public class Hello 1. C:\>java Hello (Application)
public static void main(String[] args){ 2. Web Browser (Applet)
System.out.println("Hello World!");
}
}
Hello.java
javac (java compiler)
Interpreter Interpreter Interpreter Interpreter
Kompiler memproduksi
Bytecode (Class)
Hello.class
<HTML>
<HEAD>
<TITLE>A Simple Program</TITLE>
C:\javac HelloWorld.java </HEAD>
<BODY>
Here is the output of my program:
<APPLET CODE="HelloWorld.class" WIDTH=150
HEIGHT=25>
</APPLET>
</BODY>
</HTML>
30
Applet on a Web Page
31
Menulis Program Java
Bentuk program:
1. Text-Based Console Application menggunakan librar
y non-GUI di Java
2. GUI Application menggunakan AWT atau Swing unt
uk library GUI
32
Latihan: Tulis dan Compile Halo.java
public class Halo{
public static void main(String[] args){
System.out.println(“Halo Semarang”);
}
}
33
Latihan: Membuat Program dg Netbeans
34
35
36
37
38
39
40
41
42
43
Latihan
Buat class HaloIndonesia di dalam package Ya
ng sudah dibuat.
Isi HaloIndonesia.java dengan main method da
n tiga tampilan di bawah:
Halo Indonesia
Selamat Pagi Indonesia
Jaya Indonesia
44
1.3 Konsep Dasar Pemrograman
Berorientasi Objek
45
Berorientasi Objek?
Attribute:
Topi, Baju, Jaket,
Tas Punggung,
Tangan, Kaki, Mata
Behavior:
Cara Jalan ke Depan
Cara Jalan Mundur
Cara Belok ke Kiri
Cara Memanjat
46
Berorientasi Objek?
Attribute (State):
Ban, Stir, Pedal Rem, Pedal Gas,
Warna, Tahun Produksi
Behavior:
Cara Menghidupkan Mesin
Cara Manjalankan Mobil
Cara Memundurkan Mobil
Attribute Variable(Member)
47
Behavior Method(Fungsi)
Perbedaan Class dan Object
Class: konsep dan deskripsi dari sesuatu
• Class mendeklarasikan method yang dapat digunakan (dipang
gil) oleh object
Object: instance dari class, bentuk (contoh) nyat
a dari class
• Object memiliki sifat independen dan dapat digunakan untuk
memanggil method
Contoh Class dan Object:
• Class: mobil
• Object: mobilnya pak Joko, mobilku, mobil berwarna merah
48
Perbedaan Class dan Object
Class seperti cetakan kue, dimana kue yg dihas
ilkan dari cetakan kue itu adalah object
Warna kue bisa bermacam-macam meskipun
berasal dari cetakan yang sama (object memili
ki sifat independen)
49
Class = Method + Variable
Class Sepeda gir
kecepatan variable
tampilkan kecepatan
50 50
Object = Method + Variable yg Memiliki Nilai
instance va
kecepatan = 10km/jam
riable
tampilkan kecepatan ()
kecepatan = 10 km/jam
instance
method
ubah gir (2)
gir = 5
51 51
Attribute
Variable yang mengitari class, dengan nilai datanya bis
a ditentukan di object
Variable digunakan untuk menyimpan nilai yang nanti
nya akan digunakan pada program
Variable memiliki jenis (tipe), nama dan nilai
Name, age, dan weight adalah atribute (variabel) dari
class Person
52
Membuat Class, Object dan Memanggil Atribut
public class Mobil { Mobil.java
String warna;
int tahunProduksi;
}
54
55
56
57
58
59
60
61
62
63
Method
Method adalah urutan instruksi yang mengak
ses data dari object
Method melakukan:
1. Manipulasi data
2. Perhitungan matematika
3. Memonitor kejadian dari suatu event
64
Method
65
Membuat dan Memanggil Method
public class Mobil2{
String warna; Mobil2.java
int tahunProduksi;
void printMobil(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
mobilku.printMobil();
}
} 66
Latihan
Buat class Handphone, masukkan dalam packa
ge hp
• Class Handphone berisi empat method di bawah:
1. hidupkan()
2. lakukanPanggilan()
3. kirimSMS()
4. matikan()
• Isi masing-masing method dengan tampilan status
menggunakan System.out.println()
Buat class HandphoneBeraksi, dan panggil met
hod-method diatas dalam class tersebut
67
Latihan: Hasil Tampilan
Handphone hidup …
Kring, kring, kring … panggilan dilakukan
Dung, dung … sms berhasil terkirim
Handphone mati …
68
Latihan
Buat class Mahasiswa yang berisi tiga method:
1. membaca()
2. nyontek()
3. modifikasi()
• Isi masing-masing method dengan tampilan status
menggunakan System.out.println()
Buat class MahasiswaBeraksi, dan panggil met
hod-method diatas dalam class tersebut
69
Jenis Method: Mutator dan Accessor
70
Parameter
Sepeda akan berguna apabila ada object lain yang berinter
asi dengan sepeda tersebut
Object software berinteraksi dan berkomunikasi dengan ob
ject lain dengan cara mengirimkan message atau pesan
Pesan adalah suatu method, dan informasi dalam pesan di
kenal dengan nama parameter
71
Pengiriman Pesan dan Parameter
// method (accessor)
int getGir() {
return gir;
}
}
74
SepedaBeraksi.java
public class SepedaBeraksi{
public static void main(String[] args) {
Sepeda sepedaku = new Sepeda();
75
Latihan: Class Matematika dan Parameter
Buat Class bernama Matematika, yang berisi method d
engan dua parameter:
• pertambahan(int a, int b)
• pengurangan(int a, int b)
• perkalian(int a, int b)
• pembagian(int a, int b)
Buat Class bernama MatematikaBeraksi, yang mengeks
ekusi method dan menampilkan:
• Pertambahan: 20 + 20 = 40
• Pengurangan: 10-5 = 5
• Perkalian: 10*20 = 200
• Pembagian: 21/2 = 10
76
Variasi Tampilan
void pertambahan(int a, int b){
System.out.println(a + “ + “ + b + “ = “ + (a+b))
}
void pertambahan(int a, int b){
System.out.println(“Hasil = “ + (a+b))
}
void pertambahan(int a, int b){
int hasil = a + b;
System.out.println(“Hasil = “ + hasil)
}
77
Konstruktor -1-
Method yang digunakan untuk memberi nilai aw
al pada saat object diciptakan
Dipanggil secara otomatis ketika new digunakan
untuk membuat instan class
Sifat konstruktor:
• Nama konstruktor sama dengan nama class
• Tidak memiliki nilai balik dan tidak boleh ada kata ku
nci void
78
Konstruktor -2-
public class Mobil { Mobil.java
String warna;
int tahunProduksi;
public Mobil(String warna, int tahunProduksi){
this.warna = warna;
this.tahunProduksi = tahunProduksi;
}
public void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
80
Latihan
1. Buat class Bank
• Buat konstruktor class Bank dengan parameter: saldo
• Buat method: simpanUang, ambilUang, dan getSaldo
2. Buat class BankBeraksi, tetapkan saldo awal lewat
konstruktur Rp. 100000, jalankan 3 method di ata
s, dan tampilkan proses sebagai berikut:
Selamat Datang di Bank ABC
Saldo saat ini: Rp. 100000
Abstraction, Encapsulation,
Inheritance, Polymorphism
82
Abstraction
Cara kita melihat suatu sistem dalam bentuk yang
lebih sederhana, yaitu sebagai suatu kumpulan su
bsistem (object) yang saling berinteraksi.
• Mobil adalah kumpulan sistem pengapian, sistem kem
udi, sistem pengereman
Alat meng-abstraksikan sesuatu adalah class
Object bersifat modularity. Object dapat ditulis d
an dimaintain terpisah (independen) dari object l
ain
83
84
85
Encapsulation
Mekanisme menyembunyikan suatu proses dan data da
lam sistem untuk menghindari interferensi, dan menye
derhanakan penggunaan proses itu sendiri
• Tongkat transmisi (gigi) pada mobil
• Tombol on/off/pengaturan suhu pada AC
Class access level (public, protected, privat) adalah impl
ementasi dari konsep encapsulation
Enkapsulasi data dapat dilakukan dengan cara:
1. mendeklarasikan instance variable sebagai private
2. mendeklarasikan method yang sifatnya public untuk menga
kses variable tersebut
86
Class Lingkaran{ class Garis{
void buatLingkaran(){ private void buatTitik(x,
for(){ y){
Garis.buatGaris() }
} public void buatGaris(tA
tB){
}
}
}
87
Encapsulation dan Access Modifier
Dalam Class Dalam Dalam Dalam
Modifier yang Sama Package yang SubClass Package Lain
Sama
private
tanpa
tanda
protected
public
89
Encapsulation
Enkapsulasi data juga dapat dilakukan dengan cara:
1. mendeklarasikan instance variable sebagai private
2. mendeklarasikan method yang sifatnya public untuk m
engakses variable tersebut
90
Sepeda.java
public class Sepeda{
int gir;
int getGir() {
return gir;
}
}
91
SepedaBeraksi.java
public class SepedaBeraksi{
public static void main(String[] args) {
Sepeda sepedaku = new Sepeda();
sepedaku.setGir(1);
/* Variabel bisa diubah atau tidak sengaja diubah.
Hal ini berbahaya dan sering menimbulkan bug.
Berikan access modifier private pada instance variable */
sepedaku.gir = 3;
System.out.println(“Gir saat ini: “ + sepedaku.getGir());
}
}
92
Sepeda.java
public class Sepeda{
private int gir; // access modifier private pada instance variable
int getGir() {
return gir;
}
}
93
Inheritance (Pewarisan)
Suatu class dapat mewa
riskan atribut dan meth
od kepada class lain (su
bclass), serta membent
uk class hierarchy
Penting untuk Reusabilit
y
Java Keyword:
extends
94 94
Sepeda.java
public class Sepeda{
private int gir;
int getGir() {
return gir;
}
}
95
Class SepedaGunung Mewarisi Class Sepeda
public class SepedaGunung extends Sepeda{ public class SepedaGunungBeraksi {
public static void main(String[] args) {
SepedaGunung.java 96
SepedaGunungBeraksi.java
Latihan: Inheritance Matematika
1. Buat class MatematikaCanggih yang merupakan
inherit dari class Matematika
1. Tambahkan method modulus(int a, int b) yang meng
hitung modulus dari a dan b
2. Operator modulus adalah %
97
Polymorphism
Kemampuan untuk memperlakukan object
yang memiliki perilaku (bentuk) yang berbe
da
Implementasi konsep polymorphism:
1. Overloading: Kemampuan untuk menggunakan n
ama yang sama untuk beberapa method yang ber
beda parameter (tipe dan atau jumlah)
2. Overriding: Kemampuan subclass untuk menimpa
method dari superclass, yaitu dengan cara mengg
unakan nama dan parameter yang sama pada me
thod
99
Polymorphism – Overloading
class Mobil { public class MobilKonstruktor{
String warna; public static void main(String[] args){
int tahunProduksi; Mobil mobilku = new Mobil(“Merah”, 2003);
mobilku.info();
public Mobil(String warna, int tahunProduksi){
this.warna = warna;
Mobil mobilmu = new Mobil();
this.tahunProduksi = tahunProduksi;
mobilmu.info();
}
}
}
public Mobil(){
}
void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
100
Polymorphism – Overloading
class Lingkaran{
void gambarLingkaran(){
}
void gambarLingkaran(int diameter){
...
}
void gambarLingkaran(double diameter){
...
}
void gambarLingkaran(int diameter, int x, int y){
...
}
void gambarLingkaran(int diameter, int x, int y, int warna, String na
maLingkaran){
... 101
Polymorphism - Overriding
public class Sepeda{
private int gir;
int getGir() {
return gir;
}
}
102
Polymorphism - Overriding
public class SepedaGunung extends Sepeda{ public class SepedaGunungBeraksi {
public static void main(String[] args) {
SepedaGunung.java 103
SepedaGunungBeraksi.java
Latihan: Overloading pada Matematika
1. Kembangkan class Matematika, MatematikaCanggih
dan MatematikaBeraksi
2. Lakukan overloading pada Method yang ada (perta
mbahan, pengurangan, perkalian, pembagian, modu
lus)
3. Tambahkan method baru bertipe data double (peca
han) dan memiliki 3 parameter
4. Uji di kelas MatematikaBeraksi dengan parameter p
ecahan: 12.5, 28.7, 14.2
5. Uji konsep overloading dengan:
pertambahan(12.5, 28.7, 14.2) pertambahan(12, 28, 14)
pertambahan(23, 34) pertambahan(3.4, 4.9)
104
Matematika.java
public class Matematika{
void pertambahan (int a, int b){
int hasil= a + b;
System.out.println(“hasil:” + hasil);
}
106
1.5 Pengorganisasian Class
107
Packages
Package adalah koleksi dari beberapa class dan interfac
e yang berhubungan, dan menyediakan proteksi akses
dan pengelolaan namespace
1 package adalah 1 folder di file system
Package berguna untuk mengorganisir file dalam suatu
project atau library
Nama package menggunakan lowercase
Nama package mengikuti nama domain (perusahaan) d
engan susunan terbalik
• Contoh: com.brainmatics.kendaraan
Keyword: package name;
108
Packages
109
Packages
Base directory: holds your program's Files
Path name, relative to base directory, must match p
ackage name:
com/horstmann/bigjava/Financial.java
110
111
Budi.java
package kelasku;
112
Joko.java
package kelasku;
113
PaketBeraksi.java
import kelasku.Joko;
114
PaketBeraksi.java
import kelasku.*;
116
Interface
Interface digunakan apabila kita ingin men
entukan apa yang harus dilakukan oleh sua
tu class tapi tidak menentukan bagaimana
cara untuk melakukannya
Interface sebenarnya sama dengan class, t
api hanya memiliki deklarasi method tanpa
implementasi
117
Interface dan Implementation
118
InterfaceLampu.java
interface InterfaceLampu{
public static final int KEADAAN_HIDUP=1;
public static final int KEADAAN_MATI=0;
119
Lampu.java
public class Lampu implements InterfaceLampu{
int statusLampu;
123
Kompresi dengan JAR
JAR atau Java Archive adalah metode kompresi s
tandard dari file-file yang berisi program Java
JAR menampung file .class dan file lain yang dib
utuhkan supaya program bisa berjalan dengan b
aik
Kompresi dapat dilakukan setelah semua class di
kompilasi
124
Penggunaan JAR
Perintah Membuat file JAR:
jar –cvf namafile.jar file1.class file2.class
Perintah Melihat isi dalam file JAR:
jar –tvf namafile.jar
Perintah Mengekstraksi isi file JAR:
jar –xvf namafile.jar
Keterangan Pilihan:
• c = create (membuat file JAR)
• v = verbose (menampilkan informasi pada layar)
• f = filename (daftar nama file yang akan dikompresi)
125
JAR Manifest
JAR Manifest dibuat secara otomatis dan di
letakkan di dalam folder META-INF pada fil
e kompresi yang kita buat
JAR Manifest digunakan untuk mendeskrip
sikan file-file yang terdalam dalam file JAR
126
Java API Library and Documentation
API: Application Programming Interface
API documentation: daftar class dan method di java
library
http://java.sun.com/javase/7/docs/api/index.html
127
Important Packages in the Java Library
128
API Documentation of the Java Library
129
API Documentation for the Rectangle Class
130
Method Summary
131
Tugas
Kerjakan semua latihan dan tugas yang ada di sli
de OOP Concepts
Kirimkan netbeans project yang sudah di zip ke
ta.setiawan@gmail.com
dengan subject: [OOP1-Universitas] Nama–NIM
Deadline: 1 minggu
Meng-copy file orang lain akan menyebabkan nil
ai tugas 0
132
Referensi
1. Sharon Zakhour et al, The Java Tutorial Fourth Edition, http://java.su
n.com/docs/books/tutorial
2. Cay Horstmann, Big Java: Earl Objects 5th Edition, John Wiley & Sons, 2
013
3. Deitel & Deitel, Java Howto Program 9th Edition, Prentice Hall, 2012
4. Richard M. Reese, Oracle Certified Associate Java SE 7 Programmer St
udy Guide, Packt Publishing, 2012
5. Walter Savitch, Absolute Java 5th Edition, Pearson Education, 2013
6. Mark Allen Weiss, Data Structures and Algorithm Analysis in Java 3rd E
dition, Pearson Education, 2012
7. Anany Levitin, Introduction to the Design and Analysis of Algorithms 3
rd
Edition, Pearson Education, 2012
8. Ying Bai, Practical Database Programming with Java, John Wiley & Son
s, 2011
133