Rabu, 11 Agustus 2010

Remote Method Invocation (RMI)

Pengertian
RMI adalah sebuah fasilitas kelas standar Java yang menangani pemanggilan (invocation) suatu metod secara jarak jauh (remote) dalam suatu jaringan.

Tujuan
1.Menyediakan fasilitas bagi programmer untuk dapat mendistribusikan objek yang digunakan pada beberapa proses yang berbeda,
2.Dapat berjalan dalam satu mesin ataupun di beberapa mesin yang terhubung dengan jaringan.

Aplikasi RMI
Program server,
- membuat beberapa remote objek
- juga sekaligus referensi ke remote objek yang dapat diakses
- menunggu RMI client merequest server
Program client,
- membuat koneksi ke server
- meminta pemanggilan ke beberapa remote objek berbasarkan referensi yang diterimanya

RMI Registry
Daftar referensi remote objek yang dapat dipanggil oleh client

Tujuan RMI Registry
1.Memudahkan melakukan pemanggilan remote objek oleh client
2.Tempat mendaftarkan dirinya (remote objek)

Mekanisme Kerja Aplikasi RMI
DoubleLL

Kamis, 18 Februari 2010

Himpunan

1- Himpunan

Himpunan adalah kumpulan objek-objek. Matematika diskrit berfokus pada struktur seperti graf (himpunan ujung-ujung dan rusuk) dan aljabar Boole (himpunan dengan operasi tertentu yang didefinisikan di dalamnya).

1.1 Definisi
Himpunan adalah suatu sistem yang berupa sekelompok atau sejumlah benda atau objek-objek berbeda yang berada dalam suatu kesatuan dan mempunyai sifat keterkaitan di antara anggota-anggotanya. Objek yang terdapat di dalam himpunan disebut elemen, unsur, atau anggota.
Contoh 1 : A adalah himpunan huruf hidup dalam abjad, atau A = {a, i, u, e, o}

1.2 Penyajian Himpunan
Terdapat banyak cara untuk menyajikan himpunan, diantaranta dengan cara mengenumerasi elemen-elemennya, menggunakan simbol-simbol baku, menyatakan syarat keanggotaan, dan menggunakan diagram venn.

1.2.1 Enumerasi
Penyajian himpunan dengan enumerasi dapat dilakukan jika himpunan tersebut terbatas dan tidak terlalu besar. Enumerasi dapat dilakukan dengan cara dengan menuliskan semua elemen himpunan yang bersangkutan di antara dua buah tanda kurung kurawal. Pada umumnya nama suatu himpunan ditandai dengan huruf kapital.
Contoh 2 : Himpunan A yang berisi semua huruf hidup dalam abjad, maka secara enumerasi dapat ditulis A = {a, i, u, e, o}.

Untuk menuliskan himpunan dengan jumlah anggota yang sangat besar dan telah memiliki pola tertentu dapat dilakukan dengan menggunakan tanda ‘...’ (ellipsis).
Contoh 3 : Himpunan B yang berisi 50 buah bilangan asli pertama, maka secara enumerasi dapat ditulis, B = { 1, 2, 3, . . . , 50 }.

Suatu objek pada suatu himpunan dapat menjadi anggota atau bukan anggota himpunan tersebut. Untuk menyatakan keanggotaan tersebut digunakan notasi berikut :
x A untuk menyatakan x merupakan anggota himpunan A
x A untuk menyatakan x bukan anggota himmpunan A
Contoh : A = {1, 2, 3, 4, 5} S = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
1 A dan 1 S
6 A dan 6 S

1.2.2 Simbol-simbol Baku
Terdapat sejumlah simbol baku yang berbentuk huruf tebal (boldface) yang biasanya digunakan untuk mendefinisikan himpunan yang sering digunakan, yaitu:
N = himpunan bilangan asli, N = {1, 2, 3, . . . }
Z = himpunan bilangan bulat, Z = {. . . , -2, -1, 0, 1, 2, . . . }
Q = himpunan bilangan rasional, yaitu himpunan yang dapat dibentuk dari p/q
R = himpunan bilangan riil
C = himpuan bilangan kompleks

