3.1 Object
OOP (Object Oriented Programming) memandang semua aspek sebagai suatu obyek. OOP berputar pada konsep dari object sebagai dasar element dari program. Beberapa contoh objek ada disekitar kita, seperti mobil, singa, manusia dan seterusnya. Object ini dikarakterisasi oleh sifat / attributnya dan tingkah laku. Kita ambil sebagai contoh adalah mobil dan singa. Objek mobil mempunyai sifat tipe transmisi, warna dan manufaktur. Mempunyai kelakuan berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa.
Objek pada dunia nyata dapat secara mudah dimodelisasi sebagai objek software menggunakan sifat sebagai data dan tingkah laku sebagai method. Misalkan software yang dibuat adalah software ob-jek mobil dalam permainan balap mobil atau software pendidikan interaktif pada kebun binatang un-tuk anak anak. Sebuah objek adalah sebuah komponen software yang sun-tukturnya mirip dengan objek pada dunia nyata. Setiap objek dibuat dari satu set data (sifat) dimana variable menjabarkan esensial karakter dari objek, dan juga terdiri dari satu set dari method (tingkah laku) yang menjabarkan ba-gaimana tingkah laku dari objek. Jadi objek adalah sebuah berkas software dari variable dan method yg berhubungan.
3.2 Class
Class adalah struktur dasar dari OOP. Terdiri dari dua tipe dari anggota yang disebut dengan field (at-tribut/properti) dan method. Field menspesifikasi tipe data yang didefinisikan oleh class. Method
spesifikasi dari operasi. Sebuah objek adalah sebuah instance pada class. Sebuah objek adalah se-buah instance pada class. Variable dan methods dalam objek Java secara formal diketahui sebagai instance variable dan instance methods untuk membedakannya dari variable class dan method class. Perbedaan class dan object:
Sebuah class mobil dimana dapat digunakan untuk mendefinisikan beberapa object mobil. Mobil A dan mobil B adalah objek dari kelas mobil.
Pada contoh kelas diatas, kelas circle merupakan sebuah template/blue print yang siap di inisialisasi dalam sebuah objek. Dalam contoh diatas terbentuk 3 buah objek yang berbeda yaitu objek circle1, circle2, dan circle3 dimana diciptakan berdasarkan kelas yang sama yaitu kelas circle. Ketika diini-sialisasi, tiap objek mendapat satu set baru dari state variable of class. Implementasi dari method di-bagi diantara objek pada kelas yang sama. Class menyediakan keuntungan berupa reusability. Untuk lebih memudahkan memahami kelas dan objek perhatikan sekali lagi contoh berikut:
Di dalam java, sintak untuk mendeklarasikan sebuah kelas adalah:
Pencetak kukis sebagai kelas dapat digunakan berkali-kali untuk mencetak kukis. Kukis adalah objek yang terbentuk dari kelas kukis. Sebuah kelas dapat menghasilkan banyak objek. Dari 1 cetakan dapat dibuat banyak kukis dengan berbagai macam hiasan, namun kukis-kukis tersebut tetap memiliki bentuk yang sama.
Dimana <modifier> adalah sebuah access modifier, yang mana boleh dikombinasikan dengan tipeyang laen dari modifier.
Contoh berikut ini mendeklarasikan blueprint SuperHero.
3.3 Variable dan method Class
Variabel class merupakan variabel milik dari seluruh class. Variabel ini memiliki nilai yang sama untuk semua objek pada kelas yang sama. Variabel ini juga disebut static member variables. Variable dideklarasikan dengan sintak sebagai berikut:
Contoh:
Sebuah method adalah bagian terpisah dari kode yang akan dipanggil oleh program utama dan be-berapa method lainnya untuk menunjukkan bebe-berapa fungsi spesifik. Mengapa kita butuh untuk
membuat method? Mengapa kita tidak meletakkan semua kode pada sebuah method yang sangat besar?
Sintak mendeklarasikan method dalam kelas:
Contoh method:
Object memiliki identitas, state, dan tingkah laku yang unique. State : direpresentasikan oleh data fields (properties / attributes) dengan nilai yang terkandung di dalamnya. Atribut/Identitas dispesifi-kasikan oleh instance variables. Tingkah laku didefinisikan oleh sekumplan method. Memanggil me-thod pada objek berarti bahwa Anda meminta objek untuk melakukan tugas. Melakukan tugas dalam program membutuhkan method. Class menyediakan satu atau lebih method yang dirancang untuk melakukan tugas-tugas class itu.
Sebelum dipanggil atau digunakan, sebuah method harus dideklarasikan dan didefinisikan terlebih dahulu. Pendefinisian method dapat dilakukan dengan sintaksis sebagai berikut:
modifier returnValueType methodName(list of parameters) { // Method body;
}
 Modifiers : sifatnya optional, memberitahukan compiler bagaimana cara memanggil fungsi / method
 returnValueType: tipe data yang dikembalikan oleh fungsi
 Parameter-list: berisi daftar nilai yang dikirimkan dari fungsi pemanggil
 Method Body : medhot body berisi kumpulan statements yang mendefinisikan apa yang dilakukan fungsi
