Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
UNIT VI
MENGGUNAKAN CLASS
Nama
NIM
: Ridho Pratama
: 12/329855/TK/39089
BAB I PENDAHULUAN
Tujuan Praktikum
Membangun aplikasi Windows Store
Membuat class dan menginstankan objek
Menggunakan data dan method yang bersifat non-static
Menggunakan data dan method yang bersifat static
Menampilkan data di dalam class ke dalam XAML
Dasar Teori
Class merupakan cetak biru (blueprint) atau template dari objek dengan kata lain class
merupakan representasi abstrak. Suatu class dapat berisi property, field, method dan event
dari suatu objek yang disebut members dari suatu class. Pada C#, objek lebih dikenal sebagai
instance class. Objek ini dapat digunakan untuk mendefinisikan method dan variable.
Dalam .net semua class dasar dikelompokkan kedalam Namespace.
Sebagai contoh suatu kelas kalkulator yang megandung data bilangan1 dan bilangan2
dan memiliki fungsi untuk mengakses data tersebut, seperti : inisialisasi(), penjumlahan(),
pengurangan(), perkalian() dan pembagian(). Data dan fungsi yang berada dalam sebuah
class dinamakan anggota. Secara lebih khusus , data yang terletak dalam kelas dinamakan
anggota data dan fungsi yang berada dalam kelas disebut anggota fungsi atau fungsi anggota
atau terkadang disebut metode.
BAB II
PEMBAHASAN
Pada sub latihan akan dibuat class BankAccount yang berisikan account number, account
balance, dan account type dengan access modifier public. Untuk tipe datanya disesuaikan
tergantung yang diinginkan. Dan selanjutnya kita akan masuk ke User Interface dari
program ini. Ditambahkan 3 buah text blok untuk masing-masing account.
BankAccount.cs
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace CreateAccount
{
struct BankAccount
{
public long accNo;
public decimal accBal;
public AccountType accType;
}
}
Untuk di compile, class tersebut berhasil. Pada screenshot terlihat terdapat tiga buah text
objek.
Dan untuk selanjutnya untuk struct akan diganti dengan class. Sehingga terjadi kegagalan
saat di compile. Lalu buka file CreateAccount.cs. Terlihat kegagalan didapat karena
BankAccount masih bertipe data struct, deklarasi variabel created, membuat nilai (value)
dari BankAccount (pada stack). Namun ketika BankAccount menjadi sebuah class,
deklarasi variabel created tidak membuat nilai dari BankAccount. Berikut penambahan
kode yang dilakukan :
create account
namespace CreateAccount
{
class CreateAccount
{
public static BankAccount newBankAccount()
{
BankAccount created = new BankAccount();
created.accNo = 123; //error di sini
created.accBal = 3000000;
created.accType = AccountType.Checking;
return created;
}
}
}
Bank account
namespace CreateAccount
{
class BankAccount
{
public long accNo;
public decimal accBal;
public AccountType accType;
}
}
Create Account
namespace CreateAccount
{
class CreateAccount
{
public static BankAccount newBankAccount()
{
BankAccount created = new BankAccount();
//created.accNo = 123;
//created.accBal = 3000000;
//created.accType = AccountType.Checking;
created.Populate(123, 3000000);
return created;
}
}
}
Bank Account
namespace CreateAccount
{
class BankAccount
{
public void Populate(long number, decimal balance)
{
accNo = number;
accBal = balance;
accType = AccountType.Checking;
}
public long Number()
{
return accNo;
}
public decimal Balance()
{
return accBal;
}
public AccountType Type()
{
return accType;
}
Main Page
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
BankAccount created = CreateAccount.newBankAccount();
accno.Text = created.Number().ToString();
accbal.Text = created.Balance().ToString();
acctype.Text = created.Type().ToString();
}
}
Analisis
Pada newBankAccount ditambahkan kode setelah kalimat komentar. Namun pada saat di
compile terjadi kegagalan yang disebabkan adanya tiga kalimat pada class MainPage yang
mengakses secara langsung ke bagian BankAccount. Sehingga diperlukan penambahan tiga
buah method ke BankAccount yang bersifat public yang mengembalikan nilai dari tiga field
tadi. Selanjutnya ditambahkan method Number yang dimana method ini akan
mengembalikan nilai-nilai pada tipe long, decimal, AccountType dan tidak memerlukan
parameter. Pada MainPage.xaml.cs, tipe data pada accno,accbal dan acctype diubah ke string.
Dan hasil screenshot sama dengan yang sebelumnya.
ScreenShot saat program dijalankan :
Create Account
namespace CreateAccount
{
class CreateAccount
{
public static BankAccount newBankAccount()
{
BankAccount created = new BankAccount();
//created.accNo = 123;
//created.accBal = 3000000;
//created.accType = AccountType.Checking;
created.Populate(123, 3000000);
return created;
}
}
}
Bank Account
namespace CreateAccount
{
class BankAccount
{
public void Populate(long number, decimal balance)
{
accNo = number;
accBal = balance;
accType = AccountType.Checking;
}
public string Number()
{
return accNo.ToString();
}
public string Balance()
{
return accBal.ToString();
}
Main Page
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
BankAccount created = CreateAccount.newBankAccount();
accno.Text = created.Number();
accbal.Text = created.Balance();
acctype.Text = created.Type();
Analisis
Yang membedakan pada sub latihan ini akan dilakukan enkapsulasi pada ToString sehingga
dimasukkan kedalam class sehingga tidak dipanggil diluar kode.
ScreenShot saat program dijalankan :
Create Account
namespace CreateAccount
{
class CreateAccount
{
public static BankAccount newBankAccount()
{
BankAccount created = new BankAccount();
//created.accNo = 123;
//created.accBal = 3000000;
//created.accType = AccountType.Checking;
created.Populate(123, 3000000);
return created;
}
}
}
Bank Account
namespace CreateAccount
{
class BankAccount
{
public void Populate(long number, decimal balance)
{
accNo = number;
accBal = balance;
accType = AccountType.Checking;
}
public string Number()
{
return accNo.ToString();
}
public string Balance()
{
return accBal.ToString();
}
public string Type()
{
return accType.ToString();
}
public long accNo { get; set; }
public decimal accBal { get; set; }
public AccountType accType { get; set; }
}
}
Main Page.xaml
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<ListView x:Name="BankAccList" HorizontalAlignment="Left" Height="215"
Margin="110,101,0,0" VerticalAlignment="Top" Width="1091">
<ListView.ItemTemplate>
<DataTemplate>
<Grid DataContext="{Binding}" Margin="0,266,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="363"/>
<ColumnDefinition Width="363"/>
<ColumnDefinition Width="363"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="accno" FontSize="36"
Text="{Binding accNo}" Grid.Column="0"/>
<TextBlock x:Name="accbal" FontSize="36"
Analisis
Pada sub latihan ini ditambahkan bracket DataTemplate. Dan diharapkan pada saat di
compile, dapat ditekan pada bagian UI untuk bagian checking maupun deposit.
Untuk compile pertama, sesuai dengan modul akan gagal pada MainPage.xaml.cs
dikarenakan control accno, accbal, dan acctype sudah tidak ada lagi pada MainPage.xaml.
sehingga harus mengganti kode pada MainPage.xaml.cs menjadi sebuag daftar. Selanjutnya
pada class BankAccount ditambahkan getter+setter pada tipe data sekaligus yang sebelumnya
private,diubah lagi menjadi public. Fungsi getter + setter ialah untuk meneruskan variabel ke
dalam seluruh kelas yang ada dalam namespace CreateAccount. Pada bagian ini compile
berhasil sehingga dilanjutkan dengan menambah fungsi add dimana nantinya berfungsi untuk
deposit.
ScreenShot saat program dijalankan :
Create Account
namespace CreateAccount
{
class CreateAccount
{
public static BankAccount newBankAccount(decimal balance)
{
BankAccount created = new BankAccount();
//created.accNo = 123;
//created.accBal = 3000000;
//created.accType = AccountType.Checking;
created.Populate(balance); //sebelumnya:
//created.Populate(123,balance)
return created;
}
}
Bank Account
namespace CreateAccount
{
class BankAccount
{
public void Populate(decimal balance)
{
accNo = NextNumber;
accBal = balance;
accType = AccountType.Checking;
}
public string Number
{
get
{
return accNo.ToString();
}
set
{
}
}
public string Balance
{
get
{
return accBal.ToString();
}
set
{
}
}
public string Type
{
get
{
return accType.ToString();
}
set
{
}
}
public static long NextNumber
{
get
{
return nextAccNo++;
}
set
{
}
}
public long accNo { get; set; }
public decimal accBal { get; set; }
public AccountType accType { get; set; }
Analisis
Pada percobaan ini, kita akan mengubah setiap kode yang terdapat di project solution
bernama UniqueNumbers.sln. Dimana nantinya kita akan memasukkan setiap nomor yang
unik dan balance sesuai keinginan user.
Pada bagian awal kode, ditambahkan method yaitu public static dengan tipe data long dengan
nama nextAccNo. Hal ini nantinya akan berguna untuk fungsi accNo. Setelah itu
ditambahkan method bersifat public static yaitu NextNumber ke class BankAccount. Method
ini akan mengembalikan sebuah nilai bertipe long dan tidak meminta parameter. Karena hal
ini, method public yang telah dibuat di awal, diubah ke private begitu juga dengan accNo,
accBal, dan accType.
Pada method populate, long number yang ada di hapus dan untuk accNo diubah menjadi
NextNumber agar langsung menuju ke penomoran selanjutnya setelah user berhasil
memasukkan nilai balance (accBal). Namun terdapat error pada saat method populate diubah.
Sehingga diperlukan perubahan kode sesuai dengan yang tertera pada modul. Agar sesuai
dengan keinginan user agar tombol dapat diklik, digunakan fungsi Button_Click yang
nantinya pada UI, tombol dapat ditekan. Tentu saja untuk kode didalamnya diatur agar
penomoran benar.
Satu hal lagi yang masih error ialah amount balance yang ketika dimasukkan ke dalam
textbox tidak terbaca. Aplikasi akan terus mengeluarkan angka sebanyak 3000000 terus
menerus dikarenakan kode sebelumnya disetting nilainya 3000000. Sehingga diperlukan
perubahan kode pada MainPage.xaml.cs pada fungsi Button_Click yaitu parsing tipe data
string yang sebelumnya sehingga menjadi decimal. Hal ini dilakukan karena text pada
textbox masih bertipe string. Jika ingin memasukkan sendiri berupa angka. Maka kode
diubah seperti yang tertera pada modul. Setelah itu jalankan program dan pastikan setiap
account yang ditambah mempunyai nomor yang unik dan balance yang dimasukkan sesuai
keinginan user
ScreenShot saat program dijalankan :
Latihan
MENGGUNAKAN
VARIABEL
BERTIPE
OBJECT
UNTUK
Bank Account
namespace CreateAccount
{
class BankAccount
{
public void Populate(decimal balance)
{
accNo = NextNumber;
accBal = balance;
accType = AccountType.Checking;
}
public string Number
{
get
{
return accNo.ToString();
}
set
{
}
}
public string Balance
{
get
return accBal.ToString();
}
set
{
}
}
public string Type
{
get
{
return accType.ToString();
}
set
{
}
}
public static long NextNumber
{
get
{
return nextAccNo++;
}
set
{
}
}
private long accNo { get; set; }
public decimal accBal {get; set;}
private AccountType accType { get; set; }
private static long nextAccNo { get; set; }
//accno.Text = created.Number();
//accbal.Text = created.Balance() ;
//acctype.Text = created.Type();
//bankAccount.Add(new BankAccount { accNo = 124, accBal = 5000000, accType =
AccountType.Deposit });
Analisis
Pada method deposit, ditambahkan fungsi untuk mengambil sejumlah deposit yang ingin kita
tambahkan ke dalam BankAccount. Nilai deposit akan ditambahkan sesuai jumlah yang kita
masukkan pada TextBox yang sama. Penambahan dilakukan antara nilai balance yang lama
(oldamount) dengan yang baru (amount). Namun terdapat error dikarenakan variabel accBal
masih bertipe privat. Sehingga harus diganti menjadi public.
ScreenShot saat program dijalankan :
Analisis
Berikutnya pada method withdraw, fungsi yang ditambahkan merupakan kebalikan dari
fungsi deposito. Jadi hamper sebagian kode sama dengan kode deposito. Namun untuk
menghindari adanya penarikan jumlah uang berlebih dibandingkan dengan saldo yang ada,
dilakuan pengecekan apakah saldo bernilai negative setelah ditarik atau tidak. Jika iya maka
akan muncul pesan bahwa saldo tidak mencukupi. Pada source code dapat dilihat oldamount
-= amount; dan juga perhitungan terjadi setelahnya dengan throw new Exception agar
nantinya jika nilai negative akan dicatch dan muncul pesan Insufficient Funds.
ScreenShot saat program dijalankan :
JAWABAN PERTANYAAN
1. Apakah perbedaan antara class dan struct.
Jawaban :
-
Class adalah sesuatu yang mempunyai data (sifat) dan fungsi (kelakuan) untuk
mendeskripsikan suatu objek.
Struct mendefinisikan tipe data dan memberitahukan kepada Visual C++ untuk
memperlakukan koleksi tipe data dasar sebagai satu kesatuan tipe data, yang darinya
dapat mendefinisikan variabel dan array variabel.
class tanpa fungsi hampir serupa dengan structure, di class dapat memasukkan fungsi, namun
di structure tidak dapat memasukkan fungsi.
2. Apakah yang dimaksud dengan access modifier dan kemukakan berbagai jenis access
modifier yang terdapat pada C# beserta penjelasannya. (public private dan sebagainya)
Jawaban :
Access modifier merupakan keyword yang digunakan untuk menspesifikasikan akses dari
suatu anggota ada tipe dari class dan juga dapat menentukan ruang lingkup visibilitas untuk
variabel dan metode.
Berikut jenis-jenis access modifier :
-
Private = Access terbatas dalam definisi class. Akses ini default apabila tidak ada
deklarasi.
Protected = Access terbatas pada class yang diinheritance dari class tersebut
Internal = Access terbatas secara eksklusif pada definisi class dalam project assembly
saat itu
Private : berguna untuk memberikan hak akses data hanya kepada kelas yang
bersangkutan saja. Artinya kelas-kelas turunan ataupun lingkungan luar di dalam
program tidak diizinkan untuk mengakses data tersebut
Public : berfungsi untuk memberikan hak akses secara umum (public) kepada kelaskelas turunannya maupun terhadap lingkungan luar di dalam program.
http://yohandamandala.blogspot.com/2009/11/class-di-c.html
http://fathulazi.blogspot.com/2012/11/oop-di-pemograman-c.html
http://www.galih-afm.com/2012/08/membuat-program-class-sederhana-pada-c.html
http://netindonesia.net/blogs/itong/archive/2008/10/29/belajar-c-pemrograman-berorientasiobjek.aspx
http://id.answers.yahoo.com/question/index?qid=20091015185012AAN4VT7
http://ainkhina.blogspot.com/2010/05/struct-pada-c.html
BAB V LAMPIRAN
Modul 6 : Menggunakan class
Latihan 1 : Membuat dan Menggunakan Class
Untuk mengubah BankAccount dari tipe data struct menjadi sebuah class
gambar 1 mengubah BankAccount dari tipe data struct menjadi sebuah class
Jika gagal