1.2.3 Notasi Pembentuk Himpunan
Notasi pembentukan himpunan dinyatakan dengan menulis syarat yang harus dipenuhi oleh anggotanya, yaitu
Notasi : {x | syarat yang harus dipenuhi oleh x }, dengan aturan sebagai berikut,
1. bagian kiri tanda ‘|’ menyatakan elemenen himpunan
2. tanda ‘|’ dibaca dimana atau sedemikian sehingga
3. bagian kanan tanda ‘|’ menyatakan syarat keanggotaan himpunan
4. setiap tanda ‘,’ di dalam syarat keanggotaan dibaca sebagai dan.
Contoh 4: A adalah himpunan bilangan asli yang kecil dari 8, dengan enumerasi dinyatakan dengan A = {1, 2, 3, 4, 5, 6, 7}. Dengan notasi pembentuk himpunan dapat dinyatakan dengan, A = {x | x N, x < 8 }


1.2.4 Diagram Venn
Diagram venn menyajikan himpunan secara grafis. Cara penyajian himpunan ini diperkenalkan oleh matematikawan Inggris John Venn tahun 1881. Himpunan semestas (U) digambarkan sebagai suatu segi empat, sedangkan himpunan lainnya yang merupakan bagian dari himpunan semesta digambarkan sebagai lingkaran di dalam segi empat. Dua himpunan yang mempunyai anggota yang sama digambarkan dengan lingkaran beririsan.

Contoh 5 : Misalkan U = {1, 2, 3, ... , 10}, A = {1, 3, 5, 7, 9} dan B = {1, 2, 3, 4}
Perhatikan bahwa himpunan A dan B mempunyai anggota yang sama yaitu 1 dan 3, sehingga dianggram venn-nya dapat dinytakan sebagai berikut :






Gambar 1 Diagram Venn

Himpunan yang sama ( A = B)
Himpunan A dikatakan sama dengan himpunan B, jika anggota A juga merupakan anggota B.
Contoh : A = {1, 2, 3}
B = {3, 1, 2}, maka A = B

Himpunan kosong adalah himpunan yang tidak memiliki anggota.
Contoh : A himpunan sapi yang bersayap. Karena tidak ada sapi yang bersayap maka anggota himpunan A adalah himpunan kosong, ditulis A = {} atau A= .

Himpunan A dikatakan equivalen dengan himpunan B, jika jumlah anggota A sama dengan jumlah anggota B.
Contoh :
A = {1, 2, 3}
B = {a, b, c}, maka A ~ B

Himpunan bagian adalah himpunan dimana anggotanya merupakan bagian dari anggota yang lain.
Contoh :
A = {a, b, c, d, e}
B = {a, e}, maka B A

Himpunan terhingga adalah himpunan yang jumlah anggotanya terbatas
Contoh: A = {2, 5, 6, 7, 8, 9, 12}
Himpunan tak hingga adalah himpunan yang jumlah anggotanya tidak terbatas.
Contoh : A = {1, 2, 3,4, 5, 6, ... }

Kardinalitas
Misalkan A merupakan himpunan berhingga, maka jumlah elemen berbeda di dalam A disebut kardinal dari himpunan A. Kardinal dinotasikan dengan
n(A) atau |A|

Contoh 5 :
A = {x | x N, x < 8 }, maka |A| = 7.

Himpunan yang tidak berhingga mempunyai kardinal tidak berhingga.

Himpunan A dikatakan ekivalen dengan himpunan B jika dan hanya jika kardinal dari kedua himpunan tersebut sama.
Contoh 6 :
Jika A = {1, 2, 3, 4, 5} dan B = {a, b, c, d, e}, maka A ~ B sebab |A| = |B| = 5.

Himpunan semesta atau universal adalah himpunan yang terdiri dari himpunan-himpunan lain sehingga elemen-elemenya terdiri dari elemen-elemen tersebut. Semua objek pembicaraan di simbolkan dengan S.
Contoh : A adalah semua huruf hidup
B adalah semua huruf mati, maka S dari A dan B adalah semua huruf.

Himpunan lepas (disjoint) adalah himpunan-himpunan yang saling tidak memiliki unsur atau elemen yang sama.
Contoh : A = { 1, 2, 3, 4}
B = { 5, 6, 7, 8}

Himpunan bersendi adalah himpunan yang anggotanya-anggotanya terdiri dari anggota-anggota himpunan yang terkait.
Contoh : A = {1, 2, 3, 4, 5}
B = {2, 3, 5} maka elemen persekutuannya {2, 3, 5}

Himpunan komplemen adalah himpunan yang anggotanya di luar himpunan tersebut yang berada di dalam semesta pembicaraan.
Contoh A = {2, 3, 5} dan S = {1, 2, 3, 4, 5}
Ac = {1, 4}

