Rabu, 04 Mei 2016

Belajar Object Oriented Programming (OOP) PHP, Casting Object



 Casting Object






       Instance dari class juga dapat di-casting menjadi instance dari class lain, dengan satu batasan
◦    Class asal dan tujuan harus direlasikan dalam inheritance, salah satu class harus berupa subclass dari class lain. Casting object digunakan untuk mengkonversi nilai primitif menuju tipe yang lebih besar, beberapa object tidak perlu mengalami casting secara explisit.
 
   Gunakan sintaks berikut untuk casting object,
   (classname)object

 classname           - nama class tujuan                                                                         
       object                 - reference untuk object asal

Berikut ini merupakan contoh proses casting sebuah instance dari class VicePresident ke instance dari class Employee. VicePresident merupakan subclass dari class Employee dengan beberapa informasi tambahan.

Employee emp = new Employee();
VicePresident veep = new VicePresident();


emp = veep;
casting explisit veep = (VicePresident)emp; 

Casting adalah proses konversi data dari sutau tipe ke tipe yang lain. Kita juga akan belajar bagaimana mengkonversi tipe data primitif ke obyek dan sebaliknya. Kemudian, pada akhirnya kita akan belajar bagaimana membandingkan sebuah obyek, serta menentukan nama kelas dari suatu objek.
Casting tipe data Primitif
Ada sebuah tipe data primitif yang tidak dapat di casting, yaitu tipe data boolean. 

Contoh :
implisit casting
int nilai=80;
double dNilai = nilai;
implisit casting terjadi jika tipe awal lebih kecil kapasitasnya.

ekpilist casting
double dNilai =90;
Int nilai = (int) dNilai;
Explicit cast terjadi jika tipe awal lebih besar dari pada tipe tujuan.
Casting Objek
Instance dari sebuah kelas dapat diubah ke instance kelas yang lain, dengan syarat kelas-kelas itu harus terhubung dengan mekanisme inheritance (kelas dengan subkelasnya).
 
Contoh :
Employee merupakan super class dari VicePresident
Employee emp = new Employee();
VicePresident pre = new VicePresident();
Implisit casting
emp = pre;
Ekplisit casting
pre = (VicePresident) emp;
Konversi tipe primitif ke objek dan sebaliknya
java.lang yang terdiri dari dari kelas-kelas yang berhubungan dengan untuk setipa tipe data primitifnya yaitu : Float, Boolean, Byte, dan sebagainya. Selain itu terdapat duan nama kelas yang berbeda dengan nama tipe data primitifnya yaitu : Character digunakan utuk variable char, dan Integer untuk variabel int ( kedua kelas ini di sebut Wrapper Class). 

Contoh :
 Konversi sebuah objek ke tipe data primitifnya.
          Integer dataCount = new Integer(100);
          int count = dataCount.intValue();
Konversi sebuah objek String ke tipe data numeric
String hasil=”4000”;
int hasil = Integer.parseInt(hasil); 






 

Cara Mengkonversi (Casting) Obyek Di Java


          Di dalam membuat program yang kompleks dengan bahasa Java, Anda tidak akan terlepas dari proses untuk mengkonversi (casting) tipe data. Misalnya, Anda bisa mengkonversi data dari tipe String ke tipe numerik tertentu, dari tipe numerik yang satu ke tipe numerik yang lain dan lain sebagainya.

          Pengkonversian tipe numerik dengan rentang nilai kecil ke tipe numerik dengan rentang nilai lebih besar disebut dengan widening, sedangkan perkonversian sebaliknya, dari rentang nilai besar ke rentang nilai lebih kecil, disebut dengan narrowing. Widening dapat dilakukan secara otomatis oleh kompiler Java.
Di pemrograman bahasa Java, sebuah kelas dapat menjadi tipe dari sebuah variabel. Variabel yang dideklarasikan dengan tipe kelas disebut dengan variabel acuan yang mengacu ke obyek yang dibuat dari kelas tersebut. Anda akan banyak menggunakan variabel semacam ini apabila sedang membuat program berpenampilan grafis.

           Pengkonversian juga dapat lakukan pada tipe kelas yaitu merubah tipe kelas satu ke tipe kelas yang lain. Syarat yang harus dipenuhi adalah kelas-kelas tersebut harus berada dalam hirarki turunan (inheritance hierarchy). Sebagai contoh dalam hirarki turunan Object - BangunDatar - PersegiPanjang - Balok, kelas Object adalah superclass dari kelas BangunDatar, kelas BangunDatar merupakan superclass dari kelas PersegiPanjang dan kelas PersegiPanjang merupakan superclass dari kelas Balok. Kelas Object mempunyai sifat paling umum sedangkan kelas Balok mempunyai sifat paling spesifik.

           Polymorphism memperbolehkan untuk membuat obyek dari subclass untuk diberikan ke variabel acuan tipe superclass. Berikut ini adalah pernyataan untuk membuat obyek dari kelas PersegiPanjang untuk diberikan ke variabel obj dengan tipe kelas Object:
   Object obj = new PersegiPanjang();
Kelas PersegiPanjang adalah kelas turunan dari kelas Object, sehingga acuan ke obyek yang dibuat dari kelas PersegiPanjang dapat diberikan ke variabel obj dengan tipe Object yang mana merupakan superclassnya. Akan tetapi, Anda tidak diperkenankan untuk melakukan kebalikannya, memberikan variabel acuan obj ke variabel pp yang merupakan tipe dari kelas PersegiPanjang sebagaimana pernyataan berikut ini:
   PersegiPanjang pp = obj;
Saat dieksekusi, pernyataan tersebut akan menghasilkan error. Instance (obyek) dari subclass adalah juga instan dari superclass tetapi tidak bisa sebaliknya. Sebagai contoh, setiap persegi panjang adalah obyek, tetapi tidak setiap obyek adalah persegi panjang, bisa saja itu lingkaran, segitiga, bujur sangkar atau yang lain. Agar kompiler Java mengetahui bahwa obj adalah obyek dari kelas PersegiPanjang, Anda perlu mengkonversi secara eksplisit sebagaimana pernyataan di bawah ini.
   PersegiPanjang pp = (PersegiPanjang) obj;
Anda diperbolehkan untuk mengkonversi obyek dari subclass ke variabel dengan tipe superclass (upcasting) kerena instance dari subclass adalah juga instance dari superclass. Ketika mengkonversi instance (obyek) superclass ke variabel dengan tipe subclass (downcasting), Anda perlu melakukan perkonversian secara eksplisit.

Tidak ada komentar:

Posting Komentar