VB.NET Ebook Gratis dalam Bahasa Indonesia

VBNET_Migration_thumb_1338A82A

Satu bulan yang lalu saya dan teman saya Bapak Rully selesai menulis sebuah buku gratis dalam bahasa indonesia dengan judul “Migrasi Visual Basic 6 ke Visual Basic.NET”. Buku ini kami persembahkan ke komunitas INDC dan komunitas IT di Indonesia. Anda dapat mendownload buku ini secara gratis disini

Buku setebal 225 halaman ini membahas Fitur-fitur terbaru yang ada di VB9 dan menunjukan perbedaan VB6 dan VB.NET, cocok untuk anda developer VB6 yang ingin belajar VB.NET. adapun bab-bab yang dibahas pada buku ini adalah:

PENGANTAR ………………………………………………………………………………………………. 1
BAB 1 MIGRASI KE .NET FRAMEWORK ……………………………………………… 8
BAB 2 VISUAL STUDIO IDE …………………………………………………………………… 17
BAB 3 DASAR VB 2008 …………………………………………………………………………….. 29
BAB 4 WINDOWS FORM ………………………………………………………………………… 75
BAB 5 OBJECT ORIENTED PROGRAMMING …………………………………. 101
BAB 6 OBJEK ORIENTED PROGRAMMING BAGIAN 2 ………………… 123
BAB 7 COLLECTION …………………………………………………………………………….. 144
BAB 8 PENANGANAN KESALAHAN………………………………………………….. 151
BAB 9 FITUR BARU VB9……………………………………………………………………….. 165
BAB 10 VB 6.0 TO VB.NET MIGRATION TOOLS HELPER ……………. 196

Harapan saya semoga buku ini dapat bermanfaat bagi anda sekalian, selamat menikmati :)

MVP Award

OLYMPUS DIGITAL CAMERA          

