• Tidak ada hasil yang ditemukan

Output : Beavis Mess With Butthead Beavis : Damn You!!! Butthead Butthead Make Revenge To Beavis Butthead : Damn You!!! Beavis

N/A
N/A
Protected

Academic year: 2022

Membagikan "Output : Beavis Mess With Butthead Beavis : Damn You!!! Butthead Butthead Make Revenge To Beavis Butthead : Damn You!!! Beavis"

Copied!
5
0
0

Teks penuh

(1)

THIS

Ditinjau dari kepemilikannya, variabel terbagi menjadi 2, yaitu : Variabel kelas dan Variabel Instans.

Variabel kelas adalah variabel yang melekat pada kelas dan tidak terpengaruh oleh proses instantiasi, sehingga tidak dapat dimiliki dan diakses oleh objek yang diinstans dari kelas tersebut. Variabel instans adalah variabel yang dimiliki oleh objek dari proses intantiasi suatu kelas.

Variable This digunakan untuk mengakses variabel instans dari masing-masing objek. This sebenarnya adalah sebuah variable read-only (tidak dapat diubah nilainya). Dengan variable ini, akan didapatkan reference/pointer menuju objek terkini. Misalkan sebuah aplikasi sedang berjalan, pada saat tertentu yang dijalankan oleh komputer adalah method aMethod() milik object anObject. Dari method aMethod() dibutuhkan reference ke objek terkini yaitu object anObject itu sendiri. Untuk itulah digunakan variabel this dalam method aMethod() milik object anObject. Perhatikan contoh berikut :

1. public class BeavisAndButtheadStory { 2. public static void main (String[] args) {

3. DivineBeing beavis = new DivineBeing ("Beavis");

4. DivineBeing butthead = new DivineBeing ("Butthead");

5. //Guess what's gonna happen next...

6. beavis.messWith(butthead);

7. butthead.makeRevenge();}

8. } 9.

10. class DivineBeing { 11. private String name;

12. private DivineBeing baddDivineBeing;

13.

14. public DivineBeing(String name) { 15. this.name = name; }

16.

17. public void messWith(DivineBeing anotherDivineBeing) {

18. System.out.println(this.getName() + " Mess With " + anotherDivineBeing.getName());

19. anotherDivineBeing.kapow(this); } 20.

21. public void kapow(DivineBeing baddDivineBeing) {

22. System.out.println(baddDivineBeing.getName() + " : Damn You !!!" + this.getName());

23. //forgive but not forget....

24. this.baddDivineBeing = baddDivineBeing; } 25.

26. public void makeRevenge() { 27. if (baddDivineBeing != null) {

28. System.out.println(this.getName() + " Make Revenge To " + baddDivineBeing.getName());

29. baddDivineBeing.kapow(this); } 30. }

31.

32. public String getName() {

33. return name; }

34. }

Gambar 4.Contoh penggunaan kata kunci this

Output :

Beavis Mess With Butthead Beavis : Damn You!!! Butthead Butthead Make Revenge To Beavis Butthead : Damn You!!! Beavis

beavis memulai gara-gara dengan memukul butthead (pada baris 6 & 19), Sewaktu beavis memukul butthead, beavis memberikan butthead referensi atas dirinya sendiri dengan memberikan argument this pada pemanggilan method kapow(divineBeing baddDivineBeing). Dengan reference yang didapatkan, suatu saat butthead dapat balik mengirim pesan makeRevenge() ke beavis. butthead ingat betul siapa yang memukulnya, karena sewaktu ia dipukul, ia menyimpan reference ke objek beavis itu pada variabel baddDivineBeing miliknya

(2)

(yang dideklarasikan pada baris 13). Praktek diatas disebut CALLBACK. Programmer OOP sering menggunakan Cara-cara diatas dalam merancang aplikasi dimana objek-objek saling terkait erat (interlocked) satu dengan yang lain.

Penggunaan lain dari this dapat dilihat pada baris 15 dan 23. Pada baris 15, bermaksud menetapkan variabel name yang di deklarasikan pada baris 12, tapi sekarang timbul konflik dalam penamaan variabel.

Didalam daftar argumen pada constructor juga didefinisikan variabel lain yang juga bernama name (baris 14).

Jangkauan variabel name pada baris 12 mencakup semua ruang pada class DivineBeing, sedangkan variabel name pada baris 14 mempunyai jangkauan terbatas didalam constructor itu. Untuk mengatakan saya menginginkan name yang global bukan name yang lokal, harus menerobos keluar dengan keyword this. Dapat dilihat pada gambar 5.

