Anda di halaman 1dari 10

LAPORAN PRAKTIKUM

PEMROGRAMAN
BERORIENTASI OBJEK
(TIF 201P)
Modul 7: Mendefinisikan dan Menggunakan Variabel Bertipe
Reference serta Mengubah Data

Nama

: Nanang Makfi Mubarok

NIM

: 38411

Tanggal Praktikum

: 27 November 2013

TEKNIK ELEKTRO & TEKNOLOGI INFORMASI


FAKULTAS TEKNIK UGM
2013

I.

PENDAHULUAN
A. Tujuan
Mampu membuat variabel referensi dan melewatkannya sebagai parameter
method
Mampu menggunakan framework sistem
Mampu mengubah nilai dari satu tipe referensi ke tipe lain
Mampu menguji sebuah variabel referensi mendukung interface yang diberikan
B. Dasar Teori
Variabel adalah suatu container yang digunakan untuk menyimpan sebuah nilai
pada suatu program dengan tipe data tertentu. Tipe variabel terdiri dari dua macam,
yaitu tipe primitif dan tipe reference. Tipe primitif adalah tipe dasar yang disediakan
oleh bahasa pemrograman C# untuk nilai tertentu yang terdiri dari tipe byte, short,
int, long, char, float, double, uint, ushort, ulong, bool. Tipe reference adalah tipe yang
dikembangkan dari tipe dasar dengan tujuan memenuhi kebutuhan tipe data
kompleks dengan mereferensi ke sebuah nilai. Tipe reference terdiri dari array, class,
interface, delegate.
Berikut adalah perbedaan tipe primitif dan tipe reference
Tipe Primitif
Tipe Reference
Isi Variabel
Nilai
Referensi
Disimpan dalam
stack
Heap
Inisialisasi
0, fase, \0
Null
Assignment
Menduplikasi nilai
Menduplikasi referensi
Contoh
Int i=20;
String S=halo
Berikut ini adalah macam tipe reference:
Dialokasikan di Heap Memory
Garbage Collected
Diturunkan dari System.Object namespace
Satu object dapat di referensi oleh lebih dari satu variabel
Perubahan nilai pada object referensi yang sama akan mempengaruhi nilai pada
object lainnya.
Mirip tipe pointer di C++
Class types
base class dari semua class : Object
unicode strings : string
user defined types : class C { ...... }
Interface types
user defined types : interface I { ...... }
Array types
single dan multidimensional : int[] dan int[,]
Delegate types
delegate T D{ ........... }

II. PEMBAHASAN
A. Analisis Hasil Praktikum
Latihan 1 : Menambahkan sebuah method instance dengan dua parameter
Pada latihan 1 ini akan dikembangkan class BankAccount yang telah dibuat
sebelumnya menjadi ada tambahan method yang berfungsi untuk mentransfer uang
dari account tertentu ke salah satu account
Untuk mengimplementasi method transfer
Pada MainPage.xaml ditambahkan properti Selection Mode yang berfungsi untuk
melakukan pemilihan daftar akun lebih dari satu. Berikut adalah kodenya:
<ListView SelectionMode="Multiple" x:Name="BankAccList" ......... >
Class MainPage
public sealed partial class MainPage : Page
{
List<BankAccount> bankAccount = new List<BankAccount>();
public MainPage()
{
this.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
BankAccount created =
CreateAccount.newBankAccount(decimal.Parse(balanceTextBox.Text));
bankAccount.Add(created);
BankAccList.ItemsSource = null;
BankAccList.ItemsSource = bankAccount;
}
private void Deposit_Button_Click(object sender, RoutedEventArgs e)
{
}
private void Withdraw_Button_Click(object sender, RoutedEventArgs e)
{
}
private void Deposit(BankAccount DepositAccount, decimal amount)
{
BankAccount SelectedItemFromList = DepositAccount;
decimal oldamount = decimal.Parse(SelectedItemFromList.Balance);
amount += oldamount;

bankAccount.First(item => item.Number ==


SelectedItemFromList.Number).accBal = amount;
BankAccList.ItemsSource = null;
BankAccList.ItemsSource = bankAccount;
}
private void Withdraw(BankAccount WithdrawAccount, decimal amount)
{
try
{
BankAccount SelectedItemFromList = WithdrawAccount;
decimal oldamount = decimal.Parse(SelectedItemFromList.Balance);
oldamount -= amount;
if (oldamount < 0)
{
throw new Exception();
}
bankAccount.First(item => item.Number ==
SelectedItemFromList.Number).accBal = oldamount;
BankAccList.ItemsSource = null;
BankAccList.ItemsSource = bankAccount;
}
catch
{
balanceTextBox.Text = "Insufficient funds!";
}
}
private void Transfer_Button_Click(object sender, RoutedEventArgs e)
{
if (selectedBankAccount.Count == 2)
{
Deposit(selectedBankAccount[0],
decimal.Parse(balanceTextBox.Text));
Withdraw(selectedBankAccount[1],
decimal.Parse(balanceTextBox.Text));
}
else
{
balanceTextBox.Text = "You have not select the items to transfer!";
}
}

List<BankAccount> selectedBankAccount = new List<BankAccount>();


private void BankAccList_SelectionChanged(object sender,
SelectionChangedEventArgs e)
{
if (BankAccList.SelectedIndex != -1)
{
if (selectedBankAccount.Count >= 2)
{
selectedBankAccount = new List<BankAccount>();
}
BankAccount currentBankAccount = e.AddedItems[0] as
BankAccount;
selectedBankAccount.Add(currentBankAccount);
}
}
}
Pada program ini, ada beberapa kode yang diubah untuk menyesuaikan dengan
fungsi yang dikehendaki. Yang pertama adanya penambahan objek
selectedBankAccount yang berfungsi untuk membaca item yang dipilih pengguna
pada method BankAccList_SelectionChanged. Lalu adanya pemindahan kode
method dari method Deposit_Button_Click dan Withdraw_button_Click ke dalam
method Deposit dan Withdraw. Hal ini berfungsi agar kedua method dapat
digunakan secara bersamaan sehingga terjadi proses transfer saldo. Setelah itu,
ditambahkan perameter try and catch yang berfungsi agar tidak ada nilai negatif
pada suatu akun. Lalu tambahkan method Transfer_Button_Click yang berfungsi
untuk mendeteksi apakah akun yang terpilih ada 2, yaitu akun asal dan akun
tujuan. Jika yang terpilih sudah 2, maka akan dilakukan deposito pada akun
pertama dan akun kedua akan dilakukan penarikan.
Latihan 2 : Membalik sebuah string
Untuk membuat method pembalik
Pada program ini ditambahkan method pembalik yang berfungsi untuk
membalikkan data yang bersifat string. Berikut source code nya:
public static void Pembalik(ref string s)
{
string sBalik = "";
for (int k = s.Length - 1; k >= 0; k--)
sBalik = sBalik + s[k];
s = sBalik;
}

