• Tidak ada hasil yang ditemukan

PENGENALAN OOP Pendahuluan

2. Contoh Program Java

9.3 Pengertian dan implementasi instance dalam Java

Class :

Referensi Objek

Class mendefinisikan bentuk dan sifat suatu objek.setiap class baru yang anda dapat buat menambahkan tipe lain yang dapat diperlakukan sebagai tipe sederhana. Jadi, jika Anda mendeklarasikan variabel baru, Anda dapat menggunakan nama suatu class sebagai tipenya. Variabel seperti itu kemudian merujuk pada instans atau objek class tersebut. Variabel-variabel ini dikenal sebagai referensi objek. Semua referensi objek juga cocok dengan instan sub-class dari tipe-tipe yang dideklarasikannya. Seperti kita menyatakan byte untuk variabel yang dideklarasikan int, Anda boleh juga mendeklarasikan sebuah variabel sebagai Object dan menyimpan sebuah referensi ke suatu instans dari sembarang sub-class Object.

Variabel Instans

Data dienkapsulasi dalam suatu class dengan mendeklarasikan variabel di antara tanda kurung kurawal deklarasi class. Variabel yang dideklarasikan dalam cakupan ini dikenal sebagai variabel instans. Cara mendeklarasikan variabel instans sama persis dengan cara yan g kita lakukan untuk mendeklarasikan variabel lokal dalam contoh-contoh sebelumnya, kecuali Anda mendeklarasikannya di luar cakupan method tertentu, seperti main. Contohnya berikut ini adalah program yang mendeklarasikan class dengan nama Point dengan dua variabel instans integer bernama x dan y.

class Point { int x , y; }

Operator new

Operator new menghasilkan instans tunggal dari suatu class dan menghasilkan referensi ke objek tersebut. Berikut ini contoh sebuah instans baru dari Point yang dibuat dan disimpan dalam variabel p.

point p = new point()

Di sini p adalah referensi ke sebuah instans dari Point.

Berikut ini contoh yang menghasilkan objek Point tunggal , tetapi menciptakan dua variabel yang merujuk kepadanya.

Point p = new point(); Pointp2 = p;

68

Perubahan apapun ke objek yang dirujuk p2 akan mempengaruhi objek yang sama yang dirujuk oleh p. Pernyataan p ke p2 tidak mengalokasikan memori atau menyalin bagian apapun dari objek asli. Kenyataannya , pernyataan untuk p pada baris kedua contoh di atas akan melepaskan kaitan p dari objek asli tanpa mempengaruhi objeknya, seperti contoh berikut

Point p = new point(); Point p2 = p ;

P = null;

Meskipun p telah dibuat null , p2 tetap menunjuk ke objek yang dibuat dengan operator new.

Operator Dot (.)

Operator dot (.) digunakan untuk mengakses variabel instans dan method di dalam objek. Berikut ini bentuk umum untuk mengakses variabel instans dengan operator dot.

0bjectreference . variablename

Di sini objectreference adalah referensi ke suatu objek dan variablename adalah nama variabel instans di dalam objek yang ingin anda akses.

Cuplikan program berikut ini menunjukkan bagaimana operator dot dapat digunakan untuk menyimpan suatu ke dalam variabel instan.

p.x = 10 ; p.y = 20 ;

Baris program berikut ini menunjukkan bagaimana merujuk ke suatu nilai variabel instans dengan operator dot.

System.out.println("x = " + p.x + " y = " + p.y);

Deklarasi method

Method dideklarasikan di dalam definisi class di tingkat yang sama dengan variabel instans. Anda harus memanggil method dalam konteks instans tertentu class tersebut. Method dapat merujuk langsung ke variabel instans tanpa menggunakan operator dot seakan-akan mereka itu variabel local yang dideklarasikan di luar cakupan.

Method dideklarasikan untuk memiliki nilai keluaran dengan tipe tertentu dan sekumpulan parameter masukan.. Bentuk umum deklarasi method adalah :

69

type method name (formal-parameter-list) { method-body;

}

Type adalah tipe besaran yang akan dikeluarkan oleh method, termasuk void jika tidak ada nilai yang akan dikeluarkan. Method name adalah sembarang identifier yang berlaku selain yang telah dipakai untuk nama class di dalam cakupan yang bersangkutan. formal-parameter-list adalah urutan pasangan tipe dan identifier yang dipisahkan dengan koma.

Pemanggilan method

Method dipanggil pada instans suatu class dengan menggunakan operator dot (.). Bentuk umum pemanggilan method ditunjukkan di bawah ini ;

Objectreference.methodname (parameter-list)

Objectreference adalah sembarang variabel yang merujuk ke suatu objek , method name adalah nama suatu method dalam class yang dideklarasikan sebagai objectreference, dan parameter-list adalah besaran atu pernyataan yang dipisahkan dengan koma yang jumlah dan tipenya cocok dengan method yang dideklarasikan sebagai method name dalam class yang bersangkutan.

Point p = new (Point); p.init(10 , 20) ;

Contoh ini membuat instan baru dari Point , menyimpan referensinya dalam p. Kemudian operator dot digunakan untuk memanggil method init pada instans yang bersangkutan, melewatkan 10 dan 20 secara berurutan untuk parameter a dan b . Pernyataan x ke 10 dan y ke 20 dilakukan dan method menghasilkan nilai.

this

