Anda di halaman 1dari 18

Bab I Pendahuluan

Praktikum unit 6 ini adalah praktikum mengenai membuat dan menggunakan class. Praktikum modul 6 ini memiliki beberapa tujuan yaitu :
Membuat class dan menginstankan object Menggunakan data dan method yang bersifat non static Menggunakan data dan method yang bersifat static

Class adalah sekelompok method dan variabel yang terkait. Sebuah class menjelaskan hal hal ini dan dalam kebanyakan kasus instance dari class perlu dibuat. Instance class disebut juga dengan objek. Object ini dapat digunakan untuk mendefinisikan method dan variable. Berikut adalah contoh penggunaan class :
using System; namespace ConsoleApplication1 { classProgram { staticvoid Main(string[] args) { Car car; car = newCar("Red"); Console.WriteLine(car.Describe()); car = newCar("Green"); Console.WriteLine(car.Describe()); Console.ReadLine(); } } classCar { privatestring color; public Car(string color) { this.color = color; } publicstring Describe() { return"This car is " + Color; } publicstring Color { get { return color; } set { color = value; } } } }

Pada kode diatas dapat dilihat bahwa kita mempunyai 2 class yaitu : class Program dan class Car yang merupakan class yang baru didefinisikan. Class ini dideklarasikan pada file yang sama dengan aplikasi utama. Pada class Car didefinisikan variabel yang bernama color yang digunakan untuk menyimpan warna dari mobil kita. Dideklarasikan
Bimo Adi Pradono 31045 www.digizoneku.com

sebagai private yang mana jika akan mengakses variabel luar harus menggunakan sebuah property. Property dari color didefinisikan di akhir class. Pada class Car didefinisikan constructor. Menggunakan parameter yang mengijinkan kita menginisialisasi object Car dengan sebuah warna. Method Descibe() mengijinkan untuk menulis warna dari mobil .

Bab II Pembahasan
Latihan 1 : Membuat dan Menggunakan Class
Pada latihan ini praktikan akan menggunakan account yang dibuat pada modul sebelumnya dan mengubahnya menjadi sebuah class. Anda akan mendeklarasikan data membernya sebagai private namun memberikan akses ke data dengan cara menggunakan method public dan non static. Anda akan membuat uji ketahanan yang nantinya akan membuat sebuah objek account dan mengembangkannya dengan account number dan balance yang telah ditentukan oleh user. Akhirnya, anda akan menampilkan datanya pada account
Untuk mengubah BankAccount dari tipe data struct menjadi sebuah class Berikut ini adalah kode untuk bagian ini : Kode untuk class BankAccount
classBankAccount { publiclong accNo; publicdecimal accBal; publicAccountType accType; }

Kode untuk class AccountType


enumAccountType

Bimo Adi Pradono 31045

www.digizoneku.com

{ Checking, Deposit }

Kode untuk class CreateAccount


using System;

classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts); BankAccount freds = NewBankAccount(); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount(); Console.Write("Masukkan nomor akun: "); long number = long.Parse(Console.ReadLine()); Console.Write("Masukkan saldo akun!: "); decimal balance = decimal.Parse(Console.ReadLine()); //created.accNo = number; //created.accBal = balance; //created.accType = AccountType.Checking; created.Populate(number, balance); return created; } staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.Number()); Console.WriteLine("Jumlah saldo akun {0}", toWrite.Balance()); Console.WriteLine("Tipe Akun adalah {0}", toWrite.Type()); } }

