RANGKUMAN TENTANG OOP ( Object Oriented Programming)
1.1
Pendahuluan
Dalam dunia teknologi informasi saat ini, pengembangan sebuah solusi
untuk memenuhi kebutuhan yang ada di dunia nyata harus dikembangkan dengan
mudah, cepat dan memenuhi berbagai macam keperluan. Salah satu cara untuk
mengurangi kompleksitas dari perangkat lunak adalah dengan membaginya
berdasarkan hirarki tertentu berdasarkan fungsi-fungsi yang ada. Salah satu
pendekatan pengembangan perangkat lunak sebelum adanya pendekatan berorientasi
obyek (Object oriented Programming atau OOP) adalah pemrograman
prosedural, yang membagi sebuah aplikasi berdasarkan berbagai macam fungsi yang
ada didalamnya.
1.2
Pemrograman
Prosedural
Dalam Pemrograman prosedural, sebuah
program akan dibagi menjadi beberapa subprogram
(modul) yang akan melakukan tugas-tugas tertentu. Dalam sebuah modul bisa
terdiri dari satu atau lebih prosedur atau dalam bahasa pemrograman juga
disebut sebagai fungsi, rutin, subrutin, atau
method.
1.3
Pemrograman
Berorientasi Obyek
Berbeda
dengan pemrograman prosedural, seperti yang telah dijelaskan sebelumnya bahwa
pemrograman berorientasi obyek memecah komponen-komponennya menjadi obyek-obyek
yang saling berinteraksi. Dunia nyata yang terdiri dari obyek-obyek dapat
dengan mudah dimodelkan sehingga program bisa lebih mendekati kondisi yang
sebenarnya.
Terdapat beberapa keuntungan
menggunakan pemrograman berorientasi obyek, antara lain:
·
Real world
programming
·
Reusability of
code
·
Resilience to
change
·
Information
hiding
·
Modularity of code
1.4
Kelas dan Obyek
Sebuah
kelas menentukan struktur dan behaviour
dari sebuah obyek. Sebagai sebuah contoh, truk, bus, mobil, sepeda motor
didefinisikan sebagai sebuah kendaraan bermotor karena memiliki beberapa
karakteristik yang sama yaitu memiliki mesin, menggunakan bahan bakar minyak
untuk pengoperasiannya.
Obyek merupakan dasar dari pemrograman
berorientasi obyek, didalam dunia nyata, setiap obyek yang ada memiliki dua
buah karakteristik: State dan behaviour.
·
State merupakan atribut yang dimiliki oleh
sebuah obyek.
·
Behaviour adalah fungsi
yang dimiliki dan bisa dijalankan oleh penggunanya.
1.5
Sejarah Java
Pada tahun 1991, Sun dipimpin Patric Naughton dan James
Gosling ingin merancang bahasa computer untuk perangkat consumer seperti cable TV Box. Karena perangkat itu tidak mempunyai banyak memori,
bahasa harus berukuran kecil dan menghasilkan kode program yang liat. Juga
karena manufaktur-manufaktur berbeda memilih pemroses-pemroses yang berbeda,
maka bahasa harus bebas dari arsitektur manapun. Proyek ini diberi nama kode “Green”.
Karena orang-orang di proyek Green
berbasis C++ bukan Pascal maka kebanyakan Sintaks diambil dari C++, serta mengadopsi orientasi obyek bukan procedural. Mulanya bahasa yang
diciptakan diberi nama “Oak” kemudian diganti “Java” karena
telah ada bahasa pemrograman bernama “Oak”
Java
pertama kali diluncurkan sebagai bahasa pemrograman umum (general purpose programming language) dengan kelebihan dia bisa
dijalankan di web browser sebagai applet.
1.6
Karakteristik Bahasa Java
1. Sederhana, semudah
C dan seampuh C++: berlawanan dengan anggapan orang-orang bahwa bahasa Java
sulit untuk dipelajari, Java gampang untuk dipelajari terutama untuk orang yang
sudah mengenal pemrograman tapi belum terlalu terikat pada paradigma
pemrograman prosedural.
2. Sangat berorientasi obyek (OOP)
dengan implementasi yang sangat baik sehingga
kita bukan hanya belajar bagaimana membuat program yang baik (reusable, scalable, dan maintanable) tetapi juga kita belajar
bagaimana cara berfikir yang baik untuk mengenali struktur masalah yang sedang
kita hadapi dan memecahkannya secara sistematis dengan pola-pola tertentu.
3. Fitur-fitur utama yang lain:
·
Mendukung multithreading.
·
Selalu memeriksa tipe obyek pada saat runtime.
·
Mempunyai automatic
garbage collection untuk membersihkan obyek yang tidak terpakai dari memori
·
Mendukung exception
sebagai salah satu cara penanganan kesalahan
1.7
Bagaimana Java Bekerja?
Lingkungan pemrograman pada Java menggunakan compiler
sekaligus interpreter agar dapat berjalan pada platform yang
berbeda. Java compiler melakukan kompilasi pada source code (.java)
menjadi Java bytecodes (.class).
Java bytecodes merupakan
instruksi mesin yang tidak spesifik terhadap processor. Oleh karena itu,
program Java hasil kompilasi akan dapat dijalankan pada berbagai platform
sistem komputer dengan menggunakan Java Virtual machine (JVM), "write
once, run anywhere" . JVM disebut juga bytecodes interpreter atau
Java runtime interpreter.
1.8
Platform Java
Platform dapat
diartikan sebagai lingkungan perangkat keras atau perangkat lunak dimana
program dijalankan. Umumnya platform dinyatakan berdasarkan nama sistem
operasi yang digunakan, misalnya Windows 2000, Linux, Solaris, atau MacOS.
Tidak seperti bahasa pemrograman
lainnya, platform Java mempunyai dua komponen, yaitu:
·
Java Virtual machine (Java VM)
Merupakan
fondasi untuk platform Java yang dapat digunakan di berbagai platform
perangkat keras.
·
Java Application Programming Interface (Java
API)
Kumpulan komponen-komponen perangkat lunak
siap pakai (ready-made software components) untuk berbagai keperluan
penulisan program, seperti graphical user
interface (GUI).
1.9
Aplikasi Java
Ada dua tipe aplikasi pada Java yang
umumnya sering ditulis, yaitu aplikasi stand alone dan applets.
Aplikasi stand alone merupakan aplikasi yang dijalankan langsung diatas platform
Java. Sedangkan applets adalah aplikasi yang dijalankan melalui web browser
ataupun applet viewer.
Perbedaan applets dengan Java stand
alone adalah:
·
Applets melakukan extends dari class
applets.
·
Applets tidak mempunyai fungsi main().
·
Applets mempunyai beberapa batasan keamanan,
seperti tidak diperbolehkan membaca atau menulis file pada sistem komputer.
·
Applets tidak dapat menjalankan program lain
pada komputer yang menjalankan applets.
Selain
kedua tipe aplikasi tersebut, ada beberapa tipe aplikasi Java yang lain yaitu:
·
Aplikasi berbasis Windows, misalnya dengan
menggunakan fasilitas Swing.
·
Java Servlet,
yaitu aplikasi seperti applets tetapi dijalankan di sisi server.
·
Java
Server Pages, yaitu aplikasi di sisi server yang ditulis dalam bahasa script
yang melekat pada halaman HTML untuk memberikan efek tampilan pada web browser.
·
Java Beans dan Enterprise Java Beans, yaitu aplikasi
untuk program multitiers.
·
Java Micro
Edition, yaitu aplikasi yang diperuntukan bagi perangkat genggam (handheld
devices), seperti telepon genggam.
1.10
Identifier di Java
Identifier adalah
nama yang diberikan kepada variabel, method,
kelas, paket, dan interface untuk unik mengidentifikasikan bagi kompilator dan
memberikan nama yang berarti bagi pemrogram. Adapun tatacara penamaan identifier:
1.
Case
sensitive, huruf kapital dan kecil dibedakan
2.
Identifier yang
diberikan oleh pemrogram tidak boleh sama dengan keyword yang ada di Java
3.
Dimulai dengan huruf atau underscore (garis bawah) atau tanda ($). Namun sebisa mungkin
diawali dengan huruf karena mungkin identifier
dengan awalan underscore dan ($)
digunakan unruk pemrosesan internal dan file
import
4.
Karakter berikutnya dapat berupa huruf atau
angka 0 sampai 9. Simbol-simbol seperti ‘+’ dan spasi tidak dapat digunakan
1.11
Tipe Data di Java
Tipe data dalam Java dibagi dalam dua
kategori:
1.
Sederhana
2.
Komposit
1.12
Operator di Java
Java memiliki beberapa jenis operator di
antaranya:
- Operator unary:
Nama Operator
|
Simbol
|
Definisi
|
Increment
|
++
|
Akan
menambahkan nilai sejumlah satu
|
Decrement
|
--
|
Akan
mengurangi nilai sejumlah satu
|
Contoh
penggunaan:
int x = 5;
int y = x++;
pada kasus di atas nilai y akan berisi
5 dan nilai x akan berisi 6 karena nilai y akan mengambil nilai x dahulu
setelah itu baru nilai x ditambahkan satu,
1.13
Percabangan di Java
Percabangan di Java menggunakan dua jenis
Sintaks:
1.
Sintaks if
Sintaks if-else,
sebagai berikut :
if (boolean expression) {
Statement
or block
} else if (boolean expression) {
Statement
or block
} else {
Statement
or block
}
2.
Sintaks switch
Sintaks switch
sebagai berikut :
switch (expression) {
case
constant1 : Statements;
break;
case
constant2 : Statements;
break;
default
: Statements;
break;
}
1.14
Perulangan di Java
Perulangan di Java menggunakan 3 jenis Sintaks:
1.
Perulangan for
Sintaks for
sebagai berikut :
for
(init_expr;boolean testexpr;alter_expr) {
Statement or block
}
Contoh :
for (int i=0;i<10;i++) {
Sistem.out.println(i);
}
2.
Perulangan while
Sintaks looping
while sebagai berikut :
while (boolean
testexpr) {
Statement or block
}
Contoh :
int i = 0;
while (i<10) {
Sistem.out.println(i);
i++;
}
3.
Perulangan do....while
Sintaks do/while
loop, sebagai berikut
do {
Statement or block
} while (boolean
testexpr)
Contoh :
int i = 0;
do {
Sistem.out.println(i);
i++;
} while (i<10);
KELAS DAN OBYEK
1.15
Gambaran Umum tentang Orientasi Obyek
Teknik
pemecahan masalah pada object oriented
lebih dekat merupakan model tersekat dengan pemecahan masalah sehari-hari oleh
manusia.
Pemecahan
masalah ini membawa kita ke gambaran konsep pertama pada pemrograman berorientasi
obyek :
“Sebuah
program berorientasi obyek terstruktur atas bersatunya agen-agen yang
berinteraksi yang disebut obyek. Tiap obyek mempunyai peran. Tiap obyek
menyediakan layanan atau menampilkan aksi yang digunakan oleh anggota lain
dalam komunitas.”
1.16
Kelas dan Obyek
Sebuah Kelas mendefinisikan struktur (structure) dan tingkah laku (behaviour) sebuah obyek atau sekumpulan obyek.
Sebuah Obyek merupakan instance dari kelas. Metode yang dijalankan oleh sebuah obyek
ketika merespon sebuah pesan (message)
dibuat oleh kelas yang menerima pesan.
1.17
Komponen Kelas
Dalam
pemrograman berorientasi obyek, kita membuat obyek perangkat lunak (software) yang memodelkan obyek dunia
nyata. Obyek perangkat lunak dimodelkan setelah adanya obyek di dunia nyata
dimana mereka juga mempunyai State
dan behaviour. Sebuah obyek mengatur State nya dalam satu atau lebih variabel/atribut dan
mengimplementasikan behaviour dengan method.
Method merupakan suatu fungsi yang
berasosiasi dengan sebuah obyek. Kita dapat mengakses data dari sebuah kelas
dengan menggunakan method.
1.18
Membuat Kelas dan Obyek di Java
Struktur
dasar pemrograman dengan aplikasi Java adalah kelas dan obyek. Apilkasi java
terdiri dari kelas-kelas dimana terdapat deklarasi atribut dan method.
1.18.1 Pembuatan
kelas di Java
Atribut
dan method dideklarasikan di dalam
kelas. Semua Statement di dalam Java
diakhiri dengan tanda “;”. Di bawah ini Sintaks untuk mendeklarasikan kelas
class <classname>
{
//declaration
of data member
//declaration
of methods
}
|
1.18.2 Pembuatan Obyek
di Java
Obyek
merupakan instance dari class dan
mempunyai identitas yang unik. Kelas merupakan abstraksi dari property umum obyek. Langkah-langah
pembuatan obyek :
1.
Deklarasi : mendeklarasikan suatu variabel
yang akan menyimpan referensi ke obyek
<class name> <object name>;
Librarian Lib1;
2.
Instansiasi atau pembuatan : Membuat obyek
dari kelas yang diinginkan. Ketika sebuah obyek dideklarasikan. Memori belum
dialokasikan sehingga tidak dapat dilakukan penyimpanan data obyek. Operator
yang harus digunakan untuk mengalokasikan memori adalah :
<object name> = new <class name>();
Lib1 = new
Librarian();
Kedua langkah diatas dapat disatukan
menjadi sebuah Statement :
Librarian Lib1 = new Librarian();
1.19 Atribut dan Method
Sebaiknya
memberikan nilai ke atribut sebelum obyek digunakan. Perhatikan contoh dibawah
untuk melihat bagaimana kelas dan obyek bekerja. Contoh kelas student, dimana
kelas ini akan menyimpan informasi tentang student .
1.19.1 Mengakses atribut
Atribut dapat diakses dari luar kelas dengan cara memanggil nama obyek
kemudian diikuti tanda titik dan nama dari atribut. Sintaksnya sebagai berikut
<object
name>.<attribute name> = <value>
Contoh
penggunaannya :
Std.name =
“John”;
Std1.name
= “Mary”;
Jika suatu
atribut instance tidak diisi oleh
suatu nilai maka atribut akan diisi nilai default.
1.19.2 Mengakses Method
Sintaks
untuk mendefinisikan method :
void <method name> ()
{
// Method
body
}
Di dalam Sintaks diatas, kata void menspesifikasikan bahwa fungsi
tidak mengembalikan nilai, <method name>
menspesifikasikan nama dari method tersebut.
1.20 Method main()
Sebuah program Java mempunyai method
main(), method ini akan memanggil
method-method yang dideklarasikan di dalam kelas. Kita dapat membuat
beberapa kelas di dalam program Java.
Sintaks method main() :
public
static void main(String[] args)
{
//code for the main method
}
1.21 Constructor (Konstruktor)
Konstruktor merupakan method
yang akan dieksekusi secara otomatis ketika sebuah obyek dibuat. Method ini mempunyai nama yang sama
dengan nama kelas tempat konstruktor dideklarasikan.
Sintaks
konstruktor adalah :
public
class <class name>
{
<constructor name same with
class name>();
}
HUBUNGAN ANTAR KELAS DAN
PEWARISAN
1.22 Array
1.22.1 Mendeklarasikan Array
Array biasanya
digunakan untuk mengelompokkan data atau obyek yang memiliki tipe yang sama. Array memungkinkan untuk mengacu ke
sekumpulan obyek dengan nama yang sama.
Array dapat
dideklarasikan dengan tipe apa saja, baik itu yang bertipe data primitif maupun
obyek. Berikut contoh deklarasi Array
:
char
s[];
point
p[]; // point adalah sebuah kelas
Dalam
bahasa pemrograman Java, Array merupakan
sebuah obyek meskipun ia terdiri dari elemen yang bertipe data primitif.
Seperti halnya kelas yang lain, ketika mendeklarasikan Array belum dibentuk sebuah obyek Array. Deklarasi Array hanya
membuat sebuah referensi yang dapat digunakan untuk mengacu ke sebuah obyek Array.
1.22.2 Membuat Array
Seperti
halnya dalam pembuatan obyek, Array dibuat
dengan menggunakan keyword new.
Contoh di bawah ini membuat sebuah Array
dengan tipe primitif char:
s
= new char[26];
Baris
di atas membuat sebuah array dengan
26 nilai char. Ketika membuat sebuah Array, elemen di dalamnya akan
diinisialisasi dengan nilai default (‘\u0000’ untuk data tipe char). Biasanya
nilai elemen Array dapat
diinisialisasi dengan nilai default sebagaimana ditunjukkan berikut ini
:
s[0] = ‘A’;
s[1] = ‘B’;
...
Perhatikan
penggalan kode sebagai berikut :
public char[] createArray
{
char[] s;
s = new char[26];
for(int i=0; i<26; i++) {
s[i] = (char) ('A' + i);
}
return s;
}
Penggalan
kode di atas mempunyai representasi dalam heap memory sebagai berikut :
Indeks
array dimulai dengan angka 0. Batasan
legal untuk nilai indeks ini adalah dari nol hingga jumlah elemen array – 1. Apabila program berusaha
mengakses array di luar batas yang
legal, maka akan muncul runtime exception.
Untuk
membuat Array dengan elemen obyek,
gunakan cara penulisan berikut :
p
= new point[10];
Pada
kode di atas, dibuat sebuah Array yang
masing-masing elemennya merupakan referensi obyek yang bertipe Point.
Pernyataan tersebut tidak membuat 10 obyek Point. Untuk membuat obyek Point, gunakan
pernyataan berikut :
p[0]
= new point(0, 1);
p[1]
= new point(1, 2);
...
1.22.3 Menginisialisasi Array
Ketika
membuat sebuah Array, setiap elemen
di dalamnya akan diinisialisasi dengan nilai default. Dalam kasus Array char s seperti pada contoh di
atas, setiap elemen dari Array s diinisialisasi
dengan nilai ‘\u0000’. Dalam kasus Array
p seperti juga contoh di atas, setiap elemen diinisialisasi dengan nilai null,
yang berarti elemen-elemen array p tersebut
belum merujuk ke suatu obyek Point. Setelah proses pengisian p[0] = new Point(),
barulah diperoleh elemen pertama dari Array
p yang merujuk ke obyek Point. Java juga memiliki cara singkat untuk membuat
sebuah obyek Array dengan
elemen-elemennya memiliki nilai awal :
String
names[] = {"Georgianna", "Jen", "Simon"};
Kode di
atas adalah sama dengan kode berikut ini:
String
names[];
names[0]
= "Georgianna";
names[1]
= "Jen";
names[2]
= "Simon";
Cara
singkat ini dapat digunakan untuk Array
dengan berbagai jenis
tipe,
seperti dalam contoh berikut :
MyDate
dates[] = {
new
MyDate(22, 7, 1964),
new
MyDate(1, 1, 2000),
new
MyDate(22, 12, 1964),
};
1.22.4 Array Multidimensi
Dalam
Java, dapat dibuat Array dari Array sehingga dinamai Array multidimensi. Contoh berikut ini
memperlihatkan cara membuat Array dua
dimensi :
int
twoDim [][] = new int[4][];
twoDim[0]
= new int[5];
twoDim[1]
= new int[5];
Pada
baris pertama, dibuat sebuah obyek Array
yang memiliki empat elemen. Masing-masing elemen merupakan referensi yang
bertipe Array dari int yang bernilai null.
Pada baris berikutnya, diinisialisasi elemen pertama dan kedua dengan obyek Array dari int yang masing-masing berisi
lima elemen
yang bertipe integer.
Array dari Array yang bersifat non-rectangular dapat
dibuat seperti dalam contoh berikut :
twoDim[0]
= new int[2];
twoDim[1]
= new int[4];
twoDim[2]
= new int[6];
twoDim[3]
= new int[8];
Proses
pembuatan Array dari Array yang demikian, di mana harus diinsialisasi
masing-masing elemennya satu persatu, cukup merepotkan. Di samping itu, array dari array yang berbentuk rectangular lebih sering digunakan
dibandingkan dengan yang nonrectangular.
Untuk
membuat Array dari Array yang rectangular dengan cara
mudah, gunakan bentuk berikut ini :
int
twoDim[][] = new int[4][5];
Kode
di atas membuat sebuah Array dari
empat Array yang masing-masing elemennya
berisi lima nilai int.
1.22.5 Batasan Array
Dalam
bahasa Java, index Array dimulai dengan
angka nol. Jumlah elemen di dalam Array
disimpan sebagai bagian dari obyek Array
di dalam atribut length. Atribut ini dapat digunakan untuk melakukan proses
iterasi pada Array seperti dalam
contoh berikut :
int
list[] = new int[10];
for(int
i = 0; i < list.length; i++) {
Sistem.out.println(list[i]);
}
Dengan
menggunakan atribut length, pemeliharaan kode program menjadi mudah karena
program tidak perlu mengetahui jumlah eleman Array pada saat kompilasi.
1.22.6 Manipulasi Array
1.22.6.1 Mengubah Ukuran Array
Setelah
membuat obyek Array, ukuran Array tersebut tidak dapat diubah. namun
demikian, dapat digunakan variabel referensi yang sama untuk menunjuk ke sebuah
obyek Array baru seperti dalam contoh
di bawah ini :
int
myArray[] = new int[6];
myArray
= new int[10];
Dalam kode program ini, obyek Array yang pertama akan hilang kecuali
ada variabel lain yang dibuat untuk merujuk ke obyek Arraytersebut.
1.22.6.2
Menyalin Array
Bahasa
Java menyediakan method khusus untuk menyalin Array, yaitu dengan menggunakan method
arrayCopy() dari kelas Sistem seperti dalam contoh berikut :
// array
semula
int
myArray[] = {1, 2, 3, 4, 5, 6};
// array
engan elemen yang lebih banyak
int hold[]
= {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
//menyalin
semua elemen myArray ke hold
// dimulai
dengan indeks ke 0
Sistem.arraycopy(myArray,
0, hold, 0,myArray.length);
Setelah
proses pengkopian di atas, maka isi dari Array
hold adalah 1, 2, 3, 4, 5, 6, 4, 3, 2, 1.
1.23 Pewarisan
Pewarisan
adalah kemampuan sebuah kelas untuk mewariskan
seluruh atau sebagian atribut dan methodnya
ke kelas lain, sehingga atribut dan method
tersebut dikenal oleh
kelas yang menerima pewarisan tanpa
harus menuliskannya.
Pewarisan dapat dilakukan jika :
•
Ada beberapa atribut dan method yang
sama yang digunakan oleh beberapa kelas berbeda (reduksi penulisan kode)
•
Ada satu atau beberapa kelas yang sudah pernah dibuat yang dibutuhkan oleh
aplikasi (reusability)
•
Ada perubahan kebutuhan fungsional atau feature aplikasi dimana
sebagian atau seluruh perubahan tersebut tercakup di satu atau beberapa kelas
yang sudah ada (extend)
1.24 Pewarisan di Java
Pewarisan di Java hanya mengenal pewarisan tunggal,
artinya sebuah kelas hanya mewarisi atribut dan method dari satu kelas induk. Untuk menggunakan pewarisan di Java
digunakan keyword extends.
Contoh pewarisan dapat dilihat pada diagram kelas berikut ini:
Pada diagram kelas di atas, kelas Manager merupakan
kelas turunan dari kelas Employee sehingga mewarisi semua atribut dan method dari kelas Employee yang bersifat
public dan protected. Implementasi dari diagram kelas di atas dalam Java adalah
sebagai berikut:
//Employee.java
public class Employee {
public String name;
public
Date birthDate;
public
double salary;
public
String getDetails() {...}
}
//Manager.java
public class Manager extends Employee {
public
String department;
}
Dari kode di atas, terlihat bahwa atribut name,
birthDate, dan salary serta method getDetails()
diturunkan ke kelas Manager sehingga kelas Manager dapat menggunakan atribut
dan method tersebut. Konstruktor dari
kelas induk tidak dapat diturunkan kepada kelas turunannya.
Untuk menggunakan method dan konstruktor dari kelas induk pada kelas anak digunakan keyword super, contoh:
//Employee.java
public class Employee {
private String name;
private double gaji;
public Employee (String s, double g) {
name
= s;
gaji=g;
}
public double getgaji() {
return gaji;
}
}
//Manager.java
public class Manager extends Employee {
private String alamat;
private double tunjangan;
private double bonus;
public Manager(String nama, String s) {
super(nama);
alamat = s;
}
Public double getgaji() {
return
(super.getgaji()+tunjangan+bonus);
}
}