Himpunan gabungan adalah suatu himpunan yang anggota-anggotanya terdiri dari anggota-anggota himpunan yang terkait.
Contoh A = {1, 2, 3, 4, 5}
B = {2, 4, 5, 6}, maka A B = {1, 2, 3, 4, 5, 6}
Jika sebuah himpunan berukuran besar atau tak terbatas, kita bisa menggambarkan dengan mendaftarkan sifat yang diperlukan untuk menjadi anggotanya. Contoh B adalah himpunan yang terbentuk dari bilangan-bilangan bulat genap posif, yakni bilangan 2, 4, 6, 8, dan seterusnya, dapat ditulis
B = {x | x bilangan bulat genap positif} Garis tegak “ |” dibaca ‘dimana’.
Jika X adalah sebuah himpunan terhingga, maka
| X | = banyaknya anggota di dalam X.
Jika diberikan dua himpunan X dan Y, maka terdapat berbagai cara untuk mengkombinasikan X dan Y untuk membentuk sebuah himpunan baru.
Himpunan
X Y = { x | x X atau x Y} , dibaca elemen atau anggota.
disebut gabungan dari X dan Y.

Himpunan
X Y = { x | x X dan x Y} , dibaca elemen atau anggota.
disebut irisan dari X dan Y.

Himpunan kuasa (power set) dari suatu himpunan A adalah suatu himpunan yang elemennya merupakan semua himpunan bagian dari A, termasuk himpunan kosong dan himpunan A sendiri.
Himpunan kuasa dinotasikan dengan (A) atau 2|A|
Contoh 7 :
Jika A = {1, 2, 3}, maka (A) = { , {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}.

1.3 Operasi Himpunan
Gabungan atau union ( )
Gabungan dua himpunan A dan B adalah jika anggota-anggota himpunannya termasuk di dalam himpunan A atau himpunan B, atau A B.
Contoh 8 :
Misalkan A = {1, 3, 5, 6, 7} dan B = {2, 4, 6} maka A B ={1, 2, 3, 4, 5, 6, 7}

Irisan atau perpotongan atau persendian ( )
Irisan dua himpunan A dan B adalah jika anggota-anggotanya merupakan anggota dari himpunan A dan anggota himpunan B atau anggotanya termuat di A dan B.
Contoh 9:
Misalkan A = {1, 2, 3, 4, 5} dan B = {1, 3, 6}, maka A B = {1, 3}

Komplemen dari suatu suatu himpunan A terhadap suatu himpunan semesta U adalah suatu himpunan yang elemennya merupakan elemen U yang bukan elemen A. dinotasikan dengan atau A’ atau Ac = { x | x U dan x A}

Selisih atau pengurangan
Selisih himpunan A dan B adalah jika anggotan-anggotanya merupakan anggota himpunan A dikurangi dengan anggota himpunan B.
Contoh : A = { 1, 2, 3, 4, 5, 7} dan B = {4, 5, 6}, maka A – B = {1, 2, 3, 7}

Himpunan sembarang X adalah himpunan bagian (subhimpunan) dari dirinya sendiri karena anggota sembarang anggota di X berada di X. Jika X adalah himpunan bagian dari Y dan X tidak sama dengan Y, kita katakan bahwa X adalah himpunan bagian murni (proper subset) dari Y. Himpunan kosong adalah himpunan bagian dari setiap himpunan. Himpunan dari semua himpunan bagian (murni atau tidak) dari himpunan X, dinotasikan dengan ρ( X), disebut himpunan kuasa (power set) dari X.
Contoh : Misaklkan A = {a, b, c}, maka anggota-anggota dari ρ( A) adalah
{}, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}


Beda setangkup dari himpunan A dan B adalah suatu himpunan yang elemennya ada pada himpunan A atau B, tetapi tidak pada keduanya. Dinotasikan dengang;
A B = (A B ) – (A B) = ( A- B) ( B - A).
Contoh :
Misalkan A ={2, 4, 6} dan B ={ 2, 3, 5,6, 7}, maka A B ={3, 4, 5, 7}

