Object-Oriented
Object-
Programming with Java
Materi Diskusi
1. Konsep Pemrograman dan Paradigmanya
Tingkat Bahasa Pemrograman, Paradigma Pemrograman,
Tool Pemrograman
2. Konsep Dasar Pemrograman Berorientasi Obyek:
Obyek:
Kelas (Class), Obyek (Object), Pengkapsulan
(Encapsulation), Pewarisan (Inheritance), Polymorphisme
3. Konsep Lanjut Pemrograman Berorientasi Obyek:
Obyek:
Constructor, Destructor, Overloading, Overriding, Keyword
This, Multithreading, Package, Interface, Exception
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Konsep Pemrograman
dan Paradigmanya
Bahasa Pemrograman?
Komputer bekerja seperti switching dan hanya
mengenali 0 dan 1
Manusia tidak (paham) berbicara dengan bahasa
0 dan 1
Perlu bahasa pemrograman yang dapat menjadi
perantara percakapan antara komputer dan
manusia
Bahasa pemrograman diubah ke dalam bahasa
yang dipahami oleh komputer dengan
menggunakan interpreter atau kompiler
4
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Compiler or Interpreter?
Compiler:
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Assembly Language
LDA #47
STA $570
$570
DEX
JSR $817
CPX #0
Translation
BNE #14
program 00010100
Assembly language program (Assembler) 001100101
00001000
100100101
010101010
10010
Machine language program
(executable file)
C Language
#include <stdio.h
<stdio.h>
stdio.h> 0001010000
1100101000
main()
main() 0100010010
{ C Compiler 01010101010
printf(“Hallo”); 1010010
}
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Java Language
Source code
(.java)
Java compiler
memproduksi Byte code
(.class)
Java
Virtual Hasilnya adalah Program
Machine Execution
Paradigma Pemrograman
Sudut pandang dan style pemrograman
berhubungan dengan bagaimana sebuah masalah
diformulasikan dalam bahasa pemrograman
Functional Programming:
Programming: Urutan fungsi secara
sekuensial (Scheme, Lisp)
Procedural Programming:
Programming: Pemecahan masalah
berdasarkan prosedural kerja. Fungsi adalah unit
programming (C, Pascal, Fortran)
Object-
Object-Oriented Programming:
Programming: Koleksi object yang
saling berinteraksi . Class adalah unit programming
(Java, C#, C++)
10
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
11
12
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Bentuk program:
1. GUI application public class biasanya
menggunakan JFrame
2. “Text based” Console Application public class
adalah class yang sederhana
16
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
import javax.swing.*;
javax.swing.*;
17
1. C:
C:\\>java HelloWorld (Application)
public class HelloWorld
HelloWorld{
World{ 2. Web Browser (Applet)
public static void main(String[] args){
args){
System.out.println("Hello
System.out.println("Hello World!");
}
}
HelloWorld.java
javac compiler
Interpreter Interpreter Interpreter Interpreter
Kompiler memproduksi
Bytecode (Class)
Java bytecode
(HelloWorld.class)
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
C:\
C:\javac HelloWorldApp.java
/**
* The HelloWorld class implements an applet that
* simply displays "Hello World!".
*/
public class HelloWorld extends Applet {
public void paint(Graphics g) {
// Display "Hello World!"
g.drawString("Hello
g.drawString ("Hello world!", 50, 25);
}
} C:\
C:\appletviewer Hello.html
<HTML>
<HEAD>
<TITLE>A Simple Program</TITLE>
C:\
C:\javac HelloWorld.java </HEAD>
<BODY>
Here is the output of my program:
<APPLET CODE="HelloWorld.class"
WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Konsep Dasar
Pemrograman
Berorientasi Obyek
21
Berorientasi Object?
Attribute:
Topi, Baju, Tas
Punggung, Jaket,
Tangan, Kaki, Mata
Behavior:
Cara Jalan ke Depan
Cara Jalan Mundur
Cara Belok ke Kiri
Cara Memanjat
22
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Berorientasi Object?
Attribute (State):
Ban, Stir, Pedal Kopling/Gas/Rem,
Warna, Tahun Produksi
Behavior:
Cara Menghidupkan Mesin
Cara Manjalankan Mobil
Cara Memundurkan Mobil
Attribute Variable(Member)
Behavior Method(Fungsi)
Method(Fungsi)
23
Tugas
24
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Procedural vs Object-
Object-Oriented
main
Account
credit
perform transaction debit
25
Object--Oriented Program
Object
public class Halo{
26
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
28
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
29
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Attribute
Attribute adalah berbagai variable yang
mengitari class, dengan nilai datanya bisa
ditentukan di object. Name,
Name, age, dan weight
adalah atribute dari class Person
Method
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Message -1-
Bicycle akan berguna apabila ada object lain (misalnya anda)
anda)
yang berinterasi dengan Bicycle tersebut
Object software berinteraksi dan berkomunikasi dengan
object lain dengan cara mengirimkan message . Informasi
dalam message ini dikenal dengan nama Parameter
35
Message -2-
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Tugas
38
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
// method
void changeGear(int newValue) {
gear = gear + newValue;
System.out.println(" \nGear:" + gear);
}
void speedUp(int increment) {
speed = speed + increment;
System.out.println(" \nSpeed:" + speed);
}
39
}
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Tugas
Buat Class bernama matematika,
matematika, yang berisi
method:
pertambahan
pengurangan
perkalian
pembagian
Buat Class bernama matematikaDemo,
matematikaDemo, yang
mengeksekusi method dan menampilkan:
Pertambahan: 20 + 20 = 40
Pengurangan: 10-
10-5 = 5
Perkalian: 10x20 = 200
Pembagian: 20/2 = 10
41
42
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
43
Konstruktor -1-
44
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Konstruktor -2-
class Mobil {
private String warna;
private int tahunProduksi;
private
no specifier
protected
public
46
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Tugas:
1. Buat class Buku
2. Tentukan variable buku: Judul, Pengarang,
Penerbit dan Tahun
3. Buat konstruktor class Buku dengan parameter:
Judul, Pengarang, Penerbit dan Tahun
4. Buat method cetakBuku
5. Buat class BukuDemo dan tampilkan 2 buku:
Pemrograman Berbasis Objek dengan Java,
Indrajani, Elexmedia Komputindo, 2007
Dasar Pemrograman Java, Abdul Kadir, Andi Offset,
2004
47
Inheritance (Pewarisan)
Reusability
Top down:
Being more specific
Bottom Up:
Find similiarity
Java Keyword:
extends
48
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Bicycle.java
class Bicycle {
int speed = 0;
int gear = 0;
// method
void changeGear(int newValue) {
gear = gear + newValue;
System.out.println(" \nGear:" + gear);
}
void speedUp(int increment) {
speed = speed + increment;
System.out.println(" \nSpeed:" + speed);
}
49
}
MountainBike.java
class MountainBike extends Bicycle {
int seatHeight;
50
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
MountainBikeDemo.java
class MountainBikeDemo {
public static void main(String[] args) {
// Membuat object
MountainBike mbike = new MountainBike();
51
Tugas
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Konsep Lanjut
Pemrograman
Berorientasi Obyek
53
Polymorphism
54
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Polymorphism - Overloading 1
class Mobil { public class Konstruktor{
private String warna; public static void main(String[] args){
private int tahunProduksi; Mobil mobilku = new Mobil(“Merah”,
2003);
public Mobil(String warna, int
mobilku.info();
tahunProduksi){
this.warna = warna;
this.tahunProduksi = tahunProduksi; Mobil mobilmu
mobilmu = new Mobil();
} mobilmu.
mobilmu.info();
mu.info();
}
public Mobil(){ }
}
Polymorphism - Overriding
//Filename: Point2D.java // continue class Point decl
declaration
claration
public class Point2D{ // getter method
int x, y; // member variable int getX()
getX() { return x; }
int getY()
getY() { return y; }
public Point2D() {
x=0;
x=0; y = 0;
0; // overide method from class Object
} public String toString(){
toString(){
public Point2D(int
Point2D(int nx,
nx, int ny){
ny){ return “x: “+x “, y: “+y;
setPoint(
setPoint(nx,
nx, ny);
ny); }
} }
// setter method
public setPoint(
setPoint(int nx,
nx, int ny){
ny){
x = nx;
nx;
y = ny;
ny;
}
56
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Tugas
57
Tugas:
58
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Packages
Budi.java
package kelasku;
60
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Joko.java
package kelasku;
61
TesPaket.java
import kelasku.Budi;
import kelasku.Joko;
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Tugas
64
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Interface
65
TesInterface.java
interface IntLampu{
IntLampu{
public static final int KeadaanHidup=1;
KeadaanHidup=1;
public static final int KeadaanMati=0;
KeadaanMati=0;
66
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
68
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
Tugas
69
70
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
http://romisatriawahono.net romi@romisatriawahono.net
Object-Oriented Programming with Java, Universitas Dian Nuswantoro, Semarang, 14-15 September 2007
http://romisatriawahono.net romi@romisatriawahono.net