PEMROGRAMAN
BERORIENTASI OBJEK
Belajar PBO, berarti harus membiasakan diri berpikir secara kelas dan objek setiap menghadapi masalah.
Contoh :
Buatlah program untuk menghitung keliling lingkaran dari masukan
jari-jarinya !
Masalah tersebut bila disajikan dengan pendekatan kelas dan objek, harus
direvisi sebagai berikut :
Buatlah kelas lingkaran yang memiliki tanggungjawab mengetahui jari-jarinya
dan kelilingnya, lingkaran tersebut dapat melakukan aksi mengembang dan
berkerut sesuai dengan panjang jari-jarinya.
Sylabi
1.
Pengantar
2.
Kelas, Method dan Modifier
3.
Objek
4.
Package
5.
Information Hiding, Encapsulation, Inheritance, dan Polymophism
6.
Kelas Inner, Kelas Abstract, dan Interface
7.
Exception Handling
8.
Kelas-Kelas Dasar
9.
MultiThreading
BAB I. Pengantar
(Identifier, Keyword, Literal dan Tipe Data,
Operator, Separator)
1.1.
Pengantar
Bahasa java yang telah dirilis :
1.
Product Sun Microsystem : j2se, j2me, j2ee
2.
Product Borland : JBuilder
3.
Product Microsoft : Visual J
Spesifikasi j2ee antara lain JDBC, JDOM (untuk XML), Remote Method Invocation, Enterprise Java
Beans, Java Messaging, Java Server Pages, Java Servlet, Socket Programming, dan
SQLJ.
Java/Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi
programmer untuk membuat dan menjalankan java.
Development Kit dapat didownload di :
Komponen JDK antara lain compiler(javac), interpreter(java) disebut juga
java virtual machine atau java runtime environment, applet
viewer(appletviewer), debugger(jdb), java class library(jcl), header dan stub
generator(javah), dan yang paling penting yaitu java documentation(javadoc).
Penjelasan penggunaan komponen JDK :
1.
Kompilator (javac)
Bertugas untuk melaksanakan kompilasi
*.java menjadi *.class
Syntax umum : javac
nama.java
2. Interpreter (java)
Bertugas untuk menjalankan bytecode (*.class)
Syntax umum : java
nama.class
3.
Applet Viewer
Digunakan untuk menjalanakan applet viewer, namun sekarang
sudah digantikan browser.
Syntax umum : appletviewer
nama.html
4.
Java Debugger
Bertugas untuk melakukan debugging aplikasi java. Syntax umum : jdb option
5.
Java Class File Diassembler (javap)
Bertugas membuat daftar method dan attribute public dari suatu kelas.
Syntax : javap namaKelas
6.
Java Header and Stub Generator
Bertugas menerjemahkan bahasa yang ditulis dalam bahasa java menjadi
bahasa C.
Syntax umum : javah namaKelas
7.
Java Documentation Generator
Menampilkan pustaka kelas, interface, constructor, dan method standard
yang telah dibuat vendor.
Dari hasil instalasi, dokumentasi ini dapat dilihat di pada C:\java\docs\api\index.html atau
C:\Program Files\NetBeans3.6\docs\junit\index.html
8.
Source Code Java API
Source code ini dapat diperoleh dari file src.zip.
Untuk pemrogram pemula lingkungan pemrograman java dapat diringkas
menjadi :
1.
Editing source code menggunakan editor teks.
2.
Compiling
menggunakan keyword javac melalui
command promp (dapat juga dari editor teks).
3.
Executing
menggunakan :
a.
Keyword java
melalui command prompt (dapat juga dari editor teks)
b.
Browser atau applerviewer untuk applet.
Token
Token adalah elemen terkecil di program yang masih memiliki arti. Ada 5
token dalam bahasa java yaitu identifier, keyword, literal dan tipe data,
operator, serta separator.
Identifier
Identifier adalah token yang merepresentasikan nama sesuatu. Sesuatu
tersebut adalah variabel, atau konstanta, atau attribute, atau method, atau
kelas, atau package, atau interface, atau nama file, dan lain-lain.
Keyword
Kata kunci digunakan untuk suatu tujuan tertentu. Ada 51 keyword dalam
java yaitu :
abstract
|
continue
|
for
|
new
|
switch
|
boolean
|
default
|
goto
|
null
|
synchronized
|
break
|
do
|
if
|
package
|
this
|
byte
|
double
|
implements
|
private
|
threadsafe
|
byvalue
|
else
|
import
|
protected
|
throw
|
case
|
extends
|
instanceof
|
public
|
throws
|
catch
|
false
|
int
|
return
|
transient
|
car
|
final
|
interface
|
short
|
true
|
class
|
finally
|
long
|
static
|
try
|
const
|
float
|
native
|
super
|
void
|
|
|
|
|
while
|
Literal dan
Tipe Data Primitif
Literal adalah nilai variabel/attribute atau nilai konstanta atau nilai
objek data. Ada tiga besaran literal dalam java yaitu angka, karakter, dan
string.
Angka terdiri dari byte, short, int, long, float, double, dan boolean
(dianggap angka true = 1 atau false = 0)
Semua variabel dan konstanta yang
akan digunakan harus dipesan terlebih dahulu dalam deklarasi.
Bentuk umum :
TipeData namaVar = ungkapan_atau_nilai;
TipeData namaVar1, namaVar2, …;
[modifier] static final TipeData NAMAKONSTANTA
= nilai;
Contoh deklarasi :
double a=3, b=4;
double c = Math.sqrt(a*a+b*b);
static final PHI=3.14;
static final double CM_PER_INC =
2.54;
Berikut tabel jangkauan dan ukuran dari semua tipedata sederhana dalam
java :
Tipe Data Primitif
|
Jangkauan
|
Ukuran (bit)
|
byte
|
-128 s/d 127
|
8
|
short
|
-32767 s/d 32767
|
16
|
int
|
-2147483648 s/d
2147483647
|
32
|
long
|
-9223372036854775808
s/d
9223372036854775807
|
64
|
char
|
sebuah Unicode
|
16
|
float
|
3.4e-038 s/d
3.4e+038
|
32
|
double
|
1.7e-308 s/d
1.7e+308
|
54
|
boolean
|
false = 0 atau true
= 1
|
8
|
Operator
Operator melakukan komputasi terhadap satu/dua
objek data. Operan yang dioperasikan dapat berupa literal, variabel, atau nilai
yang dikirim method.
Berikut tabel dan hirarki operator :
Prioritas
|
Kelompok
Operator
|
Keterngan
|
1
|
.
[] ()
|
Sekaligus
|
2
|
++var,
--var, ~, instanceof
|
preincrement,
predecrement, unary, instance dari kelas …
|
3
|
(type)
(casting)
|
|
4
|
!
|
Not
|
5
|
*, /, %
|
perkalian,
pembagian, modulus
|
6
|
+, -
|
penjumlahan,
pengurangn
|
7
|
<<,
>>, >>>
|
geser
untuk bil biner
|
8
|
<,
>, <=, >=
|
pembandingan
|
9
|
==, !=
|
kesamaan,
ketidaksamaan
|
10
|
&
|
and
|
11
|
^
|
exclusive
or
|
12
|
|
|
unconditional
or
|
13
|
&&
|
conditional
and
|
14
|
||
|
conditional
or
|
15
|
? :
|
shorthand untuk
if..then…else…
|
16
|
=, +=,
-=, *=, /=, %=, ^=
|
operator
penugasan
|
17
|
&=,
|=, <<=, >>=, >>>=
|
operator
penugasan
|
18
|
var++,
var--
|
postincrement,
postdecrement
|
Separator
Separator menginformasikan ke compiler java mengenai adanya kelompok kode
program.
Berikut adalah daftar separator di java :
Notasi
|
Nama
|
Deskripsi
|
(…)
|
kurung
|
mengelompokkan parameter method.
|
{…}
|
kurung kurawal
|
mengelompokkan nilai-nilai suatu array,
mendefinisikan blok kode kelas ataupun kode method.
|
[…]
|
kurung siku
|
mendeklarasikan tipe array
|
:
|
titik koma
|
mengakhiri pernyataan, merangkai pernyataan-pernyataan di
dalam for.
|
,
|
koma
|
memisahkan identifier-identifier di bagian deklarsi
variable.
|
.
|
titik
|
memisahkan nama-nama package,
memisahkan kelas dari objek,
dan objek dari method.
|
Keyword
break, continue, dan return
Kelompok keyword ini pada prinsipnya merupakan kendali jump (variasi lain
dari goto), sehingga berakibat pengabaian sisa instruksi.
Penggunaan
keyword break
Ada dua penggunaan keyword break, yaitu untuk keluar dari kendali percabangan switch, dan untuk keluar dari kendali perulangan.
Dengan keyword ini berarti percabangan/perulangan akan diakhiri, kemudian
eksekusi dilanjutkan ke pernyataan setelah blok percabangan/perulangan
tersebut.
Contoh :
public class ContohBreak {
public static void
main(String args[]) {
int i = 0;
do {
i++;
System.out.println(i);
if (i==5) break;
} while (i <= 9);
}
}
Penggunaan
keyword continue
Penggunaan keyword ini untuk segera lompat ke perulangan berikutnya.
Pernyataan-pernyataan setelah keyword continue dalam blok perulangan saat itu
berarti diabaikan.
Contoh :
public class contohContinue {
public static void
main(String args[]) {
int i=0;
do {
i++;
if (i==3) continue;
System.out.println(”iterasi ke : “+i);
if (i==5) break;
} while(i <= 9);
}
}
Penggunaan
keyword return
Keyword ini digunakan untuk keluar
dari suatu method, pernyataan-pernyataan setelah keyword ini dan masih dalam
blok method tersebut, berarti diabaikan, kemudian eksekusi dilanjutkan ke
pernyataan setelah blok method tersebut.
Contoh cuplikan
program :
int abs(int x) {
if (x >= 0)
return x;
else
return(-x)
…
}
}
BAB
II. KELAS, METHOD, DAN MODIFIER
Apapun konsep yang diimplementasikan di java harus dikapsulkan ke dalam
kelas.
Kelas mendefinisikan sekumpulan objek yang memiliki kesamaan keadaan dan
perilaku.
Ada dua kelompok kelas, yaitu kelas standard dan kelas yang didefinisikan
sendiri. Kumpulan dari method/kelas standard dalam java dikenal dengan API
(Aplication Programming Interface).
2.1. Pengertian
Kelas
Kelas digunakan untuk membuat objek, dan
berperan sebagai tipe data dari objek. Kelas
merupakan sarana pengkapsulan kumpulan data dan kumpulan method yang mengoperasikan
kumpulan data tersebut.
2.2. Anatomi
Kelas
Bentuk umum struktur anatomi kelas sebagai berikut
(modifier1)
class NamaKelas (modifier2) {
classbody
}
Classbody terdiri dari attribute, constructor, dan method.
Modifier pada anatomi kelas, sifatnya optional, digunakan berdasarkan
kebutuhan. Modifier menunjukkan sifat-sifat tertentu dari : kelasnya,
methodnya, atau attributenya.
Ada 10 keyword yang digunakan sebagai modifier1 dan dikelompokkan menjadi
:
1.
Modifier akses (public,
protected, default, private)
2.
Modifier final
3.
Modifier static
4.
Modifier abstract
5.
Modifier synchronized
6.
Modifier native
7.
Modifier storage
(transient, volatile)
Modifier yang memiliki sifat saling kontradiktif yaitu static dan abstract. Sementara static
tidak boleh memberi sifat pada interface, dan keyword super tidak boleh digunakan pada method static.
Ada 2 keyword yang sering digunakan sebagai modifier2, yaitu extends dan implements.
2.3. Deklarai
Attribute (Variabel Anggota Data)
Deklarasi diletakkan di dalam classbody (di luar method). Bentuk umum
deklarasi attribute :
[modifier] tipedata namavariabel;
[public] [static] final tipedata
NAMA_KONSTANTA = nilai;
Contoh :
public class CircleClass {
public static final double PI
= 3.14159265358979323846;
public double x, y, r;
// dan seterusnya
}
2.4. Method
Method merupakan tingkah laku dari suatu objek atau kelas, jika bersifat
static berarti tingkah laku semua objek dalam kelas tersebut.
Method diletakkan di dalam classbody (sebaiknya tidak
diletakkan dalam method lain).
Bentuk umum method :
[modifier] tipe_return_value namaMethod(tipe
parameter) {
methodbody;
}
Modifier boleh lebih dari satu (dipisah oleh spasi).
Pasangan tipe dan parameter dapat lebih dari satu (dipisah oleh koma).
Bentuk umum method main() sebagai berikut :
[modifier] tipe_return_value main(String
args[]) {
methodbody
}
Ada tiga sintaks pemanggilan suatu method :
namaMethod([nilaiParamater]);
namaObjek.namaMethod([nilaiParamater]);
namaKelas.namaMethod([nilaiParamater]);
Tidak semua member (class, attribute, dan method) dapat diakses method,
berikut tabel aksesnya :
Method
|
member (class,
attribute, method)
|
Static
|
static
boleh lewat objek ataupun class,
boleh langsung kalau dalam
kelas sendiri
|
Static
|
non static
hanya boleh lewat objek,
langsung
tidak boleh,
lewat
class tidak boleh
|
Non static
|
static
boleh lewat objek ataupun
class,
boleh langsung kalau dalam
kelas sendiri
|
Non static
|
non static
hanya boleh lewat objek,
langsung
tidak boleh,
lewat
class tidak boleh
|
Method dasar ada dua jenis yaitu getter()
dan setter().
Contoh :
public class Dog {
private int weight; //
information hiding
public int getWeight() { //getter
return weight;
}
public void setWeight(int
newWeight) { //setter
weight
= newWeight;
}
}
public class TesDog {
public static void
main(String[] args) {
Dog d = new Dog(); //
membuat objek d
d.setWeight(42); // input
System.out.println(”Dog
d’s weight is ”+d.getWeight())
}
2.4.1.
Overloading terhadap Method
Maksud overloading disini bukan overloading terhadap operator sebagaimana
C++. Overloading disini adalah mendefinisikan dua atau lebih method di dalam
kelas yang sama, dengan nama yang sama, namun dengan deklarasi parameter yang
berbeda.
Java interpreter mampu membedakan method mana yang dieksekusi dengan
mengenali tipe parameter yang dilewatkan ke method, serta mengenali return
valuenya.
Tugas dari method-method yang dioverloading tersebut berbeda.
Contoh overloading terhadap method :
import java.lang.*;
public class Perkalian {
private double pangkat(int a,
int b) {
double hasil = 1.0;
//kode program
return hasil;
}
private double pangkat(double
a, int b) {
double hasil = 1.0;
//kode program
return hasil;
}
private double pangkat(int a,
double b) {
double hasil = 1.0;
//kode program
return hasil;
}
private double pangkat(double
a, double b) {
double hasil = 1.0;
//kode program
return hasil;
}
public static void
main(String[] args) {
Perkalian kali = new
Perkalian();
System.out.println(kali.pangkat(10,308));
// dst untuk data yg
lain
}
}
2.4.2. Keyword
this
this adalah objek yang langsung digunakan tanpa didahului proses
instansiasi.
Penggunaan keyword ini yaitu bila ada attribute (non static) dari suatu
kelas akan digunakan method yang berada dalam kelas yang sama, namun nama
attribute tersebut dan nama parameter yang dilewatkan pada method tersebut
SAMA.
Keyword ini dapat digunakan secara implicit maupun eksplisit.
Contoh penggunaan yang eksplisit :
class RectangleToy {
private double width, height;
public void setRectangle(double width,
double height) {
this.width = width;
this.height = height;
}
}
Pemanggilan attribute yang eksplisit, biasa digunakan untuk mengatasi
panamaan yang sama. Pada contoh ini parameter di method setRectangle()
menggunakan nama yang sama dengan attribute di kelas RectangleToy.
Contoh pemanggilan implisit :
class RectangleToy {
private
double width, height;
public
void setRectangle(double newwidth, double newheight) {
width = newwidth;
height = newheight;
}
}
2.5. Constructor
Pada prinsipnya constructor adalah method yang tidak memiliki return
value (secara implisit adalah instant dari kelasnya), hanya saja namanya sama
dengan nama kelas, dan dapat diberi modifier akses (public, protected, default,
private).
Bentuk umum pendefinisian constructor :
[modifier] namaConstructor(tipe
namaparameter) {
constructorBody;
}
Tujuan constructor dibuat adalah untuk melakukan inisialisasi yang
diperlukan objek baru.
Contoh constructor dan overloadingnya :
class PersonToy {
String name;
String addressLine1;
String addressLine2;
String city;
int age;
public PersonToy() {
name = ” ”;
addressLine1 = ” ”;
addressLine2 = ” ”;
city = ” ”;
age = 0;
}
public PersonToy(String
newName,
String newAddress1,
String newAddress2;
String newCity;
int newAge) {
name = newName;
addressLine1 = newAddressLine1;
addressLine2 =
newAddressLine2;
city = newCity;
age = newAge;
}
}
2.6. Modifier
Modifier1 untuk menentukan sifat dari suatu kelas dan menentukan
preveledge (hak akses) dari kelas lain. Modifier2 untuk menentukan relasi
(extend atau implements) dengan kelas lainnya.
Wilayah modifier akses, dalam bentuk tabel :
Wilayah Akses
|
public
|
protected
|
default
|
private
|
Di kelas yg sama
|
√
|
√
|
√
|
√
|
Beda kelas,
di package yg sama
|
√
|
√
|
√
|
x
|
Beda kelas,
beda package,
di kelas turunan
|
√
|
√
|
x
|
x
|
Beda kelas,
beda package,
tidak di kelas turunan
|
√
|
x
|
x
|
x
|
Wilayah modifier akses tersebut dapat
diilustrasikan:
public
protected
0 komentar:
Posting Komentar