class DivineBeing {

private String name;

private DivineBeing baddDivineBeing;

public DivineBeing (String name ) { this.name = name ;

}

Gambar 5.Out Of The Box Experience

ABSTRACT

Abstract method adalah method yang belum mempunyai implementasi. Untuk menyatakan suatu method abstract dengan cara memberikan keyword abstract pada deklarasi method tersebut. Secara umum sintaks dari pendeklarasian method abstract :

abstract return-type namamethod ([daftar-parameter]);

Contoh :

1 public class ExplainAbstract {

2 public static void main (String args[]) {

3 Penyanyi joshua = new Penyanyi();

4 joshua.berkesenian();

5 joshua.tidur();

6 Pemrogram raka = new Pemrogram();

7 raka.berkesenian();

8 raka.tidur();

9 }

10 } 11

12 abstract class Seniman {

13 public abstract void berkesenian();

14 public void tidur() { System.out.println ("Zzzz...Zzzz..."); } 15 }

16

17 class Pemrogram extends Seniman { 18 public void berkesenian() {

19 System.out.println ("Tap..Tap...Click-click..Tap..Plak!!Clik...DOR..!!"); } 20 public void tidur() { System.out.println ("Buzzz...Nging...!!!"); }

21 } 22

23 class Penyanyi extends Seniman {

24 public void berkesenian() { System.out.println ("Tralala...Trilili...!!!"); } 25 }

Gambar 6. Contoh Pendeklarasian method abstract

(3)

Output :

Tralala...Trilili...!!!

Zzzz...Zzzz...

Tap..Tap...Click-click..Tap..Plak!!Clik...DOR..!!

Buzzz...Nging...!!!

Jika suatu class memiliki abstrak method maka class tersebut harus dideklarasikan sebagai abstract class, Contoh :

public abstract class GraphicObject { // declare fields

// declare non-abstract methods abstract void draw();

}

Jika abstract class merupakan subclass, maka subclass tersebut biasanya menyediakan implementasi untuk seluruh abstract method yang dimiliki oleh parentclass-nya, jika ternyata tidak, maka subclass tersebut harus dideklarasikan sebagai abstract juga.

STATIC MEMBER

Pendefinisian suatu member sebagai static member menghasilkan efek khusus, yaitu perubahan nilai yang dilakukan terhadap static member, akan dirasakan oleh semua instance dari class yang bersangkutan.

Jadi static member tidak diasosiasikan dengan setiap instance, melainkan dengan class. Karena itu static member juga disebut sebagai class variable, sedangkan non-static member disebut instance variabel. Contoh static member :

1. public class BorgUnite{

2. public static void main(String args[]){

3. Borg borg1 = new Borg();

4. Borg borg2 = new Borg();

5. System.out.println("Borg 1 intelligence = " + borg1.getIntelligence());

6. System.out.println("Borg 2 intelligence = " + borg2.getIntelligence());

7. borg1.learn();

8. System.out.println("Borg 1 intelligence = " + borg1.getIntelligence());

9. System.out.println("Borg 2 intelligence = " + borg2.getIntelligence());

10. Borg borg3 = new Borg();

11. System.out.println("Borg 3 intelligence = " + borg3.getIntelligence());

12. }

13. } 14.

15. class Borg{

16. private static int intelligence = 0; //Static member

17. public Borg() { System.out.println("Spark...Bip...Bip.."); } 18. public void learn(){

19. int electricalSpark = (int)(Math.random()*5);

20. intelligence += electricalSpark;

21. System.out.println("Borg Intellgence increase by = " + electricalSpark);

22. }

23. public int getIntelligence( ) { return intelligence; } 24. }

Output :

Spark...Bip...Bip..

Spark...Bip...Bip..

Borg 1 intelligence = 0 Borg 2 intelligence = 0

Borg intelligence increase by = 3 Borg 1 intelligence = 3

Borg 2 intelligence = 3 Spark...Bip...Bip..

Borg 3 intelligence = 3

(4)

Contoh Non-static member :

1. public class HumanCantUnite{

2. public static void main(String args[]){

3. Human Human1 = new Human();

4. Human Human2 = new Human();

5. System.out.println("Human 1 IQ = " + Human1.getIQ());

6. System.out.println("Human 2 IQ = " + Human2.getIQ());

7. Human1.learn();

8. System.out.println("Human 1 IQ = " + Human1.getIQ());

9. System.out.println("Human 2 IQ = " + Human2.getIQ());

10. }

11. } 12.

13. class Human{

14. private int IQ = 0;

15. public void learn(){ IQ += (int)(Math.random()*5);

16. }

17. public int getIQ(){ return IQ; } 18. }

Output :

Human 1 IQ = 0 Human 2 IQ = 0 Human 1 IQ = 2 Human 2 IQ = 0

STATIC METHOD

Pada contoh-contoh sebelumnya harus menginstantiasi/membuat objek terlebih dahulu sebelum dapat menggunakan method-method atau mengakses field-field pada class yang bersangkutan. tapi dengan mendefinisikan suatu field atau method sebagai static, dapat mengakses field method tersebut tanpa harus melakukan instantiasi terlebih dahulu. Perhatikan contoh berikut :

1 public class MyGeomUtil {

2 int iAmNotPopular = 13; static int iAmCelebrity = 7;

3

4 public static double luasSegiempat (float length, float width) {

5 return length * width;

6 }

7

8 public static double luasSegitiga (float alas, float tinggi) { 9 return 0.5 * alas * tinggi;

10 }

11

12 public static double luasSegitiga (float A, float B, float gamma) { 13 //fungsi sin(double angel) menerima masukan sudut 14 //dalam radian angle not angel, you prevet...!

15 return 0.5 * A * B * Math.sin(gamma / Math.PI);

16 }

17 }

Gambar 7. Definisi MyGeomUtil

Dapat didefinisikan suatu method sebagai static method apabila method tersebut samasekali tidak berurusan dengan field-field non-static. Misal untuk mendapatkan luas segiempat dengan panjang =2.0f dan lebar=3.0f, dapat dilakukan sbb :

……

double luas = MyGeomUtil.luasSegiempat(2.0f, 3.0f);

……

(5)

Secara umum, cara memanggil method static yang dimiliki suatu class menggunakan sintaks : namaclass.namamethod ([daftar-argument]);

Suatu class dimana semua method-methodnya bersifat static dikenal dengan istilah Booch utility.

FINAL

Dengan menambahkan modifier final pada deklarasi sebuah method, dapat ditetapkan bahwa method pada class tersebut tidak bisa ditimpa/override pada subclass yang kelak mungkin akan dibuat. Salah satu alasan untuk membubuhkan final pada method di sebuah base class adalah karena method itu begitu fundamental bagi kerja instance class tersebut, sehingga jika di implementasikan secara berbeda oleh subclassnya ( yang bisa saja ditulis oleh programer yang salah) berpotensi menyebabkan kerja instance itu tidak benar. Bentuk umum final method :

[modifier-modifier] final namamethod() { //…mmmm…..

}

Final juga bisa diberlakukan bagi class, sehingga tidak dapat dibuat turunan dari class final. Bentuk umum final class :

final class namaclass extends parentclass { //…mmm…

}

Contoh :

1. public class FinalKattWorld {

2. public static void main (String args[ ]) { 3. Katt k = new Katt();

4. k.speak();k.berdoa();

5. Anggora a = new Anggora();

6. a.speak(); a.jump();a.berdoa();

7. Siam s = new Siam();

8. s.speak();s.berdoa();

9. } 10. } 11.

12. class Katt {

13. public Katt() { System.out.println ("Katt Constructor"); }

14. public void speak() { System.out.println ("Miaawww...."); }

15. public final void berdoa() { System.out.println("Murr..Murr..Awright...!!!"); } 16. }

17.

18. class Anggora extends Katt {

19. public void jump() { System.out.println ("Crash...BOOM...!!!"); } 20. //Perintah berikut akan menyebabkan pesan kesalahan

21. public void berdoa() { System.out.println("Murr...Awright...Amien...!!!"); } 22. }

23.

24. final class Siam extends Katt {

25. public Siam() { System.out.println ("Siam Constructor"); }

26. public void speak() { System.out.println ("Mmurrr...Murrrr...."); } 27. }

28.

29. //Perintah berikut akan menyebabkan pesan kesalahan 30. class Chesire extends Siam{

31. public Chesire() { System.out.println("Chesire Constructor"); } 32. }