Pada bulan July 2009 saya mendapatkan kado istimewa berupa award Microsoft MVP (Most Valuable Professional) untuk bidang keahlian Visual Basic (https://mvp.support.microsoft.com/profile/erick).

MVP adalah penghargaan yang diberikan oleh Microsoft kepada para profesional bidang teknologi informasi (TI) atas keahlian dan kontribusi mereka terhadap komunitas TI. Penghargaan MVP diberikan oleh Microsoft kepada individu yang tidak hanya memiliki keahlian pada satu atau beberapa produk Microsoft, tetapi juga memberikan kontribusi yang signifikan serta berperan aktif dalam komunitas, baik secara offline maupun online. 

Terima Kasih kepada Teman-teman di Microsoft Indonesia, Komunitas INDC (Indonesia Developer Community) dan MUGI (Microsoft User Group) yang telah banyak membantu saya sehingga saya dapat memperoleh penghargaan yang cukup bergengsi ini.

Acara Seminar Technology Update di UNY

8220_1122963313638_1213743176_30328591_7334977_n

Pada tanggal 10 Oktober 2009 akan diadakan Seminar Technology Update di Universitas Negri Yogyakarta (UNY). Pada seminar tersebut saya mewakili MUGI (Microsoft User Group Indonesia) Jogja akan menyampaikan materi Pengenalan Kominitas MUGI dan Windows 7 for Developer menggunakan Windows7 CodePack API.

Fitur VB9 (LINQ to XML dan XML Literal)

Halo ini adalah posting kesebelas saya tentang fitur dari VB9
tentang XML Literal. Ini adalah fitur dari VB9 yang “cool”, pada VB9
XML menjadi “first class citizen” yang berarti anda dapat menuliskan
XML secara Literal.

anda dapat melihat posting saya sebelumnya:

Pada jaman dahulu kala (VB8) untuk membuat file XML anda harus menggunakan System.Xml untuk DOM manipulation, contoh kodenya:

   1: Imports System.IO
   2: Imports System.Xml
   3: Module Module1
   4:     Sub Main()
   5:         Using fs As New FileStream("produksample.xml", FileMode.Create)
   6:             Using wt As XmlWriter = XmlWriter.Create(fs)
   7:                 wt.WriteStartDocument()
   8:                 wt.WriteStartElement("Products")
   9:                 wt.WriteStartElement("Product")
  10:                 wt.WriteAttributeString("Id", "KB001")
  11:                 wt.WriteElementString("Name", "Laptop Acer")
  12:                 wt.WriteElementString("Price", "7000000")
  13:                 wt.WriteEndElement()
  14:                 wt.Flush()
  15:             End Using
  16:         End Using
  17:     End Sub
  18: End Module

kode diatas akan menghasilkan file “produksample.xml” sebagai berikut:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Products>
   3:     <Product Id="KB001">
   4:     <Name>Laptop Acer</Name>
   5:     <Price>7000000</Price>
   6:     </Product>
   7: </Products>

LINQ to XML

Pada VB9 (.NET 3.5) anda dapat menuliskannya dengan cara yang baru. VB9 mendukung XElement
class yang terdapat pada namespace System.Xml.Linq, dengan menggunakan
cara penulisan ini code untuk pembuatan dokumen XML tampak menjadi
lebih “clean”. Class yang ada pada System.Xml.Linq adalah

Class Deskripsi
XAttribute Merepresentasikan attribut yang dibuat
XDocument Merepresentasikan Complete XML Tree
XElement Merepresentasikan XML Element, dan sebagai dasar untuk mengkonstruksi XML Tree
XName Merepresentasikan attribut dan element names
XNode Merepresentasikan base class dari XML Node

Untuk membuat dokumen xml seperti contoh sebelumnya dengan menggunakan XElement anda dapat menuliskan kode berikut:

   1: Imports System.Xml.Linq
   2: Module ContohXElement
   3:     Sub Main()
   4:         Dim xmlProd = New XElement("Products", _
   5:                           New XElement("Product", _
   6:                               New XAttribute("Id", "KB001"), _
   7:                               New XElement("Name", "Laptop Acer"), _
   8:                               New XElement("Price", "7000000")))
   9:         xmlProd.Save("xelementProd.xml")
  10:     End Sub
  11: End Module

XML Literal

VB9 juga menawarkan cara yang lebih simple dan clean selain
menggunakan XElement yaitu XML Literal, saat ini XML Literal hanya
disupport oleh VB9, C# 3.0 belum menssuport fitur ini (C# 4.0? Maybe
^_^). dengan XML Literal anda dapat menuliskan kode berikut:

   1: Imports System.Xml.Linq
   2: Module ContohXElement
   3:     Sub Main()
   4:         Dim xmlProd = <Products>
   5:                           <Product Id="KB001">
   6:                               <Name>Laptop Acer</Name>
   7:                               <Price>7000000</Price>
   8:                           </Product>
   9:                       </Products>
  10:         xmlProd.Save("literalprod.xml")
  11:     End Sub
  12: End Module

Anda juga dapat mengambil nilai dari attribute atau elemen dalam dokumen tersebut dengan iterasi

   1: Dim xmlProd = <Products>
   2:                   <Product Id="KB001">
   3:                       <Name>Laptop Acer</Name>
   4:                       <Price>7000000</Price>
   5:                   </Product>
   6:                   <Product Id="KB002">
   7:                       <Name>Laptop Toshiba</Name>
   8:                       <Price>9000000</Price>
   9:                   </Product>
  10:               </Products>
  11: For Each produk In xmlProd.<Product>
  12:     Console.WriteLine("Id {0}, Nama {1} dan harganya Rp.{2}", _
  13:                       produk.@Id, _
  14:                       produk.<Name>.Value, _
  15:                       produk.<Price>.Value)
  16: Next

Hasilnya:

image

Mudah ya? ^_^ jika kita perhatikan ketika anda melakukan iterasi
dokumen xml diatas, VS 2008 sudah cukup memberikan intellisense

image

namun intellisense tersebut tidak dapat menampilkan keterangan nama
elemen atau attribut yang ada pada dokumen XML yang anda buat, karena
IDE tidak memiliki informasi tentang XML Schema anda, untuk
menyelesaikan masalah ini anda dapat mengimports xml shema dari
dokumen. Caranya tambahkan XML Schema, cara yang paling mudah adalah
dengan menggunakan fitur pada VS 2008.