Perkalian kartesian dari himpunan A dan B adalah himpunan yang elemennya semua pasangan berurut (ordered pairs) yang dibentuk dari komponen pertama dari himpunan A dan komponen kedua dari himpunan B. Dinotasikan dengan;
A x B = {(a, b) | a A dan b B }.
Contoh :
Misalkan A = {1, 2, 3, 4} dan B = {a, b}, maka A x B = {(1, a), (1, b), (2, a), (2, b), (3, a), (3, b), (4, a), (4, b)}.

Perampatan Operasi Himpunan
Operasi himpunan dapat dilakukan terhadap 2 atau lebih himpunan. Dalam hal ini, perampatan (generalization) operasi himpunan dengan menggunakan operasi dasar perampatan yang ada operasi aritmatika biasa.
Misalkan A1 , A2 , . . . , An-1 , An merupakan himpunan, maka
1. A1 A2 . . . An-1 An =
2. A1 A2 . . . An-1 An =
3. A1 A2 . . . An-1 An =

Teorema 1.1
Jika |X| = n maka |ρ( X)| = 2n

Teorema 1.2
Misalkan A, B, serta C adalah himpunan bagian dari U maka berlaku sifat berikut
1. hukum komutatif untuk gabungan
A B = B A
2. hukum komutatif untuk irisan
A B = B A
3. hukum asaosiatif untuk gabungan
(A B ) C = A (B C)
4. hukum assosiatif untuk irisan
(A B ) C = A (B C)
5. hukum distributif
(A B ) C = (A C ) (B C)
A ( B C) = (A C ) (B C)
6. hukum de Morgan
(A B )c = Ac Bc
(A B )c = Ac Bc
7. hukum ikatan (bound laws)
A U = U, dan A =
8. hukum idempoten (idempoten laws)
A U = A, dan A = A
9. hukum penyerapan (absorption laws)
A (A B ) = A, A (A B ) = A
10. hukum involusi (involution laws)
=
A = A

11. hukum 0/1 (1/0 laws)
= U, =

Definisi Prinsip Dualitas pada Himpunan
Misalkan S adalah suatu kesamaan yang melibatkan himpunan (set identity), dan oprasi-operasi seperti , , dan komplemen berlaku. Jika S* diperoleh dari S dengan menggantikan menjadi , menjadi U, dan U menjadi , sedangkan komplemen dibiarkan seperti semula, maka kesamaan S* juga benar dan disebut dual dari kesamaan S.

Prinsip Inklusi-Eksklusi
Misalkan A dan B dua buah himpunan berhingga. Penggabungan dua buah himpunan mengahasilkan himpunan baru yang elemen-elemennya berasal dari himpunan A dan B. Himpunan A mungkin saja memiliki elemen yang sama dengan himpunan B atau sebaliknya, sehingga banyaknya elemen bersama A dan B adalah | A B|. Setiap unsur yang sama itu telah dihitung dua kali sekali pada |A| dan sekali pada |B|, meskipun ia seharusnya dianggap sebagai satu buah elemen di dalam |A B|. Karena itu jumlah elemen hasil penggabungan seharusnya adalah jumlah elemen masing-msaing himpunan dikurangi dengan jumlah elemen di dalam irisannya, yaitu
|A B| = | A| + |B| - | A B|
Prinsip ini dikenal dengan nama prinsip inklusi-ekslusi.

Lemma 1:
Misalkan A dan B adalah himpunan berhingga yang saling lepas maka
| A B| = | A| + |B|

Teorema 1 :
Misalkan A dan B adalah himpunan berhingga yang saling lepas maka |A B| berhingga dan |A B| = | A| + |B| - | A B|. Dengan cara yang sama dapat menghitung operasi beda setangkup :
|A B| = | A| + |B| - 2| A B|

Contoh 9:
Berapa banyaknya bilangan bulat antara 1 dan 100 yang habis di bagi 3 atau 5?
Penyelesaian :
A = himpunan bilangan bulat yang habis dibagi 3
B = himpunan bilangan bulat yang habis dibagi 5
|A B| = himpunan bilangan bulat yang habis di bagi 3 atau 5 (yaitu himpunan bilangan bulat yang habis dibagi oleh KPK –Kelipatan persekutuan terkecil – dari 3 dan 5, yaitu 15)
| A| = |100/3| = 33
| B| = |100/5| = 20
|A B| = |100/15| = 6
sehingga,
|A B| = | A| + |B| - | A B|
= 33 + 20 – 6
= 47
jadi terdapat 47 buah bilangan yang habis dibagi 3 atau 5.