Referensi

Dokumen terkait

Refraktif Hasil Analisis Data Subjek S 4 kualitas sedang. Hal tersebut terlihat dari hasil wawancara S 4.2.4 Menghubungkan setiap informasi dengan pengetahuan sebelumnya

Fenomena perubahan yang menonjol adalah didirikannya bangunan rumah tinggal di tengah-tengah perkebunan yang bersifat permanen dan modern seperti rumah tinggal di kota yang

Bila kebutuhan masyarakat lebih besar maka masyarakat dapat mengimbangi tingginya kebutuhan dalam jangka waktu yang panjang dengan investasi dana yang tersedia dan

Skripsi ini berjudul Penerapan Problem Based Learning Berbantuan Video untuk Meningkatkan Hasil Belajar IPA Siswa kelas 4 SD N 5 Sindurejo Kecamatan Toroh

dengan tingkat kecemasan ibu pre operasi seksio sesarea pada spinal anestesi..

makanan tambahan pemulihan (PMT- P) terhadap status gizi balita gizi buruk di Dinas Kesehatan Kota Semarang tahun 2012. Penelitian pengaruh pemberian MP-ASI biskuit

Guru khusus dalam prakteknya banyak memberikan kegiatan yang bersifat keterampilan untuk dapat mengetahui berbagai potensi minat bakat siswanya, sedangkan untuk pembinaan yang

Berbagai hambatan dan rintangan peneliti hadapi selama penyusunan skripsi, namun berkat karunia-Nya, ketekunan, doa, usaha dan bantuan dari berbagai pihak sehingga