Object dan Class class
Dalam dunia nyata, kita sering berinteraksi dengan banyak object.Kita tinggal di rumah, rumah adalah suatu object, dalam terminology OOP rumah kita adalah instance dari suatu class rumah. Misal kita tinggal dalam suatu komplek perumahan, sebelum membangun rumah, developer akan berpanduan pada rancang bangun rumah (blue print) yang telah dibuat seorang arsitek. Blue print dari rumah adalah class, sedang rumah yang kita tinggal (rumah-rumah dalam komplek) disebut instance. Manusia adalah sebuah class ; anda, saya, kita adalah instance dari class manusia.
Object
Object adalah instance dari class. Jika class secara umum merepresentasikan (template) sebuah object, sebuah instance adalah representasi nyata dari class itu sendiri.
Bekerja dengan Object
Ketika anda membuat program dengan Java, anda akan mendefinisikan beberapa class, anda juga akan menggunakan class untuk membuat suatu instance dan tentu saja akan bekerja dengan instance-instance tersebut.
Membuat Object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut.
String str = new String();
Random r = new Random();
Pegawai p2 = new PEgawai();
Date hari = new Date();
hari adalah object reference dari class Date yang akan digunakan untuk mengakses class Date.
Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference ke instance dari class Date().
Contoh :
Kita akan menggunakan class Date untuk membuat suatu object Date.
import java.util.Date;
class CreateDates {
public static void main(String args[]){
Date d1,d2,d3;
d1 = new Date();
System.out.println(“Hari 1 : “ + d1);
d2 = new Date(71,4,14,8,35);
System.out.println(“Hari 2 : “ + d2);
d3 = new Date(“September 3 1976 2:25 PM”);
System.out.println(“Hari 3 : “ + d3);
}
}
Ketika anda memanggil operator new terjadi beberapa hal :
1. Instance baru yang telah diberikan oleh class dicipakan
2. Memori dialokasikan untuk instance tersebut
3. Special Method didefinisikan pada class (Konstruktor) Konstruktor : Suatu method tertentu untuk membuat dan menginsialisasi sebuah instance baru dari class. Konstruktor menginisialiasasi object-object baru dan variable-variabel. Pemberian nama method Konstruktor harus sama dengan nama classnya. (Penjelasan tentang Konstruktor akan dibahas dalam pertemuan berikutnya)
Akses dan Setting Class dan Variabel Instance
Akses Variable Instance
Untuk mengambil value dari suatu variable instance kita gunakan notasi titik(.) Dengan notasi titik, sebuah instance atau variable class dibagi dua bagian. Object berada di kiri titik dan variable berada di kanan titik.
Pegawai.tugas;
Pegawai adalah object, tugas adalah variable. Misalkan tugas adalah object yang mempunyai variable instance sendiri yaitu status, penulisan dapat ditulis sebagai berikut
Pegawai.tugas.status;
Memberi Nilai Variabel
Untuk memberi nilai variable kita gunakan operator sama dengan(=) disebelah kanan ekspresi.
Pegawai.tugas.status = SELESAI; // SELESAI==true
Contoh :
// Nama File : Testpoint.java
import java.awt.font;
class Testpoint {
public static void main(String args[]) { Point
poin = new Point(10,10);
System.out.println(“X = “ + point.x);
System.out.println(“Y = “ + point.y);
System.out.println(“Setting X = 6 “);
poin.x = 6;
System.out.println(“Setting Y = 14“);
poin.y = 14;
System.out.println(“X = “ + point.x);
System.out.println(“Y = “ + point.y);
}
}
Memanggil Method
Untuk memanggil method didalam object, sama seperti memanggil variable instance; yaitu dengan dengan menggunakan notasi titik(.)
Object berada disebelah kiri titik, dan method beserta argumen-argumen berada di kanan titik.
ObjectSatu.methodDua(arg1, arg2, arg3);
Method tanpa argument :
ObjectSatu.methodNoArg();
Jika method yang dipanggil mempunyai object yang mempunyai method tersendiri.
ObjectSatu.GetObjectLain().getNama();
Method dengan kombinasi memanggil variable instance
Pegawai.golongan.gaji(arg1, arg2);
Contoh :
//Nama File : TestString.java
classTestString {
public static void main(String args[]) {
String str=”Awalilah segala sesuatu pekerjaan dengan Bismillah”;
System.out.println(“Kalimat bijak : “ +str);
System.out.println(“Panjang Kalimat : “ +str.length());
System.out.println(“Character pada posisi 4 adalah : “ +str.charAt(4));
}
}
Object Reference
Ketika bekerja dengan object-object, salah satu hal yang penting untuk dimengerti adalah bagaimana menggunakan reference ke suatu object.
Ketika kita meng-assign suatu object ke variable, atau menjadikan object- object sebagai argument pada suatu method, sesungguhnya kita telah membuat reference ke object-object tersebut, bukan object atau duplikasi(copy) dari object yang membuat suatu reference
Contoh berikut akan membuat kita jelas :
// Nama file : ReferencesTest.java import java.awt.font;
class ReferenceTest {
public static void main(String args[]) {
Point poin1,poin2;
poin1 = new Point(100,100);
poin2 = poin1; poin1.x = 200; poin2.y = 200;
System.out.println(“Point 1 : “+poin1.x+”,”+poin1.y);
System.out.println(“Point 1 : “+poin1.x+”,”+poin1.y);
}
}
Dalam program diatas, kita mendeklarasikan dua variable bertipe Point, dan meng-assign suatu Point baru ke poin1. Kemudian meng-assign poin2 dengan nilai dari poin1.
Output yang terjadi adalah :
Point 1 : 200,200
Point 2 : 200,200
Terlihat poin2 juga berubah. Ketika kita meng-assign suatu nilai dari poin1 ke poin2, sesungguhnya kita menciptakan sebuah reference dari point2 menunjuk ke suatu object yang sama dengan poin1.
Mendeklarasikan Class dan Variabel
Class adalah kumpulan kode atau cetak biru(blue print) dari suatu object. Didalam cetak biru menerangkan sifat dari objek dan identitas suatu variable.
Sintax untuk mendeklarasikan class :
[‘public’] [(‘abstract’ | ‘final’)] class nama_class
{
// sifat dari object dan identitas suatu variable dideklarasikan diantara {}
}
Menggunakan keyword public berarti class tersebut bisa di akses oleh class-class di seluruh package. Perlu diingat jangan menggunakan public jika class dibuat hanya di akses oleh class-class dalam satu package dengan class itu sendiri.
Gunakan keyword abstract untuk mendefinisikan suatu class abstract dimana object tidak bisa diciptakan dari class abstract, kelas abstract dibuat untuk diturunkan(di subclass) bukan untuk diinstansiasi langsung. Gunakan keyword final untuk mendefinisikan suatu class yang tidak dapat diturunkan.
Penamaan class biasanya menggunakan huruf capital untuk karakter pertamanya.
Contoh :
class Mhs {
}
Jika class adalah sub class dari class lain gunakan keyword extends.
class Mhs extends Mahasiswa {
}
Dapat diartikan Mhs adalah subclass dari Mahasiswa.
Deklarasi Variabel
Sintax Deklarasi variable :
[(public | private | protected)]
[(final | volatile)]
[static][transient]
Tipe_data Nama_variabel [=ekspresi];
Contoh :
class Mahasiswa {
String npm;
int nilai;
}
Akses variable
Untuk akses dan scope variable digunakan keyword : public, private atau protected.
1. Tanpa keyword
Contoh dibawah ini bila tidak menggunakan keyword :
class MyClass
{
int nama;
}
Berarti : Hanya kode-kode yang terdapat dalam MyClass dan class- class lain yang dideklarasikan dalam package dimana MyClass dideklarasikan yang dapat mengakses variable nama.
2. private
class Pegawai
{
private double gaji
}
Berarti : Hanya kode-kode yang terdapat dalam class Pegawai yang dapat mengakses variable gaji.
3. public
public class Pegawai
{
public String nama;
}
Berarti : Kode-kode yang terdapat didalam class Pegawai dan class yang terdapat di dalam package lain dapat mengakses variable nama(class Pegawai harus dideklarasikan public juga agar dapat diakses class-class dalam package lain.
4. protected
public class Pegawai
{
protected String nama;
}
Berarti : Hanya kode-kode yang terdapat dalam class Pegawai dan class-class lain dalam satu package yang sama dengan class Pegawai dan seluruh sub class dari class Pegawai(yang dideklarasikan dalam package lain) dapat mengakses variable nama.
METHOD
Metode menentukan perilaku objek,yakni apa yang terjadiketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
Metode memiliki 4 (empat) bagian dasar :
Nama metode
Tipe Objek atau tipe primitive yang dikembalikan metode.
Daftar parameter.
Badan atau isi metode.
Tiga bagian pertama dari definisi metode membentuk apa yang disebut sebagai penanda (signature) metode dan mengindikasikan informasi penting tentang metode itu sendiri. Dengan kata lain, nama metode tersebut dari metode=-metode lain dalam program. Dalam java kita dapat memiliki metode-metode berbeda yang memiliki nama sama tetapi berbeda tipe kembalian atau daftar argumennya, sehingga bagian-bagian definisi metode ini menjadi penting. Ini disebut overloading metode.
Definisi dasar metode adalah sebagai berikut :
Tipekembalian namametode (type1 arg1, type2 arg2, type3 arg3 ..)
{
…………
}
dalam contoh diatas tipe kembalian adalah tipe nilai yang dikembalikan oleh metode. Ini bias berupa salah satu tipe primitive,nama kelas, atau void bila metode tidak mengembalikan nilai sama sekali.
Contoh Program :
class KelasRentang {
int [] buatRentang(int lower, int upper) {
int arr[] = new int [ {upper – lower ) + 1 ];
for (int I = 0 ; i< arr.length;i++) {
arr[i] = lower++;
}
return arr;
}
public static void main(String [] args) {
int inilarik[];
KelasRentang iniRentang = new KelasRentang ();
Inilarik = iniRentang.buatRentang(5,20); System.out.print(“Lariknya adalah : [ “ );
For (int i = 0; i < inilarik.length;i++) {
System.out.print(inilarik[i] + “ “);
}
System.out.println(“] “);
}
}
Pada bagian definisi metode terkadang kita ingin merujuk objek saat ini (yakni objek dimana metode berada untuk pertama kalinya). Untuk itu digunakanlah kata kunci this. Kata kunci this dapat digunakan dimanapun objek saat ini berada pada notasi titik untuk merujuk variabel instance objek, sebagai argument ke metode, sebagai nilai kembalian untuk metode saat ini, san sebagainya :
t = this.x // x variabel instance objek
return this // mengembalikan objek saat ini.
KONSTRUKTOR
Metode konstruktor digunakan untuk menginisialisasi objek baru ketika metode-metode itu dibuat. Tidak seperti metode biasa, kita tidak dapat memanggil metode konstruktor dengan memanggilnya langsung. Metode konstruktor dipanggil oleh java secara otamatis ketika kita membauat objek baru.
Jika kita menggunakan new untuk membuat objek baru, java melakukan
3(tiga) hal :
Mengalokasikan memori untuk objek baru
Menginisialisasi variabel instance objek tersebut, baik dengan nilai awal maupun dengan nilai default (0 untuk bilangan, null untuk objek, false untuk Boolean, ‘\0’ untuk objek, false untuk Boolean, ‘\0’ untuk karakter).
Memanggil Metode konstruktor kelas tersebut (mungkin satu dari beberapa metode)
Dengan mendefinisikan metode konstruktor pada kelas yang kita buat, kita dapat mengatur nilai awal variabel instance, memanggil metode berdasar variabel tersebut atau objek lain, atau menghitung property awal objek, kita juga dapat melakukan overloading konstruktor sebagaimana yang biasa kita lakukanh terhadap metode regular, juga membuat objek yang memiliki properti khusus berdarkan argumen yang kita berikan dalam ekspresi new.
Konstruktor mirip dengan metode regular, hanya saja ada dua perbedaan utama yaitu :
Konstruktor selalu memiliki nama yang sama dengan class.
Konstruktor tidak memiliki nilai kembalian.
Contoh Program :
class Asisten {
String nama ; int umur;
Asisten(String n, int u) {
nama = n;
umur = u;
}
void tampilAsisten () {
System.out.print(“Hallo, namaku “ + nama );
System.out.println(“ Umurku “ + umur + “ tahun “);
}
public ststic void main(String [] args) {
Asisten a;
System.out.println(“ “);
a = new Asisten(“Widy Marinto Jati “ ,20);
a.tampilAsisten();
System.out.println(“--------------------“ ); a = new Asisten(“Iman R, ST “ ,22); a.tampilAsisten();
System.out.println(“-----------------------“);
}
}
Copyright © 2010, iLab Universitas Gunadarma
Tidak ada komentar:
Posting Komentar