Kode di atas terdiri dari 3 class yaitu class BankAccount, AccountType dan CreateAccount. Sebelumnya class BankAccount berupa tipe data struct, dalam bagian ini class BankAccount diubah menjadi class yang membuat BankAccount reference. Pada class AccountType terdapat variable bertipe data enum yang terdiri dari Checking dan Deposit. Pada class CreateAccount terdapat method Main() yang berisi object dari class BankAccount yaitu berts dan freds. Kedua object diatas diset bernilai hasil dari method NewBankAccount() pada method main juga ada pemanggilan method Write dengan parameter berupa masing masing object. Selain method Main juga ada method NewBank Account(). Method ini diawali dengan membuat objek BankAccount yang bernama created. Selanjutnya ada perintah untuk agar user memasukkan nomor akun dan saldo akun. Input dari user akan diubah dari tipe data string ke long dan decimal. Selanjutnya memasukkan input dari user ke dalam variabel yang ada di class BankAccount yang diakses melalui objek created. Method mengembalikan nilai dari variabel created. Selanjutnya di class CreateAccount juga terdapat method Write yang digunakan untuk menulis kembali semua yang telah diinput oleh user. Ketika pada class BankAccount diubah Bimo Adi Pradono 31045 www.digizoneku.com

dari tipe struct ke tipe class terjadi kesalahan. Hal ini dikarenakan ketika BankAccount masih bertipe data struct, deklarasi variabel created memuat nilai dari BankAccount (pada stack). Namun ketika BankAccount menjadi sebuah class, deklarasi variabel created tidak memuat nilai Bank Account tapi memuat reference dari BankAccount. Berikut adalah hasil untuk kode diatas :

Untuk mengenkapsulasi class BankAccount Berikut adalah kode untuk bagian ini : Kode untuk class BankAccount

classBankAccount { publicvoid Populate(long number, decimal balance) { accNo = number; accBal = balance; accType = AccountType.Checking; } publiclong Number() { return accNo; } publicdecimal Balance() { return accBal; } publicAccountType Type() { return accType; } privatelong accNo; privatedecimal accBal; privateAccountType accType; }

Kode untuk class AccountType


enumAccountType { Checking, Deposit }

Kode untuk class CreateAccount


using System;

classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts);

Bimo Adi Pradono 31045

www.digizoneku.com

BankAccount freds = NewBankAccount(); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount(); Console.Write("Masukkan nomor akun: "); long number = long.Parse(Console.ReadLine()); Console.Write("Masukkan saldo akun : "); decimal balance = decimal.Parse(Console.ReadLine()); created.accNo = number; created.accBal = balance; created.accType = AccountType.Checking; return created; } staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.accNo); Console.WriteLine("Jumlah saldo akun {0}", toWrite.accBal); Console.WriteLine("Tipe Akun adalah {0}", toWrite.accType.ToString()); Console.ReadLine(); } }

Perbedaan kode diatas dengan kode sebelumnya yaitu pada kode diatas yaitu pada class BankAccount. Pada class ini variabel yang tadinya betipe public diubah menjadi private. Dengan begitu maka hanya method BankAccount yang bisa mengakses data member BankAccount yang private. Selain itu dalam class BankAccount dibuat method Populate dengan parameter long number, decimal balance.Pada method Populate dideklarasikan nilai accNo adalah nilai dari number, nilai accBal adalah nilai dari balance, dan nilai accType adalah checking. Selain itu dideklarasikan juga method Number() yang mengembalikan nilai accNo. Method Balance() yang mengembalikan nilai accBal. Perbedaan selanjutnya ada pada class CreateAccount. Pada class ini pemanggilan variabel yang ada pada class BankAccount yang tadinya bersifat public dihilangkan karena variabel tersebut tidak dapat langsung diakses karena bersifat private. Untuk mengaksesnya harus melalui method Populate dengan parameter berupa number dan balance. Hasil untuk kode diatas adalah sebagai berikut :

Untuk melakukan enkapsulasi lebih jauh pada class BankAccount Kode untuk bagian ini adalah : Kode untuk class BankAccount
classBankAccount {

Bimo Adi Pradono 31045

www.digizoneku.com

publicvoid Populate(long number, decimal balance) { accNo = number; accBal = balance; accType = AccountType.Checking; } publiclong Number() { return accNo; } publicdecimal Balance() { return accBal; } publicstring Type() { return accType.ToString(); } privatelong accNo; privatedecimal accBal; privateAccountType accType; }