Tambahkan file xml yang sudah anda buat sebelumnya kedalam project,
kemudian buka dengan VS, pilih “Create Schema”. Copykan hasil schema
yang digenerate kedalam clipboard.

image

Tambahkan file XML Schema pada project, dan beri nama “ProdShema.xsd”.

image

Kemudian copykan hasil schema yang digenerate pada langkah
sebelumnya kedalam file “ProdShema.xsd”, jangan lupa untuk mengisi
atribut “targetNamespace”

image

Setelah itu kembali ke kode, dan anda dapat mengimports schema yang sudah anda buat.

image

Dengan begitu ketika anda mengetikan kode maka bantuan intellisense
akan lebih jelas karena dapat mengenali schema dari dokumen anda

image

wow programming xml dokumen jadi asik klo ada intellisense gini ^_^

Embedded Expression

Anda juga dapat menambahkan embedded expression dalam XML Literal,
jika anda pernah menggunakan ASP.NET pasti familiar dengan cara
penulisan embedded expression menggunakan keyword <%= %>. Contoh
penggunaannya.

   1: Imports System.Xml.Linq
   2: Module EmbeddedExpression
   3:     Sub Main()
   4:         Dim mahasiswa() = {New With {.Nim = "23082321", .Nama = "Erick", .Ipk = 3.5}, _
   5:                      New With {.Nim = "23082322", .Nama = "Bejo", .Ipk = 3.2}, _
   6:                      New With {.Nim = "23082323", .Nama = "Anton", .Ipk = 3.3}}
   7:         Dim xmlStudent = <Students>
   8:                              <%= From mhs In mahasiswa _
   9:                                  Select _
  10:                                  <Student Nim=<%= mhs.Nim %>>
  11:                                      <Nama><%= mhs.Nama %></Nama>
  12:                                      <Ipk><%= mhs.Ipk %></Ipk>
  13:                                  </Student> _
  14:                              %>
  15:                          </Students>
  16:         xmlStudent.Save("students.xml")
  17:         Console.WriteLine(xmlStudent.ToString())
  18:     End Sub
  19: End Module

jika dijalankan programnya akan menampilkan

image

Pada kode diatas kita menggenerate dokumen xml menggunakan nilai
yang diambil dari anonymous types yang sudah kita buat sebelumnya, anda
juga dapat menggenerate dokumen XML dengan data yang anda ambil dari
database, dll. Embedded Expression juga dapat digunakan untuk
menggenerate “VB View” secara dinamis pada ASP.NET MVC.

Selamat mencoba XML Literal dari VB9  ^_^

Fitur VB9 (Relaxed Delegates)

Halo, ini adalah posting kedelapan saya tentang fitur dari VB9 yaitu Relaxed Delegates, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator
  • Partial Method
  • Extension Method

Pada VB8 jika anda mengaktifkan pilihan option strict menjadi “Off” maka compiler VB secara otomatis akan mengkonversi dari satu tipe data ke tipe data yang lain tanpa harus menuliskannya secara eksplisit (casting), misal untuk melakukan narrowing conversion (dari double menjadi integer). Pada VB9 fasilitas semacam itu juga ditambahkan namun untuk signatur delegates.

Pada VB8 jika anda menggunakan delegates seperti berikut:

   1: Delegate Sub Hello(ByVal h As Object)
   2: Module Module1
   3:     Sub Kenalan(ByVal h As String)
   4:         Console.WriteLine("Helloo" & h)
   5:     End Sub
   6:     Sub Main()
   7:         Dim hai As New Hello(AddressOf Kenalan)
   8:         hai("Erick")
   9:     End Sub
  10: End Module

maka compiler VB akan memberikan pesan error bahwa tipe datanya tidak sama beda signatur delegates antara “object” dan “string”

image   

Tapi pada VB9 kasus seperti diatas tidak akan terjadi lagi karena compiler VB9 sudah cukup smart untuk mengkonversi dari “object” ke “string”

image

Fitur VB9 (Extension Method)

Halo, ini adalah posting ketujuh saya tentang fitur dari VB9 yaitu Extension Method, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator
  • Partial Method