Contoh :
3.4 Jenis Method
Method adalah kumpulan program yang mempunyai nama dimana ketika kita menginginkan kumpulan program itu dijalankan tinggal dipanggil nama methodnya. Penulisan program dengan menggunakan method akan lebih efisien, program menjadi lebih terstruktur, dan praktis. Ada dua jenis method jika dilihat dari hasil yang diberikan dari method itu sendiri yaitu:
1. Method yang tidak mengembalikan data (diberi tipe void) tanpa parameter input dan dengan parameter input.
2. Method yang mengembalikan nilai menggunakan statemen return. Statemen return mengembalikan nilai yang tipenya harus sama dengan tipe methodnya.
Berikut contoh method yang tidak mengembalikan nilai. 01 import java.util.Scanner;
02 public class Prak_4001 { 03 static void Cetak(){
System.out.print("I LOVE "); 04 System.out.print("I LOVE ");
05 }
06 public static void main(String[] args) {
07 Cetak();
08 System.out.print("JAVA");
09 }
10 } Keterangan:
 Baris ke 3 sampai baris ke 5 adalah method bernama cetak untuk menampilkan pernyataan
I LOVE .
 Baris ke 7 adalah pernyataan untuk memanggil method cetak.
 Ketika di eksekusi program ini akan menampilkan tulisa I LOVE JAVA . Berikut contoh method yang tidak mengembalikan nilai dengan parameter.
02 public class Prak_4002 { 03 static void Cetak(int a){
04 System.out.println("Nilai x: "+a); 05 }
06 public static void main(String[] args) {
07 int x; 08 for (x=0; x<3; x++){ 09 Cetak(x); 10 } 11 System.out.println("Nilai x terakhir: "+x); 12 } 13 } Keterangan:
 Baris ke 3 sampai baris ke 5 adalah method bernama cetak dengan variabel a sebagai parameter formal method yang e a pilka per yataa Nilai x: .
 Baris ke 8 sampai baris ke 10 adalah perulangan yang didalamnya ada pernyataan untuk memanggil method cetak dengan x sebagai parameter aktual yang dikirimkan ke method.
 Ketika di eksekusi program ini akan menampilkan : Nilai x: 0
Nilai x: 1 Nilai x: 2
Nilai x terakhir: 3
Berikut contoh method yang mengembalikan nilai dengan parameter. 01 import java.util.Scanner;
02 public class Prak_4003 {
03 static int Kuadrat(int bil){ 04 return bil*bil;
05 }
06 public static void main(String[] args){ 07 int x=5;
08 System.out.println(x +" kuadrat adalah "+ Kuadrat(x)); 09 }
13 } Keterangan:
 Baris ke 3 sampai baris ke 5 adalah method bernama Kuadrat dengan variabel bil sebagai parameter formal method yang mengembalikan nilai bil*bil.
 Baris ke 8 adalah pernyataan untuk memanggil method Kuadrat dengan variabel x sebagai parameter formal.
 Ketika di eksekusi program ini akan menampilkan :
3.5 Pemberian Variabel dalam method
Dalam method ada dua tipe data variabel passing dalam method. Ada dua jenis pemberian variabel dalam method adalah pass by value dan pass by reference.
 Pass by Value
Dalam setiap method parameter formal yang didefinisikan adalah sebagai sebuah salinan dari nilai variabel yang dikirimkan ke method sebagai parameter aktual. Yang dikirimkan oleh oleh parameter aktual adalah nilainya saja, bukan variabelnya. Sehingga apabila terjadi perubahan data dari variabel parameter formal pada method, tidak akan berpengaruh pada nilai variabel parameter aktual.
Contoh:
01 import java.util.Scanner; 02 public class Prak_4004 {
03 public static void main(String[] args){ 04 int i = 10;
05 //mencetak nilai i
06 System.out.println( i ); 07 //memanggil method test 08 //passing i pada method test
09 test( i ); // i sebagai parameter formal 13 //Mencetak nilai i
14 System.out.println( i ); 15 }
16 public static void test( int j ){ // j sebagai parameter aktual 17 //merubah nilai parameter j
18 j = 33;
19 } 20 }
Keterangan program:
o Baris ke 9 adalah pernyataan pemanggil method dengan variabel i sebagai parameter formal. variabel I berisi nilai 10 selanjutnya nilai 10 tersebut dilempar ke parameter aktual (variabel j ) method test.
o Baris ke 16 sampai baris ke 19 adalah method test dengan variabel j sebagai parameter aktual yang nilainya sesuai dengan nilai parameter formal (i=10) yang dilempar dari statemen yang memanggilnya di baris 9.
o Baris 14 adalah pernyataan untuk menampilkan nilai variabel i. Nilai yang ditampilkan adalah 10 bukan 33 karena variabel j tidak berpengaruh langsung kepada variabel i.
 Pass by Reference