Kode untuk class AccountType


enumAccountType { Checking, Deposit }

Kode untuk class CreateAccount


using System;

classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts); BankAccount freds = NewBankAccount(); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount(); Console.Write("Masukkan nomor akun: "); long number = long.Parse(Console.ReadLine()); Console.Write("Masukkan saldo akun : "); decimal balance = decimal.Parse(Console.ReadLine()); created.accNo = number; created.accBal = balance; created.accType = AccountType.Checking; return created; }

Bimo Adi Pradono 31045

www.digizoneku.com

staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.accNo); Console.WriteLine("Jumlah saldo akun {0}", toWrite.accBal); Console.WriteLine("Tipe Akun adalah {0}", toWrite.accType.ToString()); Console.ReadLine(); } }

Perbedaan kode untuk bagian ini dengan kode pada bagian sebelumnya adalah pada bagian class BankAccount. Pada class BankAccount method Type() diubah menjadi string agar bisa mengembalikan tipe dari account sebagai string yang sebelumnya berupa tipe enum AccountType. Berikut adalah hasil untuk kode diatas :

Latihan 2 : Menghasilkan Account Number


Pada latihan kali ini praktikan akan memodifikasi class BankAccount dari latihan 1 sehingga bisa menghasilkan account number yang unik. Anda akan melakukan hal ini dengan menggunakan variabel static pada class di BankAccount dan method yang menaikkan dan mengembalikan nilai dari variabel tersebut. Ketika uji ketahanan membuat account baru, maka akan memanggil method tersebut untuk menghasilkan account number. Kemudian nantinya akan memanggil method dari class BankAccount yang nantinya akan mengatur angka dari account yang dilewatkan sebagai parameter.
Untuk memastikan setiap angka di BankAccount adalah unik Kode untuk bagian ini adalah : Kode untuk class BankAccount

classBankAccount { publicvoid Populate(long number, decimal balance) { accNo = number; accBal = balance; accType = AccountType.Checking; } publiclong Number() { return accNo; } publicdecimal Balance() { return accBal; }

Bimo Adi Pradono 31045

www.digizoneku.com

publicstring Type() { return accType.ToString(); } publicstaticlong NextNumber() { return nextAccNo++; } privatelong accNo; privatedecimal accBal; privateAccountType accType; privatestaticlong nextAccNo = 123; }

Kode untuk class AccountType


enumAccountType { Checking, Deposit }

Kode untuk class CreateAccount


using System; classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts); BankAccount freds = NewBankAccount(); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount();

long number = BankAccount.NextNumber(); Console.Write("Masukkan saldo akun!: "); decimal balance = decimal.Parse(Console.ReadLine()); created.Populate(number, balance); return created; } staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.Number()); Console.WriteLine("Jumlah saldo akun {0}", toWrite.Balance()); Console.WriteLine("Tipe Akun adalah {0}", toWrite.Type()); Console.ReadLine(); } }

Bimo Adi Pradono 31045

www.digizoneku.com

Perbedaan kode pada bagian ini dengan kode pada kode latihan 1 pada bagian terakhir adalah terletak pada class BankAccount. Pada class BankAccount terdapat pendeklarasian suatu variabel yang bernama nextAccNo yang nilainya diset bernilai 123. Selain itu pada dideklarasikan juga method NextNumber() yang berguna agar nilai dari account number bernilai unik. Di dalam method ini nilai dari nextAccNo di increment untuk mencegah account number yang sama.Perbedaan selanjutnya terletak pada class CreateAccount. Pada class ini perintah untuk memasukkan nilai account number dihilangkan dan nilai dari variabel number diset merupakan hasil dari method NextNumber(). Berikut adalah hasil dari kode diatas :

Untuk mengenkapsulasi class BankAccount lebih lanjut Kode untuk bagian ini adalah : Kode untuk class BankAccount

