Modul Praktikum PBO PDF
Modul Praktikum PBO PDF
pengenalan
konsep
pemograman
beroreintasi Objek menggunakan bahasa
pemograman C#.
Modul
Praktikum
PBO
Pemograman Beroreintasi
Objek
Ridi Ferdiana
Waktu : 60 menit
6. Anda akan masuk ke editorial program, untuk menyimpan tekan menu File dan
pilih Save All
3. Kembali ke jendela konsol dan ketikkan nama Anda, kemudian tekan tombol
RETURN. Kembali ke Visual Studio. Nilai dari Namaku pada jendela Watch
akan diisi nama Anda.
Untuk membagi integer pertama dengan integer kedua dan menampilkan hasilnya
1. Tulislah kode untuk membuat variabel integer baru k yang memberikan nilai
hasil dari pembagian i oleh j, dan masukkan ke akhir dari prosedur
sebelumnya.
Kodenya akan seperti berikut :
int k = i / j;
Pengujian Program
1. Pada menu Debug klik Start Without Debugging (atau tekan CTRL+F5).
2. Ketikkan 10 untuk nilai variabel integer yang pertama dan tekan ENTER.
3. Ketikkan 5 untuk nilai variabel integer yang kedua dan tekan ENTER.
4. Periksa nilai yang ditampilkan oleh k adalah 2.
5.
6.
7.
8.
...
int k = i / j;
Console.WriteLine(...);
}
2. Tambahkan sintaks catch ke Main, setelah blok try. Kalimat catch nantinya kan
mencetak pesan singkat seperti yang dibawah ini :
catch(Exception e)
{
Console.WriteLine("An exception was thrown: {0}" , e);
}
...
3. Simpan hasil kerja Anda.
4. The completed Main method should look similar to the following:
static void Main(string[] args)
{
try
{
Console.WriteLine("Masukkan nilai integer pertama");
string temp = Console.ReadLine();
int i = Int32.Parse(temp);
Console.WriteLine("Masukkan nilai integer kedua");
temp = Console.ReadLine();
int j = Int32.Parse(temp);
int k = i / j;
Console.WriteLine("hasil pembagian {0} oleh {1} adalah {2}", i, j, k);
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("Eksepsi: {0}", e);
}
Console.ReadLine();
}
PERTANYAAN PEMAHAMAN
1. Apakah fungsi static void main dalam sebuah program. Dapatkah sebuah
program tidak memiliki static void main, bila ada program apa yang tidak
menggunakannya?
2. Apakah
perbedaan
debug
dan
release
pada
saat
suatu
program
dijalankan?
3. Apakah makna finally dalam suatu program, apakah finnaly mutlak ada
dalam sebuah statement try catch, bila tidak kapan sebaiknya finnaly
digunakan?
4. Apa arti step in, step over, dan watch pada mekanisme debugging suatu
program C#?
5. Apa perbedaan antara Write dan WriteLine, dan apa makna fungsi Parse
pada latihan 4.
Syarat
Sebelum mengerjakan latihan ini, Anda harus paham tentang :
Sistem tipe secara umum
Tipe nilai variabel dalam C#.
Skenario
Pada latihan 1, Anda akan membuat program untuk membuat tipe enum sederhana,
kemudian mengatur dan mencetak nilai dengan menggunakan kalimat Console.WriteLine.
Pada latihan 2 Anda akan membuat program yang menggunakan tipe enum yang
dideklarasikan di latihan 1 dalam sebuah struct.
Jika waktu masih tersisa, Anda akan menambahkan fungsionalitas input/output ke program
yang Anda buat pada latihan 2.
Waktu : 35 menit
variabel
accNo
accBal
accType
PERTANYAAN PEMAHAMAN
1. Sebut tiga manfaat enum dan tipe-tipe data apakah yang tidak didukung oleh
Enum?
2. Buat sebuah tabel perbandingan antara struct dan class, dan mana yang lebih
efisien antara scruct dan class.
3. Sebutkan keunggulan struct dibanding class dan kelemahan struct dibanding class.
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memamahi:
Membuat variabel dalam C#
Menggunakan operator yang umum dalam C#
Membuat tipe enum dalam C#
WAKTU : 30 menit
using System;
class TanggalBerapa
{
static void Main()
{
Console.Write("Silakan masukkan angka jumlah hari antara 1
sampai 365: ");
string baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
int jmlBulan= 0;
if (jmlHari <= 31) { // Januari
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 28) { // Februari
goto End;
} else {
jmlHari -= 28;
jmlBulan++;
}
if (jmlHari <= 31) { // Maret
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 30) { // April
goto End;
} else {
jmlHari -= 30;
jmlBulan++;
}
if (jmlHari <= 31) { // Mei
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
case 0 :
namaBulan
case 1 :
namaBulan
case 2 :
namaBulan
case 3 :
namaBulan
case 4 :
namaBulan
case 5 :
namaBulan
case 6 :
namaBulan
case 7 :
namaBulan
case 8 :
namaBulan
case 9 :
namaBulan
case 10:
namaBulan
case 11:
namaBulan
default:
namaBulan
= "Januari"; break;
= "Februari"; break;
= "Maret"; break;
= "April"; break;
= "Mei"; break;
= "Juni"; break;
= "Juli"; break;
= "Agustus"; break;
= "September"; break;
= "Oktober"; break;
= "November"; break;
= "Desember"; break;
= "Tidak ada"; break;
}
Console.WriteLine("{0} {1}", jmlHari, namaBulan);
}
}
9. Lakukan proses compile program TanggalBerapa1.cs dan benahi kesalahan
yang ada. Jalankan program tersebut. Periksa apakah program bekerja baik
dengan menggunakan data berikut.
Jumlah Hari
32
60
91
186
304
309
327
359
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memamahi:
Membuat variabel dalam C#
Menggunakan operator yang umum dalam C#
Membuat tipe enum dalam C#
WAKTU : 30 menit
hari
}
6. Simpan hasil kerja Anda.
7. Lakukan compile pada program TanggalBerapa2.cs dan benahi
ada. Jalankan program. Gunakan tabel yang tersedia di bab
untuk memeriksa hasil kerja program.
8. Jalankan program, masukkan jumlah hari kurang dari 1 dan
Pastikan masukan yang salah bisa direspond dengan baik dan
bisa dilemparkan, ditangkap, dan ditampilkan.
Berikut capture running program
kesalahan yang
3.1 (Latihan 1)
lebih dari 365.
objek exception
angka
jumlah
// seperti sebelumnya....
}
catch (Exception tangkap) {
Console.WriteLine(tangkap);
}
}
...
}
7. Simpan hasil kerja Anda.
8. Lakukan compile program TanggalBerapa3.cs dan benahi kesalahan yang ada.
angka
jumlah
}
...
}
4. Simpan hasil kerja Anda.
5. Lakukan compile program TanggalBerapa3.cs dan benahi kesalahan yang ada.
Gunakan tabel berikut untuk memeriksa apakah Boolean dari tahun panjang
tersebut sudah berjalan dengan benar.
Tahun Kabisat
1996
2000
2004
6.
}
6. Simpan hasil kerja Anda.
7. Lakukan compile pada TanggalBerapa3.cs dan benahi kesalahan yang muncul.
Jalankan program dan periksa apakah yang Anda implementasikan pada
langkah sebelumnya sudah benar.
Berikut hasil capture running program di atas :
class TanggalBerapa
{
static void Main( )
{
try {
Console.Write("Silakan masukkan tahun: ");
string baris = Console.ReadLine();
int jmlTahun = int.Parse(baris);
bool thnKabisat = (jmlTahun % 4 == 0)
&& (jmlTahun % 100 != 0 || jmlTahun % 400 == 0);
int maxJmlHari = thnKabisat ? 366 : 365;
Console.Write("Silakan masukkan angka jumlah hari antara
1 sampai {0}: ", maxJmlHari);
baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
if (jmlHari < 1 || jmlHari > maxJmlHari) {
throw new ArgumentOutOfRangeException("Jumlah hari
melebihi batas ");
}
int jmlBulan = 0;
if(thnKabisat) {
foreach (int hariDlmBulan in HariDlmBulanKabisat)
{
if (jmlHari <= hariDlmBulan)
{
break;
}
else
{
jmlHari -= hariDlmBulan;
jmlBulan++;
}
}
}
else {
foreach (int hariDlmBulan in HariDlmBulan){
if (jmlHari <= hariDlmBulan) {
break;
} else {
jmlHari -= hariDlmBulan;
jmlBulan++;
}
}
}
namaBulan temp = (namaBulan)jmlBulan;
string namaBulan = temp.ToString( );
Console.WriteLine("{0} {1}", jmlHari,namaBulan);
}
catch (Exception tangkap) {
Console.WriteLine(tangkap);
}
Console.ReadLine();
}
// jangan mengubah apapun kode yang di bawah ini
static System.Collections.ICollection HariDlmBulan
= new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static System.Collections.ICollection HariDlmBulanKabisat
= new int[12] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
}
Year
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
Day Number
32
32
60
60
91
91
186
186
304
304
309
309
327
327
359
359
Month-Day Pair
February 1
February 1
March 1
February 29
April 1
March 31
July 5
July 4
October 31
October 30
November 5
November 4
November 23
November 22
December 25
December 24
PERTANYAAN PEMAHAMAN
1.
Buat sebuah perbandingan mengenai fungsi case dan if else, kapan sebuah if else
2.
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Membuat dan menggunakan variabel
Kalimat pemrograman dalam C#
WAKTU : 60 menit
Tips : Jika parameter tidak berubah seperti yang diharapkan, pastikan apakah
parameter sudah dideklarasikan sebagai ref parameter.
using System;
namespace Guna
{
class Guna
{
hasil
}
}
}
}
return ok;
Hasil running program akan seperti pada sama seperti pada penggunaan method
Faktorial
PERTANYAAN PEMAHAMAN
1.
Jelaskan sekumpulan dan jenis jenis method di lihat dari jenis masukannya,
keluarannya, dan parameternya?
2.
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
menggunakan kalimat pemrograman dalam C#
membuat dan menggunakan method dalam C#
WAKTU : 60 menit
Untuk menangkap nama dari file teks sebagai parameter pada method Main.
1. Buka projek DetilFile.sln pada folder.
2. Tambahkan sebuah array string args sebagai parameter ke method Main dari
class DetilFile. Array ini akan berisi semua argument command-line yang
dimasukkan ketika program dijalankan. Isinya tentang bagaimana argument
dilewatkan ke Main pada saat program berjalan. Pada latihan ini, argumen
command-line yang dilewatkan ke Main adalah nama dari file teks.
3. Tambahkan kalimat ke Main yang menuliskan panjang args pada konsol.
Kalimat ini akan memastikan panjang dari args adalah nol ketika tidak ada
argument command-line yang dilewatkan ke Main pada saat runtime.
4. Tambahkan kalimat foreach ke Main yang menuliskan setiap string di args ke
konsol. Kalimat ini akan memastikan bahwa Main menerima argument
command-line dari runtime.
Kode lengkapnya akan seperti berikut :
static void Main(string[ ] args)
{
Console.WriteLine(args.Length);
foreach (string arg in args)
{
Console.WriteLine(arg);
}
}
5. Lakukan compile pada program DetilFile.cs dan benahi setiap error yang
muncul. Jalankan program dari command-line, jangan masukkan argument
command-line. Pastikan apakah panjang dari args adalah nol.
Untuk menjalankan program dari command-line, buka jendela command dan
masuk ke folder. File yang bisa dieksekusi akan berada pada folder ini.
6. Jalankan program dari command line, masukkan nama dari DetilFile.cs.
Pastikan bahwa runtime melewatkan nama ke Main.
7. Uji coba program dengan memasukkan berbagai macam argument commandline yang lainnya, dan pastikan bahwa setiap argumen dari command-line
ditulis di konsol sesuai yang diharapkan. Ubah komentar menulis ke konsol
menjadi kalimat pemrograman.
8. Tambahkan kalimat ke Main yang mendeklarasikan variabel string NamaFile
dan inisialisasikan dengan args[0]
dan
StreamReader
dan
Untuk menempatkan property yang tepat untuk class Stream, carilah Stream
class pada dokumen .NET Framework SDK Help
3.
4.
5.
6.
7.
8.
Lakukan compile pada program dan benahi kesalahan yang ada. Jalankan
program, masukkan nama dari DetilFile.cs sebagai argument command-line.
Pastikan bahwa isi dari file telah ditulis di konsol dengan benar.
Ubah komentar foreach menjadi kalimat pemrograman.
Tutup objek Reader dengan memanggil method StreamReader yang tepat.
4. Lakukan compile pada program dan benahi kesalahan yang ada. Jalankan
program dari command line ke rangkuman dari isi pada file Solution :
Jumlah total yang tepat adalah sebagai berikut:
o 1.453 karakter
o 243 huruf vocal
o 396 konsonan
o 48 baris
Berikut hasil capture
A2
A4
B1
B3
B2
B4
A1.B1 + A2.B3
A3.B1 + A4.B3
A1.B2 + A2.B4
A3.B2 + A4.B4
2
4
6
8
4. Tambahkan kalimat pada Main yang mendeklarasikan array int 2 x 2 dan beri
nama denga array hasil. Inisialisasikan hasil dengan menggunakan rumus
kolom berikut :
a[0,0] * b[0,0] + a[0,1] * b[1,0]
5. Tambahkan empat kalimat ke Main yang menuliskan empat nilai int dalam
hasil ke konsol. Kalimat tersebut akan membantu memeriksa ketepatan dalam
menggandakan rumus. Kode lengkapnya akan seperti berikut :
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik
{
static void Main(string[] args)
{
int[,] a = new int[2, 2];
a[0, 0] = 1; a[0, 1] = 2;
a[1, 0] = 3; a[1, 1] = 4;
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
int[,] hasil = new int[2, 2];
hasil[0, 0] = a[0, 0] * b[0, 0]
hasil[0, 1] = a[0, 0] * b[0, 1]
hasil[1, 0] = a[1, 0] * b[0, 0]
hasil[1, 1] = a[1, 0] * b[0, 1]
Console.WriteLine(hasil[0, 0]);
Console.WriteLine(hasil[0, 1]);
Console.WriteLine(hasil[1, 0]);
Console.WriteLine(hasil[1, 1]);
+
+
+
+
a[0,
a[0,
a[1,
a[1,
1]
1]
1]
1]
*
*
*
*
b[1,
b[1,
b[1,
b[1,
0];
1];
0];
1];
}
}
}
6. Lakukan compile program dan benahi kesalahan yang ada. Jalankan program.
Pastikan ke empat nilai hasil adalah seperti berikut:
19
43
22
50
Untuk membuat out put dari hasil dengan menggunakan method dengan
parameter array
1. Deklarasikan method static baru yang disebut Output. dalam class
PerkalianMatrik. Method ini tidak akan mengembalikan apapun dan akan
meminta sebuah array int dengan pangkat 2 sebagai parameter yang disebut
hasil.
2. Ambil dari Main empat kalimat yang menuliskan empat nilai dari hasil ke
konsol dan pindahkan ke Output.
3. Tambahkan kalimat ke Main yang memanggil method Output, untuk
melewatkan hasil sebagai argument. (kode ini untuk menggantikan yang telah
diambil pada langkah sebelumnya).
Berikut kode lengkapnya:
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik
{
static void Main(string[] args)
{
int[,] a = new int[2, 2];
a[0, 0] = 1; a[0, 1] = 2;
a[1, 0] = 3; a[1, 1] = 4;
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
int[,] hasil = new int[2, 2];
hasil[0, 0] = a[0, 0] * b[0, 0]
hasil[0, 1] = a[0, 0] * b[0, 1]
hasil[1, 0] = a[1, 0] * b[0, 0]
hasil[1, 1] = a[1, 0] * b[0, 1]
Output(hasil);
+
+
+
+
a[0,
a[0,
a[1,
a[1,
1]
1]
1]
1]
*
*
*
*
b[1,
b[1,
b[1,
b[1,
0];
1];
0];
1];
}
static void Output(int[,] hasil)
{
Console.WriteLine(hasil[0, 0]);
Console.WriteLine(hasil[0, 1]);
Console.WriteLine(hasil[1, 0]);
Console.WriteLine(hasil[1, 1]);
Console.ReadLine();
}
}
}
4. Lakukan compile program dan benahi kesalahan yang ada. Jalankan program.
Pastikan bahwa ke empat nilai yang muncul di konsol adalah tetap seperti
ini:
19
22
43
50
5. Lakukan refaktor method Output untuk menggunakan kalimat for bersarang
sebagai ganti empat kalimat yang WriteLine. Gunakan nilai literal 2 untuk
pengujian kedua array.
Kode lengkapnya akan seperti berikut:
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik
{
static void Main(string[] args)
{
... sama seperti kode sebelumnya ...
}
static void Output(int[,] hasil)
{
for (int r = 0; r < 2; r++)
{
for (int c = 0; c < 2; c++)
{
Console.Write("{0} ", hasil[r, c]);
}
Console.WriteLine();
}
}
}
}
6. Lakukan compile pada program dan benahi kesalahan yang muncul. Jalankan
program. Pastikan ke empat nilai yang muncul di konsol seperti berikut:
19
43
22
50
22
50
a, int[,] b)
int[2, 2];
0] * b[0, 0]
0] * b[0, 1]
0] * b[0, 0]
0] * b[0, 1]
+
+
+
+
a[0,
a[0,
a[1,
a[1,
1]
1]
1]
1]
*
*
*
*
b[1,
b[1,
b[1,
b[1,
0];
1];
0];
1];hod dengan
5. Lakukan compile dan benahi kesalahan yang ada. Jalankan program. Pastikan
ke empat nilainya adalah sebagai berikut:
19
43
22
50
PERTANYAAN PEMAHAMAN
1. Buatlah sebuah class yang merupakan class dengan dukungan matrik 2x2 dan dapat
melakukan perhitungan determinan.
2. Gunakan konsep interface atau inheritance untuk menurunkan class yang dibuat
pada poin satu untuk mendukung perhitungan matrik 3x3
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Membuat method dalam C#
Melewatkan argument sebagai parameter method dalam C#
WAKTU : 45 menit
Untuk mengubah BankAccount dari tipe data struct menjadi sebuah class
1. Buka project CreateAccount.sln pada folder HOL SOLUTION\BAB 6\STARTER.
2. Pelajari kode pada file BankAccount.cs, bahwa BankAccount mempunyai tipe
data struct.
Struct BankAccount
{
public long accNo;
public decimal accBal;
public AccountType accType;
}
3. Lakukan proses compile dan jalankan program. Anda akan dipandu untuk
memasukkan sebuah account number dan balance awal. Ulangi proses ini
untuk membuat account lainya.
4. Modifikasi BankAccount pada BankAccount.cs untuk mengubahnya menjadi
sebuah class dari yang sebelumnya berupa tipe data struct.
class BankAccount
{
public long accNo;
public decimal accBal;
public AccountType accType;
}
5. Lakukan compile pada program, maka akan mengalami kegagalan. Buka file
CreateAccount.cs dan lihat pada class CreateAccount. Class akan Nampak
seperti berikut:
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created;
...
created.accNo = number; // Error here
...
}
...
}
2. Lakukan compile program. Hasilnya akan gagal. Error muncul pada class
CreateAccount seperti berikut :
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created = new BankAccount( );
...
created.accNo = number; // Error disini lagi
...
}
...
}
accNo = number;
accBal = balance;
accType = AccountType.Checking;
}
private long accNo;
private decimal accBal;
private AccountType accType;
}
...
}
c. Tambahkan Tambahkan method ke BankAccount yang public dan nonstatic yaitu Type seperti yang ditampilkan pada kode berikut. Method
ini akan mengembalikan sebuah AccountType dan tidak memerlukan
parameter. Method ini akan mengembalikan nilai dari field accType.
class BankAccount
{
public void Populate(...) ...
...
public AccountType Type( )
{
return accType;
}
...
}
pada method
konsol
untuk
9. Lakukan proses compile pada program dan benahi kesalahan yang ada.
Jalankan program. Pastikan dua account memiliki nomor 123 dan 124
Berikut hasil capture program:
class CreateAccount
{
static void Main( )
{
BankAccount berts = NewBankAccount( );
Write(berts);
TestDeposit(berts);
Write(berts);
BankAccount freds = NewBankAccount( );
Write(freds);
TestDeposit(freds);
Write(freds);
}
}
{
Console.Write("Enter amount to withdraw: ");
decimal amount = decimal.Parse(Console.ReadLine());
if (!acc.Withdraw(amount)) {
Console.WriteLine("Insufficient funds.");
}
}
...
}
PERTANYAAN PEMAHAMAN
1. Apakah perbedaan antara abstract class dengan concrete class.
2. Apakah yang dimaksud dengan access modifier dan kemukakan berbagai jenis access
modfier yang terdapat pada C# berserta penjelasannya
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Membuat dan menggunakan class
Memanggil method dan melewatkan parameter
Menggunakan array
WAKTU : 45 menit
),
b1.Number(
),
),
b2.Number(
),
b1.Type(
),
b1.Number(
),
b2.Type(
),
b2.Number(
),
b1.TransferFrom(b2, 10);
Console.WriteLine("After transfer");
Console.WriteLine("{0}
{1}
{2}",
b1.Balance( ));
Console.WriteLine("{0}
{1}
{2}",
b2.Balance( ));
}
3.
4.
5.
6.
14. Simpan hasil kerja Anda dan benahi kesalahan yang muncul.
Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Konsep dari pemrograman berorentasi objek
Membuat class
Mendefiniskan method
WAKTU : 30 menit
5. Lakukan compile dan uji kode tersebut. Anda akan melihat nilai true untuk
nilai int dan ulong, sedangkan false untuk nilai string.
Berikut hasil capture program :
PERTANYAAN PEMAHAMAN
1. Apakah keunggulan dan kelemahan menggunakan interface dibanding menggunakan
pewarisan.
2. Buat sebuah tabel perbedaan antara tipe data valiue dan reference plus keunggulan
dan kekurangannya.