Teorema 2 :
Misalkan A, B, dan C adalah himpunan berhingga, maka
|A B C | = | A| + |B| + |C| - | A B | - | A C | - | B C | + | A B C |
dan untuk r buah himpunan berlaku teorema berikut :
Teorema 3 :
Misalkan A1 , A2 , . . . , An-1 , An adalah himpunan berhingga, maka berlaku
|A1 A2 . . . An-1 An| = - + + . . . + (-1)r-1 |A1 A2 . . . An-1 An|

Partisi dari sebuah himpunan A adalah sekumpulan himpunan bagian tidak kosong, A1 , A2 , . . . , An-1 , An dari A sedemikian sehingga :
1. A1 A2 . . . An-1 An = A
2. himpunan bagian Ai dan Aj saling lepas, yaitu Ai Aj = untuk i j

Latihan :
Misalkan U = { 1, 2, 3, 4, 5, ..., 10}. Misalkan A = {1, 4, 7, 10}, B = {1, 2, 3, 4, 5} dan C = {2, 4, 6, 8}. Daftarkanlah anggota-anggota dari masing-masing himpunan.
1. A B 2. B C
3. A – B 4. B – A
5. 6. U – C
7. 8. A

Rabu, 17 Februari 2010

Konsep Pemrograman Berorientasi Objek pada Java

Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (entiti) dari suatu permasalahan adalah objek. Objek-objek ini kemudian dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, sebuah mobil. Mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda ban, mesin, jok, transmisi, sistem rem, dan lain-lain. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.

Konsep-konsep pemrograman berorientasi objek dalam Java secara umum sama dengan yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga terdapat dalam bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil antara penerapan konsep-konsep tersebut dalam masing-masing bahasa. Perbedaan-perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing konsep.

2.1 Objek
Dalam penjelasan mengenai analogi, kita sudah menyinggung mengenai objek. Sekarang kita akan mengupas lebih dalam tentang objek sebagai konsep kunci dari pemrograman berorientasi objek.
Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu state dan behaviour. State adalah keadaan dari sebuah objek, seperti mobil memiliki state warna, model, tahun pembuatan, kondisi, dan lain-lain. Sedang behaviour adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok, membunyikan klakson, dan lain-lain. Objek menyimpan statenya dalam satu atau lebih variabel, dan mengimplementasikan behaviournya dengan method. Dengan penjelasan di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-variabel dan method-method yang berhubungan dengan variabel tersebut.

Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan.
Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam terminologi OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan method dari instans ini disebut variabel instans dan method instans. Setiap instans menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.

2. 2 Message (Pesan)
Objek-objek yang bekerja sama membentuk suatu sistem harus saling berkomunikasi untuk menjalankan sistem tersebut. Dalam sebuah program, objek-objek berkomunikasi satu sama lain dengan mengirimkan pesan. Sebagai contoh, jika sebuah objek ingin memanggil method dari objek lain, maka objek ini akan mengirimkan sebuah pesan yang meminta objek tujuan untuk menjalankan method yang dikehendaki. Pesan ini akan berisi informasi-informasi yang dibutuhkan objek tujuan untuk dapat menunaikan permintaan tadi. Sebuah pesan dibentuk oleh informasi berikut ini:
1. objek yang dituju, yaitu nama class yang meng-instansiasi objek yang dimaksud.
2. nama method yang ingin dipanggil, yaitu apa method yang dimiliki oleh objek yang ingin kita gunakan. Dalam hal ini, kita harus mengetahui method yang dimiliki oleh class yang meng-instansiasi objek yang hendak kita gunakan.
3. parameter yang dibutuhkan method tersebut, yaitu parameter yang diberikan pada method yang akan digunakan sehingga dapat berjalan sesuai dengan yang diperlukan.
Untuk memberi pemahanan yang lebih jelas tentang komunikasi antar objek-objek dapat kita lihat pada contoh 2.1.

Contoh 2.1 : anotherObject.aMethod(parameter1);
Misalkan objek Budi meminta objek Iwan untk membawa mobil Budi, maka Budi akan memanggil objek Iwan dengan perintah Iwan bawaMobil serta memberikan kuncil mobilnya. Dalam pemrograman berorientasi objek, perlakuan ini dapat dilakukan dengan cara,
iwan.bawaMobil ( kunciMobilBudi );