classBankAccount { publicvoid Populate(decimal balance) { accNo = NextNumber(); accBal = balance; accType = AccountType.Checking; } publiclong Number() { return accNo; } publicdecimal Balance() { return accBal; } publicstring Type() { return accType.ToString(); } publicstaticlong NextNumber() { return nextAccNo++; } privatelong accNo; privatedecimal accBal; privateAccountType accType; privatestaticlong nextAccNo = 123; }

Kode untuk class AccountType


enumAccountType { Checking, Deposit

Bimo Adi Pradono 31045

www.digizoneku.com

Kode untuk class CreateAccount


using System; classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts); BankAccount freds = NewBankAccount(); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount(); Console.Write("Masukkan saldo akun!: "); decimal balance = decimal.Parse(Console.ReadLine()); created.Populate(balance); return created; } staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.Number()); Console.WriteLine("Jumlah saldo akun {0}", toWrite.Balance()); Console.WriteLine("Tipe Akun adalah {0}", toWrite.Type()); Console.ReadLine(); } }

Perbedaan kode diatas dengan kode sebelumnya ada pada class BankAccount. Pada class tersebut method Populate memiliki parameter berupa decimal balance. Sebelumnya method Populate memiliki parameter long number dan decimal balance. Dengan hanya memiliki 1 parameter, itu berarti nilai variable accNo yang tadinya adalah nilai dari variabel number yang merupakan parameter dari method Populate menjadi pemanggilan method NextNumber(). Perbedaan kedua ada pada class CreateAccount. Pada class ini pemanggilan method Populate dengan parameter balance. Berikut adalah hasil dari kode diatas :

Latihan 3 : Menambahkan Lebih Banyak Method Bersifat Public


Bimo Adi Pradono 31045 www.digizoneku.com

Pada latihan kali ini, Anda akan menambahkan dua buah method ke class Account : Withdraw dan Deposit. Withdraw akan mengambil parameter bertipe decimal dan akan mengurangi jumlah yang diberikan oleh balance. Namun, sebelum memotongnya parameter tersebut akan melakukan pengecekan terlebih dahulu untuk memastikan bahwa dana yang dibutuhkan tersedia, karena account tidak mengijinkan untuk kondisi pengambilan yang berlebihan. Parameter ini akan mengembalikan nilai bool yang member indikasi apakah pengambilan dana sudah berhasil. Deposit juga akan mengambil nilai parameter bertipe decimal yang nilainya akan ditambahkan ke balance pada account. Parameter ini akan memberikan nilai terbaru dari balance
Untuk menambahkan method Deposit ke class BankAccount Kode untuk bagian ini adalah : Kode untuk class BankAccount
classBankAccount { publicvoid Populate(decimal balance) { accNo = NextNumber(); accBal = balance; accType = AccountType.Checking; } publiclong Number() { return accNo; } publicdecimal Balance() { return accBal; } publicstring Type() { return accType.ToString(); } privatestaticlong NextNumber() { return nextAccNo++; } publicdecimal Deposit(decimal amount) { accBal += amount; return accBal; } privatelong accNo; privatedecimal accBal; privateAccountType accType; privatestaticlong nextAccNo = 123; }

Kode untuk class AccountType


enumAccountType { Checking, Deposit }

Kode untuk class CreateAccount www.digizoneku.com

Bimo Adi Pradono 31045

using System; classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts); TestDeposit(berts); Write(berts); BankAccount freds = NewBankAccount(); Write(freds); TestDeposit(freds); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount(); Console.Write("Masukkan saldo akun!: "); decimal balance = decimal.Parse(Console.ReadLine()); created.Populate(balance); return created; }

publicstaticvoid TestDeposit(BankAccount acc) { Console.Write("Enter amount to deposit :"); decimal amount = decimal.Parse(Console.ReadLine()); acc.Deposit(amount); } staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.Number()); Console.WriteLine("Jumlah saldo akun {0}", toWrite.Balance()); Console.WriteLine("Tipe Akun adalah {0}", toWrite.Type()); Console.ReadLine(); } }