Dalam setiap method parameter formal yang didefinisikan adalah sebagai sebuah salinan dari nilai variabel yang dikirimkan ke method sebagai parameter aktual. Ini dinamakan pass
by value seperti contoh diatas. Yang dikirimkan oleh oleh parameter aktual adalah nilainya saja, bukan variabelnya. Sehingga apabila terjadi perubahan data dari variabel parameter formal pada method, tidak akan berpengaruh pada nilai variabel parameter aktual.
Sebaliknya, yang pass by reference method parameter formal yang dikirimkan bukan nilainya tetapi alamat memori dari variabel tersebut. Karena yang dilempar adalah alamat memori dari variabel, maka jika terjadi perubahan data di variabel parameter aktual meskipun namanya berbeda akan mengubah data di variabel parameter formal karena sebenarnya kedua variabel ini mengakses lokasi memori yang sama.
Contoh:
01 import java.util.Scanner; 02 public class Prak_4004 {
03 public static void main(String[] args){ 04 //membuat array integer
05 int []ages = {10, 11, 12}; 06 //mencetak nilai array
07 for( int i=0; i<ages.length; i++ ){ 08 System.out.println( ages[i] );
09 }
13 test( ages );
14 for( int i=0; i<ages.length; i++ ){ 15 System.out.println( ages[i] );
16 }
17 }
18
19 public static void test( int[] arr ){ 20 //merubah nilai array
21 for( int i=0; i<arr.length; i++ ){
22 arr[i] = i + 50;
23 }
24 }
25 }
Keterangan program:
o Baris ke 5 adalah deklarasi variabel array ages.
o Baris ke 7 sampai baris ke 9 adalah sebuah perulangan untuk menampilkan data array.
o Baris ke 13 adalah statemen untuk memanggil method test dengan parameter aktual ages dimana yang dilempar ke method adalah alamat memori dari variabel ages. o Baris ke 19 sampai baris ke 24 adalah method test dengan varibel array arr sebagai
parameter formal yang menerima alamat memori dari parameter aktual ages yang dilempar pada baris ke 13.
o Baris ke 21 sampai baris ke 23 adalah perulangan untuk mengisi nilai variabel array arr, dimana perubahan nilai array pada variabel ini akan juga merubah nilai pada variabel array ages.
o Baris ke 14 sampai baris ke 16 adalah perulangan untuk menampilkan nilai variabel array ages yang sudah berubah.
3.6 Library vs User-Defined Method
Method dalama bahasa Java terbagi dalam dua jenis :  Library Method
 User-defined Method
Library method, adalah method - method standar yang sudah disediakan oleh bahasa Java. Contohnya sqrt() ada di file Math.java. User-define method, adalah method yang didefinisikan sendiri oleh pemrogram.
Contoh Program yang menggunakan Standard Library Function (println dan sqrt) :
3.7 Rekursif
Rekursif adalah teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti dari masalah terjadi berulang kali. Tentu saja, tipe dari masalah ini dapat dipecahkan mengunakan perkataan berulang-ulang (menggunakan konstruksi looping seperti for, while dan do-while). Iterasi atau perkataan berulang-ulang merupakan peralatan yang lebih efisien jika dibandingkan dengan rekursif tetapi rekursif menyediakan solusi yang lebih baik untuk suatu masalah. Pada rekursif, method dapat memanggil dirinya sendiri.
Gambar 10 Rekursif public class Fungsi {
public static void main(String[] args) { int i;
for(i=0;i<6;i++) System.out.println(Math.sqrt(i)); }
Untuk pengertian yang lebih baik dari rekursif, mari kita lihat pada bagaimana macam-macam dari teknik iterasi. Dalam teknik-teknik tersebut dapat juga kita lihat penyelesaian sebuah loop yang lebih baik menggunakan rekursif dari pada iterasi. Menyelesaikan masalah dengan perulangan menggunakan iterasi secara tegas juga digunakan pada struktur kontrol pengulangan. Sementara itu, untuk rekursif, penyelesaian masalah diulangi dengan memanggil sebuah method pengulangan. Maksud dari hal tersebut adalah untuk menggambarkan sebuah masalah kedalam lingkup yang lebih kecil dari pengulangan itu sendiri. Pertimbangan suatu perhitungan yang faktorial dalam penentuan bilangan bulat misalnya. Definisi rekursif dari kasus ini dapat diuraikan sebagai berikut: factorial(n) = factorial(n-1) * n; factorial(1) = 1. Sebagai contohnya, nilai faktorial dari 2 sama dengan fatorial (1)*2, dimana hasilnya adalah 2. Faktorial dari 3 adalah 6, dimana sama dengan faktorial dari (2)*3. Ilustrasi factorial seperti yang ditunjukkan dalam Gambar 1.0.
Listing program berikut ini menunjukkan bagaimana menghitung faktorial menggunakan teknik iterasi.
Dibawah ini merupakan listing program yang sama tetapi menggunakan rekursif.