Untuk menguji method pembalik


Pada program ini juga ditambahkan tombol yang akan berfungsi memanggil
method Pembalik didalam class Guna agar data string dari inputan pengguna
dapat dibalik. Berikut source code method tombol tersebut:
private void BalikSekarang_Click(object sender, RoutedEventArgs e)
{
string pesan = stringDibalik.Text;
Guna.Pembalik(ref pesan);
hasilStringDibalik.Text = pesan;
}

Latihan 3 : Menguji implementasi dari sebuah interface


Untuk membuat method IsitFormattable
Pada program ini ditambahkan method IsitFormattable pada class Utils yang akan
mengambil satu dari tipe objek dan menguji apakah parameter
mengimplementasikan interface System.Iformattable. Jika objek tidak memiliki
interface ini, maka method akan mengembalikan nilai true dan jika memiliki
interface maka akan mengembalikan nilai false. Berikut adalah kodenya:
public static bool IsItFormattable(object x)
{
if (x is IFormattable)
return true;
else
return false;
}
Untuk menguji method IsitFormattable
Pada program ini akan diuji method IsitFormattable pada class Utils. Maka pada
class MainPage ditambahkan method OnNavigatedTo. Pada method ini
ditambahkan variabel bertipe int, ulong dan string. Pada tipe data int dan ulong,
akan mengimplementasikan interface System.IFormattable sehingga akan bernilai
True. Sedangkan pada tipe data string, tidak dapat mengimplementasikan
interface ini.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
int i = 0;
ulong ul = 0;
string s = "Test";
intFormattable.Text = String.Format("int: {0}", Utils.IsItFormattable(i));
ulongFormattable.Text = String.Format("ulong: {0}",
Utils.IsItFormattable(ul));
stringFormattable.Text = String.Format("String: {0}",
Utils.IsItFormattable(s));
}

B. Jawaban Pertanyaan
1. Apakah keunggulan dan kelemahan menggunakan interface dibanding
menggunakan pewarisan/inheritance.
Keunggulan interface
Dapat melakukan penurunan dari multiple interface
Loose coupling
Kelemahan interface
Tidak memiliki access identifier
2. Buat sebuah tabel perbedaan antara data value dan reference plus keunggulan dan
kekurangannya
Tipe Value
Tipe Reference
Perbedaan
Variabel yang berubah
Variabel reference yang
pada suatu method yang
berubah pada suatu method
dipanggil, tidak akan
yang dipanggil akan
mengubah variabel yang
mengubah variabel pada
ada pada method Main
method Main
Disimpan didalam stack
Disimpan dalam heap
Nilai tidak boleh null
Nilai boleh null
Keunggulan
Pengembang dapat
Cocok digunakan pada
menentukan sendiri
variabel yang akan
variabel yang akan
digunakan pada method
digunakan pada methodlain yang membutuhkan
method panggilan dan
variabel memiliki nilai hasil
variabel untuk menangkap operasi pada suatu method
nilai keluaran method
spesifik
Kekuarangan
Jika akan mengembalikan
Jika variabel bernilai
suatu nilai, tipe data
konstan dan digunakan
keluaran harus
pada method-method yang
dispesifikasikan dan
berbeda maka tipe
menggunakan sintaks
reference ini tidak cocok
return
digunakan.

III. PENUTUP
Kesinpulan:
Tipe reference adalah tipe yang dikembangkan dari tipe dasar dengan tujuan
memenuhi kebutuhan tipe data kompleks dengan mereferensi ke sebuah nilai
Properti Selection Mode yang berfungsi untuk melakukan pemilihan daftar akun
lebih dari satu
System.IFormattable mendefinisikan sebuah method untuk menformat nilai
suatu objek menjadi representasi string
IV. DAFTAR PUSTAKA
- Variabel, Operator dan Ekspresi.
http://zagal99.files.wordpress.com/2008/03/modul-a-c-variabel-operatorekpresi.pdf diakses tanggal 10 Desember 2013
- C# Ekspresi, Tipe Data dan Variable. http://sangkil.blogspot.com/2013/01/2-cekspresi-tipe-data-dan-variable.html diakses tanggal 10 Desember 2013
- IFormattable. http://tutorials.csharp-online.net/IFormattable diakses tanggal 10
Desember 2013

V.

LAMPIRAN
Latihan 1 : Menambahkan sebuah method instance dengan dua parameter

Latihan 2 : Membalik sebuah string

Latihan 3 : Menguji implementasi dari sebuah interface

Anda mungkin juga menyukai