Ini menunjukkan bahwa objek yang dituju oleh objek Budi adalah objek Iwan dengan behavior (method) yang dibutuhkan bawaMobil yang dalam hal ini objek iwan mempunyai kemampuan membawa mobil, sedangkan parameter yang dibutuhkan oleh objek iwan dalam membawa mobil adalah kunci mobil budi. Pernyataan Objek Iwan mempunyai kemampuan membawa mobil menunjukkan bahwa di dalam class yang meng-instansiasi objek iwan mengandung method bawaMobil. Dengan kata lain, di dalam class yang meng-instansiasi objek iwan terdapat method bawaMobil.
Bila sebuah objek ingin memanggil method miliknya sendiri, maka informasi pertama adalah dirinya sendiri. Untuk menunjuk diri sendiri dalam Java digunakan kata kunci this. Maka contoh 2.1 akan menjadi seperti berikut :

this.aMethod(parameter1);

Andaikan bahwa objek Budi ingin membawa mobil miliknya sendiri, maka Budi hanya memanggil dirinya sendiri, yaitu saya bawa mobil dengan kunci yang saya miliki. Dalam pemrograman berorientasi objek, perlakuan ini dapat ditulis dalam bentuk;

this.bawaMobil(kunciMobilBudi);

Karena JVM java akan menginterfretasikan objek yang dituju adalah objek dirinya sendiri saat kita hanya memanggil method maka informasi pertama pada penulisan this.aMethod(parameter1); dapat kita dihilangkan sehingga menjadi:

aMethod(parameter1);

Dengan cara yang sama bahwa penulisan bawaMobil(kunciMobilBudi); menunjukkan bahwa yang membawa mobil adalah objek Budi sendiri, karena bila informasi pertama tidak ada (tanpa menggunakan menggunakan kata kuci this), kompiler akan secara otomatis menunjuk ke objek itu sendiri.
Dari penjelasan di atas dapat kita simpulkan bahwa penggunaan pesan mempunyai dua keuntungaan , yaitu:
1. semua kebutuhan interaksi antar objek dapat dilakukan, maksudnya bahwa kita hanya perlu mengetahui objek apa yang akan kita gunakan serta apa kemampuann objek tersebut (method yang dimiliki oleh objek yang kita gunakan)
2. objek-objek yang saling berinteraksi tidak harus berada dalam satu proses atau bahkan dalam satu komputer, maksudnya kita dapat menggunakan objek-objek yang berada dalam direktori atau komputer yang berbeda asalkan kita mengetahui direktori atau alamat komputer objek tersebut berada.
Jadi penggunaan pesan (message) akan mempermudah kita di dalam mengontrol perlakuan setiap objek atau dengan penggunaan pesan akan memberikan keleluasaan di dalam menggunakan behavior (method) yang dimiliki oleh objek-objek yang kita butuhkan.

2.3 Kelas (Class)
Kita telah jelaskan di atas bahwa objek merupakan instansiasi dari suatu class. Kelas adalah semacam cetakan, atau template, untuk membuat objek. Ibaratkan sebuah rancangan rumah yang digunakan untuk membangun ratusan rumah. Rumah yang dibangun tersebut adalah objek dari kelas rancangan rumah. Hal ini dapat dilakukan karena semua objek rumah yang dibangun memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam blueprint-¬nya. Tetapi objek-objek yang dibangun tetap akan memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program, atau pintu sebuah objek rumah. Dengan penjelasan ini, kelas dapat kita definisikan kembali menjadi sebuah blueprint, atau prototipe, yang mendefinisikan variabel dan method yang sama untuk semua objek sejenis.
Sebagai contoh, misalkan kita ingin membuat kelas Rumah, maka kita harus membuat sebuah kelas yang mendefinisikan semua variabel yang dimiliki objek dari kelas tersebut. Selain itu, kelas tersebut juga harus mendeklarasikan method-method yang dimiliki objek dari kelas dan juga membuat implementasi dari method tersebut. Dengan adanya kelas ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu jenis yang didefinisikan oleh kelas Rumah. Setiap objek Rumah diciptakan, sistem akan mengalokasikan sejumlah memori untuk objek tersebut dan variabel-variabelnya. Dengan begitu setiap objek akan memiliki salinan masing-masing untuk setiap variabel instans.
Setelah mengenal konsep kelas, saatnya kita akan membahas konsep variabel kelas. Variabel kelas sebenarnya sama dengan variabel instans. Bedanya adalah, setiap objek berbagi satu dan hanya satu variabel kelas, tapi masing-masing memiliki salinan dari variabel instans. Misalkan kelas Rumah yang kita buat hanya akan mendukung 2 lantai, dan setiap objek Rumah terdiri atas 2 lantai. Maka informasi ini cukup disimpan satu kali, karena nilainya tidak berbeda untuk semua objek. Lebih jauh, bila ada satu objek yang mengubah nilai dari variabel kelas, maka semua objek sejenis lainnya akan mengikuti perubahan itu. Di samping variabel, terdapat juga method kelas. Method jenis ini dapat langsung dipanggil melalui kelas dan bukan dari instans kelas tersebut.

