Learning Design
Educational
Objectives
(Benjamin Bloom)
Criterion
Referenced
Instruction
(Robert Mager)
Cognitive
Competencies
Minimalism
(John Carroll)
Start Immediately
Minimize the
Reading
Affective
Performance
Error Recognition
Psychomotor
Evaluation
Self-Contained
Learning Design
Pretest dan Posttest
untuk Mengukur
Kompetensi Kognifif
Mahasiwa
Penugasan berbasis
Self-Contained Project
dan Literatur Review
Penyajian Materi
dengan Model
Minimalism berbasis
Konsep Amati-TiruModifikasi
Textbook
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, Pengembang
an Aplikasi 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 Databa
PreTest
1. Buatlah program Java sederhana yang mena
mpilkan tulisan di layar: Halo Jakarta
2. Menurut anda, apakah keunggulan Java dib
andingkan bahasa pemrograman lain?
3. Apakah perbedaan antara bahasa pemrogra
man procedural dan object-oriented?
4. Apakah perbedaan antara object dan class
pada object-oriented programming?
5. Apa yang anda pahami tentang variabel dan
method?
Software Requirements
1. Copy dan ekstrak romi-oop.zip ke HDD
laptop
2. Buka folder software dalam romi-oop
3. Instalasi Java SE dengan mengklik:
jdk-7u45-windows-i586.exe (32b) or
jdk-7u45-windows-x64.exe (64b)
4. Instalasi Netbeans dengan mengklik: ne
tbeans-7.4-ml-windows.exe
5. Ikuti seluruh proses instalasi sampai sel
esai
1. OOP Concep
ts
OOP Concepts
1. Konsep Pemrograman dan Paradigmanya:
Tingkat Bahasa Pemrograman, Paradigma Pemrogra
man,
5. Pengorganisasian Class:
Bahasa Pemrograman?
Komputer bekerja seperti switching dan
hanya mengenali 0 dan 1
Manusia tidak (paham) berbicara denga
n bahasa 0 dan 1
Perlu bahasa pemrograman yang dapat
menjadi perantara percakapan antara k
omputer dan manusia
Bahasa pemrograman diubah ke dalam
bahasa yang dipahami oleh komputer d
engan menggunakan interpreter atau ko
Compiler or Interpreter?
1. Compiler:
Mengkompilasi source code m
enjadi bentuk file yang bisa di
eksekusi
2. Interpreter:
Mengkompilasi dan menjalank
an source code secara langsu
ng
C Language (Compiler)
#include
<stdio.h>
main()
{
printf(Hallo);
}
C Program
C Compiler
00010100
00110010
10000100
01001001
01010101
01010010
java
(Java Interpreter)
Paradigma Pemrograman
Sudut pandang dan style pemrograman ber
hubungan dengan bagaimana sebuah masal
ah diformulasikan dalam bahasa pemrogram
an
1. Functional Programming: Urutan fungsi secara
sekuensial (Scheme, Lisp)
2. Procedural Programming: Pemecahan masala
h berdasarkan prosedural kerja yg terkumpul d
alam unit pemrograman bernama fungsi (C, Pa
scal)
3. Object-Oriented Programming: Koleksi object
yang saling berinteraksi . Class adalah unit pe
Sejarah Java
James Gosling, Mike Sheridan, and Patrick Naught
on initiated the Java language project in June 199
1
The language was initially called Oak after an oak t
ree that stood outside Gosling's office
It went by the name Green later, and was later ren
amed Java, from a list of random words
Gosling aimed to implement a virtual machine and
a language that had a familiar C/C++ style of notat
ion
Sun Microsystems released the first public implem
entation as Java 1.0 in 1995
On May 8, 2007, Sun finished the process, making
2. Java Enterprise
Edition
(Java EE)
3.
(Java ME)
For small devices, like
palm, handphone, etc
Java Version
Version
Year
1.0
1996
1.1
1997
Innerclasses
1.2
1998
Swing,Collections
1.3
2000
Performanceenhancements
1.4
2002
Assertions,XML
2004
Genericclasses,enhancedforloop,auto-boxing,enumerations
2006
Libraryimprovements
2010
Smalllanguagechangesandlibraryimprovements
Why Java?
Simple and familiar object oriented pro
gramming
Architecture neutral (platform indepen
dent)
Open Source
First rank in TIOBE Index
De-Facto standard programming langu
age in education
2. Code Editor:
1. Text Editor:
TextPad, Notepad++
javac (java
compiler)
Interpre
ter
Interpre
ter
Interpre
ter
Kompiler memproduksi
Bytecode (Class)
Hello.class
Write Once Run Everywhere !
Web Server
Interpre
ter
publicclassHelloWorldextendsApplet{
publicvoidpaint(Graphicsg){
g.drawString("Helloworld!",50,25);
}
}
C:\appletviewer Hello.html
C:\javac HelloWorld.java
<HTML>
<HEAD>
<TITLE>ASimpleProgram</TITLE>
</HEAD>
<BODY>
Hereistheoutputofmyprogram:
<APPLET CODE="HelloWorld.class" WIDTH=150
HEIGHT=25>
</APPLET>
</BODY>
</HTML>
Latihan
Buat class HaloIndonesia di dalam pack
age halo
Isi HaloIndonesia.java dengan main met
hod dan tiga tampilan di bawah:
Halo Indonesia
Selamat Pagi Indonesia
Jaya Indonesia
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
Berorientasi Objek?
Attribute (State):
Behavior:
Cara Menghidupkan Mesin
Cara Manjalankan Mobil
Cara Memundurkan Mobil
Attribute Variable(Member
Behavior Method(Fungsi)
gir
kecepatan
variabl
e
tampilkan kecepatan
ubah gir
metho
d
gir = 3
kecepatan = 10km/jam
instance
variable
tampilkan kecepatan ()
kecepatan = 10 km/jam
ubah gir (2)
gir = 5
instanc
e
method
Attribute
Variable yang mengitari class, dengan nilai dat
anya bisa ditentukan di object
Variable digunakan untuk menyimpan nilai yan
g nantinya akan digunakan pada program
Variable memiliki jenis (tipe), nama dan nilai
Name, age, dan weight adalah atribute (variab
el) dari class Person
Mobil.java
}
public class MobilBeraksi{
MobilBeraksi.java
public static void main(String[] args){
// Membuat object
Mobil mobilku = new Mobil();
/* memanggil atribut dan memberi nilai */
mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
System.out.println("Warna: " + mobilku.warna);
System.out.println("Tahun: " + mobilku.tahunProduksi);
}
}
Method
Method adalah urutan instruksi yang m
engakses data dari object
Method melakukan:
1. Manipulasi data
2. Perhitungan matematika
3. Memonitor kejadian dari suatu event
Method
Mobil2.java
void printMobil(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
public class Mobil2Beraksi{
public static void main(String[] args){
Mobil2 mobilku = new Mobil2();
mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
mobilku.printMobil();
}
}
Mobil2Beraksi.java
Latihan
Buat class Handphone, masukkan dalam
package hp
Class Handphone berisi empat method di ba
wah:
1.
2.
3.
4.
hidupkan()
lakukanPanggilan()
kirimSMS()
matikan()
Latihan
Buat class Mahasiswa yang berisi tiga m
ethod:
1. membaca()
2. nyontek()
3. modifikasi()
.Isi masing-masing method dengan tampilan
status menggunakan System.out.println()
Parameter
Sepeda akan berguna apabila ada object lain yang
berinterasi dengan sepeda tersebut
Object software berinteraksi dan berkomunikasi de
ngan object lain dengan cara mengirimkan messag
e atau pesan
Pesan adalah suatu method, dan informasi dalam p
esan dikenal dengan nama parameter
1. You
object pengirim
2. YourBicycle
3. changeGears
dijalankan
4. lowerGear
method
object penerima
pesan berupa method yang
parameter yang dibutuhkan
(pesan) untuk dijalankan
Sepeda.java
public class Sepeda{
int gir;
// method (mutator) dengan parameter
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
// method (accessor)
int getGir() {
return gir;
}
}
SepedaBeraksi.java
public class SepedaBeraksi{
public static void main(String[] args) {
Sepeda sepedaku = new Sepeda();
sepedaku.setGir(1); // menset nilai gir = 1 (sebelumnya 0)
System.out.println(Gir saat ini: + sepedaku.getGir());
sepedaku.setGir(3); // menambahkan 3 pada posisi gir saat
ini (1)
System.out.printl
n(Gir saat ini: + sepedaku.getGir());
}
}
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)
}
Mobil.java
this.tahunProduksi = tahunProduksi;
}
public void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
public class MobilKonstruktor{
MobilKonstruktor.java
public static void main(String[] args){
Mobil mobilku = new Mobil(Merah, 2003);
mobilku.info();
}
}
void isiData(String
aWarna,
int
aTahunProduksi){
void isiData(String
warna,
int
tahunProduksi){
warna = aWarna;
tahunProduksi =
aTahunProduksi;
this.warna = warna;
this.tahunProduksi =
tahunProduksi;
Latihan
1. Buat class Bank
Abstraction, Encapsulation,
Inheritance, Polymorphism
Abstraction
Cara kita melihat suatu sistem dalam bentu
k yang lebih sederhana, yaitu sebagai suat
u kumpulan subsistem (object) yang saling
berinteraksi.
Mobil adalah kumpulan sistem pengapian, siste
m kemudi, sistem pengereman
Encapsulation
Mekanisme menyembunyikan suatu proses dan
data dalam sistem untuk menghindari interferen
si, dan menyederhanakan penggunaan proses it
u sendiri
Tongkat transmisi (gigi) pada mobil
Tombol on/off/pengaturan suhu pada AC
Class Lingkaran{
class Garis{
void buatLingkaran(){
private void
buatTitik(x, y){
for(){
}
Garis.buatGaris()
public void
}
buatGaris(tA, tB){
}
}
}
Dalam
Class
yang
Sama
Dalam
Package
yang Sama
Dalam Dalam
SubCla Package
ss
Lain
private
tanpa
tanda
protected
public
Encapsulation
Enkapsulasi data juga dapat dilakukan deng
an cara:
1. mendeklarasikan instance variable sebagai priva
te
2. mendeklarasikan method yang sifatnya public u
ntuk mengakses variable tersebut
Sepeda.java
public class Sepeda{
int gir;
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
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 variabl
e */
sepedaku.gir = 3;
System.out.println(Gir saat ini: + sepedaku.getGir());
}
}
Sepeda.java
public class Sepeda{
private int gir; // access modifier private pada instance va
riable
Inheritance (Pewarisan)
Suatu class dapat me
wariskan atribut dan
method kepada class
lain (subclass), serta
membentuk class hie
rarchy
Penting untuk Reusa
bility
Java Keyword:
extends
Sepeda.java
public class Sepeda{
private int gir;
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
sg.setGir(3);
System.out.println(sg.getGir());
sg.setSadel(1);
System.out.println(sg.getSadel());
}
}
SepedaGunung.java
SepedaGunungBeraksi.java
Polymorphism
Kemampuan untuk memperlakukan o
bject yang memiliki perilaku (bentuk)
yang berbeda
Implementasi konsep polymorphism:
1. Overloading: Kemampuan untuk menggun
akan nama yang sama untuk beberapa met
hod yang berbeda parameter (tipe dan ata
u jumlah)
2. Overriding: Kemampuan subclass untuk m
enimpa method dari superclass, yaitu deng
an cara menggunakan nama dan paramete
Polymorphism Overloading
class Mobil {
String warna;
int tahunProduksi;
}
}
mobilku.info();
Mobil mobilmu = new Mobil();
mobilmu.info();
}
}
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, S
tring namaLingkaran){
...
Polymorphism - Overriding
public class Sepeda{
private int gir;
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
Polymorphism - Overriding
public class SepedaGunung extends Se publicclassSepedaGunungBeraksi{
publicstaticvoidmain(String[]args){
peda{
SepedaGunungsg=newSepedaGunung();
SepedaGunung.java
sg.setGir(2);
System.out.println(sg.getGir());
sg.setGir(3);
System.out.println(sg.getGir());
}
}
SepedaGunungBeraksi.java
3.
4.
5.
Matematika.java
public class Matematika{
void pertambahan (int a, int b){
int hasil= a + b;
System.out.println(hasil: + hasil);
}
void pertambahan (double a, double b, double c){
double hasil= a + b + c;
System.out.println(hasil: + hasil);
}
...
}
Skill Check
1.
2.
3.
4.
5.
6.
7.
Class: HaloSemarang
Variable: Mobil
Method: Bank
Parameter: Matematika
Encapsulation: Sepeda
Inheritance: MatematikaCanggih
Polimorphism: Matematika
Packages
Package adalah koleksi dari beberapa class dan
interface yang berhubungan, dan menyediakan
proteksi akses dan pengelolaan namespace
1 package adalah 1 folder di file system
Package berguna untuk mengorganisir file dala
m suatu project atau library
Nama package menggunakan lowercase
Nama package mengikuti nama domain (perusa
haan) dengan susunan terbalik
Contoh: com.brainmatics.kendaraan
Packages
Packages
Base directory: holds your program's Files
Path name, relative to base directory, must
match package name:
com/horstmann/bigjava/Financial.java
Budi.java
package kelasku;
public class Budi{
public void info(){
System.out.println(Kelas Budi);
}
}
Joko.java
package kelasku;
public class Joko{
public void info(){
System.out.println(Kelas Joko);
}
}
PaketBeraksi.java
import kelasku.Joko;
public class PaketBeraksi{
public static void main(String[] args){
Joko objectJoko = new Joko();
objectJoko.info();
}
}
PaketBeraksi.java
import kelasku.*;
public class PaketBeraksi{
public static void main(String[] args){
Budi objectBudi = new Budi();
objectBudi.info();
Joko objectJoko = new Joko();
objectJoko.info();
}
}
Struktur Direktori
PaketBeraksi.java
kelasku
Budi.java
Joko.java
Interface
Interface digunakan apabila kita ingin
menentukan apa yang harus dilakuka
n oleh suatu class tapi tidak menentu
kan bagaimana cara untuk melakuka
nnya
Interface sebenarnya sama dengan cl
ass, tapi hanya memiliki deklarasi me
thod tanpa implementasi
InterfaceLampu.java
interface InterfaceLampu{
public static final int
KEADAAN_HIDUP=1;
public static final int
KEADAAN_MATI=0;
Lampu.java
public class Lampu implements InterfaceLampu{
int statusLampu;
public void hidupkan(){
if (statusLampu == KEADAAN_MATI){
statusLampu = KEADAAN_HIDUP;
System.out.println("Hidupkan Lampu! --> Lampu Hidup");
}else{
System.out.println("Hidupkan Lampu! --> Lampu Sudah Hidup
Kok");}
}
public void matikan(){
if (statusLampu == KEADAAN_HIDUP){
statusLampu = KEADAAN_MATI;
System.out.println("Matikan Lampu! --> Lampu Mati");
}else{
System.out.println("Matikan Lampu! --> Lampu Sudah Mati
Kok");
}
}
LampuBeraksi.java
public class LampuBeraksi{
public static void main(String[] args){
Lampu lampuKamar = new Lampu();
System.out.println("Status Lampu Saat Ini:
Mati");
Latihan: InterfaceAC
Buat program serupa dengan Interfac
eBeraksi.java tapi untuk ACBeraksi.ja
va
Masukkan method-method di bawah
ke dalam ACBeraksi.java
matikanAC() dan hidupkanAC()
dinginkanAC() dan panaskanAC ()
Penggunaan JAR
Perintah Membuat file JAR:
jar cvf namafile.jar file1.class file2.class
Keterangan Pilihan:
c = create (membuat file JAR)
v = verbose (menampilkan informasi pada layar)
f = filename (daftar nama file yang akan dikompresi)
JAR Manifest
JAR Manifest dibuat secara otomatis
dan diletakkan di dalam folder METAINF pada file kompresi yang kita buat
JAR Manifest digunakan untuk mende
skripsikan file-file yang terdalam dala
m file JAR
Purpose
Sample Class
java.lang
Languagesupport
Math
java.util
Utilities
Random
java.io
Inputandoutput
PrintStream
java.awt
AbstractWindowingToolkit
Color
java.applet
Applets
Applet
java.net
Networking
Socket
java.sql
DatabaseAccess
ResultSet
javax.swing
Swinguserinterface
JButton
omg.w3c.dom
DocumentObjectModelforXML
documents
Document
Method Summary
Tugas
Kerjakan semua latihan dan tugas yang ad
a di slide OOP Concepts
Kirimkan netbeans project yang sudah di
zip ke romi@brainmatics.com
dengan subject: [OOP1-Universitas] Nam
aNIM
Deadline: 2 minggu
Meng-copy file orang lain akan menyebab
kan nilai tugas 0
Referensi
1. Sharon Zakhour et al, The Java Tutorial Fourth Edition, htt
p://java.sun.com/docs/books/tutorial
2. Cay Horstmann, Big Java: Earl Objects 5th Edition, John Wiley
& Sons, 2013
3. Deitel & Deitel, Java Howto Program 9th Edition, Prentice Hal
l, 2012
4. Richard M. Reese, Oracle Certified Associate Java SE 7 Progr
ammer Study 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 Edition, Pearson Education, 2012
7. Anany Levitin, Introduction to the Design and Analysis of Alg
orithms 3rd Edition, Pearson Education, 2012
8. Ying Bai, Practical Database Programming with Java, John Wi