Pages

...
Subscribe:
Selamat Datang Di Blog Dedesincere.blogspot.com ^_^’

Tipe Data

Value Type vs Reference Type

Hands on Labs ini menjelaskan perbedaan antara tipe data yang bertipe value (Value Type) dan tipe data referensi (Reference Type).

Contoh Value Type

1. Buka Visual Studio – pilih File – New Project, pilih Windows Form Application, beri nama “Chapter3” untuk nama projectnya


      2. Kemudian tambahkan tombol kedalam form, set property Text=’Value Type’, dan property Name=’btnValue’.

      3.  Double click pada tombol ‘btnValue’ untuk menambahkan kode berikut
private void btnValue_Click(object sender, EventArgs e) {
            int bil1 = 12, bil2;
            bil2 = bil1;
            MessageBox.Show("Bil2 : " + bil2.ToString());
            bil2 = 23;
            MessageBox.Show("Bil1 : " + bil1.ToString());
}
      4. Kemudian jalankan programnya dengan menekan tombol F5.
      5. MessageBox pertama akan menampilkan “Bil2 : 12” karena variabel bil2 diisi dengan nilai dari variable bil1
      6. MessageBox kedua akan menampilkan “Bil1 : 12” karena walaupun bil2 nilainya dirubah namun bil1 tidak terpengaruh karena masing-masing variable mempunyai copy datanya sendiri. Ini yang disebut sebagai value type.

Contoh Reference Type

1. Buka kembali project Chapter3 yang sudah anda buat.

2. Tambahkan sebuah button, set property Name=’ btnReference’ dan property Text=’ Reference Type’.


      3. Untuk membuat reference type, tambahkan class baru kedalam project. Caranya klik kanan pada project di solution explorer – pilih Add – New Item – pilih Class – beri nama ‘Mahasiswa.cs’. tambahkan kode berikut:
   class Mahasiswa {
        public string Nim { get; set; }
        public string Nama { get; set; }
       }
      
      4. Kemudian double click pada button ‘btnReference’ untuk menambahkan kode berikut:
private void btnReference_Click(object sender, EventArgs e) {
            Mahasiswa mhs1 = new Mahasiswa();
            mhs1.Nim = "22032321";
            mhs1.Nama = "Erick";
            Mahasiswa mhs2 = mhs1;
            MessageBox.Show("Nama Mahasiswa 2 :" + mhs2.Nama);
            mhs2.Nama = "Andy";
            MessageBox.Show("Nama Mahasiswa 1 :" + mhs1.Nama);
}
      
      5. Jalankan programnya dengan menekan tombol F5.
      6. Ketika program dijalankan MessageBox pertama akan mencetak “Nama Mahasiswa 2 : Erick”, karena variable mhs2 dan mhs1 sama-sama mempunyai object referensi yang sama (mhs2 = mhs1).
      7. Kemudian ketika mhs2.Nama diubah menjadi “Andy”, maka MessageBox kedua akan mencetak “Nama Mahasiswa 1 : Andy”, karena mhs1 dan mhs2 mempunyai object referensi yang sama, ketika salah satu nilai variable diubah maka akan mempengaruhi nilai variable yang lain yang mereferensi object yang sama. Inilah yang disebut sebagai reference type.

Local Type Inference

 Hands On Labs ini membahas tentang Local Type Inference, yaitu fitur baru pada C# 3.0. Local Type Inference mirip dengan pendeklarasian variable dalam bahasa scripting seperti JavaScript. Dengan Local Type Inference maka anda tidak perlu mendeklarasikan tipe data dari variable, namun nilai variablenya harus langsung diberi nilai. Local Type Inference pada C# menggunakan keyword var.
      1. Buka project ‘Chapter3’, kemudian tambahkan tombol baru kedalam Form, set property Name=’btnInference’ dan property Text=’ Type Inference’.

      2. Double click pada tombol ‘btnInference’, kemudian tulis kode berikut:
private void btnInference_Click(object sender, EventArgs e) {
            var bil1 = 12;
            var nama = "Erick";
            var cek = true;
            var bil2 = 12.5;
            var tanggal = new DateTime(2004, 04, 05);
            MessageBox.Show(bil1.GetType().ToString());
            MessageBox.Show(nama.GetType().ToString());
            MessageBox.Show(cek.GetType().ToString());
            MessageBox.Show(bil2.GetType().ToString());
            MessageBox.Show(tanggal.GetType().ToString());
}
  
      3. Pada kode diatas dapat dilihat bahwa kita tidak perlu mendeklarasikan tipe data karena compiler akan secara otomatis dapat menentukan tipe data berdasarkan nilai yang masukan kedalam variabel tersebut.
      4. Jalankan programnya dengan menekan tombol F5.

Enumeration