2.4 Pewarisan
Seperti yang dijelaskan pad bab 1 bahwa terminologi asing untuk pewarisan adalah inheritance. Mungkin dalam literatur lain Saudara akan sering menjumpai istilah ini. Secara gamblang, pewarisan berarti sebuah kelas mewarisi state dan behaviour dari kelas lain. Sebagai contoh, sebuah kelas RumahMewah akan mewarisi state dan behaviour dari kelas Rumah. Begitu juga dengan kelas RumahSederhana. Kelas RumahMewah dan RumahSederhana disebut subkelas, atau kelas anak, dari kelas Rumah, yang disebut superkelas, atau kelas induk.
Seperti yang diungkapkan pada bab sebelumnya bahwa di dalam konsep pewarisan semua method dan attribut yang dimiliki oleh super kelas akan dimiliki oleh subkelasnya ditambah dengan method dan atribut khusus yang dimiliki oleh subkelas tersebut. Jadi seluruh subkelas akan mewarisi (inherits) state dan behaviour dari superkelasnya. Dengan begitu, semua subkelas dari superkelas yang sama akan memiliki state dan behaviour yang sama. Namun, masing-masing subkelas bisa menambah sendiri state atau behaviournya. Misalkan, pada kelas Rumah tidak terdapat variable kolamRenang, namun subkelas RumahMewah memiliki variabel tersebut. Contoh lain misalnya kelas Rumah tidak memiliki method nyalakanAlarm, namun rumah mewah memiliki method itu.
Dalam kasus tertentu subkelas mungkin memiliki implementasi behaviour yang berbeda dengan superkelasnya. Hal seperti ini disebut override. Contohnya subkelas SepedaBalap memiliki implementasi method ubahGigi yang berbeda dengan implementasi method tersebut pada superkelas Sepeda.

Tingkat pewarisan tidak hanya terbatas pada dua tingkatan. Dari contoh di atas, kita bisa saja membuat subkelas dari kelas SepedaBalap, dan seterusnya. Kita bisa terus memperpanjang tingkat pewarisan ini sepanjang yang kita butuhkan. Dengan begitu, subkelas-subkelas yang dibuat akan lebih khusus dan lebih terspesialisasi. Namun terdapat batasan pewarisan dalam Java yang disebut single inheritance. Artinya sebuah kelas hanya dapat mewarisi sifat dari satu dan hanya satu superkelas saja. Dalam beberapa bahasa pemrograman berorientasi objek lain, yang berlaku adalah multiple inheritance. Artinya sebuah kelas dapat mewarisi sifat dari beberapa superkelas sekaligus.
Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas Java, baik yang builtin ataupun yang kita buat sendiri, lansung maupun tidak langsung. Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek apapun dalam bahasa Java. Kelas Object ini memiliki behaviour yang dibutuhkan semua objek untuk dapat dijalankan di Java Virtual Machine (JVM). Sebagai contoh, semua kelas mewarisi method toString dari kelas Object, yang mengembalikan representasi String dari objek tersebut.
Bentuk umum pengimplementasian pewarisan pada java adalah sebagai berikut :
class Classname extends Superclassname {
. . . }

Dimana Classname menyatakan nama dari subkelas yang mewarisi semua attribut dan method yang dimiliki oleh superclass Superclassname. Untuk mengimplementasikan class RumahSederhana yang merupakan subkelas dari class Rumah, dinyatakan sebagai berikut :
class RumahSederhana extends Rumah {
. . . }

