1.1 Framework .NET
Sejak pertama kali diperkenalkan di tahun 2000, versi alpha
Framewo.NET sudah menjadi perhatian dunia
pemrograma.Framework.NET versi 1 keluar pada akhir 2001. Banyak
yang mengatakan bahwa Framework.NET memulai era pemrograman
baru. Gartner Group memperkirakan dalam jangka waktu yang singkat
dunia pemrograman akan didominasi Framework.NET. Di bawah ini
akan diuraikan beberapa kelebihan Framework.NET (sumber pustaka
Mempelajari C Bahasa Pemrograman Modern):
Platform Independence : Program-program yang dibuat untuk
berjalan di atas Framework.NET dapat dijalankan di komputer
apapun, asalkan di komputer yang bersangkutan terinstall
implementasi Framework.NET. Implementasi Framework.NET
untuk Linux yang dinamakan Mono sudah dapat dipakai
(http://www.go-mono.com. Microsoft telah membuat
Framework.NET untuk sistem lain misalnya untuk Mac.
Language Independence dan Cross Language
Interoperability: Tidak seperti platform Java (JVM) yang terkait
dengan bahasa Java, platform.NET tidak terkaitdengan bahasa
pemograman apapun. Contoh-contoh bahasa yang bisa dipakai
untuk pemrograman.NET yaitu C#, Managed C++, Visual
Basic.NET, Jscript.NET, Visual J++.NET, COBOL.NET, Eiffel#,
Phyton.NET, Pascal.NET, dan Perl.NET. Hal yang sangat menarik
yaitu kemampuan berinteraksi program yang dibuat dengan
bahasa berbeda secara langsung, Program-program managed juga
dapat berinteraksi dengan program-program unmanaged (dan
sebaliknya), walaupun kecepatannya tidak maksimal.
Kecepatan : Program-program .NET walaupun portable akan
berjalan dengan kecepatan tinggi, bahkan dapat lebih cepat dari
program-program unmanaged.
Keamanan : Karena semua program .NET berjalan di bawah
pengawasan CLR, maka keamanan menjadi lebih terjamin.
T
2
Produktifitas Tinggi : Konsep OOP yang tertanam kuat
memungkinkan pembuatan program yang dapat dengan mudah
dikembangkan. Kekayaan class library .NET juga sangat berperan
dalam produktifitas.
Support untuk Network/Internet: Framework .NET dirancang
dengan internet “inmind”. Interaksi komponen yang terletak
di dua komputer yang berbeda dapatdilakukan secara mudah.
.NET yaitu Platform yang Terbuka: Siapapun boleh membuat
bahasa dan compiler yang menghasilkan program.NET, bahkan
membuat implementasi.NET itu sendiri. Spesifikasi-spesifikasi
yang berhubungan dengan Framework.NET diserahkan oleh
Microsoft kepada ECMA (suatu badan standar internasional),
tidak seperti Sun Microsystems yang menolak untuk
menyerahkan Java kepada badan standar walaupun sudah
didesak banyak pihak. Framework.NET juga banyak
memakai teknologi-tekonologi yang sudah dipakai secara
luas seperti XML,Unicode,HTTP, dan TCP/IP
1.2 Lahirnya C#
Microsoft membuat C# seiring dengan pembuatan Framework
.NET. Chief Architect dalam pembuatan C# yaitu Anders Hejlsberg
yang sebelumnya berperandalam pembuatan Borland Delphi dan
Turbo Pascal. C# menjanjikan produktifitas dan kemudahan yang ada di
Visual Basic dengan kemampuan dan fleksibilitas yang ada di C/C++.
Pemograman C# sesuai kaidah bahasanya “ C# (pronounced “C Sharp”)
is a simple, modern, object oriented, and type-safe programming
language. It will immediately be familiar to C and C++ programmers. C#
combines the high productivity of Rapid Application Development
(RAD) languages andthe raw power of C++” (sumber pustaka
Mempelajari_C_Bahasa_Pemrograman_Modern).
Untuk mencapai produktifitas tinggi ini konsep-konsep sulit
C++ disederhanakan dan fitur-fitur baru ditambahkan. Hal ini mungkin
terasa mirip dengan Java, karena itulah C# bisa dianggap sebagai
sepupu Java.
C# yaitu salah satu dari banyak bahasa yang bisa dipakai untuk
pemrograman.NET. Kelebihan utama bahasa ini yaitu sintaksnya yang
mirip C, namun lebih mudahdan lebih bersih. Untuk perbandingan
penulis cantumkan sedikit informasi mengenai Managed C++ dan Visual
Basic.NET:
P
3
Managed C++: Managed C++ yaitu ekstensi terhadap C++ untuk
membuat program.NET. Salah satu keunikan Managed C++ yaitu
kita bisa mencampur kode-kode managed dengan unmanaged
dalam bahasa pemograman yang dibuat. Ini sangat berguna bagi
pihak-pihak yang sudah memiliki banyak kode C++ namun ingin
bermigrasi ke platform.NET. Dalam pemrograman Managed C++
masih akan terikat dengan konsep-konsep sulit C++ sehingga
produktifitas akan lebih rendah dibanding jika memakai C#.
Visual Basic.NET: Perbedaan antara C# dengan Visual Basic .NET
yang langsung terlihat yaitu sintaksnya. C# memiliki beberapa
fitur yang tidak ada di Visual Basic.NET sehingga C# sedikit lebih
fleksibel. Visual Basic .NET cukup berbeda dengan Visual Basic 6,
Visual Basic .NET yaitu bahasa yang sepenuhnya berorientasi
objek dan dibuat untuk pemrograman .NET.
Tentang kecepatan program yang dihasilkan, semua bahasa.NET
menghasilkan program.NET yang berkecepatan tinggi.Perbedaan
kecepatan yang ada sangat kecil bahkan pada umumnya bisa dianggap
tidak ada
1.3 Microsoft Visual Studio 2010
Microsoft Visual Studio yaitu sebuah lingkungan pengembangan
terpadu (IDE) dari Microsoft. Hal ini dipakai untuk mengembangkan
program komputer untuk sistem operasi Microsoft Windows super
famili, serta situs web, aplikasi web dan layanan web. Visual Studio
memakai Microsoft platform pengembangan perangkat lunak
seperti API Windows, Windows Forms Windows Presentation
Foundation, Windows Stor dan Microsoft Silverlight.
Hal ini dapat menghasilkan baik kode asli dan kode yang dikelola .
Visual Studio mencakup kode editor pendukung IntelliSense serta
refactoring kode. Terintegrasi debugger bekerja baik sebagai source-
level debugger dan debugger mesin-tingkat. Built-in tools termasuk
desainer bentuk untuk membangun GUI aplikasi, web designer , kelas
desainer, dan skema database desainer. Menerima plug-in yang
meningkatkan fungsionalitas pada hampir setiap tingkat-termasuk
menambahkan dukungan untuk sumber-kontrol sistem (seperti
Subversion dan Visual SourceSafe ) dan menambahkan toolsets baru
seperti editor dan desainer visual untuk bahasa domain-spesifik atau
toolsets untuk aspek-aspek lain dari siklus pengembangan perangkat
lunak (seperti Team Foundation Server klien: Tim Explorer).
T
4
Visual Studio mendukung berbagai bahasa pemrograman dan
memungkinkan kode editor dan debugger untuk mendukung hampir
semua bahasa pemrograman, memberikan layanan bahasa spesifik ada.
Built-in bahasa termasuk C , C + + dan C + + / CLI (melalui Visual C + + ),
VB.NET (melalui Visual Basic. NET ), C # (via Visual C # ), dan F #
(seperti Visual Studio 2010 ). Dukungan untuk bahasa lain seperti M ,
Python , dan Ruby antara lain tersedia melalui layanan bahasa diinstal
secara terpisah.
Ini juga mendukung XML / XSLT , HTML / XHTML , JavaScript dan
CSS. Individu versi bahasa-spesifik Visual Studio juga ada yang
menyediakan layanan bahasa yang lebih terbatas bagi pengguna:
Microsoft Visual Basic, Visual J #, Visual C #, dan Visual C + +
1.4 Tampilan Microsoft Visual Studio 2010
Microsoft Visual Studio 2010 Profesional yaitu alat penting
untuk individu melakukan tugas-tugas dasar pemograman. Ini
menyederhanakan penciptaan, debugging, dan penyebaran aplikasi
pada berbagai platform, termasuk SharePoint dan Cloud. Visual Studio
2010 Profesional dilengkapi dengan dukungan terpadu untuk
pengembangan uji-didorong, serta alat debugging yang membantu
memastikan solusi berkualitas tinggi. Menulis kode aplikasi sering
membutuhkan banyak memiliki desainer dan editor terbuka sekali.
Untuk memulai aplikasi Microsoft visual studio, kamu mulai
dengan klik menu File, dan klik New Project untuk menampilkan kotak
dialog. Perhatikan gambar 1 yang sedang menampilkan sebuah kotak
dialog yang dihasilkan dari New Project.
Gambar 1.4.1. Menu Tampilan Visual Studio 2010
P
5
Pada tampilan sebelah kiri, itu yaitu daftar template. Pilih sesuai
kebutuhan yang akan dibuat. Tapi untuk mengikuti tutorial ini,
gunakan Console Application pada template yang ada disebelah
kanan.
Gambar 1.4.2 Console Aplication
Setelah membuat nama program, nama program itu dibuat secara
default menjadi ConsoleApplication1, nama ini dapat diganti sesuai
keinginan pemograman. Kemudian memilih media tempat
penyimpanan. Klik tombol OK untuk melanjutkan.
Gambar 1.4.3 Membuat Tempat Media Penyimpanan
T
6
Tunggu beberapa detik, kecepatan dalam menjalankan program
tergantung seberapa besar ram yang dimiliki. Jika mengikuti perintah
dengan benar, akan muncul tampilan seperti gambar berikut.
Gambar 1.4.4 Pemograman Console
Tampilan yang muncul seperti gambar diatas tidak selalu sama
dengan versi lain. Jika memakai versi dibawah aplikasi ini, akan
ada fitur-fitur yang tidak tersedia seperti gambar diatas. Jika
memakai versi ini, seperti Microsoft Visual Studio 2010.
∞
7
BAB 2.
DASAR PEMOGRAMAN C#
2.1 Variabel
Suatu variabel hanyalah suatu penampung data atau nilai di
dalam program. Di dalam dunia pemrograman, setiap variabel memiliki
tipe data dan dalam kebanyakan bahasa pemrograman, termasuk C#,
tipe data suatu variabel ditentukan saat variabel ini dinyatakan
atau diisi. ada beberapa cara untuk menyatakan variabel:
o [tipe data] [identifier];
o [tipe data] [identifier] = [nilai];
o [tipe data] [identifier 1], [identifier 2], [identifier N];
o [tipe data] [identifier 1] = [nilai 1], [identifier 2] = [nilai 2],
[identifier N] = [nilai N];
Sebagai contoh
o int jumlahSemuaBarang;
o string namaPelanggan = "Fandi";
o double harga1, harga2, harga3;
o int jumlah1 = 10, jumlah2 = 7, jumlah3 = 12;
Contoh pertama dan ketiga di atas hanya menyatakan variabel
saja, tidak memberikan nilai apapun untuk variabel variabel ini .
Jika suatu variabel kosong dibaca oleh program, akan terjadi runtime
error. Variabel-variabel kosong seperti ini harus diberi nilai sebelum
dibaca.
Tipe-tipe data yang dipakai di atas yaitu tipe data yang paling
sering dipakai , int yaitu bilangan bulat, string yaitu kumpulan
karakter, dan double yaitu bilangan real. Kita akan belajar mengenai
tipe data pada bagian selanjutnya dari tutorial ini.
2.2 Identifier
Identifier yaitu suatu nama yang mewakili hal-hal di dalam
program. Identifier dapat mewakili suatu variabel, konstanta, metoda
atau fungsi, properties, class, enum atau struct. Pada C#, berlaku
ketentuan-ketentuan berikut pada Identifier:
o Harus unik, tidak boleh terduplikasi.
T
8
o Bersifat case sensitive, Nama dan nama merupakan dua identifier
yang berbeda.
o Harus dimulai dengan huruf atau underscore, angka
diperbolehkan setelah karakter pertama.
o Tidak mengandung spasi. Jika terdiri dari lebih satu kata,
disarankan memakai underscore sebagai pengganti spasi
atau memakai CamelCase.
o Tidak mengandung karakter khusus ( @, $, # ), ataupun operator
(+, -, /, *, dsb)
o Bukan merupakan keyword (for, if, class, using, continue, break,
dsb)
2.3 Tipe Data
Meskipun banyak tipe data pada C#, tipe-tipe data yang paling
sering dipakai yaitu int, double, string, bool dan object. Masing-
masing memiliki kegunaannya sendiri:
int, dipakai untuk menyatakan suatu bilangan bulat, positif
maupun negatif, sebagai contoh jumlah murid dalam satu kelas.
double, dipakai saat kita perlu menyatakan suatu bilangan
pecahan, misalkan nilai, harga atau berat. Akan tetapi, double
yaitu data dengan ketelitian 15-16 digit. Sehingga terkadang tipe
data float dengan ketelitian 7 digit lebih disukai untuk contoh
contoh tadi, dengan alasan menghemat memori.
string, dipakai saat menyatakan sekumpulan karakter, baik
itu nama, kalimat, password ataupun kode. String sesungguhnya
merupakan suatu array dari char.
bool, bernilai true atau false. Paling sering dipakai untuk
menyatakan suatu kondisi, misalnya IsEnabled, IsVisible,
SedangHujan, SedangLapar, dan lain lain.
object, yaitu class dasar dari semua tipe data dalam C#.
dipakai untuk menyatakan tipe data yang tidak pasti.
Tipe-tipe data lainnya yaitu :
Mirip dengan int: sbyte, short, long, untuk tipe bertanda, byte,
ushort, uint, ulong untuk tipe yang tak bertanda
Mirip dengan double: float dan decimal
char, untuk menyimpan satu karakter
9
2.4 Konversi tipe data antar angka pada C#
Terkadang kita dapat langsung menugaskan nilai antar tipe data
yang berbeda. Misalnya jika merubah suatu nilai int ke variabel long,
tidak ada perintah khusus yang dibutuhkan. Jika kita menugaskan tipe
data yang lebih kecil ke tipe data yang lebih besar, C# akan secara
implisit mengkonversi nilai ini . Akan tetapi jika tipe data yang
lebih besar ditugaskan ke tipe data yang lebih kecil, diperlukan
konversi tipe data. Sebagai contoh:
Penting diketahui bahwa jika suatu tipe data yang lebih besar
dikonversi ke tipe data yang lebih kecil, dapat terjadi kehilangan data.
Hal-hal ini juga berlaku saat mengkonversi antara tipe data bilangan
bulat dengan tipe data floating point. Selalu ingat bahwa
berkurangnya ketelitian dapat terjadi, harus berhati-hati dalam
memilih tipe data yang sesuai.
2.5 Konversi tipe data string pada C#
Tipe yang paling banyak dipakai untuk input, output dan
penyimpanan sebetulnya yaitu string. Untuk mengkonversi tipe data
apapun ke string sesungguhnya cukup sederhana karena setiap tipe
data di C# memiliki metode ToString(). Sebagai contoh:
Di sisi lain, agak sulit mengkonversi dari string ke tipe lain. Semua
tipe data numerik memiliki metoda Parse dan TryParse. Kita
T
10
memakai ini untuk mengkonversi string ke tipe data numerik. Kita
memakai Parse saat kita SANGAT yakin mengenai string yang
bersangkutan, saat kita tidak yakin, kita gunakan TryParse. Sebagai
contoh:
Coba masukkan "True" atau "FaLsE" pada prompt pertama, dan
input yang valid pada prompt kedua dan ketiga. Program akan
mengeluarkan kembali input yang diterima. Kemudian coba masukkan
string yang bukan boolean ke dalam prompt pertama, akan terjadi
runtime error. Dan terakhir, coba input string yang bukan angka pada
prompt ketiga, program akan menampilkan "Tolong input suatu angka".
Perlu diperhatikan bahwa runtime error pada saat debugging berarti
Critical Error pada software yang sudah jadi. Hal ini harus dihindari
semampunya.
2.6 Literasi
Istilah literal atau literal constant merujuk pada suatu nilai pada
program yang tidak dapat diubah. Kita memakai literal untuk
menyatakan nilai-nilai. Literal-literal pada C# dijelaskan dalam tabel di
berikut:
Gambar 2.1 Literal (https://icodeformoney.com)
11
Untuk tipe data string, ada karakter karakter yang tidak
dapat diketik langsung ke dalam petik dua. Untuk mewakili karakter-
karakter ini , dipakai escape sequences. Escape sequence yang
umum dipakai antara lain:
Gambar 2.2 Escape sequence (https://icodeformoney.com)
Sebagai contoh apabila kita ingin menampung mysql <
"path\ke\file\sqldump" ke dalam suatu string:
string command = "mysql < \"path\\ke\\file\\sqldump\"";
(sumber pustaka : https://icodeformoney.com/)
2.7 Batas nilai tipe-tipe data numerik pada C#
Bagian ini tidak terlalu penting, jika Anda lebih menghargai waktu
dibanding pengetahuan, lewati bagian ini. Salah satu alasan untuk
memakai tipe data lainnya yaitu karena batasan nilai. Batasan
nilai pada tiap tipe data di C# dipaparkan pada tabel berikut:
T
12
Gambar 2.3 Batas tipe data numerik (https://icodeformoney.com)
Bilangan bulat bertanda sesungguhnya memakai 1 bit dari
ukuran data mereka untuk menyatakan tanda (negatif atau positif).
Itulah kenapa batas nilai positif dari tipe tak bertanda dua kali lebih
besar dari tipe yang bertanda dengan ukuran data yang sama. Akan
tetapi bilangan bulat bertanda sudah jarang dipakai kecuali saat
berurusan dengan antarmuka hardware, pengolahan citra, atau
pemrograman tingkat rendah lainnya. Dan juga, sangat disarankan
hindari memakai tipe data decimal karena tipe data ini tidak lazim
pada bahasa pemrograman yang lain.
13
2.8 Jenis-jenis Operator
Ada banyak operator bawaan pada C# yang dapat dikategorikan
ke dalam operator aritmatika, operator penugasan, operator
pembanding, operator logika dan operator bitwise. Akan tetapi di sini
kita tidak akan membahas semua operator ini . Kita hanya akan
membahas seperlunya saja. Pertama-tama, saya ingin memperkenalkan
operator penugasan yang telah kita gunakan beberapa kali sebelumnya,
yaitu operator "=". Kita memakai operator ini untuk memberi nilai
ke suatu variabel. Sebagai contoh:
int anInt = 30;
Pernyataan di atas akan mengakibatkan anInt menyimpan nilai
30. Berikutnya yaitu operator aritmatika, yaitu:
Sebagai contoh, misalkan kita punya a = 15, b = 10
Gambar 2.4 Operator Aritmatika (https://icodeformoney.com)
Perhatikan bahwa pada contoh pembagian di atas, 15 dibagi 10
seharusnya 1,5. Hal ini benar untuk tipe data double. Tetapi pada
contoh di atas diasumsikan a dan b yaitu integer yang mana akan
membulatkan ke bawah setiap bilangan pecahan positif. ada
prioritas dalam operator-operator di atas. Operator increment,
decrement dan minus akan dihitung duluan, kemudian baru modulus,
perkalian dan pembagian, terakhir barulah operator pengurangan dan
penjumlahan. Jika perlu untuk mengubah urutan eksekusi, tanda
kurung dapat dipakai . Di bawah ini yaitu contoh sederhana operasi
aritmatika:
T
14
Hasil perhitungan hargaDiskon sesungguhnya akan tetapi sama
meskipun tanpa tanda kurung. Akan tetapi seringkali, lebih mudah
untuk memakai tanda kurung daripada harus meninjau kembali
urutan prioritas operator. Pernyataan yang bersangkutan juga akan
lebih mudah dibaca dengan menyertakan tanda kurung. Perhatikan
bahwa tanda "+" di dalam metoda Console.WriteLine bukanlah operator
aritmatika, melainkan operator penyambungan string. saat +
dipakai di antara angka, ia menjadi operator aritmatika, akan tetapi
saat dipakai di antara string dengan tipe data apa saja, ia menjadi
operator penyambungan string.
ada juga operator yang di sebut operator majemuk.
Terkadang kita ingin menambahkan sesuatu ke nilai yang sebelumnya,
sebagai contoh, kita ingin menaikkan harga menjadi 34, kita dapat
menuliskan harga = harga + 2; Tetapi dengan operator majemuk, kita
cukup menuliskan harga += 2; yang akan menghasilkan hasil yang
sama. Operator-operator majemuk antara lain:
Sebagai contoh jika a = 15
Gambar 2.5 Operasi Operator Aritmatika
(https://icodeformoney.com)
∞
15
BAB 3.
STATEMENT DI PEMOGRAMAN C#
3.1 Pemograman Console
Struktur program C# yang paling dasar, terdiri dari tiga bagian:
1. Bagian deklarasi pustaka
2. Bagian Class
3. Bagian Fungsi atau Method
1. Bagian Pustaka
Ini yaitu bagian paling atas dari program C#. Pada bagian ini,
kita menuliskan pustaka (library) yang dibutuhkan dalam program.
Apa itu pustaka?
Pustaka berisi sekumpulan fungsi, method, class, objek,
konstanta, dan variabel yang bisa kita gunakan ulang di dalam program.
Sebagai contoh:
Pustaka ini kita butuhkan untuk memakai class Console dan
method WriteLine().
T
16
2. Bagian Class
Bahasa pemrograman C# yaitu bahasa pemrograman yang
memakai paradigma OOP (Object Oriented Programming) atau
pemrograman berorientasikan objek. Setiap kita membuat program C#,
kita harus membungkus fungsi dan variabel di dalam class.
“Class yaitu sebuah rancangan atau blue print dari objek.”
3. Baigan Fungsi
Pada bagian ini, kita bisa menuliskan fungsi-fungsi dari program.
Fungsi yang harus ada di dalam setiap program yaitu fungsi Main().
Kalau tidak ada fungsi ini, program tidak akan bisa dijalankan. Karena
fungsi Main() merupakan fungsi utama yang akan dieksekusi pertama
kali. Oleh sebab itu, kita biasanya akan banyak menulis kode program
di dalam fungsi Main().
3.2 Struktur Program C#
Penulisan statemen dan ekspresi dalam C# harus diakhiri dengan
titik koma (;). Kalau tidak maka nanti akan error.
Contoh:
3.3. Penulisan Blok Kode
Blok kode di dalam C# dibungkus memakai kurung kurawal {
... }.
Contoh
17
Biasanya blok kode dipakai untuk membungkus lebih dari satu
statement. Jika statement hanya ada satu baris, maka bisa kita tidak
bungkus dengan tanda kurung kurawa.
3.4 Sintak dasar Pemograman C#
Sintak dasar dalam pemograman C# yaitu sebagai berikut:
1. Nama File : secara default dalam program yang kita buat
yaitu Program.cs. walaupun kita bisa menggantinya dengan apa
saja seperti programpertama.cs. Akhiran atau extention yang di
pakai bahwa suatu file berisi sorce code C# yaitu .cs
2. Comment
Comment dapat dipakai sebagai dokumentasi, untuk
memberikan informasi atau keterangan mengenai program yang
kita buat dan memahami dalam membantu program yang kita
buat.
Comment Single Line
Comment Single line di awali dengan tanda // hanya berlaku
untuk satu baris code dan berakhir pada baris ini .
Contoh:
System.Console.WriteLine (“Halo Dunia!”); //akan
menuliskan pesan di layar
Comment Multi Line
T
18
Comment Multi Line di awali dengan tanda /* dan di akhiri
dengan */
Contoh:
/* Comment jenis ini
dapat menutupi lebih dari satu baris */
3. Method Main
Method Main() bisa di katakan sebagai pintu masuk program
anda. Kalau anda mencoba mengganti nama Main() dengan
nama lain, compiler akan mengeluh bahwa tidak ada entry point
atau pintu masuk. Perlu juga diketahui bahwa isi atau tubuh
method harus diawali dengan “{“ dan diakhiri dengan “}”.
Method Main() dapat disebut juga sebagai fungsi utama.
Contoh:
static void Main(string[] args)
{
//Tubuh atau isi method
}
4. Class
Method di dalam C# tidak bisa berdiri sendiri, namun harus
menjadi bagian dari suatu class. Nama class yang
menyelimuti Main() tidak menjadi masalah. Seperti method,
tubuh suatu class dimulai dengan { dan diakhiri dengan }.
Contoh:
class Hallo
{
// tubuh atau isi class
}
5. System.Console.WriteLine() dan System.Console.Write()
Method WriteLine() ini berada di dalam class yang
bernama Console (sebagaimana method Main() berada
dalam suatu class). Class Console sendiri dikelompokkan
ke dalam namespace yang bernama System. Namespace
System menampung semua class library.NET (Console
yaitu salah satu dari class library.NET). Jadi kita
memanggil method WriteLine() dengan menuliskan mulai
dari namespacenya sampai ke method itu sendiri.
Contoh:
19
System.Console.WriteLine(“Halo Lingkup
Informatika!”);
//Akan menyisipkan baris baru
System.Console.Write(“Sedang belajar C#!”); // tanpa
menyisipkan baris baru
System.Console.Write(“Gampang-gampang susah.”); //
tanpa menyisipkan baris baru
Output dari penggalan program di atas sebagai berikut:
Halo Lingkup Informatika!
Sedang belajar C#! Gampang-gampang susah.
6. Readline()
Method static ReadLine() dari class Console memungkinkan
kita menuliskan input sampai enter ditekan. Input yang kita
berikan akan dikembalikan ke program dalam bentuk string.
String yang dikembalikan ini dapat kita jadikan argument
bagi Parse().
Contoh:
class Input
{
static void Main()
{
int var1, var2;
Console.WriteLine(“Program
Penjumlahan”);
Console.WriteLine();
Console.Write(“Masukkan angka
pertama: ”);
var1 = int.Parse(Console.ReadLine());
Console.Write(“Masukkan angka
kedua: ”);
var2 = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine(“Jumlahnya yaitu
{0}.”, var1 + var2);
}
}
T
20
7. Parse()
Type data yang telah dipakai seperti int dan double juga
merupakan sejenis class. Type type dasar yang didefinisikan
Framework .NET memiliki method static yang bernama Parse().
Method ini menerima sebuah argument string dan
mengembalikan hasil olahannya. Hasil olahannya berupa tipe
yang bersangkutan, dengan nilai yang terkandung di
dalam string argument.
1. Namespace
Namespace yaitu kata kunci untuk mendefinisikan ruang
lingkup atau batasan program dan menghindari konflik
nama. Misalnya source code A.cs dan source code B.cs
sama-sama membuat class yang bernama namakelas. Kedua
class yang namanya sama ini dapat dipakai di suatu
program asalkan terletak di namespace yang berbeda.
Kegunaan namespace untuk mengelompokan elemen-
elemennya (misalnya class) bisa dimisalkan seperti
kegunaan folder untuk mengelompokkan file-file.
2. Placeholder
Placeholder yaitu data yang di ikat atau di gabungkan ke
dalam sebuah pernyataan secara terpisah dari data-data
yang lain.
Contoh:
int permen = 10;
int snack = 5;
//placeholder {0} dan {1}
Console.WriteLine("Saya memliki {0} permen dan {1}
snack", permen, snack);
Console.ReadLine();
3.5 Statement Kondisi
Statement IF dipakai untuk mengeksekusi beberapa kode
program apabila mempunyai kondisi True atau False. Statement
IF menentukan kondisi ekspresi yang akan dievaluasi. Apabila
kondisi benar, pernyataan dalam kurung kurawa “{}” akan dieksekusi.
Apabila kondisi salah, maka akan di abaikan Kemudian komputer akan
21
melanjutkan program yang berada setelah tubuh dari
statement IF ini .
a. Bentuk umum statement IF:
if ( kondisi )
{
Perintah benar;
}
else
{
Perintah salah;
}
Contoh program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KondisiIF_1
{
class Program
{
static void Main(string[] args)
{
int a = 10, b = 20, c, d, e;
c = a * b;
if (c > 100)
{
d = c - a;
}
else
{
d = c - b;
}
e = d + c;
Console.WriteLine("Hasil Nilai C=" + c);
Console.WriteLine("Hasil Nilai D=" + d);
Console.WriteLine("Hasil Nilai E=" + e);
Console.ReadKey();
}
}
T
22
}
Hasil:
b. Bentuk IF bersarang
if (kondisi_1)
{
Perintah_1;
}
else if (kondisi_2)
{
Perintah_2:
}
else
{
Perintah salah;
}
Contoh program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KondisiIF_2
{
class Program
{
static void Main(string[] args)
{
double a, b, c, d, e;
Console.Write("Masukkan Nilai A=");
a = double.Parse(Console.ReadLine());
23
Console.Write("Masukkan Nilai B=");
b = double.Parse(Console.ReadLine());
c = (a * b) / (a + b);
if (c > 100)
{
d = c - a;
}
else if (c > 50)
{
d = c + a;
}
else
{
d = c - b;
}
e = (d / a) * (a * b);
Console.WriteLine("Hasil Nilai C="+c);
Console.WriteLine("Hasil Nilai D=" + d);
Console.WriteLine("Hasil Nilai E=" + e);
Console.ReadKey();
}
}
}
Hasil:
3.6 Perulangan
a. While Statement
Pernyataan while, do-while, for dan foreach merupakan
pernyataan yang termasuk dalam keluarga perulangan. Pernyataan
while memiliki mekanisme yaitu suatu statement yang dijalankan
T
24
secara berulang selama kondisi dalam while masih terpenuhi.Bentuk
umum Statement While
While (kondisi)
{
Perintah;
}
Contoh program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PerulanganWhile_1
{
class Program
{
static void Main(string[] args)
{
int a = 10;
while (a > 5)
{
Console.WriteLine("Selamat Datang...");
a = a - 1;
}
Console.Write("Tekan Enter...");
Console.ReadKey();
}
}
}
25
Hasil:
Hasil diatas yaitu untuk menampilkan Selamat Datang sebanyak
5 kali, pertama memberikan nilai awal a=10, lakukan perulangan jika
a>5. Cetak Selamat Datang, kemudian lakukan perngurangan a=a-1,
a=10-1→9, apakah 9 lebih besar 5 jika ya cetak lagi, a=9-1→8, apakah 8
lebih besar dari 5 jika ya tampilkan dilayar.
b. Do While Statement
Pernyataan Do-While memiliki mekanisme blok kode yang
ada dalam lingkup do dieksekusi dahulu, kemudian setelah itu
baru dieksekusi oleh while, bila kondisi dalam while terpenuhi tapi
jika tidak maka blok kode dalam lingkup do akan berlanjut ke perintah
berikutnya.
Bentuk umum Statement Do - While
do
{
Perintah;
}
while (kondisi)
Contoh program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
T
26
namespace DoWhile_1
{
class Program
{
static void Main(string[] args)
{
int a;
do
{
Console.Write("Masukkan Nilai A=");
a=int.Parse(Console.ReadLine());
}
while(a>10);
Console.Write("Tekan Enter...");
Console.ReadKey();
}
}
}
Hasil:
Hasil program diatas yaitu mengeluarkan pertanyaan yang harus
diisi pengguna (program masukan), jika pengguna memasukkan angka
a<10 maka blok kode dalam do akan berlanjut ke blok kode yang
ada dibawahnya yaitu Tekan Enter…, namun jika pengguna
memasukkan angka a>10, maka while akan di eksekusi alias
pertanyaan yang ada dalam blok kode do diulang kembali.
27
c. For Statement
Pernyataan For memiliki mekanisme yang hampir mirip dengan
pernyataan While dimana suatu blok kode akan di iterasi sampai
mencapai kondisi tertentu, namun yang membedakan
antara for dengan while yaitu sintaks dalam for sudah di built-in dan
juga memakai operator increment atau decrement.
Bentuk umum Statement For
for (nilai awal;kondisi;perulangan/penambahan)
{
Perintah;
}
Contoh program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace For_1
{
class Program
{
static void Main(string[] args)
{
for (int a = 1; a <= 5; a++)
{
Console.WriteLine("ini yaitu nilai angka=" + a);
}
Console.Write("Tekan Enter...");
Console.ReadKey();
}
}
}
T
28
Hasil:
Hasil program yang ditampilkan yaitu muncul kalimat "ini
yaitu nilai angka=1" sampai "ini yaitu nilai angka=5" secara
berurutan.
d. Foreach Statement
Pernyataan Foreach memiliki mekanisme hampir sama
seperti for, statement ini digunaakan untuk melakukan perulangan
pada setiap isi atau elemen pada array. foreach memungkinkan untuk
melakukan penelusuran atas item dalam sekumpulan / koleksi data,
statement ini banyak dipakai dalam melakukan penelusuran pada
collection.
Bentuk umum Statement Foreach
Foreach (tipe variabel dalam koleksi data)
{
Perintah;
}
Contoh program_1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ForEach_1
29
{
class Program
{
static void Main(string[] args)
{
string huruf = "Abuwa Coffe";
foreach (char huruf1 in huruf) //-- convert huruf ke tipe
data char dengan
//-- variabel huruf1
{
Console.WriteLine("Elemen Huruf.. " + huruf1);
}
Console.ReadKey();
}
}
}
Hasil:
Tampilan program yaitu keluarnya kalimat "Elemen Huruf .. A"
sampai "Elemen Huruf .. e" secara berurutan. Pertanyaannya kenapa
program tidak error dan tetap mengeluarkan tampilan perulangan.
String yang dipakai tidak berada dalam arrays, sedangkan jika
memakai char dalam program hasilnya akan error. Jika dilihat
kode program akan mengconvert string menjadi char agar setiap
elemen dalam string ini dapat diulangi satu-persatu.
T
30
Contoh program_1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ForEach_2
{
class Program
{
static void Main(string[] args)
{
int[] nilai = { 2, 3, 2, 6, 4, 2, 8, 7 };
foreach (int angka in nilai)
{
Console.WriteLine("Ini yaitu Angka = " + angka);
}
Console.ReadKey();
}
}
}
Hasil:
31
3.7 Array
Array dipakai untuk menyimpan lebih dari satu nilai dengan
tipe data yang sama dalam satu variabel. Sebuah array memiliki sifat
sebagai berikut:
1. Setiap elemen dari array harus memiliki tipe data yang sama.
2. Sebuah array dapat berupa Single-Dimensi, Multidimensional atau
Jagged.
3. Jumlah dimensi dan panjang masing-masing dimensi ditetapkan
saat saat array dibuat. Nilai-nilai ini tidak dapat diubah
jika sudah dideklarasikan.
4. Nilai default dari elemen array numerik yaitu 0, dan elemen
string diatur ke null.
5. Jagged array yaitu array di dalam array, artinya elemen dari
array ini berupa array juga.
6. Array yaitu sebuah zero indexed, artinya elemen dari array itu
diindex dari 0 sampai jumlah elemen-1. Misalkan jumlah elemen
5, maka indeknya yaitu 0, 1, 2, 3, 4.
Array dalam pemograman C# bekerja layaknya array dalam
bahasa pemrograman secara umum. Ada beberapa perbedaan yang
anda harus perhatikan, saat mendeklarasikan sebuah array, tanda
kurung siku [ ] ditaruh di belakang tipe data bukan di belakang nama
variabel. Jika ditempatkan di belakang variabel, maka akan muncul
error pada pemograman C#.
Bentuk Umum:
int[] nilai; //Bukan int nilai[];
Cara menentukan panjang array atau jumlah elemen dalam suatu
array.
int[] nilai; //Mendeklarasikan array;
nilai = new int[5] //Menentukan panjang array sebanyak 5
A. Mendeklarasikan Array
Pemograman C# mendukung Single-Dimensional Array,
Multidimensional Array, dan Jagged Array. Berikut cara
mendeklarasikan berbagai jenis array:
Single-dimensional
Contoh:
T
32
array:int[] nilai;
Multidimensional array
Contoh:
string[,] nama;
Jagged array (array di dalam array)
Contoh:
int[][] angka;
Mendeklarasikan array belum membuat sebuah array, karena
menentukan panjang arraynya. Untuk menentukan panjang array kita
bisa menambahkan:
a) Single-dimensional Array:
int[] angka = new int[5];
b) Multidimensional array:
string[,] nama = new string[5,4];
c) Jagged array:
byte[][] angka= new byte[5][];
for (int x = 0; x < angka.Length; x++)
{
angka[x] = new byte[4];
}
B. Inisialisasi Array
Pemograman C# menyediakan berbagai cara dalam mengisi nilai
dari setiap elemen array, dimana pengisian elemen diapit dengan tanda
kurung kurawa ({}). Berikut cara-cara pengisian array:
a) Single-dimentional array:
int[] nilai = new int[5] { 1, 2, 3, 4, 5 };
string[] nama = new string[3] { "John", "Jesica", "David" };
atau
int[] nilai = new int[] { 1, 2, 3, 4, 5 };
string[] nama = new string[] { "John", "Jesica", "David" };
33
atau
int[] nilai = { 1, 2, 3, 4, 5 };
string[] nama = { "John", "Jesica", "David" };
b) Multidimentional array:
int[,] nilai = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
string[,] nama = new string[2,2] { {"John", "Jessica"},
{"David", "Marry"} };
atau
int[,] nilai = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
string[,] nama = new string[,] { {"John", "Jessica"},
{"David", "Marry"} };
atau
int[,] nilai = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
string[,] nama = { {"John", "Jessica"}, {"David", "Marry"} };
c) Jagged Array
int[][] angka = new int[2][] { new int[] { 1, 2, 3 }, new
int[] { 4, 5, 6 } };
atau
int[][] angka = new int[][] { new int[] { 1, 2, 3 }, new int[]
{ 4, 5, 6 } };
atau
int[][] angka = { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
C. Mengakses Anggota Array
Berikut yaitu cara untuk mengambil nilai yang ke 4 dari sebuah
single-dimentional array:
static void Main(string[] args)
{
T
34
int[] angka = { 2, 4, 5, 2, 1, 7, 8, 9 };
Console.WriteLine(angka[5]);
Console.ReadKey();
}
Hasil:
7 //-- karean array dimulai dari 0,1,2,3,4,5 jadi angka kelima
yaitu 7
Berikut ini cara untuk mengambil elemen pada posisi 4,3 dari
sebuah multi dimentional array:
static void Main(string[] args)
{
int[,] angka={{1,2},{3,4},{5,6}};
Console.WriteLine(angka[1,0]);
Console.ReadKey();
}
Hasil:
3
Int[,] angka yang mempunyai array ke → 0 {1,2}, array ke → 1
{3,4} dan array ke 2 → {5,6}. Dan array {3,4} dimulai dari array 0 dan
array 1, jadi hasil dari angka[1,0] yaitu terletak di array ke – 1 dan
terletak di kolom array 0 yaitu array {3,4} yang array 0-nya yaitu
angka 3.
Berikut yaitu cara untuk mengambil elemen pada posisi 0, 0 dan
1, 2 dari sebuah jagged array:
int[][] angka = { new int[] { 1, 2 }, new int[] { 3 , 4, 5 } };
System.Console.WriteLine(angka[0][0]);
System.Console.WriteLine(angka[1][2]);
Hasil:
1
5
35
Angka[0][0] terletak pada array ke – angka[0] yaitu {1,2}, dan
nilai array [0] yaitu nilainya . Dan angka[1][2] terletak pada array ke-1
yaitu {3,4,5} yang dimulai pada array 0,1,2 dan [2] terletak pada array
5.
Berikut yaitu cara untuk mengambil elemen pada posisi 2, 1 dari
sebuah multi dimentional array:
int[,] angka = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
System.Console.WriteLine(angka[2,1]);
Hasil:
6
Angka[2,1] terletak di array ke -2 yaitu array {5,6}, dimana {1,2}
sebagai array ke-0, {3,4} sebagai array ke-1, dan {5,6} sebagai array ke-
2. Dan nilai array 1 yaitu elemen array {5,6} yaitu elemen 0 yaitu 5
dan elemen 1 yaitu 6.
Berikut yaitu cara untuk mengambil elemen pada posisi 0, 0 dan
1, 2 dari sebuah jagged array:
int[][] angka = { new int[] { 1, 2 }, new int[] { 3 , 4, 5 } };
System.Console.WriteLine(angka[0][0]);
System.Console.WriteLine(angka[1][2]);
Hasil:
1
5
D. Array yaitu Object
Pemograman C#, array sebenarnya merupakan object.
System.Array yaitu base dari semua jenis array. Dalam memakai
properti, dan class lainnya yang memiliki System.Array. Misalnya kita
gunakan property length untuk menentukan size atau panjang dari
suatu array.
T
36
Contoh program:
int[] angka = { 1, 2, 3, 4, 5, 6, 7, 8, 1 };
System.Console.WriteLine(angka.Length);
Hasil:
9
∞
37
BAB 4.
Object Oriented Programing
4.1 Pengertian OOP
Object Oriented Programming atau Pemrograman Berbasis
Objek, yaitu salah satu cara membuat program berguna untuk
memecah alur program menjadi modul-modul sederhana yang disebut
dengan objek. Setiap objek akan memiliki fungsi dan tugas
tersendiri. OOP berbeda dengan prosedural programming yang
memecah program menjadi fungsi-fungsi atau prosedural.
C# (dibaca C-Sharp) merupakan suatu bahasa pemrograman
yang memakai konsep Pemrograman berbasis Objek (OOP). OOP
memposisikan semua bagian yang terlibat dalam program sebagai
objek. Program dapat dibentuk dan dijalankan melalui interaksi
antara objek yang satu dengan objek yang lainnya.
Dalam paradigma OOP, solusi dibangun dari 1 objek atau lebih
yang saling bekerja sama untuk menyelesaikan masalah. Objek
merupakan benda (nyata dan tidak nyata). Setiap objek memiliki nilai
yang melekat pada setiap objek ini . Nilai yang melekat pada
objek ini disebut dengan properti. Setiap objek memiliki
kemampuan untuk melakukan sesuatu. Setiap objek bisa memiliki
kemampuan untuk melakukan suatu aksi. Aksi yang dapat dilakukan
oleh sebuah objek disebut dengan method.
Contohnya sebuah objek bernama sepeda. Sepeda memiliki nilai
yang melekat dengan sepeda ini misalnya merek, harga, jenis
sepeda, warna, ukuran roda, jumlah rem. Sedangkan aksi yang bisa
dilakukan oleh sepeda contohnya berhenti, jalan, ganti gigi,
mengerem. Aksi lebih cenderung memakai kata kerja sedangkan
properti lebih ke kata benda dan kata sifat.
4.2 Class, Objek dan Atribute
Objek dipakai dalam C# merupakan bentuk nyata sebuah
kelas (kelompok). Hal ini disebut dengan Classification (klasifikasi),
yaitu mengatur informasi dan tingkah laku yang sama ke dalam
entitas yang berarti. Contohnya, semua mobil memiliki tingkah laku
dan properti yang sama sehingga mobil ini “diklasifikasikan” ke
dalam kelas (kelompok) Mobil.
Objek dalam C# merupakan bentuk nyata (instance) dari kelas.
Kelas merupakan cetakan dari objek. Dari kelas ini dapat dibuat
T
38
objek. Dalam kelas sudah ada informasi berupa properti dan
tingkah laku objek yang nanti dibuat berdasarkan kelas ini .
Properti berupa variabel kelas yang dipakai untuk menyimpan
data dan tingkah laku berupa fungsi yang dapat dijalankan.
Banyak objek dapat dibuat dari sebuah kelas. Dalam C# untuk
kelas dibuat dengan memakai keyword class. Format penulisan
kelas dalam C# yaitu sebagai berikut;
class <Nama Kelas>
{
<Tipe> <Nama Properti>
<Tipe> <Nama Fungsi> ( [Daftar Argumen])
{
Statement_1;
Statement_2;
}
}
Berikut ini yaitu contoh sebuah kelas yaitu kelas Segitiga
Class Segitiga
{
Decimal alas;
Decimal tinggi;
Public void hitungLuas()
{
Console.WriteLine("Disini seharusnya terjadi
hitung luas");
}
Public void tampilkanInfo()
{
Console.WriteLine("Alas segitiga "+ alas);
Console.WriteLine("Tinggi segitiga "+ tinggi);
}
}
Sebuah objek dibuat dari kelas yang telah ada. Gunakan keyword
new untuk membuat objek dari kelas.
Bentuk umum pembuatan class:
[nama_kelas] [nama_objek] = new [nama_kelas]()
39
Contoh untuk membuat objek dari kelas Segitiga yaitu sebagai
berikut:
Segitiga s1 = new Segitiga();
Atau dapat juga ditulis sebagai berikut;
Segitiga s1;
s1 = new Segitiga();
Statement diatas bisa dijelaskan sebagai berikut. “Deklarasikan
sebuah variabel bernama s1 bertipe Segitiga, kemudian buat sebuah
objek dari kelas Segitiga dan simpan objek ini ke dalam variabel
s1. Untuk selanjutnya objek yang dihasilkan disebut dengan objek s1.
Kelas bisa diperlakukan layaknya sebuah tipe data, sehingga
sebuah variabel bisa memiliki tipe data berupa nama kelas. Format
deklarasi variabel <Tipe Data> <nama Variabel>, juga bisa dipakai
dipakai dengan memakai kelas menjadi <Class> <nama
variabel/nama objek>
Dari sebuah kelas dapat dibuat banyak objek. Contoh membuat
objek baru dari kelas yang sama dapat dilihat pada contoh dibawah
ini.
Segitiga s1 = new Segitiga();
Segitiga s2 = new Segitiga();
Segitiga segitiga = new Segitiga();
4.3 Property
Properti yaitu variabel dalam kelas/objek. Properti dipakai
untuk menyimpan data atau nilai yang ada dalam objek ini .
Properti dideklarasikan dalam kelas dan dapat dipakai di semua
method dalam kelas ini . Deklarasi properti dalam kelas
mengikuti format berikut ini.
[Level akses] <Tipe data> <nama properti>;
Level akses yaitu hak akses objek lain terhadap properti
ini . Level akses juga dipakai terhadap method. Dalam C# ada
4 hak akses yang dapat dipakai yaitu :
1. Public–Level akses public memungkinkan sebuah properti atau
method sebuah kelas dapat diakses oleh objek lain baik dari
assembly yang sama maupun assembly yang berbeda.
T
40
2. Private–Sebuah properti atau method yang memiliki akses level
private hanya bisa diakses oleh kode (objek atau kelas) yang
berasal dari kelas yang sama (atau struct yang sama).
3. Protected–Properti atau method yang memiliki akses level
protected hanya bisa diakses oleh kode (objek atau kelas) yang
sama dan kode turunannya. Kita akan membahas turunan kelas
pada pembahasan selanjutnya.
4. Internal–Hak akses internal membatasi akses terhadap properti
atau method hanya bisa diakses oleh kode yang berasal dari
assembly yang sama, dan tidak dari assembly yang
berbeda.
Keempat akses level itulah yang dipakai untuk menentukan
akses level sebuah properti dan method dalam sebuah kelas. Deklarasi
akses level bersifat opsional. Jika deklarasi akses level tidak
dinyatakan maka akses level properti atau method ini menjadi
private.
Contoh deklarasi sebuah properti pada contoh kelas diatas
yaitu :
String nama;
Public Int jumlahKaki;
Pada contoh diatas properti jumlahKaki merupakan properti
bertipe integer dan memiliki akses level public. Sedangkan properti
nama, karena tidak dideklarasikan akses levelnya, memiliki akses
level private. Disarankan deklarasi properti memiliki nilai awal. Nilai
awal sebuah properti dapat dideklarasikan saat deklarasi properti
(sama seperti deklarasi variabel). Contoh deklarasi properti yang
memiliki nilai awal dapat dilihat pada contoh berikut ini.
String nama = “Yu”;
Public int jumlahSisi = 3;
4.4 Method
Method dalam kelas menunjukkan aksi yang dapat dilakukan
oleh kelas (objek) ini . Jika properti dipakai untuk menyimpan
nilai, maka method dipakai untuk menyimpan isntruksi
(statement) yang akan dieksekusi saat method ini dijalankan.
Sebuah kelas dapat memiliki 1 atau lebih method, atau tidak memiliki
41
method sama sekali. Deklarasi method dalam kelas mengikuti format
berikut ini.
[akses level] <tipe data> <nama method> ([daftar agumen])
{
Statement01;
Statement02;
...
}
Akses level yang berlaku terhadap sebuah method sama seperti
akses level yang berlaku terhadap sebuah properti. Tipe data yang
bisa dipakai untuk sebuah method merupakan tipe data yang sama
yang dapat dipakai terhadap properti. Hanya saja pada method ada
tipe data tambahan yang dapat dipakai yaitu tipe data void. Tipe
data void, ini merupakan tipe data yang tidak menyimpan nilai
apapun (hampa).
Tipe data pada method dipakai untuk mengindikasikan nilai
yang akan dikembalikan atau diberikan oleh method ini . Jika
tipe datanya void, maka method ini tidak mengembalikan nilai
apapun. Jika tipe datanya bukan void maka method ini akan
mengembalikan sebuah nilai. Oleh karena method ini akan
mengembalikan sebuah nilai maka di dalam implementasi method
ini harus ada statement return yang untuk mengembalikan nilai
sesuai tipe data method ini .
Daftar argumen merupakan input yang akan dipakai method
ini . Input ini didelarasikan dalam bentuk variabel yang
bisa dipakai dalam method ini . Daftar argumen ini bersifat
opsional (boleh ada, boleh tidak ada).
Contoh Method dalam sebuah kelas, dapat dilihat pada potongan
kode sumber berikut ini.
Class Segitiga
{
Public double hitungLuas(double alas, double tinggi)
{
double luas = alas * tinggi;
return luas;
}
}
T
42
Pada contoh diatas dideklarasikan sebuah method bernama
hitungLuas. Method ini memiliki akses level public yang berarti bisa
diakses oleh objek atau kelas lain. Method ini juga memiliki tipe data
double yang berarti method ini akan menghasilkan dan
mengembalikan sebuah nilai bertipe double. Oleh karena tipe method
ini bukan void, maka dalam method ini harus ada statement
return yang dipakai untuk mengembalikan nilai bertipe double.
Method hitungLuas ini juga memiliki 2 buah argumen yaitu alas dan
tinggi. Kedua argumen ini bertipe double dan dipakai sebagai input
data dalam method ini . Kedua argumen ini dipakai untuk
menghitung luas segitiga.
4.5 Polymorphisme (Overloading)
Polimorfisme bisa diartikan satu bentuk banyak aksi, sekilas
mirip dengan inheritance tetapi dalam polimorfisme suatu objek dapat
melakukan tindakan yang secara prinsip sama tapi secara proses dan
outputnya berbeda. Polimorfisme mengizinkan kelas induk untuk
mendefinisikan sebuah method general (bersifat umum) untuk semua
kelas turunannya, dan selanjutnya kelas-kelas turunan dapat
memperbarui implementasi dari method ini secara lebih spesifik
sesuai dengan karakteristiknya masing-masing.
Polymorphisme secara harfiah berarti banyak bentuk.
Polymorphisme memungkinkan sebuah method dijalankan dengan
cara yang berbeda-beda. Secara umum polymorphisme terbagi
menjadi 2 jenis yaitu:
1. Overloading : Penggunaan satu nama untuk beberapa method.
Overloading mensyaratkan setiap method dengan nama yang
sama memiliki daftar argumen yang berbeda. Method yang akan
dieksekusi tergantung cara memanggil method ini .
2. Overriding : Penggunaan satu nama method yang sama dengan
nama method yang ada pada kelas induknya. Overriding ini akan
dibahas lebih lanjut pada pembahasan selanjutnya.
Contoh Overloading dapat dilihat pada kode kelas dibawah ini.
class Segitiga
{
//Menghitung luas dengan memakai alas dan tinggi
segitiga
public double hitungLuas(double alas, double tinggi)
{
double luas = alas * tinggi;
43
return luas;
}
//Menghitung luas dengan memakai ketiga sisi
segitiga
public double hitungLuas(double a, double b, double c)
{
double S = (a + b + c)/2;
double luas = Math.Sqrt(S * (S -a) * (S -b) * (S -c));
return luas;
}
}
Kelas segitiga diatas memiliki dua buah method dengan nama
hitungLuas. Fungsi kedua method ini sama-sama untuk menghitung
luas segitiga. Ada beberapa cara untuk menghitung segitiga yaitu
dengan memakai persamaan L = a * t / 2 atau dengan cara
menghitung luas dengan memakai panjang ketiga sisi-sisi
segitiga ini dengan memakai rumus S. Luas dihitung dengan
memakai persamaan berikut :
dan
Dengan demikian ada 2 buah method yang namanya sama,
tapi memiliki implementasi yang berbeda. Bagaimana menentukan
method yang akan dijalankan nantinya? Tergantung dari parameter
yang dipakai . Perhatikan kode berikut ini;
Segitiga = new Segitiga();
luas = segitiga.hitungLuas(4.0, 2.0);
luas = segitiga.hitungLuas(3.0, 2., 3.0);
luas = segitiga.hitungLuas(3, 8, 4, 0);
Pada contoh diatas, ada 3 kali pemanggilan method
hitungLuas dengan argumen yang berbeda. Pada pemanggilan
pertama (baris 2), method hitungLuas dipanggil dengan memakai
2 buah argumen bertipe double. Secara otomatis method hitungLuas
yang pertama dijalankan yaitu method yang menghitung luas dengan
memakai alas dan tinggi. Pada pemanggilan method hitungLuas
T
44
yang kedua (baris ke 3), method hitungLuas dipanggil dengan
memakai 3 argumen.
Maka method yang dipanggil yaitu method kedua yaitu
menghitung luas dengan memakai rumus S. Pemanggilan method
hitungLuas yang ketiga dilakukan dengan memberikan 4 argumen
yang akan menyebabkan error. Hal ini terjadi karena dalam kelas
Segitigayang sudah dideklarasikan sebelumnya tidak ada method
hitungLuas yang memakai 4 buah argumen. Pemanggilan method
overloading tergantung pada argumen yang diberikan terhadap
method ini . Tidak hanya memperhatikan jumlah argumen yang
diberikan, tapi juga tipe data argumen.
∞
P e n g e n a l a n W i n d o w s F o r m
45
BAB 5.
PENGENALAN WINDOWS FORM
5.1 Komponen Visual Studio 2010
Tahapan dalam menjalankan Visual Studio 2010, beserta
tahapan dalam membuat sebuah Project Visual C# 2010.
1. Klik tombol Start → All Program → Microsoft Visual Studio
2010 → Microsoft Visual Studio 2010
2. Tunggu beberapa saat sampai keluar tamplian seperti pada
gambar berikut:
Gambar 5.1.1 Menu Tampilan Visual Studio 2010
3. Klik Menu File → New → Project atau anda juga bisa juga langsung
mengklik New
T
46
Gambar 5.1.2 Menu Tampilan New Visual Studio 2010
Gambar 5.1.3 Menu Tampilan Project Visual Studio 2010
4. Kemudian akan muncul jendela baru dengan tampilan sebagai
berikut:
P e n g e n a l a n W i n d o w s F o r m
47
Gambar 5.1.4 Menu Tampilan New Project Visual C#
5. Pada bagian sebelah kiri pilih Installed Templates kemudian
klik Windows Form Application pada bagian tengah.
6. Selanjutkan beri name project pada bagian Name, sebagai
contoh pada gambar di bawah ini kami beri Lat_1.
5.2 Pengenalan IDE Visual C# 2010
IDE (Integrated Developement Environment) merupakan sebuah
“layanan satu pintu” yang bisa dipakai oleh programmer untuk
melakukan, desain, coding, debugging, dan kompilasi program dalam
sebuah tool yang terintegrasi. IDE terdiri dari beberapa macam
jenisnya yang terdiri dari :
1. Menu Bar, dipakai dalam memilih tugas-tugas tertentu seperti
membuka project, yang terdiri dari menu file, edit, view dan
sebagainya.
2. Main Toolbar, shortcut untuk menu yang sering dipakai pada
menu bar.
Gambar 5.2.1 [1] Menu Bar, [2] ToolBar
Menu Bar terdiri dari banyak pilihan Menu yaitu:
T
48
a) File, menu untuk menutup aplikasi, membuka, membuat,
menutup, dan menyimpan file Visual C# atau proyek Visual
Studio 2010.
b) Edit, menyediakan fungsi umum pada item tertentu, Undo,
Redo, Cut, Copy, Paste, dan Delete.
c) View, menyediakan akses cepat untuk membuka dan
menutup jendela yang ada pada IDE, seperti jendela
Solution Explorer, jendela Properties, jendela Output,
jendela Toolbox dan sebagainya. Jika membutuhkan
jendela yang belum nampak pada IDE, Anda dapat
membuka melalui menu View.
d) Project, menu Project menyediakan bermacam-macam file
untuk aplikasi Anda, misalnya form dan class.
e) Build, menu ini sangat penting saat Anda telah
menyelesaikan aplikasi yang Anda buat dan ingin
menjalankannya tanpa IDE Visual C# 2010, seperti aplikasi
lain dalam bentuk *.EXE.
f) Debug, menu ini menyediakan tool untuk menjalankan
(start) dan menghentikan (stop) aplikasi dengan IDE
Visual C# 2010. Selain itu Anda juga dapat mencari
kesalahan dan melihat apa yang terjadi pada kode yang
Anda tulis.
g) Data, Anda membutuhkan menu ini jika ingin
berhubungan dengan database. Anda dapat mengelola
data source dan preview Anda.
h) Tools, menu ini menyediakan perintah untuk melakukan
konfigurasi IDE Visual Studio 2010.
i) Test, menu ini menyediakan pilihan untuk menciptakan
dan melihat unit percobaan untuk aplikasi yang Anda
kembangkan sebagai bahan latihan penulisan source code
pada bermacam-macam situasi.
j) Window, menu Window menjadi standar pada sebuah
aplikasi yang mengijinkan membuka jendela pada satu
waktu seperti word dan excel. Anda dapat berganti jendela
yang aktif melalui menu ini.
P e n g e n a l a n W i n d o w s F o r m
49
k) Help, menu Help menyediakan akses untuk membuka
dokumentasi Visual Studio 2010, dan Informasi lain
seperti Jendela About, dan lain-lain.
3. Solution Explorer, window yang berisi struktur tree dari
project yang sedang dikerjakan
Gambar 5.2.2 Solution Explorer
T
50
4. Form Designer, window untuk merancang user interface dari
aplikasi
Gambar 5.2.3 Form Designer
5. Toolbox, window yang berisi komponen-komponen yang
dipakai untuk memperkaya user interface.
Gambar 5.2.4 ToolBar
P e n g e n a l a n W i n d o w s F o r m
51
Fungsi-Fungsi Komponen-Komponen Pada Toolbox:
a. Fungsi Tab Common Control
1) Pointer: dipakai untuk memindahkan atau mengubah
ukuran kontrol dan form.
2) Button: Kontrol ini dipakai untuk melakukan tindakan
saat diakses.
3) CheckBox: Kontrol yang memiliki nilai True atau False.
4) CheckedListBox: Daftar kotak centang disamping item.
5) ComboBox: Kombinasi antara kotak list dan kotak teks
yang memungkinkan untuk dipilih serta mengeditnya.
6) DateTimePicker: Menampilkan kalender untuk memilih
hari dan tanggal.
7) Label: Menampilkan teks label.
8) LinkLabel: Menampilkan label dengan teks link.
9) ListBox: Kontrol yang berisi beberapa item.
10) ListView: Hampir sama seperti kontrol ListBox, tetapi
dengan tambahan untuk membuat ikon dan judul.
11) MaskedTextBox: memakai Mask untuk membedakan
input teks yang tepat dan tidak tepat.
12) MonthCalendar: Dapat memilih tanggal saat runtime.
13) NotifyIcon: Menampilkan ikon pada Windows Tray.
14) NumericUpDown: Memungkinkan untuk memasukkan
integer desimal tertentu dalam kisaran tertentu.
15) PictureBox: Menampilkan file gambar.
16) ProgressBar: Menampilkan proses dari sebuah task.
17) RadioButton: Memungkinkan untuk memilih pilihan dari
sekelompok pilihan.
18) RichTextBox: Memungkinkan untuk mengedit dan
menambahkan rich text.
19) TextBox: Kontrol yang dipakai untuk menampilkan atau
memasukkan teks.
20) ToolTip: Menampilkan teks tooltip.
T
52
21) TreeView: Menampilkan hubungan antar node.
22) WebBrowser: Memungkinkan untuk membuka dokumen
HTML di dalam form.
b. Fungsi Tab Containers
1) Grupbox: untuk mengorganisasikan melalui jendela entri
data dan dapat diberi judul.kita dapat mengatur grub satu
dengan grup yang lainnya.
2) Panel: untuk mengorganisasikan melalui jendela entri
data, hampir sama dengan grubbox tetapi tidak dapat
diberi judul.
3) Tabcontrol : Untuk meletakkan halaman lebih dari satu
jendela entri data (TabPages)
6. Code Editor, untuk menuliskan source code dari program.source
code dapat ditampilkan dengan mengklik 2 kali pada form.
Gambar 5.2.5 Code Editor (tempat penulisan source code)
7. Properties, untuk melihat / mengedit sifat dari object yang
sedang dipilih. Disinilah dapat mengubah name, text, jenis huruf,
background form dan sebagainya.
P e n g e n a l a n W i n d o w s F o r m
53
Gambar 5.2.6 Menu Properties
c. Properti (Properties) yang ada pada komponen beserta
kegunaanya :
Properti (Properties) yang ada pada komponen beserta
kegunaanya :
a) BackColor: Mengatur warna latar belakang
b) Font: Untuk mengatur jenis tulisan, ukurannya dan
gayanya (tebal,miring,garisbawah)
c) ForeColor: Mengatur warna tulisan object pada label
d) Text: Nama yang ditampilkan di form yang dilihat oleh
user.
e) Enable: Menentukan sebuah object apakah dapat
dimasukkan perintah yang dilakukan oleh user
T
54
f) Visible: Menentukan sebuah objek apakah dapat dilihat
atau tidak selama proses dijalankan
g) (Name): dipakai untuk identifikasi pada form. Hanya
dapat dilihat oleh programmer untuk kebutuhan koding,
tapi tidak dapat dilihat oleh user
h) Size: Menentukan ukuran sebuah objek (panjang dan
lebar)
∞
P r o g r a m V i s u a l C # 2 0 1 0
55
BAB 6.
PEMOGRAMAN VISUAL C# 2010
6.1 Parsing Data
Dalam sebuah komunikasi protokol, ada data yang dikirim,
biasanya data dikirim dalam satu paket. Dalam proses pembacaan
data terlebih dahulu harus di pisah-pisahkan sesuai dengan jenis
datanya. Proses pemisahan ini dinamakan Parsing Data. Cara
memprogram parsing data memakai visual studio dengan
pemograman C#. Harus dipersiapkan dahulu Visual Studio atau Sharp
Develop atau software sejenisnya. Perintah dalam melakukan parsing
data yaitu sebagai berikut:
Convert.<metode>
Ada beberapa metode dalam melakukan parsing data :
Numeric Type Metode
decimal ToDecimal(String)
float ToSingle(String)
double ToDouble(String)
short ToInt16(String)
int ToInt32(String)
long ToInt64(String)
ushort ToUInt16(String)
uint ToUInt32(String)
ulong ToUInt64(String)
Latihan 1 :
1. Hasil C = Nilai A * Nilai B
2. Jika di klick tombol Mulai maka seluruh kotak isian akan kosong dan
kursor di Nilai A
3. Jika di klik tombol Keluar maka akan keluar dari program
T
56
Gambar 6.1.1 Latihan1
Ubahlah isian properti dari setiap objek/control seperti dibawah
ini :
Nama Objek/Control Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Latihan 1
Label Text Nilai A
TextBox Name
Text
txtA
Kosongkan
Label Text Nilai B
TextBox Name
Text
txtB
Kosongkan
Label Text Hasil C
TextBox Name
BackColor
Enabled
txtC
&H80000000&
False
Button Name
Text
btnMulai
&Mulai
Button Name
Text
btnKeluar
&Keluar
P r o g r a m V i s u a l C # 2 0 1 0
57
1. Lakukan Penulisan Program dengan menDouble Klick control txtA
Gambar 6.1.2 Kode Procedure Event Changed txt A
Keterangan :
Event Change berfungsi kalau ada perubahan procedure baris
dibawahnya akan dijalankan, int.Parse() berfungsi untuk merubah
tipe data string menjadi tipe data integer. String.Empty() berfungsi
untuk menghilangkan string nilai string atau bernilai kosong.
2. Lakukan double Klick control txtB
Gambar 6.1.3 Kode Procedure Event Changed txt B
3. Double Klick kembali di btnMulai
Gambar 6.1.4 Kode Procedure Event Click btn Mulai
Keterangan :
a. Event Click yaitu jika Tindakan Mouse diClick maka program
dibawahnya akan dijalankan
b. txtA.Clear() yaitu untuk mengosongkan/membersihkan tombol txtA
T
58
c. txtB.Clear() yaitu untuk mengosongkan/membersihkan tombol txtB
d. txtC.Clear() yaitu untuk mengosongkan/membersihkan tombol txtC
e. txtA.Focus() yaitu untuk meletakkan kursor di txtA
4. Double Klick btnKeluar
Gambar 6.1.5 Kode Procedure Event Click btn Keluar
Latihan 2:
1. Jika di Klik Status=“Kawin” akan keluar di Keterangan=”Kawin”
Jika di Klik Status=”Tidak Kawin” akan keluar di Keterangan=”Tidak
Kawin”
2. Kalau ditekan Enter Kotak isiannya akan turun kebawah
3. Tombol Mulai seluruh kotak isian akan kosong
4. Tombol Keluar akan keluar dari program
Gambar 6.1.6 Latihan 2
P r o g r a m V i s u a l C # 2 0 1 0
59
Ubahlah isian properti dari setiap objek/control seperti dibawah
ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Latihan 2
Label Text NIK
TextBox Name
Text
txtNik
Kosongkan
Label Text Nama Karyawan
TextBox Name
Text
txtNama
Kosongkan
Label Text Alamat
TextBox Name txtAlamat
Label Text Keterangan
TextBox Name
BackColor
Enabled
txtKet
MenuBar
False
GroupBox1 Text [ Jenis Kelamin ]
RadioButton Name rdKawin
Text Kawin
RadioButton Name
Text
rdTKawin
Tidak Kawin
Button Name
Text
btnMulai
&Mulai
Button Name
Text
btnKeluar
&Keluar
Kode Program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lat2
{
public partial class Form1 : Form
T
60
{
public Form1()
{
InitializeComponent();
}
private void rdKawin_CheckedChanged(object sender, EventArgs
e)
{
txtKet.Text = "Kawin";
}
private void rdTKawin_CheckedChanged(object sender,
EventArgs e)
{
txtKet.Text = "Tidak Kawin";
}
private void txtNik_TextChanged(object sender, EventArgs e)
{
if (rdKawin.Checked == true)
{
txtKet.Text = "Kawin";
}
else
{
txtKet.Text = "Tidak Kawin";
}
}
private void txtNama_TextChanged(object sender, EventArgs e)
{
if (rdKawin.Checked == true)
{
txtKet.Text = "Kawin";
}
else
{
txtKet.Text = "Tidak Kawin";
}
}
P r o g r a m V i s u a l C # 2 0 1 0
61
private void txtAlamat_TextChanged(object sender, EventArgs e)
{
if (rdKawin.Checked == true)
{
txtKet.Text = "Kawin";
}
else
{
txtKet.Text = "Tidak Kawin";
}
}
private void btnMulai_Click(object sender, EventArgs e)
{
txtNik.Clear();
txtNama.Clear();
txtAlamat.Clear();
txtKet.Clear();
txtNik.Focus();
}
private void btnKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Latihan 3:
1. Total = Banyak Pemakaian * Beban
2. Bulan akan muncul nama bulan, dan Tahun akan muncul dari 1980
sampai 2010
T
62
Gambar 6.1.7 Latihan 3
Ubahlah isian properti dari setiap objek/control seperti dibawah
ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Latihan 3
Label Text Bulan
combobox Name cboBulan
TabIndex 0
Label Text Tahun
combobox Name cboTahun
TabIndex 1
Label Text Nama Langganan
TextBox Name
TabIndex
txtNama
2
Label Text Banyak Pemakaian
TextBox Name
TabIndex
txtBanyak
3
Label Text Beban
TextBox Name
TabIndex
txtBeban
4
Label Text Total
TextBox Name
BackColor
Enabled
txtTot
MenuBar
False
Button Name
Text
btnMulai
&Mulai
Button Name
Text
btnKeluar
&Keluar
P r o g r a m V i s u a l C # 2 0 1 0
63
Kode program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lat_3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
bulan();
tahun();
}
private void bulan()
{
for (int i = 1; i <= 12; i++)
{
cboBulan.Items.Add(System.Globalization.DateTimeFormatInfo.Curr
entInfo.GetMonthName(i));
cboBulan.SelectedIndex = 0;
}
}
private void tahun()
{
for (int i = 1940; i <= DateTime.Now.Year; i++)
{
cboTahun.Items.Add(i);
cboTahun.SelectedIndex = 0;
T
64
}
}
private void btnMulai_Click(object sender, EventArgs e)
{
txtNama.Clear();
txtBanyak.Clear();
txtBeban.Clear();
txtTotal.Clear();
txtNama.Focus();
}
private void btnKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
private void txtNama_KeyPress(object sender, KeyPressEventArgs
e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
private void cboBulan_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{tab}");
}
}
private void cboTahun_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{tab}");
}
P r o g r a m V i s u a l C # 2 0 1 0
65
}
private void txtBanyak_KeyPress(object sender, KeyPressEventArgs
e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
private void txtBeban_KeyPress(object sender, KeyPressEventArgs
e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
private void total()
{
float banyak, beban, tot;
banyak = float.Parse(txtBanyak.Text.Trim() !=string.Empty ?
txtBanyak.Text.Trim() :"0");
beban = float.Parse(txtBeban.Text.Trim() != string.Empty ?
txtBeban.Text.Trim() : "0");
tot = banyak * beban;
txtTotal.Text = tot.ToString();
}
private void txtBanyak_TextChanged(object sender, EventArgs e)
{
total();
}
private void txtBeban_TextChanged(object sender, EventArgs e)
{
total();
}
}
}
T
66
Latihan 4
1. Jumlah = Biaya * Banyak
2. Jika Potongan=DVD maka DVD= Jumlah*0.1
3. Jika Potongan=Langganan maka Lgn=Jumlah*0.1
Jika Potongan=ID Card maka IDCard=Jumlah*0.1
4. Bonus=DVD+Lgn+IDCard
5. Total=Jumlah-Bonus
Gambar 6.1.8 Latihan 4
Ubahlah isian properti dari setiap objek/control seperti dibawah ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Latihan 4
Label Text Kode Film
TextBox Name txtKode
TabIndex 0
Label Text Judul Film
TextBox Name txtJudul
TabIndex 1
P r o g r a m V i s u a l C # 2 0 1 0
67
Label Text Biaya Sewa
TextBox Name
TabIndex
txtBiaya
2
Label Text Banyak
TextBox Name
TabIndex
txtBanyak
3
Label Text Jumlah
TextBox Name
TabIndex
BackColor
Enabled
txtJumlah
4
MenuBar
False
Label Text Diskon
TextBox Name
BackColor
Enabled
txtDiskon
MenuBar
False
Label Text Total
TextBox Name
BackColor
Enabled
txtTotal
MenuBar
False
GroupBox Text [ Potongan ]
CheckBox Name
Text
chkDVD
DVD
CheckBox Name
Text
chkLangganan
Langganan
CheckBox Name
Text
chkID
ID Card
Button Name
Text
btnMulai
&Mulai
Button Name
Text
btnKeluar
&Keluar
Kode program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
T
68
namespace Lat_4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Hitung()
{
double biaya, banyak, jumlah, diskon, total, dvd=0, lang=0, id=0;
biaya = double.Parse(txtBiaya.Text.Trim() != string.Empty ?
txtBiaya.Text.Trim() : "0");
banyak = double.Parse(txtBanyak.Text.Trim() != string.Empty ?
txtBanyak.Text.Trim() : "0");
jumlah = biaya * banyak;
if (chkDVD.Checked == true)
{
dvd = jumlah * 0.1;
}
if (chkID.Checked == true)
{
id = jumlah * 0.1;
}
if (chkLangganan.Checked == true)
{
lang = jumlah * 0.1;
}
diskon = dvd + id + lang;
total = jumlah - diskon;
txtJumlah.Text = jumlah.ToString();
txtDiskon.Text = diskon.ToString();
txtTotal.Text = total.ToString();
}
private void txtBiaya_TextChanged(object sender, EventArgs e)
{
P r o g r a m V i s u a l C # 2 0 1 0
69
Hitung();
}
private void txtBanyak_TextChanged(object sender, EventArgs e)
{
Hitung();
}
private void chkDVD_CheckedChanged(object sender, EventArgs e)
{
Hitung();
}
private void chkLangganan_CheckedChanged(object sender,
EventArgs e)
{
Hitung();
}
private void chkID_CheckedChanged(object sender, EventArgs e)
{
Hitung();
}
private void txtKode_KeyPress(object sender, KeyPressEventArgs
e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
private void txtJudul_KeyPress(object sender, KeyPressEventArgs
e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
T
70
private void txtBiaya_KeyPress(object sender, KeyPressEventArgs
e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
private void txtBanyak_KeyPress(object sender,
KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
}
}
Latihan 5:
1. Jika Jenis Barang =”Kelontong” maka
Nama Barang Tarif
- Panci - 56000
- Sendok - 6000
- Piring - 7800
2. Jika Jenis Barang=”Elektronika” maka
Nama Barang Tarif
- TV 21 Inchi - 1970000
- Mini Compo - 1500000
- DVD Player - 780000
3. Total = Tarif * Jumlah
P r o g r a m V i s u a l C # 2 0 1 0
71
Gambar 6.1.9 Latihan 5
Ubahlah isian properti dari setiap objek/control seperti dibawah
ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Latihan 5
Label Text Nama Barang
ComboBox Name cboNama
TabIndex 0
Label Text Jumlah
TextBox Name txtJumlah
TabIndex 1
Label Text Tarif
TextBox Name
TabIndex
BackColor
Enabled
txtTarif
2
MenuBar
False
Label Text Total
TextBox Name
TabIndex
BackColor
Enabled
txtTotal
3
MenuBar
False
GroupBox Text [ Jenis Barang ]
RadioButton Name
Text
rdElek
Elektronika
RadioButton Name
Text
rdKel
Kelontong
Button Name
Text
btnMulai
&Mulai
Button Name
Text
btnKeluar
&Keluar
T
72
Kode program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lat_5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Hitung();
}
private void Hitung()
{
float total, tarif, jumlah;
if (rdElek.Checked == true)
{
cboNama.DisplayMember = "Text";
cboNama.ValueMember = "Value";
DataTable tb = new DataTable();
tb.Columns.Add("Text", Type.GetType("System.String"));
tb.Columns.Add("Value", Type.GetType("System.Int64"));
tb.Rows.Add("TV 21 inchi", 197000);
tb.Rows.Add("Mini Compo", 150000);
tb.Rows.Add("DVD Player", 780000);
cboNama.DataSource = tb;
}
else
P r o g r a m V i s u a l C # 2 0 1 0
73
{
cboNama.DisplayMember = "Text";
cboNama.ValueMember = "Value";
DataTable tb = new DataTable();
tb.Columns.Add("Text", Type.GetType("System.String"));
tb.Columns.Add("Value", Type.GetType("System.Int64"));
tb.Rows.Add("Panci", 56000);
tb.Rows.Add("Sendok", 6000);
tb.Rows.Add("Piring", 7800);
cboNama.DataSource = tb;
}
tarif = float.Parse(txtTarif.Text.Trim() !=string.Empty
?txtTarif.Text.Trim(): "0");
jumlah = float.Parse(txtJumlah.Text.Trim() !=string.Empty
?txtJumlah.Text.Trim() : "0");
total = jumlah * tarif;
txtTotal.Text = total.ToString();
}
private void rdElek_Click(object sender, EventArgs e)
{
Hitung();
}
private void cboNama_SelectedIndexChanged(object sender,
EventArgs e)
{
txtTarif.Text = cboNama.SelectedValue.ToString();
}
private void txtJumlah_TextChanged(object sender, EventArgs e)
{
Hitung();
}
private void rdKel_Click(object sender, EventArgs e)
{
Hitung();
}
private void btnMulai_Click(object sender, EventArgs e)
T
74
{
txtJumlah.Clear();
txtTotal.Clear();
txtTarif.Clear();
txtJumlah.Focus();
}
private void btnKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Latihan 6:
1. Jika Jenis=”Film” maka
Nama Barang Harga
- Kawin Lagi - 50000
- Asmara Berdarah - 35000
- Darah Biru - 20000
Jika Jenis=”Musik” maka
Nama Barang Harga
- Bergek: Boh Hate 2 - 45000
- Puja Sharma - 20000
- Apache 13: Bek Panik - 25000
- Kutidhieng - 23000
2. Jumlah=Harga*Banyak
3. Jika Banyak>10 maka Potongan=Jumlah*0.1
Jika Banyak<0 maka Potongan=0
4. Jika Bonus=”Member” maka Member=Jumlah*0.05
Jika Bonus = ”Hari Besar” maka Hari Besar = Jumlah*0.05
Jika Bonus = ”Ulang Tahun” maka Ulang Tahun = Jumlah*0.05
5. Diskon=Potongan+Member+Hari Besar+Ulang Tahun
6. Total Bayar=Jumlah-Diskon
7. Uang Kembali=Uang Bayar – Total Bayar
P r o g r a m V i s u a l C # 2 0 1 0
75
Gambar 6.1.10 Latihan 6
Ubahlah isian properti dari setiap objek/control seperti dibawah
ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Latihan 6
Label Text Nama Pembeli
TextBox Name txtNama
TabIndex 0
Label Text Nama Barang
ComboBox Name cboNama
TabIndex 1
Label Text Harga
TextBox Name txtHarga
TabIndex
BackColor
Enabled
2
MenuBar
False
Label Text Banyak
TextBox Name
TabIndex
txtBanyak
3
Label Text Jumlah
TextBox Name
TabIndex
BackColor
Enabled
txtJumlah
4
MenuBar
False
Label Text Diskon
TextBox Name
TabIndex
txtDiskon
5
T
76
BackColor
Enabled
MenuBar
False
Label Text Total Bayar
TextBox Name
TabIndex
BackColor
Enabled
txtTotal
6
MenuBar
False
Label Text Uang Bayar
TextBox Name
TabIndex
txtBayar
7
Label Text Uang Kembali
TextBox Name
TabIndex
BackColor
Enabled
txtKembali
8
MenuBar
False
GroupBox Text [ Jenis Barang ]
RadioButton Name
Text
rdMusik
Musik
RadioButton Name
Text
rdFilm
Film
GroupBox Text [ Bonus ]
CheckBox Name
Text
chkMember
Member
CheckBox Name
Text
chkHari
Hari Besar
CheckBox Name
Text
chkUlang
Ulang Tahun
Button Name
Text
btnMulai
&Mulai
Button Name
Text
btnKeluar
&Keluar
Kode program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
P r o g r a m V i s u a l C # 2 0 1 0
77
namespace Lat_6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnMulai_Click(object sender, EventArgs e)
{
txtNama.Clear();
txtBanyak.Clear();
txtHarga.Clear();
txtJumlah.Clear();
txtDiskon.Clear();
txtTotal.Clear();
txtBayar.Clear();
txtKembali.Clear();
txtNama.Focus();
}
private void TampilBarang()
{
if (rdFilm.Checked == true)
{
cboBarang.DisplayMember = "Text";
cboBarang.ValueMember = "Value";
DataTable tb = new DataTable();
tb.Columns.Add("Text", Type.GetType("System.String"));
tb.Columns.Add("Value", Type.GetType("System.Int64"));
tb.Rows.Add("Kawin Lagi", 50000);
tb.Rows.Add("Asmara Berdarah", 35000);
tb.Rows.Add("Darah Biru", 20000);
cboBarang.DataSource = tb;
}
else
{
cboBarang.DisplayMember = "TExt";
cboBarang.ValueMember = "Value";
DataTable tb = new DataTable();
T
78
tb.Columns.Add("Text", Type.GetType("System.String"));
tb.Columns.Add("Value", Type.GetType("System.Int64"));
tb.Rows.Add("Bergek: Boh Hate 2", 45000);
tb.Rows.Add("Puja Sharma", 20000);
tb.Rows.Add("Apache 13: Bek Panik", 25000);
tb.Rows.Add("Kutidhieng", 23000);
cboBarang.DataSource = tb;
}
}
private void Hitung()
{
double harga, banyak, jumlah,
potongan,diskon,hari=0,member=0,besar=0;
double total,bayar,kembali;
harga = double.Parse(txtHarga.Text.Trim() !=string.Empty ?
txtHarga.Text.Trim() : "0");
banyak = double.Parse(txtBanyak.Text.Trim() != string.Empty ?
txtBanyak.Text.Trim() : "0");
bayar = double.Parse(txtBayar.Text.Trim() != string.Empty ?
txtBayar.Text.Trim() : "0");
jumlah = harga * banyak;
if (banyak > 10)
{
potongan = jumlah * 0.1;
}
else
{
potongan = 0;
}
if (chkHari.Checked == true)
{
hari = jumlah * 0.05;
}
if (chkMember.Checked == true)
{
member = jumlah * 0.05;
}
if (chkUlang.Checked == true)
{
besar = jumlah * 0.05;
}
P r o g r a m V i s u a l C # 2 0 1 0
79
diskon = potongan+hari + member + besar;
total = jumlah - diskon;
kembali = bayar - total;
txtJumlah.Text = jumlah.ToString();
txtDiskon.Text = diskon.ToString();
txtTotal.Text = total.ToString();
txtKembali.Text = kembali.ToString();
}
private void cboBarang_SelectedIndexChanged(object sender,
EventArgs e)
{
txtHarga.Text = cboBarang.SelectedValue.ToString();
}
private void rdFilm_CheckedChanged(object sender, EventArgs e)
{
TampilBarang();
}
private void rdMusik_CheckedChanged(object sender, EventArgs
e)
{
TampilBarang();
}
private void txtBanyak_TextChanged(object sender, EventArgs e)
{
Hitung();
}
private void txtBayar_TextChanged(object sender, EventArgs e)
{
Hitung();
}
private void chkMember_CheckedChanged(object sender,
EventArgs e)
{
Hitung();
}
T
80
private void chkHari_CheckedChanged(object sender, EventArgs e)
{
Hitung();
}
private void chkUlang_CheckedChanged(object sender, EventArgs
e)
{
Hitung();
}
private void btnKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
∞
D a t a b a s e
81
BAB 7.
DATABASE
7.1 Instalasi MySQL
Aplikasi XAMPP ini dibuat oleh Apache Friends dan installer-nya
bisa langsung diunduh dari situs mereka. Isi aplikasinya juga sudah
sangat komplit, antara lain:
1. Apache
2. MySQL
3. PHP
4. phpMyAdmin
5. FileZilla FTP Server
6. Tomcat
7. XAMPP Control Panel
Proses instalasi Xampp di Microsoft Windows sebagai berikut:
1. Download aplikasi Xampp terbaru di
https://www.apachefriends.org/download.html
2. Sebelum melakukan instalasi Xampp, Anti Virus di non aktifkan
3. Jalankan file xampp-win32-5.5.38-1-VC11-installer (cari versi
lebih tinggi) di folder tempat penyimpanan
Gambar 7.1.1 Folder instalasi
T
82
4. Klik dua kali file xampp-win32-5.5.38-1-VC11-installer
5. Muncul menu seperti berikut ini
Gambar 7.1.2 Gambar Setup XAMPP
6. Kemudian Klik Next, muncul menu seperti dibawah ini
Gambar 7.1.3 Gambar Pilih Komponen Instalasi
D a t a b a s e
83
7. Kemudian Klik Next, muncul lagi menu seperti di bawah ini
Gambar 7.1.4 Gambar Tempat Penyimpanan Instalasi
8. Kemudian Klik Next, atau pilih Folder lainnya, lebih baik abaikan
Gambar 7.1.5 Gambar Paket Dukungan XAMPP
T
84
9. Kemudian Klik Next, akan muncul menu berikut ini
Gambar 7.1.6 Gambar Instalasi Siap Dilakukan
10. Kemudian Klik Next lagi, muncul menu seperti dibawah ini
Gambar 7.1.7 Gambar Proses Instalasi XAMPP
D a t a b a s e
85
11. Tunggu sampai proses instalasi berhasil dan muncul menu seperti
dibawah ini
Gambar 7.1.8 Gambar Instalasi Selesai
12. Kemudian Klik Finish, Proses instalasi Selesai dan muncul Menu
seperti dibawah ini lagi dan pilih bendera Amerika klik Save
Gambar 7.1.9 Gambar Pilihan Penggunaa Bahasa
T
86
13. Kemudian akan muncul Xampp Control Panel
Gambar 7.1.10 Gambar XAMPP Control Panel
14. Klik tombol Start di pilihan Module Apache
15. Klik tombol Start di pilihan Module MySQL, lihat seperti gambar
dibawah ini
Gambar 7.1.11 Gambar Pilihan Control Panel yang
Dijalankan
D a t a b a s e
87
Cara Menjalankan Aplikasi XAMPP:
1. Bukalah aplikasi XAMPP, bisa melalui Start
Menu atau Desktop, dan klik icon XAMPP. Atau, jika Anda
membukanya begitu proses instalasi selesai maka klik Yes seperti
yang terlihat pada gambar di atas.
2. Setelah terbuka, silahkan klik tombol Start pada
kolom Action sehingga tombol ini berubah
menjadi Stop. Dengan mengklik tombol ini , artinya itulah
aplikasi yang dijalankan. Biasanya jika saya memakai
XAMPP, yang saya start hanyalah aplikasi Apache dan MySQL,
karena saya tidak memerlukan aplikasi seperti Filezilla, dan lain-
lain.
3. Lihat Gambar di atas
4. Buka Browser Web pada address bar ketik : http://localhost atau
127.0.0.1
5. Lihat Gambar di bawah ini
Gambar 7.1.12 Gambar Laman XAMPP Berhasil
6. Selamat Instalasi Xampp berhasil.
T
88
7.2 Pengenalan MySQL
SQL (Structured Query Language) merupakan bahasa yang
dipakai dalam mengakses data di basis data relasional. Bahasa ini
merupakan bahasa standar yang dipakai dalam manajemen basis
data relasional. Hampir semua server basis data yang ada mendukung
bahasa ini untuk melakukan manajemen basis data. SQL terdiri dari dua
bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation
Language (DML). Implementasi DDL dan DML berbeda untuk tiap
sistem manajemen basis data, secara umum implementasi tiap bahasa
ini memiliki bentuk standar yang ditetapkan.
Sebagai sebuah bahasa, SQL telah distandarisasi dan mengalami
beberapa perubahan atau penyempurnaan. SQL muncul pertama kali
pada tahun 1970 dengan nama Sequel (nama yang masih sering
dipakai hingga saat ini). Standarisasi yang pertama dibuat pada
tahun 1986 oleh ANSI (American National Standards Institute) dan ISO
(International Standard Organization), yang disebut SQL-86. Pada tahun
1989 SQL-86 diperbaharui menjadi SQL-89. Standar terakhir yang
dibuat yaitu SQL-92.
Fungsi dari Structured Query Language yaitu sebagai berikut:
a. SQL dapat mengeksekusi query terhadap database
b. SQL dapat mengambil data dari database
c. SQL dapat menyisipkan catatan dalam database
d. SQL dapat memperbarui catatan dalam database
e. SQL dapat menghapus catatan dari database
f. SQL dapat membuat database baru
g. SQL dapat membuat tabel baru dalam database
h. SQL dapat menciptakan prosedur yang tersimpan dalam database
i. SQL dapat membuat tampilan dalam database
j. SQL dapat mengatur hak akses pada tabel, prosedur, dan
pandangan
7.2.1 Data Definition Language
Data Definition Language (DDL) merupakan sub bahasa SQL yang
dipakai untuk membangun kerangka database. Kelompok perintah
yang berfungsi untuk mendefinisikan atribut-atribut database, tabel,
atribut kolom, batasan-batasan terhadap suatu atribut serta hubungan
antar tabel. Dibawah ini yang termasuk kelompok DDL ini yaitu
a. CREATE dipakai untuk membuat Database dan Table
1) Bentuk umum membuat database:
CREATE DATABASE nama_database;
D a t a b a s e
89
contoh:
CREATE DATABASE akademik
2) Bentuk umum untuk membuat tabel
CREATE TABLE table_name (column1 datatype, column2
datatype, column3 datatype);
Pengertiannya:
- Table_name yaitu nama dari tabel yang ingin dibuat.
- column_1 yaitu berisi definisi dari nama_field yang akan
dibuat untuk table
- datatype yaitu query opsional untuk mendefinisikan tipe
tabel untuk tabel yang akan dipakai ,
seperti MyISAM maupun InnoDB.
contoh:
CREATE TABLE matakuliah (kd_mtk varchar(9), nm_mtk
varchar(30), sks int)
b. ALTER dipakai untuk melakukan perubahan struktur table
yang telah dibuat, baik menambah field (ADD), mengganti nama
field (Change) ataupun mengganti nama (Rename), dan
menghapus field (Drop).
1) Bentuk umum script menambah field / kolom table:
ALTER table nama_table ADD field_baru tipe_data
(panjang_data);
contoh:
ALTER table matakuliah ADD semester varchar (2);
2) Bentuk umum script menghapus field pada table
ALTER table nama_table DROP nama_field;
contoh:
ALTER table siswa DROP semester;
3) Bentuk umum script mengganti nama table:
RENAME table nama_table TO table baru;
contoh:
RENAME table matakuliah TO mata_kuliah;
4) Bentuk umum script mengganti nama filed
ALTER table nama_table change field_lama field_baru
tipe_data (panjang data);
contoh:
T
90
ALTER table matakuliah change kd_mtk kode_mtk varchar
(9);
c. DROP dipakai untuk menghapus Database Dan Table
1) Bentuk umum script untuk menghapus database
DROP DATABASE nama_database;
contoh:
DROP DATABASE akademik;
2) Bentuk umum script menghapus table:
DROP TABLE nama_table;
contoh:
DROP TABLE matakuliah;
7.2.2 Fungsi Data Manipulation Language
Data Manipulation Language (DML) merupakan satu paket DBMS
yang memperbolehkan pemakai untuk mengakses atau memanipulasi
data sebagaimana yang telah diorganisasikan sebelumnya dalam model
data yang tepat. Data Manipulation Language (DML) merupakan
kumpulan perintah SQL yang dipakai untuk proses pengolahan isi
data di dalam table seperti memasukkan, merubah dan menghapus
data, data yang dimanipulasi tidak terkait dengan perubahan struktur
dan definisi tipe data dari objek database. DML dapat melakukan
perintah sebagai berikut :
1. Mengambil informasi yang tersimpan dalam basis data.
2. Menyisipkan informasi baru dalam basis data.
3. Menghapus informasi dari tabel.
4. Merubah data dalam basis data
Ada dua tipe DML yaitu prosedural dan non prosedural.
Prosedural DML membutuhkan pemakai untuk menspesifikasikan data
yang dibutuhkan dan bagaimana cara mendapatkannya,. non
prosedural DML membutuhkan pemakai untuk menspesifikasikan data
apa yang dibutuhkan tanpa tahu bagaimana cara mendapatkannya.
Data Manipulation Language berfungsi untuk memanipulasi
database seperti: menambah data, merubah atau mengganti data dan
menghapus data. Perintah Data Manipulation Language tidak terkait
dengan struktur dan metadata dari obyek yang berada pada tabel
database. Perintah-perintah yang paling sering dipakai pada Data
Manipulation Language yaitu :
D a t a b a s e
91
1. Insert berfungsi untuk menambah data atau record pada database
Bentuk umum:
insert into nama_table (field_1,field_2, field_n) values
(data_1,data_2,data_n)
contoh:
insert into matakuliah(kd_mtk,nm_mtk,sks) values (‘kom-
001’,’Basis Data’,3)
2. Delete berfungsi untuk menghapus data pada database
Bentuk umum:
delete from nama_table where field_1=data_1
contoh:
delete from matakuliah where kd_mtk=’kom-001’
3. Update yaitu perintah yang berfungsi untuk merubah maupun
memperbarui data pada database
Bentuk umum:
UPDATE nama_table set field_1=data_baru_1 where
field_1=data_lama_1
contoh:
update matakuliah set nm_mtk=’Basis Data I’ where
kd_mtk=’kom-001’
4. Select yaitu perintah yang dipakai untuk menampilkan data
dari suatu tabel pada database.
a. Bentuk umum untuk menampilkan beberapa kolom dari
suatu table
SELECT field_1, field_n FROM table_name;
contoh:
select kd_mtk, nm_mtk from matakuliah
b. Bentuk umum untuk menampilkan semua kolom dari suatu
tabel :
SELECT * FROM table_name;
contoh:
select * from matakuliah
c. Perintah WHERE dipakai untuk menampilkan record
dengan kriteria tertentu dalam suatu table bentuk umum
dalam penulisan WHERE :
SELECT field_1, field_n FROM table_name WHERE
field_1=data_1
T
92
contoh:
select kd_mtk,nm_mtk_sks from matakuliah where
kd_mtk=’kom-001’
7.2.3 Data Control Language (DCL)
Data Control Language (DCL) merupakan sub bahasa SQL yang
dipakai untuk melakukan pengontrolan data dan server
databasenya. Data Control Language yaitu bagian inti dari Structured
Query Language (SQL) yang mempunyai kemampuan untuk mengatur
hak akses terhadap sebuah basis data. Data Control Language terbagi
dua :
a. GRANT berfungsi untuk memberikan Hak Akses
Bentuk umum :
GRANT priviliges ON tbname TO user;
contoh :
GRANT select, insert, update, delete ON matakuliah TO bergek;
Pengertian:
Perintah GRANT di atas menunjukkan bahwa user
bergek diberikan hak akses untuk menampilkan,
menambah, memodifikasi dan menghapus data pada
table matakuliah.
b. REVOKE berfungsi untuk mencabut Hak Akses
Bentuk umum :
REVOKE priviliges ON tbname from user;
Contoh :
REVOKE insert, update, delete ON matakuliah FROM bergek;
Pengertian:
Perintah REVOKE di atas menunjukkan bahwa sebagian
hak akses dari bergek dicabut kembali. Hak akses yang
dicabut yaitu hak untuk menambah, memodifikasi dan
menghapus data. Sementara user bergek masih bisa
menampilkan data, karena hak select tidak dicabut.
∞
K o n e k s i M y S Q L
93
BAB 8.
KONEKSI MySQL
8.1 Instalasi MySQL .NET Connector
Database yang paling banyak dipakai yaitu MySQL, ada
beberapa perintah yang akan memakai class-class: MySql
Connection, MySql Command, MySql Data Reader, dan MySql Data
Adapter. Untuk itu sangat diperlukan perangkat lunak RDBMS
(Relational DBMS) MySQL. Database MySQL dipakai secara free dan
dapat download dari salah satu website di bawah ini:
o MySQL: Jika Anda hanya ingin menginstall MySQL
saja. http://dev.mysql.com/downloads/mysql/
o MariaDb: fork dari MySQL yang diprakarsai oleh pengagas
MySQL. https://mariadb.org/
o XAMPP: salah satu dari paket aplikasi WAMP (Windows Apache
MySQL PHP). Dianjurkan apabila Anda juga ingin mencoba
pemrograman
PHP. http://www.apachefriends.org/en/xampp.html
o Appserv: paket aplikasi WAMP lainnya. Bagus, tetapi tidak
dianjurkan karena sepertinya tidak diupdate
lagi. http://www.appservnetwork.com/
Selain MySQL, juga memerlukan MySQL .NET Connector, yang
hanya tersedia di: http://dev.mysql.com/downloads/connector/
net/6.6.html#downloads. Jika memakai Visual Studio 2012 atau
2013, download versi terbaru (6.7.4 atau di atasnya). Akan tetapi jika
masih memakai Visual Studio 2010, download versi 6.5.4 atau sub
versinya. Versi ini sesunguhnya tidak jauh berbeda, agar dapat
memakai Data Source Configuration Wizard, jika ingin
mencobanya sewaktu waktu. Akan tetapi untuk dapat terhubung ke
MySQL tanpa wizard tesebut. Perlu diketahui juga bahwa wizard
ini tidak tersedia pada Visual Studio 2010 Express.
1. Install dulu MySQL .NET Connector
T
94
Gambar 8.1.1 MySQL Setup
2. Klik Next untuk melanjutkan instalasi, selanjutnya akan tampak
layar instalasi
Gambar 8.1.2 MySQL Setup
3. ada tiga pilihan instalasi, Typical cocok untuk berbagai
macam kasus. Custom berguna untuk memilih komponen apa saja
dari Connector/Net yang akan di install. Dan Complete akan
K o n e k s i M y S Q L
95
menginstall seluruh komponen Connector/Net, namun akan
menghabiskan banyak ruang
4. Untuk instalasi ini pilih pilihan Typical, klik pilihan dan mulai
InstalasiConncetor/Net, akan muncul perintah berikut ini
Gambar 8.1.3 MySQL Setup Finish
5. Klik Finish, untuk menyelesaikan instalasi Berurusan dengan
database pada C#, pada dasarnya kita memerlukan paling tidak 4
dari class-class berikut:
1) Connection untuk menghubungkan dengan database.
2) Command untuk menjalankan query pada database.
3) DataReader untuk mengenumerasi (membaca satu persatu)
hasil query dari database (sebagai DataRow).
4) DataAdapter untuk mempermudah berbagai macam operasi
database, misalnya membaca data dari database ke aplikasi.
5) DataTable untuk menyimpan data dari database dalam
bentuk tabel.
6) DataSet untuk mengelola sekumpulan DataTable.
4 class pertama dari class-class di atas tidak benar-benar ada.
Class-class ini merupakan class yang spesifik terhadap database
tertentu. Sebetulnya class-class ini di atas merupakan class-class
turunan dari class induk masing-masing fungsi. Sebagai contoh, saat
T
96
untuk menyebutkan class Connection di atas, tergantung dari jenis
databasenya, yang dimaksud yaitu : OleDbConnection,
SqlConnection, MySqlConnection, OdbcConnection, yang merupakan
class-class turunan dari class DbConnection. Penggunaan class-class
ini sangat mirip. Perbedaan antara mereka, tentunya ada pada
syntax SQL.
Buat project baru dengan langkah-langkah sebagai berikut:
1. Tambahkan reference dengan cara klik menu Project->Add
reference
Gambar 8.1.4 Add Reference
2. Akan muncul menu Add Reference, lalu cari arahkan ke
file mysql.data.dll kelokasi folder dimana Mysql connector
diinstall , yaitu di C:\Program Files\MySQL\MySQL Connector Net
6.3.5\Assemblies
K o n e k s i M y S Q L
97
Gambar 8.1.5 MySQL.Data.dll
Gambar 8.1.6 Pilihan folder
3. Jika sudah berhasil menambahkan referensi Mysql, klik tombol
OK
T
98
8.2 Aristektur MySQL Connector.NET
Pada saat menginstal Visual Studio .NET untuk pertama kalinya,
terlebih dahulu di diinstal kebutuhan-kebutuhan pendukung yang
diperlukan. Salah satu namespace yang ditemukan di dalam class-class
.NET Framework yaitu System.Data. Namespace ini berisikan class-
class untuk berinteraksi dengan sumber data, dimana namespace
system bertindak sebagai root untuk seluruh class .NET Framework.
Arsitektur MySQL Connector.NET menggambarkan class-class
yang membentuk data provider. Meskipun Connector.NET bekerja
dalam lingkungan .NET Framework, tetapi secara eksplisit tidak berada
di bawah namespace System. Data provider ini memiliki namespace
root sendiri, yaitu MySql, dan menyediakan namespace MySql.Data
yang berfungsi sama dengan System.Data.
a. Namespace MySql.Data.MySqlClient
Dalam rangka mendukung operasi-operasi database, data provider
Connector.NET menyediakan dua buah namespace utama, yaitu
namespace MySql.Data.MySqlClient dan MySql.Data.Types. Di dalam
pengolahan database, sering dipakai namespace
MySql.Data.MySqlClient. Adapun namespace yang kedua lebih
berkaitan dengan pengolahan tipe data antara Visual Basic .NET
dan MySQL. Namespace MySQL.Data.MySqlClient ada class-
class dasar yang diinstantiasi menjadi objek-objek serta dipakai
untuk mengolah database melalui aplikasi Pemograman C#. seperti
diilustrasikan OLE DB, namespace ini kedudukannya setingkat
dengan namespace System.Data.SqlClient untuk SQL Server.
Connector .NET berusaha untuk mengimplementasikan data
provider ADO.NET.
b. Class MySqlConnection
Class MySqlConnection merepresentasikan koneksi ke database
MySQL Server. Objek yang dihasilkan dari instantiasi dari class ini
menggambarkan session ke sumber data, yaitu database MySQL.
Beberapa properti penting yang sering dipakai untuk
mendukung fungsionalitas MySqlConnection yaitu sebagai berikut.
1) ConnectionString yaitu berfungsi untuk mendapatkan atau
menetapkan string koneksi yang dipakai untuk
menghubungkan aplikasi ke database MySQL Server.
2) ConnectionTimeout berguna untuk mendapatkan nama
database yang ada saat itu atau database yang dipakai
setelah koneksi terbuka.
K o n e k s i M y S Q L
99
3) Database berfungsi ntuk mendapatkan nama database yang
ada saat itu atau database yang dipakai setelah koneksi
terbuka.
4) DataSource berfungsi untuk mendapatkan nama MySQL
Server yang akan dihubungkan.
5) Class MySqlConnection bertugas untuk menyediakan
method-method yang berkaitan dengan operasi pada
database. Method-method ini dipakai untuk membuka
dan menutup koneksi, memilih database, serta mengelola
objek koneksi yang telah dibuat. Diantaranya:
o BeginTransaction berfungsi untuk memulai transaksi,
yang berarti bahwa transaksi diaktifkan.
o ChangeDatabase berfungsi untuk mengubah database
yang aktif saat itu, dan dilanjutkan dengan memilih
database lainnya.
o Close berfungsi untuk menutup koneksi database, dan
meliputi semua database aktif yang terbuka.
o Dispose berfungsi untuk melepaskan sumber daya yang
dipakai oleh objek MySqlConnection.
o Open berfungsi untuk membuka koneksi ke database
dengan pengaturan properti yang telah ditentukan dalam
ConnectionString.
Dalam implementasi koneksi ke database, class
MySqlConnection menyediakan dua macam konstruktor. Pertama,
konstruktor tanpa parameter, sedangkan yang kedua memakai
parameter string berupa koneksi.
1) Class MySqlCommand
Class MySqlCommand merepresentasikan pernyataan SQL yang
akan dieksekusi. Class ini cukup sederhana pernggunaannya,
tetapi mampu melakukan berbagai operasi database, seperti
penambahan, pengubahan serta penghapusan record. saat ingin
melakukan operasi database secara praktis, tepat sekali jika
memakai kemampuan dari MySqlCommand. Dalam
medukung fungsionalitas class ini, ada beberapa properti yang
dapat dipakai yaitu sebagai berikut:
1. CommandText berfungsi untuk mendapatkan atau
menentukan pernyataan SQL yang akan dieksekusi.
2. CommandType berfungsi untuk mendapatkan atau
menetapkan suatu nilai yang menyatakan bagaimana properti
CommandText diterjemahkan.
T
100
3. Connection berfungsi untuk mendapatkan atau menetapkan
objek MySqlConnection yang akan dipakai oleh
MySqlCommand.
2) Class MySqlCommand menyediakan method-method yang
sebagian merupakan milik class ini sendiri dan ada juga yang
diwarisi dari class tertentu. Secara garis besar, fungsionalitas dari
MySqlCommand digambarkan oleh tiga method berikut ini.
1. ExecuteNonQuery berguna untuk mengeksekusi pernyataan
SQL seperti INSERT, UPDATE, dan DELETE. Ada pun hasil
yang dikembalikan yaitu jumlah dari baris data.
2. ExecuteReader berguna untuk mengirimkan CommandText
ke objek Connection dan membangun MySqlReader.
3. ExecuteScalar berguna Mengeksekusi query, dan
mengembalikan kolom pertama dari baris pertama di dalam
hasil yang dikembalikan oleh query. Implementasi method ini
identik dengan komputasi data, misalnya untuk mencari
jumalah record di dalam tabel.
Pada saat ingin melakukan manipulasi data didalam tabel,
MySqlCommand merupakan pilihan tepat yang sudah
menyediakannya. Meskipun method-method MySqlCommand
mampu dipakai secara independen, akan tetapi sering juga
digabungkan dari method classs lain.
3) Class MySqlDataAdapter merepresentasikan kumpulan perintah
data dan koneksi database yang dipakai untuk mengisi suatu
dataset dan memodifikasi database MySQL. Instantiasi class
MySqlDataAdapter memungkinkan untuk pengolahan data
dengan memanfaatkan komponen-komponen data milik
ADO.NET. Pada prinsipnya, MySqlDataAdapter bertindak sebagai
jembatan antara objek DataSet dan MySQL untuk mendapatkan
kembali serta menyimpan data. Properti-properti yang tersedia
pada MySqlDataAdapter antara lain:
1. DeleteCommand berfungsi untuk mendapatkan atau
menetapkan pernyataan SQL yang dipakai dalam menghapus
record dari dataset.
2. InsertCommand befungsi untuk mendapatkan atau
menetapkan peryantaan SQL yang dipakai dalam melakukan
penambahan record baru ke dalam tabel.
3. SelectCommand berfungsi untuk mendapatkan atau
menetapkan pernyataan SQL pengubahan data. Umumnya objek
K o n e k s i M y S Q L
101
MySqlDataAdapter akan dipakai bersama-sama dengan
objek MySqlConnection dan MySqlCommand.
4) Class MySQLCommandBuilder
Secara otomatis objek MySqlCommandBuilder mampu
menghasilkan perintah single-table untuk menyesuaikan
perubahan yang dibuat ke suatu DataSet. Contoh sederhana yang
menjelaskan fungsionalitas objek ini yaitu saat tampilan data
yang dibuat melalui objek DataSet juga memungkinkan untuk
dimodifikasi, dan perubahan diterapkan secara langsung.
Properti-properti yang tersedia untuk mendukung fungsionalitas
objek MySqlCommandBuilder ini antara lain:
a. DataAdapter properti public ini dipakai untuk
mendapatkan atau menetapkan objek MySqlDataAdapter
pada pernyataan SQL yang dihasilkan secara otomatis.
b. QuotePrefix berfungsi untuk mendapatkan atau menetapkan
karakter awal yang akan dipakai saat menentukan objek
database spesifik.
Seperti halnya class-class lainnya, MySqlCommandBuilder
juga menyediakan method-method penting seperti berikut:
a. GetDeleteCommand berfungsi untuk medapatkan objek
MySqlCommand yang dihasilkan secara otomatis dan
diperlukan dalam penghapusan pada database.
b. GetInsertCommand berfungsi untuk mendapatkan objek
MySqlCommand yang dihasilkan secar otomatis dan
diperlukan dalam penambahan data pada database.
c. GetUpdateCommand menndapatkan objek MySqlCommand
yang diperlukan untuk melakukan pengubahan pada
database.
Objek MySqlCommandBuilder mampu meregistrasi dirinya
sendiri sebagai listener unutk event OnRowUpdating. Secara
normal hanya diperkenankan untuk menghubungkan satu
objek MySqlDataAdapter atau MySqlCommandBuilder pada
satu waktu yang bersamaan.
5) Class MySqlDataReader menyediakan kemampuan untuk
melakukan pembacaan dari database MySQL. Pembacaan tidak
hanya terbatas pada data di dalam tabel, akan tetapi juga meliputi
skema tabel maupun database. Properti-properti public yang
disediakan oleh MySqlDataReader yaitu sebagai berikut:
T
102
a. Depth berfungsi untuk mendapatkan nilai yang menyatakan
kedalaman row barsarang pada row saat itu.
b. FieldCount berfungsi untuk mendapatkan jumlah kolom dari
current row.
c. HasRows berfungsi untuk mendapatkan nilai yang
menyatakan apakah MySqlDataReader berisi satu atau lebih
baris.
d. IsClosed berfungsi untuk mendapatkan nilai yang
menyatakan apakah data reader tertutup.
e. Item berfungsi untuk mendapatkan nilai dari suatu kolom
dalam format aslinya.
f. RecordAffected berfungsi untuk mendapatkan banyaknya
baris yang di ubah, dimasukkan, atau dihapus oleh eksekusi
pernyataan SQL.
g. GetValue untuk mengoptimalkan performansi,
MySqlDataReader menghindari pembuatan objek atau
pembuatan salinan data yang tidak diperlukan. Sebagai
hasilnya, beberapa pemanggilan ke method semacam
GetValue akan mengembalikan suatu acuan ke objek yang
sama.
8.3 Objek-Objek ADO.NET
Objek DataSet yaitu komponen utama dari arsitektur
disconnected ADO.NET, dan merupakan objek di dalam memori yang
dapat mengisi tabel, view, dan relationship. Pada prinsipnya, objek
DataSet yaitu suatu cache di dalam memori dari sumber data yang
diambil, Secara eksplisit, DataSet didesain untuk pengaksesan data
independen dari berbagai sumber data.
Objek DataSet bisa diciptakan dengan cara melakukan instantiasi
class DataSet. Selain itu, juga diperbolehkan membuat DataSet dari
DataSet yang sudah ada. Cara seperti ini dikenal dengan clone, yakni
untuk mendapatkan copy dari DataSet. Normalnya, saat meng-copy
DataSet, hanya mendapatkan skema atau struktur relasional. Selain
DataSet, ada beberapa objek ADO.NET yang akan sangat diperlukan
dalam pengolahan data, baik untuk medukung objek DataSet ataupun
dipakai secara independen, antara lain:
1) DataTable
Objek DataTabel merepresentasikan sebuah tabel di dalam
memori dari hasil query data. Objek DataTable berisi satu atau
beberapa data objek DataColumn dan DataRow. Dapat berisi satu
atau beberapa objek Constraint dipakai untuk mengelola
K o n e k s i M y S Q L
103
integritas data dalam tabel. Data tersimpan dalam DataTable
dimungkinkan untuk modifikasi, seperti menambah, mengubah,
atau menghapus.
2) DataColumn
Objek DataColumn merupakan dasar yang membangun blok
berguna untuk menciptakan skema DataTable. Prinsipnya, objek
merepresentasikan skema kolom dalam suatu DataTable. Data
pada setiap kolom, termasuk nama dan tipe, serta objek DataRow
didefiniskan dalam objek DataColumn.
3) DataRow
Pada dasarnya, objek DataRow dan DataColumn merupakan
komponen utama dari DataTable. Objek DataRow memungkinkan
dilakukannya operasi penambahan data, pengubahan data, dan
penghapusan nilai di dalam DataTable. Operasi-operasi
modifikasi dapat dilakukan dengan mudah melalui method-
method yang tersedia., misalnya BeginEdit, EndEdit, Delete dan
sebagainya.
4) DataView
Fungsi utama DataView yaitu untuk memungkinkan binding
data pada Windows Form dan Web Form. Binding data sangat
membantu, saat melakukan pengambilan data. DataView juga
dapat dipakai untuk menampilkan subset data dari DataTable.
Guna mendukung pengolahan data, objek DataView memiliki
kemampuan dalam melakukan penyaringan, pengurutan,
pencarian, pengubahan, dan navigasi data. Pekerjaan ini dapat
dilakukan dengan mudah melalui properti-properti dan method-
method yang tersedia, misalnya RowFilter, Sort, Find, FindRows,
dan masih banyak lagi.
Latihan:
Gambar 8.4.1
T
104
Ubahlah isian properti dari setiap objek/control seperti dibawah ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Koneksi Database
Button Name
Text
btnKoneski
&Koneksi
Kode Program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace Database_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnKoneksi_Click(object sender, EventArgs e)
{
try
{
string conn =
"Server=localhost;UID=root;Database=akademik";
K o n e k s i M y S Q L
105
MySqlConnection koneksi = new MySqlConnection(conn);
koneksi.Open();
MessageBox.Show("Koneksi Berhasil");
koneksi.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
8.4 Membuat Aplikasi Database
Jika baru pertama memakai MySQL dan pemograman C#,
dan cara menghubungkan antara pemograman C# dengan MySQL
untuk pertama kalinya, maka perlu mengunduh dan menginstal
perangkat lunak berikut berikut ini:
1. Setelah mengunduh dan menginstal server Xampp, kemudian
buka localhost di browser yang dipakai , dengan cara mengetik
localhost atau 127.0.0.1 di bilah address. Buat database
Akademik dengan nama tabel Fakultas .
Gambar 8.4.2 Membuat Tabel dan Field
2. Buka Visual Studio 2010 pilih pemogrman C#, klik new project
3. Setelah muncul Form, Klik menu Project -> pilih Add Reference
cari MySQL.Data.dll
T
106
Gambar 8.4.3 Add Reference
4. Jika sudah berhasil menambahkan referensi Mysql di aplikasi
akan tampak indikator seperti gambar dibawah ini :
Gambar 8.4.4 Indikator telah terinstal Mysql connector
5. Tambahkan script import seperti Imports
MySql.Data.MySqlClient
6. Selanjutkan buat buat Form
K o n e k s i M y S Q L
107
Gambar 8.4.5 Form Fakultas
Ubahlah isian properti dari setiap objek/control seperti dibawah ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Fakultas
Label Text Kode Fakultas
TextBox Name txtKode
TabIndex 0
Label Text Nama Fakultas
TextBox Name txtNama
TabIndex 1
Button Name
Text
TabIndex
btnSimpan
&Simpan
2
Button Name
Text
TabIndex
btnBatal
&Batal
3
Button Name
Text
TabIndex
btnUpdate
&Update
4
Button Name
Text
TabIndex
btnHapus
&Hapus
5
Button Name
Text
TabIndex
btnKeluar
&Keluar
6
DataGridView Name
TabIndex
DGTampil
7
T
108
Kode Program:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace Database_2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//--Menginisialisasi koneksi MySql
MySqlConnection konek = new MySqlConnection();
//--Menginisialisasi semua class
MySqlCommand cmd = new MySqlCommand();
MySqlDataAdapter da = new MySqlDataAdapter();
DataTable dt = new DataTable();
//--Deklarasi variabel
string sql;
int res;
private void Form1_Load(object sender, EventArgs e)
{
konek.ConnectionString =
"server=localhost;uid=root;database=akademik";
}
private void btnSimpan_Click(object sender, EventArgs e)
{
//--Membuka koneksi database
konek.Open();
K o n e k s i M y S Q L
109
//--Membuat query untuk melakukan penyimpanan database
sql="insert into fakultas(kd_fak,nm_fak) values ('"+txtKode.Text
+ "','" + txtNama.Text + "')";
//--Menyimpan data untuk dapat di eksekusi
cmd.Connection = konek;
cmd.CommandText = sql;
res = cmd.ExecuteNonQuery();
Bersih();
konek.Close();
TampilData();
}
private void Bersih()
{
txtKode.Clear();
txtNama.Clear();
txtKode.Focus();
}
private void Clear()
{
foreach (Control ctl in this.Controls) //Untuk setiap Control di
Aplikasi ini
{
if (ctl is TextBox) //Jika control yaitu textbox maka
{
ctl.Text = ""; //Kosongkan Isinya
}
}
}
private void btnBatal_Click(object sender, EventArgs e)
{
Bersih();
TampilData();
}
private void TampilData()
{
//--koneksi dan membuka Database
konek.Open();
T
110
//--Membuat query untuk memanggil data dari database
sql = "select kd_fak as Kode_Fakultas,nm_fak as Nama_Fakultas
from fakultas where 1=1";
//--Menginilisasai SqlCommand yang baru
cmd = new MySqlCommand();
//--Menyimpan data untuk dapat dieksekusi
cmd.Connection = konek;
cmd.CommandText = sql;
//--Menginilisasi MySqlDataAdapter yang baru
da = new MySqlDataAdapter();
//--Mengambil data query dalam database
da.SelectCommand = cmd;
//--Menginilisasi DataTable yang baru
dt = new DataTable();
//--Menyegarkan baris dalam sumber data
da.Fill(dt);
//--Sumber data ditampilkan dalam DataGridView
DGTampil.DataSource = dt;
konek.Close();
}
private void CariData()
{
try
{
bool temp = false;
//--Membuat koneksi database
konek.Open();
//--Membuat query untuk memanggil data dari database
sql = "select * from fakultas where kd_fak='" + txtKode.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, konek);
MySqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
txtNama.Text = dr.GetString(1);
temp = true;
}
if (temp == false)
{
MessageBox.Show("Data Tidak Ada");
txtNama.Text = string.Empty;
K o n e k s i M y S Q L
111
txtNama.Focus();
}
konek.Close();
TampilData();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
konek.Close();
}
}
private void txtKode_KeyPress(object sender,
KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
CariData();
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
konek.Open();
sql = "update fakultas set nm_fak='" + txtNama.Text + "' where
kd_fak='" + txtKode.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, konek);
cmd.ExecuteNonQuery();
konek.Close();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.ToString());
konek.Close();
}
Bersih();
TampilData();
}
private void btnHapus_Click(object sender, EventArgs e)
T
112
{
try
{
konek.Open();
sql = "delete from fakultas where kd_fak='" + txtKode.Text + "'";
MySqlCommand cmd = new MySqlCommand(sql, konek);
cmd.ExecuteNonQuery();
konek.Close();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.ToString());
}
Bersih();
TampilData();
}
}
}
Latihan Database 2:
Gambar 8.4.6 Form Mata Kuliah
K o n e k s i M y S Q L
113
Ubahlah isian properti dari setiap objek/control seperti dibawah ini :
Nama
Objek/Control
Properties
Properti Nilai yang diisikan
Form Name
Text
Form1
Mata Kuliah
Label Text Kode
TextBox Name txtKode
TabIndex 0
Label Text Nama Mata Kuliah
TextBox Name txtNama
TabIndex 1
Button Name
Text
TabIndex
btnSimpan
&Simpan
2
Button Name
Text
TabIndex
btnBatal
&Batal
3
Button Name
Text
TabIndex
btnKeluar
&Keluar
3
ListView Name
TabIndex
ListView1
4
Setelah Project dan Form telah dibuat, ikuti langkah berikut ini:
1. Klik menu Project pilih Add Class
Gambar 8.4.6 Add Class
T
114
2. Sesudah di klik akan muncul menu pilihan sebagai berikut:
Gambar 8.4.7 Membuat class Module
3. Akan Muncul file Module.cs di Kotak Solution Explorer seperti
gambar ini:
Gambar 8.4.8 Terciptanya class Module
4. Ketik Program di Module.cs
using System;
using System.Collections.Generic;
using System.Linq;
K o n e k s i M y S Q L
115
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Threading.Tasks;
using System.Data;
//using System.ComponentModel;
using System.Windows.Forms;
namespace Database_3
{
class Module
{
string konek;
//MySqlCommand cmd = new MySqlCommand();
MySqlDataAdapter da = new MySqlDataAdapter();
// dt = new DataTable();
public Module()
{
konek = "server=localhost;Uid=root;database=akademik";
}
//-- Jenis Query
//--Query dengan pilihan data ->select [field] from [nama
tabel] where [kondisi]
public void GetDataTable(string sql)
{
DataTable result = new DataTable();
MySqlConnection conn = new MySqlConnection(konek);
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader dr = cmd.ExecuteReader();
result.Load(dr);
conn.Close();
//return result;
}
//--Query untuk Memanipulasi Data
//-- Menambah Data ->insert into [nama table] (field) values
(data)
T
116
//--Memodifikasi Data ->update [nama table] set [field]=[data]
where [kondisi]
//-Menghapus Data ->delete from [nama table] where
[kondisi]
public void ExecuteQuery(string sql)
{
MySqlConnection conn = new MySqlConnection(konek);
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
public void TampiList(ListView lv, string sql)
{
MySqlConnection conn = new MySqlConnection(konek);
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader = cmd.ExecuteReader();
lv.Items.Clear();
while (reader.Read())
{
ListViewItem item = new
ListViewItem(reader.GetString(0).ToString());
item.SubItems.Add(reader.GetString(1));
item.SubItems.Add(reader.GetString(2));
lv.Items.Add(item);
}
reader.Close();
cmd.Dispose();
conn.Close();
}
public void Bersih(Form form)
{
foreach (Control control in form.Controls)
{
if (control.GetType() == typeof(TextBox))
{
control.Text="";
}
}
K o n e k s i M y S Q L
117
}
}
}
5. Kembali ke Form Matakuliah, Klik tombol Simpan, ketik kode
program:
private void btnSimpan_Click(object sender, EventArgs e)
{
string sql;
sql="insert into matakuliah(kd_mtk,nm_mtk,sks) values ('" +
txtKode.Text + "','" + txtNama.Text +"'," + txtSKS.Text + ")";
Module db = new Module();
db.ExecuteQuery(sql);
Clear();
}
6. Klik tombol Batal, ketik kode program berikut ini:
private void btnBatal_Click(object sender, EventArgs e)
{
Clear();
}
private void Clear()
{
Module obj = new Module();
obj.Bersih(this);
txtKode.Focus();
Module db = new Module();
db.TampiList(listView1, "select * from matakuliah");
}
7. Klik Form, muncul procedure Form1_Load, ketik kode program
berikut ini:
private void Form1_Load(object sender, EventArgs e)
{
listView1.GridLines = true;
listView1.View = View.Details;
// membuat kolom baru
T
118
listView1.Columns.Add("Kode Mata Kuliah", 150);
listView1.Columns.Add("Nama Mata Kuliah", 250);
listView1.Columns.Add("SKS", 80);
}
8. Kode Program yang lengkapnya sebagai berikut:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace Database_3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSimpan_Click(object sender, EventArgs e)
{
string sql;
sql="insert into matakuliah(kd_mtk,nm_mtk,sks) values ('" +
txtKode.Text + "','" + txtNama.Text +"'," + txtSKS.Text + ")";
Module db = new Module();
db.ExecuteQuery(sql);
Clear();
}
private void Form1_Load(object sender, EventArgs e)
{
listView1.GridLines = true;
K o n e k s i M y S Q L
119
listView1.View = View.Details;
// membuat kolom baru
listView1.Columns.Add("Kode Mata Kuliah", 150);
listView1.Columns.Add("Nama Mata Kuliah", 250);
listView1.Columns.Add("SKS", 80);
}
private void btnBatal_Click(object sender, EventArgs e)
{
Clear();
}
private void Clear()
{
Module obj = new Module();
obj.Bersih(this);
txtKode.Focus();
Module db = new Module();
db.TampiList(listView1, "select * from matakuliah");
}
private void btnKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
private void Cari()
{
string sql = "select * from matakuliah where kd_mtk='" +
txtKode.Text + "'";
Module db = new Module();
}
private void txtKode_KeyPress(object sender,
KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
T
120
private void txtNama_KeyPress(object sender,
KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
private void txtSKS_KeyPress(object sender,
KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
}
}
Tampilan Formnya
Gambar 8.4.9 Tampilan Form Mata Kuliah
∞
L a p o r a n
121
BAB 9
LAPORAN
9.1 Koneksi ODBC
Kemudian aplikasi yang telah dibuat, untuk mencetak sebuah
laporan dan pengguna dapat mencetak ke printer, sebuah keharusan
untuk dibuat oleh seorang pemogram dalam mengembangkan aplikasi
di destop. Crystal Report salah satu software tambahan di Visual Studio
2010 yang berguna untuk membuat laporan.
Komponen yang dipakai secara default pada Microsoft Visual
Studio 2010 yaitu komponen Crystal Report. Keuntungan
memakai Crystal Report yaitu kemudahan dalam melakukan
perancangan laporan. Untuk mendapatkan laporan yang menarik dan
sesuai kebutuhan pemakai, perlu manambahkan report baru
memakai crystal report. Crystal Report dapat di download secara
free di website SAP Crystal Reports. Dengan alamat website:
http://downloads.businessobjects.com/akdlm/cr4vs2010/CRfor
VS_redist_install_32bit_13_0_4.zip. Sebelum memakai Crystal
Report, MySQL connector yang dipakai yaitu mysql-connector-
odbc-5.1.13-win32, yang dapat didownload di website resmi MySQL.
Setelah semua perangkat telah diinstalasi perlu untuk merubah setting
di Microsoft Visual Studi C# 2010, kemudian ikuti langkah-langkah
berikut ini:
1. Buka project baru, di Form klik menu Project klik prpeperties
9.1.1 Menu Properties
T
122
2. Setelah diklik, muncul pilih di menu target Framework dengan
piliha .NET Framework 4, akan muncul kotak konfirmasi dan
pilih Yes.
9.1.2 Pilihan Target Framework 4.0
3. Setelah selesai klik menu Project lagi, pilih menu Add New Item
9.1.3 Pilihan menu Add New Item
L a p o r a n
123
4. Setelah di klik menu Add New Item, pilih Crystal Report dan
kemudian klik Add seperti gambar berikut:
9.1.4 Pilihan menu Crytal Report
5. Sebelumnya setting dulu DSN (Data Source Name) pada computer
untuk melakukan koneksi dengan database MySQL dengan cara
klik Control Panel->ODBC->pilih menu Administrative Tools
lalu setting seperti ini:
9.1.5 Administrative Tools
T
124
6. Klik menu Administrative Tools->Data Source (ODBC)
9.1.6 Data Source (ODBC)
7. Setelah di klik pilihan Data Source (ODBC), klik Add:
9.1.7 Membuat Koneksi dengan Data Source (ODBC)
L a p o r a n
125
8. Pilih Database Pada Data Source MySQL ODBC 5.1 Driver, dan klik
Finish
9.1.8 Pilihan Datasource ODBC MySQL ODBC 5.1 Driver
9. Pada window configuration isikan Server, Port, User, Password,
dan Database sesuai dengan yang anda miliki, lihat gambar.
9.1.9 DSN MySQL Konfigurasi
T
126
10. Isi Data Source Name DSN_MySQL dan klik tombol OK.
9.1.10 DSN MySQL telah terbuat
11. Kembali lagi ke template Crystal Report, di menu Field Explorer,
klik kanan Database Fields.
9.1.11 Memilih Database
L a p o r a n
127
12. Sesudah di klik kanan pada database field akan muncul menu
pilihan sebagai berikut:
9.1.12 Database Expert
13. Expand Create New Connection > ODBC (RDO).
9.1.13 Database ODBC Make New Connection
T
128
14. Dan pilih ODBC yang telah kita buat sebelumnya dan klik tombol
Finish.
9.1.14 Database ODBC MySQL
15. Tambahkan tabel matakuliah yang telah kita buat dan klik tombol
Finish. Kemudian keluar menu Database Expert pilih table yang
telah dibuat, kemudian klik OK.
9.1.15 Pilihan Tabel
L a p o r a n
129
16. Kembali Masukkan Column-column yang akan ditampilkan pada
Report.
9.1.16 Masukkan Field ke Crysatal Report
9.2 Crystal Report
Crystal Report merupakah perangkat lunak untuk membuat
laporan baik berupa sumber data dari database buatan Microsoft
maupun database buatan lainnya. memakai Crystal Report
memungkinkan pengguna akhir menghasilkan laporan yang mencakup
visualisasi dengan penerapan bisnis baru ke dalam laporan tergantung
kebutuhan perusahaan maupun keinginan pengguna. Crystal Report
terhubung ke sumber data termasuk database relasional Oracle, SQL
Server, MySQL ataupun sumber data seperti BW, atau dengan data XML.
Crystal report pada Visual Studio 2010 tidak langsung disertakan
pada saat kita menginstal visual studio, jadi mau tidak mau kita harus
menginstal crystal report secarah terpisah. Untuk mendapatkan Crystal
Report anda bisa mendapatkanya melalui search engine google dengan
kata kuncin SAP Crystal Report for Visual Basic 2010, atau dengan cara
lain harus membelinya secara resmi di
https://www.sap.com/products.html. Penulis memakai Crystal
Report 2008.
Sesudah perangkat lunak Crystal Report di instalasi di komputer,
jalankan Crystal Report perti berikut ini:
T
130
9.2.1 Tampilan Crystal Report 2008
1. Klik Menu File -> New -> Blank Report, akan muncul menu
Koneksi ke Database
9.2.2 Koneksi ke Database
L a p o r a n
131
2. Pilih Folder Create New Connection
9.2.3 Koneksi ke ODBC
3. Double klik Make New Connection, akan muncul menu sebagai
berikut:
9.2.3 ODBC DSN
T
132
4. Pilih DSN_MySQL yang telah dibuat di Control Panel. Kemudian
klik tombol Next, User ID ketik root, Database pilih Akademik
9.2.4 Koneksi ke Database dan User ID
5. Klik tombol Finish, akan muncul Menu Berikut:
9.2.5 Memilih Database dan Tabel
L a p o r a n
133
6. Pilih Folder DSN_MySQL, seperti gambar, klik dan lihat gambar
berikut:
9.2.6 Memilih Tabel
7. Pilih Tabel yang diinginkan, letakkan ke kotak sebelah kanan
tabel yang akan di tampilkan, kemudian klik tombol OK
9.2.7 Lembaran Kerja
T
134
8. Lihat di Menu Field Explorer, klik dan draw field yang akan
ditampilkan
9.2.8 Memilih Field
9. Rancang Tampilan seperti gambar ini, kemudian simpan dengan
nama file Fakultas.
9.2.9 Rancangan Laporan
L a p o r a n
135
10. Kembali ke Form dalam project sebagai tempat untuk laporan,
pada menu properties rubah name LapFakultas dan klik OK.
11. Dalam Form klik menu Project klik prpeperties
9.2.10 Menu Properties
12. Setelah diklik, muncul pilih di menu target Framework dengan
piliha .NET Framework 4, akan muncul kotak konfirmasi dan
pilih Yes.
9.2.11 Pilihan Target Framework 4.0
T
136
13. Setelah selesai klik menu Project lagi, pilih menu Add New Item
9.2.12 Pilihan menu Add New Item
14. Setelah di klik menu Add New Item, pilih Crystal Report dan
kemudian klik Add seperti gambar berikut:
9.2.13 Pilihan menu Crytal Report
L a p o r a n
137
15. Klik tombol Add
9.2.14 Pilihan menu From an Existing Report
16. Pilih Pilihan From an Existing Report untuk membuka Laporan
yang telah di buat memakai Crystal Report 2008
9.2.15 Buka Crystal Report yang telah Dibuat
T
138
17. Pilih File Crystal Report Fakultas.rpt yang telah dibuat
dengan memilih tombol Open
9.2.16 Crystal Report Fakultas
18. Form yang Pertama, tambahkan toolbox Button
9.2.17 Form untuk Mencetak
L a p o r a n
139
19. Kemudian Add Form Baru di menu -> Project -> Add Windows
Form, lalu tambahkan Toolbox CrystalReportViewer
9.2.18CrystalReportViewer
20. Buka Form Pertama, tambahkan pustaka
using CrystalDecisions.CrystalReports.Engine;
21. Tambahkan program di Class Form1
ReportDocument rd=new ReportDocument();
22. Lalu klik CrystalReportViewer untuk memastikan fokusnya dan
kembali ke Properties dan atur modifier menjadi Public
9.2.17 pilih Modifiear
T
140
23. Kembali ke Form1, Klik Button Cetak ketik program seperti berikut:
private void button1_Click(object sender, EventArgs e)
{
Form2 fr = new Form2();
fr.Show();
rd.Load(@"E:\Pemograman
Visual\LatBuku\Destop\Lapran\fakultas.rpt");
fr.crystalReportViewer1.ReportSource=rd;
fr.crystalReportViewer1.Refresh();
}
Program lengkapnya Sebagai Berikut:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
namespace LapFakultas
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ReportDocument rd=new ReportDocument();
private void button1_Click(object sender, EventArgs e)
{
Form2 fr = new Form2();
fr.Show();
rd.Load(@"E:\Pemograman Visual\LatBuku\Destop\Lapran\fakultas.rpt");
fr.crystalReportViewer1.ReportSource=rd;
fr.crystalReportViewer1.Refresh();
}
}
}