Memahami Dynamic Dan Static Binding Pada Program Java

Apa Yang Dimaksud Dengan Binding?

Dalam belajar program Java pasti tidak terlepas dari yang namanya method. Binding merupakan hubungan antara pemanggilan method dan definisi method.

Untuk lebih jelasnya perhatikan gambar di bawah ini:

binding_program_java

Pada gambar di atas, pemanggilan method dengan kendaraan_1.bergerak() merupakan binding yang terhubung dengan definisi method bergerak() demikian juga dengan kendaraan_1.berhenti() merupakan binding yang terhubung dengan definisi method berhenti().

Sebagai aturan pada Java, pada setiap method yang dipanggil maka akan selalu terdapat definisi method. Karena error akan muncul jika compiler tidak menemukan definisi method yang tepat untuk setiap pemanggilan method.

Dynamic Binding

Seperti yang sudah anda ketahui, method dapat diimplementasikan dalam beberapa class melalui rantai inheritance.

Kemudian Java Virtual Machine akan memutuskan mengenai method mana yang akan dipilih pada saat runtime.

Sebelum lebih memahami mengenai dynamic binding ini, ada dua istilah yang perlu dimengerti terlebih dahulu, yaitu:

  • Tipe yang dideklarasikan, ini adalah variabel referensi untuk objek atau declared type.
  • Tipe aktual, yaitu class aktual dimana declared type menjadi variabel referensi untuk objek dari class tersebut

 Contoh :

Object myObject = new A();
System.out.println(myObject.toString());

Pada contoh di atas, tipe aktual dari myObject adalah A karena myObject mereferensikan suatu objek yang dibuat dengan new A();.

Selanjutnya, method toString() manakah yang akan di panggil? Ternyata method toString() yang akan dipanggil ditetapkan oleh tipe aktual dari myObject. Ini di kenal dengan dynamic binding.

Seperti inilah contoh cara kerja dynamic binding:

a) Terdapat beberapa class yang terkait dalam rantai inheritance yaitu class A, B, C, D dan E, dan paling puncak adalah class Objeck.

c) Class E adalah subclass dari class D, class D adalah subclass dari class C demikian seterusnya sampai dengan class A sub class dari Object.

Perhatikan diagram berikut ini:

c) Seperti kita ketahui, bahwa class Object memiliki method toString(), dan class lain bisa meng-override method tersebut. Dalam hal ini method toString tersebut di implementasikan oleh class A, B, dan C.

Perhatikan kode di bawah ini:

public class A extends Object {

@Override
public String toString(){

return "method toString() dari class A dipanggil!";
}

}

public class B extends A {

@Override
public String toString(){

return "method toString() dari class B dipanggil!";
}

}

public class C extends B {

@Override
public String toString(){

return "method toString() dari class C dipanggil!";
}

}

public class D extends C {

//tidak mengoverride method toString()

}
public class E extends D{

//tidak mengoverride method toString()

}

Kemudian class dibawah ini untuk mendemonstrasikan dynamic binding:

public class TestDynamicBinding {
//Method perintah dengan parameter tipe Object
static void perintah(Object myObject){

System.out.println(myObject.toString());
}

public static void main(String[] args) {

perintah(new E());//memanggil method toString dari class C
perintah(new D());//memanggil method toString dari class C
perintah(new C());//memanggil method toString dari class C
perintah(new B());//memanggil method toString dari class B
perintah(new A());//memanggil method toString dari class A
perintah(new Object());

}

}

Contoh output:
method toString() dari class C dipanggil!
method toString() dari class C dipanggil!
method toString() dari class C dipanggil!
method toString() dari class B dipanggil!
method toString() dari class A dipanggil!
java.lang.Object@3ee284

Penjelasan:

  • Method perintah() mengambil parameter dengan tipe Object, sehingga anda dapat memanggil method tersebut dengan objek apapun, misalnya new E(), new D(), new C(), new B(), new A() dan new Object().
  • Ketika method perintah(Object myObject) dieksekusi, maka argumen method toString() milik myObject akan dipanggil. Yang perlu menjadi perhatian di sini adalah myObject ini bisa saja merupakan instance dari class E, D, C, B, A atau Object.
  • Class C, B, A dan Object memiliki implementasi tersendiri pada method toString() dimana implementasi tersebut akan ditetapkan oleh tipe aktual myObject pada saat runtime.
  • Ketika myObject merupakan instance dari class E dan dipasskan pada method dengan perintah(new E());, maka compiler akan mencari method toString() yang diimplementasikan pada class E, kemudian jika tidak di temukan akan mencari lagi di class D dan seterusnya.
  • Karena class E dan D tidak mengimplementasikan method toString(), maka compiler akan menggunakan method toString() dari class C ketika myObject merupakan instance dari class E atau class D. Alur pencarian ini akan dilakukan dari class yang paling spesifik terlebih dahulu kemudian terus bertahap pada class yang paling general pada inheritance.
  • Ketika myObject merupakan instance dari clas C, B, A, dan Object,  maka method toString() yang dipanggil akan sesuai dengan implementasinya masing-masing pada class-class tersebut.

