Anda di halaman 1dari 6

Chapter 3 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 1. Buka project Chapter3 yang sudah anda buat sebelumnya. 2. Tambahkan tombol kedalam Form, set property Nama = btnImplicit, Text = Implicit Conversion.

3. Double click pada tombol Implicit Conversion, kemudian tambahkan kode berikut: int bil1 = 12; float bil2 = bil1; MessageBox.Show("Bilangan 2 : " + bil2.ToString()); 4. 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 1. Pada tombol btnImplicit tambahkan juga kode berikut: float bil2 = 12.5f; int bil1 = bil2; MessageBox.Show("Bilangan 1 :" + bil1.ToString());

2. 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. 3. Tulis kode berikut untuk menggunakan casting float bil2 = 12.5f; int bil1 = (int)bil2; MessageBox.Show("Bilangan 1 :" + bil1.ToString()); 4. 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 sender, EventArgs e) { List<string> objNama = new List<string>(); objNama.Add("erick"); objNama.Add("wely"); objNama.Add("rully"); foreach (string nama in objNama) { MessageBox.Show(nama); } }

Anda mungkin juga menyukai