Java memasukkan suatu besaran referensi khusus yang disebut this yang digunakan di dalam method yang dirujuk untuk objek yang sedang berlaku. Nilai this merujuk pada objek dimana method yang sedang berjalan dipanggil. Anda dapat menggunakan this disembarang tempat dimana dibutuhkan referensi ke suatu objek dari class yang berlaku. Pada contoh sebelum ini kita menggunakan p.init tetapi saat kita berada pada method init, this akan menunjuk ke objek yang sama dengan p. Jika objek lain mnggunakan program yang sama dikirim melalui instans lainnya maka masing-masing objek tersebut akan memiliki hasil this-nya sendiri.

Di dalam Java tidak diperbolehkan mendeklarasikan dua variabel lokal dengan nama yang sama di dalam cakupan yang sama. Yang menarik, diperbolehkan untuk mendeklarasikan

70

variabel lokal termasuk parameter formal suatu method yang tumpang tindih dengan nama variabel instan. Anda akan melihat bahwa kita tidak menggunakan x dan y sebagai nama parameter untuk method init karena mereka akan menyembunyikan variabel instan x dan y sebnarnya untuk cakupan method tersebut. Jika kita lakukan, maka x akan merujuk pada parameter formal, menyembunyikan variabel instan x. this justru memperbolehkan kita merujuk langsung ke objeknya sendiri bukannya membiarkan cakupan yang berlaku mendefinisikan aturan-aturan resolusi variabel kita. Berikut ini versi lain init yang menggunakan x dan y untuk nama parameter formal dan kemudian menggunakan this untuk mengakses variabel instans objek yang berlaku pada saat itu.

void

init (int x, int y) { this.x = x ; this.y = y; }

Contoh TwoPoints dapat memanfaatkan method inisialisasi baru untuk init seperti ditunjukkan di bawah ini

class Point { int x;

int y;

void init (int x, int y) { this.x = x; this.y = y; }

}

class TwoPointsInit {

public static void main( String args[] ) { Point p1 = new Point();

Point p2 = new Point(); p1.init(10, 20);

p2.init(42, 99);

71

System.out.println("x = "+ p2.x + " y = "+ p2.y); }

}

Contoh ini menunjukkan pembuatan dua objek Point dan method init mereka yang terkait yang dipanggil dengan pasangan nilai yang berbeda. Keluaran program ini sama dengan contoh program TwoPoints sebelumnya.

Konstruktor

Menginisialisasi semua variabel dalam class setiap kali instans dibuat sangatlah membosankan. Bahkan jika anda membuat fungsi yang sederhana seperti init dia atas tetap lebih sederhana dan singkat jika semua yang diperlukan telah siap saat objek dibuat. Untuk alasan ini, class dapat mengimplementasikan method khusus yang disebut konstruktor. Konstruktor adalah method yang menginisialisasi objek segera setelah pembuatannya. Konstruktor tersebut memiliki nama yang sama persis dengan class tempatnya. Sebenarnya anda tidak dapat membuat method yang bernam sama dengan class-nya. Sekali didefinisikan, konstruktor secara otomatis segera dipanggil sebelum operator new selesai bekerja. Konstruktor kelihatan agak aneh karena tidak memiliki tipe keluaran, bahkan tidak memiliki void sekalipun. Ini karena tipe hasil implisit konstruktor adalah menginisialisasi semua keadaan internal suatu objek sehingga program yang menghasilkan instan dengan operator new akan segera memiliki objek yang baik dan berguna.

Berikut ini adalah class point, di sini dapat kita lihat bagaimana cara menginisialisasi kedua variabel instans sambil membentuk objek. Disini method init dari contoh terakhir digantikan dengan method yang kelihatannya sangat mirip tetapi berbagi nama dengan class-nya dan tidak memiliki tipe hasil.

class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } } class PointCreate {

public static void main(String args[] ) { Point p = new Point( 10, 20);

72

System.out.println("x = " + p.x +" y = " + p.y); }

}

Method konstruktor dipanggil tepat setelah instans dibuat dan sebelum new menghasilkan nilai untuk pemanggilnya. Daftar parameter yang dispesifikasikan setelah nama class dalam pernyataan new digunakan untuk melewatkan parameter ke konstruktor yang tepat. Contoh sebelumnya yang menggunakan newPoint() memanggil konstruktor Point(), yang dibuat default oleh konstruktor object () superclass.

Overloading Method

Dalam pemrograman Java, mungkin kita seringkali menginginkan pembuatan lebih dari satu method dengan nama sama tetapi dengan daftar parameter yang berbeda. Ini disebut overloading method. Overloading method digunakan untuk melayani sifat polimorfik Java. Contoh berikut ini adalah versi class Point yang menggunakan overloading method untuk menghasilkan konstuktor alternatif yang membuat beberapa nilai default untuk koordinat x dan y. class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } Point() { x = -1; y = -1; } } class PointCreateAlt {

public static void main(String args[] ) { Point p = new Point();

System.out.println("x = " + p.x +" y =" + p.y); }

73

}

Contoh ini menghasilkan sebuah objek Point yang memanggil konstruktor kedua tanpa parameter, berbeda dengan yang pertama. Ini adalah keluarannya.

x = -1 y = -1

Penutup Latihan soal

1. Jelaskan tentang Object dan Class? 2. Apa yang ada dalam sebuah class? 3. Ciri utama OOP ada 3, jelaskan !

4. Apa perbedaan public, private, protected? 5. Jelaskan tipe data class!

6. Apa perbedaan pemrograman procedural dan OOP 7. Apa yang dimaksud dengan prepocessor?

74

DAFTAR PUSTAKA

Adam Drozdek, 2008, Data Structures and Algorithms in Java Alfred V. Aho,dkk., 1988, Data Structures and Algorithms, Cay S. Horstmann, 2009, C++ for everyone

Data Structures Using C , Tenenbaum, A., Y. Langsam, and M. Augenstein, 1990, Prentice-Hall

Dokumen terkait