Hands on Labs ini membahas tentang tipe Enumeration pada C#.
         1. Buka project ‘Chapter3’ yang sebelumnya sudah kita buat.
         2. Tambahkan tombol kedalam Form, set property Name=’ btnEnumeration’ dan Text=’ Enumeration’.

         3. Double click pada tombol ’btnEnumeration’, kemudian tambahkan kode berikut:
        enum Warna {
            Merah,Hijau,Biru,Kuning,Ungu
        }
        private void btnEnumration_Click(object sender, EventArgs e) {
            Warna enumWarna = Warna.Hijau;
            switch (enumWarna) {
                case Warna.Merah:
                    MessageBox.Show("Merah");
                    break;
                case Warna.Hijau:
                    MessageBox.Show("Hijau");
                    break;
                case Warna.Biru:
                    MessageBox.Show("Biru");
                    break;
            }
        }
         4. Pada kode diatas dapat dilihat bahwa enumeration adalah kumpulan konstanta yang nilainya tetap, dan dapat digunakan untuk memudahkan pembacaan kode program dan biasanya digunakan untuk input pilihan.
         5. Jalankan kodenya dengan menekan tombol F5.

Impicit vs Explicit Conversion

Hands on Labs ini membahas tentang perbedaan dari Implicit Conversion dan Explicit Conversion pada C#.

Implicit Conversion

      A. Buka project ‘Chapter3’ yang sudah anda buat sebelumnya.
      B. Tambahkan tombol kedalam Form, set property Nama = ‘btnImplicit’, Text = ‘Implicit Conversion’.

      C. Double click pada tombol ‘Implicit Conversion’, kemudian tambahkan kode berikut:
int bil1 = 12;
float bil2 = bil1;
MessageBox.Show("Bilangan 2 : " + bil2.ToString());
  
      D. Pada kode diatas dapat dilihat bahwa konversi dari tipe data yang range nilainya lebih kecil ke tipe data yang range nilainya lebih besar akan dilakukan secara otomatis oleh compiler, dan tidak menghasilkan runtime error, ini yang disebut dengan Implicit Conversion.

Explicit Conversion

      A. Pada tombol ‘btnImplicit’ tambahkan juga kode berikut:
float bil2 = 12.5f;
int bil1 = bil2;
MessageBox.Show("Bilangan 1 :" + bil1.ToString());
  
      B. Kode diatas akan menghasilkan runtime error karena konversi dari tipe data yang range nilainya besar ke tipe data yang range nilainya kecil tidak dapat dilakukan secara otomatis oleh compiler (implicit), jadi untuk ‘memaksa’ mengkonversikan dari tipe yang besar ke tipe yang lebih kecil anda harus menggunakan explicit conversion yaitu casting.
      C. Tulis kode berikut untuk menggunakan casting
float bil2 = 12.5f;
int bil1 = (int)bil2;
MessageBox.Show("Bilangan 1 :" + bil1.ToString());
  
      D. Kode diatas akan berhasil dijalankan karena kita sudah menggunakan casting untuk memaksa konversi dari tipe data float ke int, proses casting ini sering disebut ‘narrowing conversion’, nilai yang dimasukan kedalam int akan terpotong menjadi ‘12’ karena tipe int tidak dapat menampung tipe pecahan.

Boxing dan Unboxing

Hands on Labs ini membahas tentang proses Boxing dan Unboxing, dan penggunaan Strongly Typed Collection untuk mengatasi masalah performace degradation akibat proses Boxing dan Unboxing.
           1. Buka project ‘Chapter3’ yang sudah anda buat sebelumnya.
           2. Tambahkan tombol kedalam Form, set property Name=’btnBoxing’, Text=’BoxingUnboxing’.

           3. Tambahkan namespace System.Collection karena kita akan menggunakan class ArrayList
using System.Collections;

           4. Double click pada tombol ‘btnBoxing’, kemudian tulis kode berikut:
private void btnBoxing_Click(object sender, EventArgs e) {
            ArrayList arrBil = new ArrayList();
            arrBil.Add(12);
            arrBil.Add(32);
            arrBil.Add(24);

            for (int i = 0; i < arrBil.Count; i++) {
                int bil = Convert.ToInt32(arrBil[i]);
                MessageBox.Show(bil.ToString());
            }
}

           5. Kode diatas menunjukan proses Boxing dan Unboxing yang terjadi ketika kita menggunakan ArrayList, ketika kita menggunakan method ‘Add’ maka proses Boxing terjadi yaitu dari value type (int) menjadi reference type (object). Pada kalang for terjadi proses Unboxing yaitu dari reference type (object) menjadi value type (int) lagi. Proses ini menyebabkan performa program menjadi lambat.
           6. Pada C# 2.0 kita dapat menggunakan Strongly Typed Collection (Generic) untuk mengatasi  masalah ini. Anda disarankan menggunakan collection List<T> (di dalam namespace System.Collection.Generic) yang strongly typed daripada ArrayList karena List<T> tidak menggunakan proses Boxing dan Unboxing.
           7. Untuk menggunakan List<T> tulis kode berikut:
private void btnBoxing_Click(object senderEventArgs e) {
            List<stringobjNama = new List<string>();
            objNama.Add("erick");
            objNama.Add("wely");
            objNama.Add("rully");

            foreach (string nama in objNama) {
                MessageBox.Show(nama);
            }
}




Lihat yang lainnya juga yukk :)