Extension method digunakan untuk menambahkan method kedalam class tanpa harus menulis ulang atau mengoverride class tersebut, biasanya digunakan untuk class-class bawaan dari .NET yang kita tidak bisa memodifikasinya langsung (mis: String). Untuk menambahkan extension method anda harus menambahkan keyword <Extension()>.

Misal anda ingin membuat method untuk membalik kata, padahal pada class String belum disediakan method tersebut maka anda dapat menambahkannya dengan Extension Method.

Pada VB8 anda dapat menuliskannya sebagai berikut :

Sub Main()
   Dim nama = "Erick Kurniawan"
   Dim balikNama = BalikKata(nama).ToLower().Substring(0, 9)
   'Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)
   'Console.WriteLine(balikNama)
End Sub
 
 
Function BalikKata(ByVal kata As String) As String
   Dim kar = kata.ToCharArray()
   Array.Reverse(kar)
   Return New String(kar)
End Function

Anda harus memanggil fungsi dengan cara diatas karena memang fungsi BalikKata tidak ada dalam class String, jika anda ingin menambahkan method BalikKata dalam class String maka anda dapat menuliskan:

Imports System.Runtime.CompilerServices
 
Module ExtensionMethod
    Sub Main()
        Dim nama = "Erick Kurniawan"
        Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)
        Console.WriteLine(balikNama)
    End Sub
 
    <Extension()> _
    Function BalikKata(ByVal kata As String) As String
        Dim kar = kata.ToCharArray()
        Array.Reverse(kar)
        Return New String(kar)
    End Function
End Module

Dengan menggunakan extension method anda dapat melakukan penulisan dengan cara “chaining” yang akan terasa lebih natural:

image

Dim balikNama = nama.ToLower().BalikKata().Substring(0, 9)

Fitur VB9 (Partial Method)

Halo, ini adalah posting keenam saya tentang fitur dari VB9 yaitu Partial Method, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable
  • Object initializer
  • Anonymous types
  • Nullable types
  • If Ternary operator

Partial Method pada VB9 adalah fitur yang hampir sama dengan Partial Class yang sudah ada pada VB8, Partial Class pada VB8 sangat berguna terutama untuk memisahkan kode yang digenerate secara otomatis oleh Visual Studio.

Partial method pada VB9 digunakan dengan tujuan memudahkan kita untuk merubah method yang ada pada class yang di generate oleh tools, misal pada penggunaan LINQ to SQL. Karena ketika kita melakukan perubahan terhadap class yang digenerate oleh tools (mis: LINQ to SQL / SQL Metal) maka ketika kita menggenerate class baru lagi dengan menggunakan tools, kemungkinan code kita yang lama akan teroverride oleh code yang digenerate oleh tools tersebut.

Misal class yang digenerate oleh tools sebagai berikut

Class Mahasiswa
    Private _nim As String
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            _nim = value
        End Set
    End Property
End Class

Kemudian mungkin anda ingin menambahkan method dalam class yang sudah digenerate oleh tools diatas

Class Mahasiswa
    Private _nim As String
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            CekNim(value)
            _nim = value
        End Set
    End Property
    Private Sub CekNim(ByVal value As String)
        If value = String.Empty Then
            Console.WriteLine("Nim tidak boleh kosong !!")
        End If
    End Sub
End Class

Ketika anda mapping table baru kedalam class (mis: LINQ to SQL) maka class diatas akan degenerate ulang oleh tools, dan method yang anda tambahkan akan hilang karena dioverride oleh code hasil dari tools. Nah bagaimana caranya agar anda dapat menambahkan method pada code hasil geberate dari tools? jawabannya adalah dengan partial method, dengan partial method anda dapat memisahkan method tersebut kedalam file yang berbeda.

Class Mahasiswa
    Private _nim As String
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            CekNim(value)
            _nim = value
        End Set
    End Property
    Partial Private Sub CekNim(ByVal value As String)
    End Sub
End Class
Partial Class Mahasiswa
    Private Sub CekNim(ByVal value As String)
        If value = String.Empty Then
            Console.WriteLine("Nim tidak boleh kosong !!")
        End If
    End Sub
End Class

Nah fitur partial class ini akan sangat berguna ketika anda menggunakan LINQ to SQL untuk menggenerate code mapping dari table

Selamat Mencoba ^_^