Kode diatas memiliki perbedaan dengan kode yang ada pada kode bagian akhir di latihan 2. Perbedaan yang pertama adalah ada pada class BankAccount. Class BankAccount ditambahkan method Deposit dengan parameter decimal amount. Isi dari method Deposit adalah menambahkan nilai dari accBal dengan nilai amount yang dimasukkan oleh user. Method ini mengembalikan nilai dari accBal. Perbedaan yang kedua terletak di class CreateAccount. Pada class ini dibuat method TestDeposit dengan tipe static void. Parameter dari method ini adalah BankAccount acc. Method ini berisikan perintah agar user memasukkan nilai deposit yang nilainya akan dimasukan ke variabel amount. Selanjutnya method ini memanggil method Deposit yang ada di class BankAccount dengan parameter amount. Dengan memanggil method ini berarti nilai amount yang berisikan input dari user sudah diproses oleh method tersebut, sehingga nilai dari accBal = accBal + amount. Perbedaan selanjutnya masih di class CreateAccount yaitu pemanggilan
Bimo Adi Pradono 31045 www.digizoneku.com

method TestDeposit dari masing masing akun. Hasil untuk kode diatas adalah :

Untuk menambahkan method Withdraw ke class BankAccount

Kode untuk bagian ini adalah :


Kode untuk class BankAccount
classBankAccount { publicvoid Populate(decimal balance) { accNo = NextNumber(); accBal = balance; accType = AccountType.Checking; } publiclong Number() { return accNo; } publicdecimal Balance() { return accBal; } publicstring Type() { return accType.ToString(); } privatestaticlong NextNumber() { return nextAccNo++; } publicdecimal Deposit(decimal amount) { accBal += amount; return accBal;

Bimo Adi Pradono 31045

www.digizoneku.com

} publicbool Withdraw(decimal amount) { bool sufficientFund = accBal >= amount; if (sufficientFund) { accBal -= amount; } return sufficientFund; } privatelong accNo; privatedecimal accBal; privateAccountType accType; privatestaticlong nextAccNo = 123; }

Kode untuk class AccountType


enumAccountType { Checking, Deposit }

Kode untuk class CreateAccount


using System; classCreateAccount { staticvoid Main() { BankAccount berts = NewBankAccount(); Write(berts); TestDeposit(berts); Write(berts); TestWithdraw(berts); Write(berts); BankAccount freds = NewBankAccount(); Write(freds); TestDeposit(freds); Write(freds); TestWithdraw(freds); Write(freds); } staticBankAccount NewBankAccount() { BankAccount created = newBankAccount(); Console.Write("Masukkan saldo akun!: "); decimal balance = decimal.Parse(Console.ReadLine()); created.Populate(balance); return created; } publicstaticvoid TestDeposit(BankAccount acc) { Console.Write("Enter amount to deposit :");

Bimo Adi Pradono 31045

www.digizoneku.com

decimal amount = decimal.Parse(Console.ReadLine()); acc.Deposit(amount); } publicstaticvoid TestWithdraw(BankAccount acc) { Console.Write("Enter amount to Withdraw"); decimal amount = decimal.Parse(Console.ReadLine()); if (!acc.Withdraw(amount)) { Console.WriteLine("Insuffuicient funds."); } } staticvoid Write(BankAccount toWrite) { Console.WriteLine("Nomor Akun adalah {0}", toWrite.Number()); Console.WriteLine("Jumlah saldo akun {0}", toWrite.Balance()); Console.WriteLine("Tipe Akun adalah {0}", toWrite.Type()); Console.ReadLine(); } }

