Definisi Kelas dan Obyek



Obyek (object): entitas yang memiliki kumpulan dari data serta metoda-metoda (method-method) yang bekerja pada data tsb. Data dan metoda-metoda suatu kelas mendefinisikan isi dan sifat tersebut.
Kelas obyek (object class): (disngkat kelas) mendefinisikan sekumpulan obyek yang memiliki metoda-metoda dan jenis data yang sama; obyek-obyek tersebut didefinisikan secara format dalam kelas atau dengan perkataan lain suatu obyek merupakan instance dari kelas obyeknya.
Metoda: spesifikasi “sifat” dari kelas yang secara formal ditulis dalam bentuk prosedur/fungsi dan metoda in mengkomputasi/beraksi berdasar sejumlah data yang tedapat pada obyek dan/atau argumen yang diberikan serta data lain yang aksesibel oleh obyek tsb.
Contoh Kelas & Obyek

Kelas lingkaran dideskripsikan oleh titik pusatnya, yaitu (x, y) serta jari-jarinya, yaitu r. Beberapa hal bisa diasosiasikan pada lingkaran tersebut, misalnya “berapa kelilingnya”, “berapa luasnya”, “apakah suatu titik berada di dalamnya” yang masing-masing bisa ditentukan berdasarkan (x, y) dan r. Terdapat obyek lingkaran yang berpusat di (2.0,2.0) dengan jari-jari =1.0 adalah suatu obyek dari kelas Lingkaran, dan keliling & luasnya dapat dihitung dengan perhitungan di atas dan diperoleh keliling 6.28318 dan luas 3.14159

Kelas lingkaran tersebut dalam bahasa Java didefinisikan sbb.
public class Lingkaran {
public double x, y; // ttk pusat
public double r; // jari-jari

// method yang menghitung kel.& luas
public double keliling() {
return 2*3.14159*r;
}
public double luas() {
return 3.14159*r*r;
}
}

Sebagai instance dari kelasnya, obyek merupakan sesuatu yang perlu di-refer eksistensinya dengan suatu variabel (kita sebut bvariabel referensi).
Lingkaran c = new Lingkaran();
// c variabel referensi merefer obyek
// yang dicreate oleh perintah new
c.x = 2.0; c.y = 2.0; c.r = 1.0;
Lingkaran d; // d variabel referensi
d = c; // c & d merefer ke satu obyek lingkaran
double b = c.luas();
// metoda luas() merupakan sifat yang
// dimiliki obyek yang direfer oleh c

Note: dalam pemrograman non object-oriented (misalnya C) maka luas lingkaran c dihitung oleh prosedur misalnya luas()dan variabel c menjadi argument dalam penghitungannya sbb.

b = fungsiX(a)
Penciptaan Obyek
Saat obyek baru diciptakan, Java menjalankan konstruktor (constructor) untuk dapat menginisialisasi obyek. konstruktor dispesifikasikan sebagai suatu metoda dengan nama yang sama dengan nama kelas. Jika konstruktor tidak dispesifikasikan maka Java menyediakan konstruktor default seperti yang terjadi pada contoh di atas. Definisi kelas Lingkaran tsb. belum ada constructornya maka x,y, dan r perlu diberi harga sendiri setelah obyek di-generate. Contoh kelas Lingkaran diatas di tambahkan sebuah konstruktor:
public class Lingkaran {
public double x, y, r; // ttk pusat & jari-jari

// method constructor
public Lingkaran(double x,double y,double r) {
this.x = x; this.y = y; this.r = r;
// Keyword this untuk mengakses variabel
// obyek ybs.; bisa dihilangkan jika nama
// variabel sudah jelas berbeda
}
….
// method yang menghitung kel.&luas
….

Dengan adanya konstruktor ini obyek dicreate bisa dengan harga-harga awalnya dengan cara memberikan argumen yang sesuai dengan yang di spesifikasikan pada metoda konstruktornya. Contoh dari kelas Lingkaran tsb.
Lingkaran c = new Lingkaran(2.0, 2.0, 1.0);

Konstruktor dapat dispesifikasikan dalam lebih dari satu cara pemanggilan yang berbeda. Contohnya dalam kelas Lingkaran di atas selain (1) dengan tiga bilangan (x, y, t), didefinisikan juga konstruktor (2) dengan hanya harga r, (3) dengan harga yang dimiliki obyek lingkaran lain, dan (3) tanpa harga argumennya.
public class Lingkaran {
public double x, y, r;
public Lingkaran(double x,double y,double r) { // dengan x,y,r
this.x = x; this.y = y; this.r = r;
}

// dari obyek lingkaran lain
public Lingkaran(Lingkaran c) {
x = c.x; y = c.y; r = c.r;
}
// harga r saja
public Lingkaran (double r) {
x = 0; y = 0; this.r = r;
}
// tanpa argument
public Lingkaran () {x = 0; y = 0; r = 0;}

….
}

Agar penulisan lebih kompak maka bisa juga suatu konstruktor memanggil konstruktor lain yang lebih umum memanfaatkan keyword this untuk merefer dirinya sendiri. Untuk kelas Lingkaran di atas bisa ditulis menjadi
public class Lingkaran {
public double x, y, r;
public Lingkaran(double tx,double ty,double tr) {
this.x = x; this.y = y; this.r = r;
}

public Lingkaran(Lingkaran c) {this(c.x, c.y, c.r);}
public Lingkaran (double r) {this(0, 0, r);}
public Lingkaran () {this(0, 0, 0);}
….
}

Obyek dapat diciptakan dengan salah satu metoda konstruktor di atas
Lingkaran c1 = new Lingkaran();
// konstruktor menginisialisasi x,y,r = 0, 0, 0
Lingkaran c2 = new Lingkaran(10, 20, 25);
// konstruktor menginisialisasi x,y,r = 10, 20, 25
Lingkaran c3 = new Lingkaran(c2);
// konstruktor menginisialisasi x,y,r = 10, 20, 25
Lingkaran c4 = new Lingkaran(25);
// konstruktor menginisialisasi x,y,r = 0, 0, 25

Bagaima Java melakukannya? Java akan mengenalinya berdasarkan jumlah & ragam dari argumen! Jadi jangan membuat dua konstruktor dengan jumlah dan jenis argumen yang sama.

Bukan hanya konstruktor, setiap metoda dapat dispesifikasikan dalam beberapa cara yang berbeda (di-overload) metoda melakukan fungsi yang sama berdasarkan argumen yang berbeda Java akan mengenalinya dari jumlah dan ragam argumen seperti di atas. Pendefinisian metoda demikian disebut method overloading.

Komentar

Postingan Populer