Suatu method bisa diimplementasikan dalam beberapa class melalui inheritance. Kemudian Java Virtual Machine secara dinamis melakukan bind pada method tersebut pada saat runtime dan implementasi itu ditetapkan oleh tipe aktual dari variabel.

Dynamic binding terjadi pada saat runtime, disebut juga late binding karena terjadi pada saat program berjalan.

Static Binding

Static binding terjadi pada saat compile time dan disebut juga early binding karena terjadi sebelum program berjalan. Jadi ini hanyalah konsep di mana objek dapat mengetahui method mana yang akan dipanggil pada saat compile time.

Method final, private dan static termasuk ke dalam static binding karena method tersebut tidak bisa di override dan tipe dari class tersebut ditetapkan pada saat compile time.

Berikut ini adalah contohnya :

public class Hewan {

public static void makan(){

System.out.println("Hewan makan!");

}

}

public class Harimau extends Hewan {

public static void makan(){

System.out.println("Harimau makan!");

}

public static void main(String[] args) {

Hewan objek1 = new Harimau();
objek1.makan();

Hewan objek2 = new Hewan();
objek2.makan();

}

}

Pada contoh di atas terdapat dua buah class yaitu class Hewan dan Harimau. Kedua class memiliki method yang sama yaitu makan(). Karena method tersebut adalah method static maka tidak bisa di override. Sehingga ketika objek dari class Harimau dibuat dengan variael referensi dari class Hewan, method makan() yang dipanggil adalah method milik class Hewan atau super class.

Method overloading juga adalah bagian bagian dari static binding.

Perbedaan Antara Dynamic Dan Static Binding

Berikut ini adalah perbedaan antara dynamic dan static binding yang perlu untuk diketahui.

Dynamic Static
Terjadi saat runtime Terjadi saat compile time
Objek aktual digunakan untuk binding Objek aktual tidak digunakan untuk binding
Method selain private, static final menunjukkan dynamic binding karena tidak bisa di override Method private, static final tidak bisa di override, sehingga termasuk static binding
Method overriding termasuk dynamic binding Method overloading termasuk static binding

Ada Fitur Seri S, Samsung Galaxy A8 dan A8 Plus (2018) Akan Diresmikan di Tanah Air Hari Ini!

Samsung Galaxy A8 dan A8 Plus (2018) Diresmikan Hari Ini di Indonesia, Ada Fitur Seri S Lho!

Oketekno.com – Samsung Galaxy A8 dan Galaxy A8 Plus (2018) akan diluncurkan hari ini, Rabu, 17 Januari 2017. Seperti diketahui bulan lau, Samsung telah memperkenakan perangkatnya ini secara global.

Kedua perangkat tersebut merupakan perangkat seri A Samsung yang menampilkan Infinity Display dan dukungan untuk Gear VR. Perangkat ini juga merupakan headset Galaxy pertama yang menampilkan dual camera pada bagian depan dan dibekali dengan fitur HDR real-time.

Fitur Infinity Display dan HDR real-time sendiri merupakan fitur yang juga digunakan oleh Samsung pada produk sebelumnya. Perusahaan teknologi Korea Selatan tersebut sebelumnya menggunakan dua fitur ini pada smartphone kelas flagship seri S.

Baca juga : Jepret Selfie Pakai Samsung Galaxy A5 dan A7 Tak Perlu Ketuk Layar

Sedangkan untuk seri Galaxy A seperti Samsung Galaxy A8 dan Galaxy A8 Plus biasanya akan mendapatkan giliran mempunyai fitur-fitur utama. Perangkat dengan seri tersebut akan memiliki fitur utama setahun setelah Samsung meluncurkannya di Galaxy S dan Galaxy Note. Hal tersebut juga berlaku terkait dengan dukungan untuk Gear VR.

samsung-galaxy-A8
Copyright ©beritateknologi

Sementara itu cukup diketahui jika Samsung pertama kali meluncurkan fitur HRD real-time di model Samsung Galaxy S5 dan itupun sudah dilakukan beberapa tahun yang lalu. Fitur ini dapat mendeteksi secara otomatis jika ada situasi ataupun subjek yang harus ditembak dengan mode HDR.

Dengan demikian pegguna tak perlu lagi repot menembak dan apakah perlu ditembak dengan HDR atau tidak. Namun Samsung sendiri sepertinya percaya diri pada kemampuan Samsung Galaxy A8 untuk dibekali dengan fitur ini. Itu karena tak ada lagi opsi di pengaturan kamera dan telah aktif secara default.

Baca juga : Desain Ponsel Dua Layar, Benarkah Itu Rencana Samsung Untuk Smartphone Masa Depan?