Perbedaan kode diatas dengan kode yang sebelumnya yaitu pada class BankAccount. Pada class ini ditambahkan sebuah method bertipe bool dengan nama Withdraw. Method ini memiliki memiliki parameter berupa decimal amount. Method ini berisikan nilai dari sufficientFunds = accBal (uang dari akun) dan lebih besar dari amount (jumlah uang yang dikurangi). Jika sufficientFunds terpenuhi maka accBal akan dikurangi dengan amount. Method ini mengembalikan nilai dari sufficientFunds. Perbedaan kedua adalah ada pada class CreateAccount. Pada class ini ditambahkan method TestWithdraw dengan parameter BankAccount acc. Method ini berisikan perintah untuk user agar memasukkan jumlah duit yang akan dikurangi dan memasukkan nilainya ke variabel yang bernama amount. Pada method ini dipanggil juga method Withdraw dari class BankAccount dengan parameter amount sebagai kondisi dari pernyataan if. Jika persyaratan method Withdraw tidak terpenuhi maka program akan menulis Insufficient Funds. Selain itu pada class ini juga ada pemanggilan method TestWithdraw untuk masing masing akun yang ada. Hasil untuk kode diatas adalah :

Bimo Adi Pradono 31045

www.digizoneku.com

Bab III Jawaban Kuis


1. Apakah perbedaan antara abstract class dengan concrete class Jawaban Abstract class adalah Abstract class tidak bisa dibuat objek. Sebuah abstract class hanya sebuah class basis, class ini hanya mengijinkan class lain inherit dari abstract class. Constructor public dan protected tidak dapat didefinisikan pada abstract class. Jadi public dan protected tidak berguna untuk abstract class. Abstract class berisi Abstract method dan Abstract properties Concrete class digunakan untuk mendefinisikan object object yang berguna yang dapat dibuat pada program stack. Implementasi dari concrete class dapat didefinisikan. Concrete class tidak ditujukan untuk class basis 2. Apakah yang dimaksudkan dengan access modifier dan kemukakan berbagai jenis access modifier yang terdapat pada C# beserta penjelasannya Jawaban :

Access modifier adalah keyword yang digunakan untuk menspesifikasikan aksesbilitas dari suatu anggota ada tipe dari class. Access modifier dapat juga berarti keyword menentukan ruang lingkup visibilitas untuk variabel dan metode. Jenis jenis access modifier :
Bimo Adi Pradono 31045 www.digizoneku.com

Modifier Public Private

Protected Internal

protected internal

Penjelasan Tidak ada syarat untuk mengakses dari anggota public Akses terbatas pada dalam definisi class. Jenis ini adalah access modifier yang secara default apabila tidak ada deklarasi access modifier Access terbatas dalam definisi class dan class yang diinherit dari class tersebut Access terbatas secara eksklusif pada definisi class dalam project assembly saat itu Akses terbatas pada proyek assembly saat itu dan class yang berasal dari class tersebut. Semua anggota dalam proyek dan anggota yang berasal dari class dapat mengakses class ini

Sumber :
http://csharp.net-tutorials.com/classes/introduction/ http://codeasp.net/blogs/mohit/microsoft-net/805/abstract-class-in-c-sharp http://interviews.csharpcorner.com/Answer/Answers.aspx?QuestionId=191&MajorCategoryId=8&Minor CategoryId=41 http://www.csharpcorner.com/UploadFile/puranindia/WhatareAccessModifiersinCsharp0820200902 4156AM/WhatareAccessModifiersinCsharp.aspx http://www.csharpcorner.com/UploadFile/niradhip/Accessmodifiers107162009132117PM/Accessmo difiers1.aspx

Bimo Adi Pradono 31045

www.digizoneku.com

Bab IV Kesimpulan
Kesimpulan untuk praktikum kali ini adalah : 1. Class adalah sekelompok method dan variabel yang terkait 2. Abstract class adalah Abstract class tidak bisa dibuat objek. 3. Sebuah abstract class hanya sebuah class basis, class ini hanya mengijinkan class lain inherit dari abstract class. 4. Access modifier dapat juga berarti keyword menentukan ruang lingkup visibilitas untuk variabel dan metode. 5. Jenis jenis dari access modifier adalah public, private, protected, interna, protected internal

Bimo Adi Pradono 31045

www.digizoneku.com