Dengan penulisan sourecode di atas, maka class RumahSederhana akan dapat menggunakan semua attribut dan method yang dimiliki oleh superkelas Rumah. Dengan catatan bahwa pada class Rumah kita terlebih dahulu telah mendefinisikan attribut dan method di dalam class Rumah.
Berdasarkan informasi di atas, dapat kita simpulkan bahwa manfaat penggunaan konsep pewarisan antara lain:
1. dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.
2. dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari method-method yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas semacam ini disebut kelas abstrak, karena behaviournya masih abstrak dan belum diimplementasikan. Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret, mengimplementasikan behaviour abstrak tersebut sesuai dengan kebutuhan masing-masing.

Pada kelas abstrak kita dapat memiliki hanya satu atau lebih method abstrak. Subkelas dari kelas ini bertanggung jawab untuk memberikan implementasi untuk method-method abstrak tersebut. Sebagai akibat dari keberadaan method abstrak ini, kelas abstrak tidak dapat diinstanskan (dibuatkan instansnya) atau digunakan untuk menciptakan sebuah objek dari kelas tersebut. Bentuk umum dari pendefinisian class abstrak adalah sebagai berikut :
abstract class classAbstractName {
. . .
}

2.5 Interface
Arti harfiah dari interface adalah antarmuka, yaitu suatu alat yang digunakan benda-benda yang tidak terhubung secara langsung untuk berinteraksi. Interface dalam kehidupan sehari-hari dapat diibaratkan seperti remote televisi yang dapat digunakan pada semua televisi tanpa memperhatikan jenis dan merek televisi yang akan menggunakan remote tersebut. Remote dapat berkomunikasi dengan televisi yang tidak terhubung langsung untuk saling berinteraksi.
Remote yang berperan sebagai interface, dapat mengoperasikan televisi sesuai dengan keinginan kita. Pengoperasian yang dimaksud adalah kita dapat mematikan, menghidupkan, dan menukar channel sesuai settingan yang telah dibuat pada remote tersebut tanpa harus mendekatkan diri kepada televisi. Kita hanya menekan tombol-tombol yang ada pada remote maka televisi akan melakukan perlakuan sesuai dengan keinginan kita. Tetapi di dalam pengimpelemtasian remote ini, tidak akan selalu sama perlakuan yang diharapkan dalam pengimplementasiannya terhadap objek televisi yang lain.
Misalkan didalam pengimplemtasian remote A, saat kita menekan tombol 1, akan mengaktifkan channel siaran A. Tetapi remote B dengan hasil produk yang sama dengan remote A saat tombol 1 ditekan mungkin saja mengaktifkan channel siaran yang berbeda.
Dalam bahasa pemrograman, interface digunakan oleh berbagai objek yang tidak terhubung untuk saling berinteraksi. Jadi dalam bahasa pemrograman, interface dapat didefinisikan sebagai koleksi definisi method-method dan variabel-variabel konstan, namun tanpa implementasi. Implementasi akan dilakukan oleh kelas-kelas yang mengimplements interface ini. Tanpa implementasi di sini tidak seperti pada kelas abstrak yang merupakan method-method yang tidak melakukan apa-apa, melainkan hanya sekedar nama method saja.
Sebelumnya telah dijelaskan bahwa sebuah kelas tidak dapat menjadi subkelas dari beberapa superkelas, melainkan hanya bisa menjadi subkelas dari satu superkelas saja. Hal ini membuat desain program lebih rapi dan teratur, sehingga dapat mengurangi kompleksitas program. Namun, terkadang hal ini dapat menjadi suatu halangan yang tidak menyenangkan, yaitu saat kita membutuhkan suatu kelas yang memiliki sifat-sifat dari dua atau lebih kelas lain. Pada masalah seperti ini, interface dapat memberikan alternatif jalan keluar.

Dengan adanya interface maka beberapa kelas akan dapat menangani interaksi yang sama namun dengan behaviour yang bisa berbeda. Misalnya beberapa kelas mengimplementasi sebuah interface yang sama, maka kelas-kelas tersebut dapat menangani interaksi sesuai interface tersebut, namun tiap kelas dapat memiliki implementasi yang berbeda-beda.

Begitu juga bila sebuah kelas mengimplementasi banyak interface, maka kelas tersebut akan dapat menangani interaksi-interaksi sesuai salah satu interface yang diimplement oleh kelas tersebut. Namun, kelas tersebut harus mengimplementasi sendiri behaviournya. Di sinilah letak perbedaan penggunaan interface dengan multiple inheritance. Dalam multiple inheritance, layaknya single inheritance, subkelas tidak harus mengimplementasikan sendiri behaviournya karena secara default kelas tersebut akan mengikuti behaviour superkelasnya.