Samsung Galaxy A8 dan A8 Plus sendiri merupakan ponsel yang memiliki desain serupa, perbedaan kedua ponsel ini terletak pada ukuran layar serta spesifikasi yang diusung. Keduanya merupakan ponsel pertama Samsung yang mengusung dual kamera selfie dengan resolusi 16MP+8MP yang memiliki aperture f/1.9, tentunya akan membuat para pecinta selfie merasa puas dengan hasilnya.

Selain itu kedua perangkat ini juga akan menjalankan OS Android 7.1.1 Nougat. Sistem ini sendiri sepertinya hanya sementara karena perangkat dijamin akan mendapatkan iupdate ke Android 8.0 Oreo pada kahir tahun ini.

Baca juga :  Samsung Galaxy S6 Bakal Cicipi Manisnya Android Oreo Lho, Kapan?

The post Ada Fitur Seri S, Samsung Galaxy A8 dan A8 Plus (2018) Akan Diresmikan di Tanah Air Hari Ini! appeared first on OKETEKNO.COM.

Agents of S.H.I.E.L.D. Season 5

Nonton Streaming Download Subtitle Indonesia Sinopsis Serial Marvels Agents of S.H.I.E.L.D. Season 5 kisahnya berlanjut dan menceritakan kesepakatan Phil Coulson dengan iblis yang bertujuan untuk mengalahkan AIDA.

 

EPISODE-01

EPISODE-02

EPISODE-03

EPISODE-04

EPISODE-05

EPISODE-06

EPISODE-07

The post Agents of S.H.I.E.L.D. Season 5 appeared first on GudangMovies21.

5 Alasan Utama Kenapa Harus Memilih Hosting dari Niagahoster

Ditulis Oleh Dede Erik Abdul Aziz

Saat memilih dan menentukan layanan hosting mana yang akan dipakai untuk keperluan pembuatan sebuah website, tentu kita akan mempertimbangkan banyak hal dari mulai harga, spesifikasi, fitur (termasuk keamanan), kualitas, support bahkan sampai metode pembayaran pun tidak luput dari sorotan kita. Hal tersebut tentu saja wajar mengingat kita sebagai pembeli tentu tidak mau sembarangan memilih hosting […]

Anda dapat membaca artikel resmi di 5 Alasan Utama Kenapa Harus Memilih Hosting dari Niagahoster
Dapatkan artikel menarik lain di Kang Erik

UP – Ragnarok Journey Buka Masa Pre-Registrasi Dengan Hadiah Eksklusif!

 

Gravindo sebagai Publisher game Ragnarok Online di Indonesia, hari ini mengumumkan dibukanya masa Pre-Registrasi seri game Ragnarok terbarunya yaitu Ragnarok Journey.

Ragnarok Journey merupakan game Ragnarok Online versi web browser MMORPG yang diangkat dari latar belakang dan konsep cerita yang sama, namun dikemas dalam jenis gameplay petualangan yang berbeda. Untuk bermain Ragnarok Journey sangatlah mudah dan praktis:

  • Tidak perlu download client
  • Dapat dimainkan di semua browser yang sudah terintegrasi dengan Flash Player
  • Sistem game yang otomatis dan serba praktis

Ragnarok Journey memiliki 6 Job dasar yang dapat di pilih dan dimainkan, yaitu Swordman, Mage, Archer, Thief, Acolyte, dan Merchant.

Selain itu, Ragnarok Journey memiliki beragam fitur menarik. Kamu dapat mengkombinasikan ratusan Item untuk membuat Equipment terkuat atau untuk memaksimalkan penampilan karakter, Kustomisasi Skill & Status, Party & Guild sistem untuk membentuk Komunitas yang solid, Auction House, Card System, MVP Boss, Puluhan Dungeon yang menantang, serta Guild PVP yang bergengsi !


Pre-Registrasi Ragnarok Journey

Pre-Registrasi Ragnarok Journey dibuka mulai tanggal 10 Januari 2018 dan akan ditutup pada tanggal 22 Januari 2018. Untuk mengikuti Pre-Registrasi sangatlah mudah, kamu cukup mendaftarkan akun Facebook kamu melalui halaman situs resminya.

Dengan melakukan Pre-Registrasi, kamu akan mendapatkan berita terbaru tentang perilisan game Ragnarok Journey dan hadiah langsung berupa Lucky Box secara gratis. Selain itu, jika tercapai target jumlah peserta yang melakukan Pre-Registrasi, maka semua RO Mania yang terdaftar akan mendapatkan hadiah pada saat game ini dirilis senilai Rp 500.000.

Dengan sistem gameplay yang praktis, dinamis, dan otomatis, dan tentunya akan menambah pengalaman baru yang berbeda dalam berpetualang di dunia Rune Midgard.

Source From:http://gamestation.id/ragnarok-journey-buka-masa-pre-registrasi-dengan-hadiah-eksklusif/

The post UP – Ragnarok Journey Buka Masa Pre-Registrasi Dengan Hadiah Eksklusif! appeared first on UP Station.