BAB I Pengenalan VB .NET
1.2 Fitur Baru dalam VB .NET
Walaupun kebanyakan kode Visual Basic yang ada pada saat ini akan sesuai tanpa melakukan banyak perubahan ke Visual Basic, ada juga terdapat beberapa perubahan dari bahasa ini. Mengerti kapabilitas dari Visual Basic .NET akan membantu anda untuk menulis program dalam VB.NET secara efisien. Berikut ini adalah beberapa perubahan yang signifikan pada bahasa pemrogramanVB .NET:
o Inheritance
Inheritance adalah sesuatu yang sederhanan tetapi merupakan suatu ide
yang luar biasa (dan merupakan suatu yang kurang dari Visual Basic selama bertahun-tahun). Itu didasarkan pada suatu notion bahwa kelas dari sesuatu datang dalam suatu hirarki yang alami, berdasar pada hubungan “is a”. Contohnya adalah sebagai berikut:
Kuda adalah hewan Domba adalah hewan
Jika anda mengetahui aturan umum tentang bagaimana perilaku hewan, anda mengetahui sesuatu mengenai perilaku kuda atau domba. Pada sisi lain, ada hal yang lebih khusus mengenai kuda dan domba (misalnya makanannya) yang membedakan mereka dari hewan lainnya.
Visual Basic .NET mengandung kata kunci yang baru untuk pengimplementasian dari inheritance. Untuk inheritance akan dibahas pada bagian selanjutnya.
o Shared members
Kadang-kadang adalah hal yang tepat untuk membagi (shared) suatu
instance yang single dari suatu property atas semua instance dari semua
kelas. Jika property yang dibagi tersebut merujuk pada suatu kelas dasar, itu akan dibagi atas semua instance dari kelas yang ada dibawa dari kelas dasar. Contohnya, dalam khayalan saya mengenai dunia hewan, saya mungkin menentukan lokasi untuk peternakan saya. Jika saya ingin mengubah lokasi tersebut, saya ingin mengubahnya hanya sekali dan perubahan tersebut berlaku ke semua hewan di peternakan tersebut. Visual Basic .NET menggunakan kata kunci Shared untuk mengindikasikan shared members.
o Overloading dan overriding
Overloading dan overriding adalah dua cara untuk menyediakan perilaku
yang berbeda untuk method yang sama digunakan pada dua object berbeda. Pada dasarnya, overriding digunakan pada class, sementara
overloading digunakan untuk method. Pada pembahasan inheritance
sebenarnya anda telah melihat konsep overloading. Jika sebuah method dari kelas dasar overrodable, kelas pembawanya dapat menggunakan kata kunci Overrides.
Overloading pada sisi lain mengijinkan anda untuk menentukan suatu
nama fungsi yang dapat dipanggil dengan parameter yang berbeda. Ini sangat berguna, contohnya, pada kasus dimana anda membutuhkan dua jenis objek untuk diperlakukan secara berbeda.
o Explicit constructor and destructors
Constructor adalah suatu prosedur yang dipanggil ketika sebuah objek
pertama kali dibuat, dan destructor adalah suatu prosedur yang dipanggil ketika suatu objek dihilangkan. Visual Basic 6 mengijinkan anda untuk menulis constructor dan destructor secara eksplisit dalam suatu kelas dengan menggunakan prosedur Initialize dan Terminate. Visual Basic .NET berjalan selangkah lebih maju dengan menyediakan constructor dan
destructor untuk semua objek, termasuk system object seperti WinForms
dan instance lainnya pada kelas .NET Framework.
Satu perbedaan utama antara Visual Basic 6 dan Visual Basic .NET berada pada ketika destructor untuk suatu kelas dipanggil. Pada Visual Basic 6,
destructor dipanggil ketika reference terakhir pada suatu objek di-drop.
Ini membawa kepada suatu masalah ketika reference yang sirkular mencegah objek dari proses terminasi (berhenti) dengan baik. Visual Basic .NET (dan bahasa .NET lainnya) menggunakan skema yang disebut
garbage collection. Dengan garbage collection, Common Language Runtime (CLR) menjaga objek, dan ketika tidak ada lagi reference ke
suatu objek dari aplikasi anda, garbage collection akan membersihkan
reference tersebut, walaupun jika mereka dilibatkan pada suatu reference
yang sirkular. Kerugian dari garbage collection adalah bahwa anda tidak pernah tahu tepatnya ketika destructor dari suatu objek akan dipanggil. Visual Basic .NET menggunakan prosedur Sub New sebagai suatu
constructor, dan prosedur Sub Finalize sebagai sebuah destructor.
o Declaring and implementing interfaces
Interface menentukan sekumpulan method, property, dan event yang
dapat digunakan pada berbagai kelas. Visual Basic 6 memiliki kata kunci Implement supaya kelas Visual Basic dapat menggunakan interface yang didefenisikan oleh komponen lainnya. Visual Basic .NET menambahkan kata kunci Interface, yang mengijinkan anda untuk menentukan interface secara langsung dengan Visual Basic .NET.
o Structured exception handling
Visual Basic .NET menambahkan sejumlah peningkatan terhadap error
handling, jika dibandingkan dengan versi sebelumnya. Contohnya adalah
pengunaan structured exception handling, diimplementasikan pada blok Try...Catch... Finally. Kata kunci Try memberitahu Visual Basic .NET bahwa itu adalah permulaan dari blok structured exception handling. Kata kunci Catch mengindikasikan kode yang mana yang akan dijalankan jika terjadi error. Kata kunci Finally menandakan sebuah blok kode yang akan selalu dijalankan, baik jika terjadi error maupun tidak.
o Delegates
Delegates menyediakan Visual Basic .NET dengan sebuah cara untuk
menuju pada prosedur pada saat run-time (delegates kadang disebut
type-safe function pointers). Anda dapat menggunakan delegate pada
berbagai situasi dimana anda ingin menentukan runtime prosedur yang mana yang dipanggil sebagai respon terhadap suatu event tertentu. Walaupun delegates merupakan konsep yang umum, mereka lebih berguna pada Visual Basic .NET sebagai suatu cara untuk mengatasi event secara dinamik pada saat runtime. Visual Basic .NET mengandung pernyataan AddHandler dan RemoveHandler. AddHandler menghubungkan suatu event dengan suatu prosedur dengan membuat sebuah delegate yang baru; kemudian nantinya RemoveHandler akan memutuskan hubungan (koneksi) tersebut antara event dan prosedur.
o Namespaces
Namespaces merupakan kumpulan objek yang menjalankan fungsi yang
sama. Namespaces juga sangat berguna untuk mencegah adanya nama yang sama. Yaitu, dua kelas mungkin memiliki nama kelas yang sama tanpa menyebabkan error, selama mereka dialokasikan dengan
namespaces yang berbeda. Untuk dapat menggunakan namespaces dari
.NET Framework class library, pada Visual Basic .NET, anda mungkin juga mendeklarasikan namespaces anda sendiri.
1.3 .NET Framework
Definisi dari .NET Framework beraneka ragam. Diluar beragamnya definisi .NET Framework, .NET Framework merupakan “Man Behind The Gun” dari VB.NET sehingga kita perlu mengetahui jeroan dari teknologi yang ada di dalamnya. Microsoft .NET adalah software yang menghubungkan informasi, orang, sistem, dan device/perangkat yang menjangkau client, server, dan tool pengembang.
Microsoft .NET disusun oleh:
o Dot Net Framework, yang digunakan untuk membangun dan menjalankan semua macam software termasuk aplikasi berbasis Web, aplikasi smart
client, dan layanan web XML (Extensible Markup Language). Menyediakan
komponen untuk berbagi data melalui Network menggunakan platform protokol independen seperti XML, SOAP, dan HTTP.
o Tool-tool pengembang seperti Microsoft Visual Studio .NET yang menyediakan IDE (Integrated Development Environment) untuk memaksimalkan produktivitas pengembangan menggunakan .NET
Framework.
o Serangkaian server termasuk Microsoft Windows Server 2003, Microsoft SQLServer dan Microsoft BizTalk Server terintegrasi, untuk menjalankan, mengoperasikan dan mengelola services Web dan aplikasi berbasis web. o Software client seperti Windows XP, Windows ME dan Microsoft Office XP
yang membantu pengembang untuk menyebarkan dan mengelola aplikasinya.
Dot Net Framework adalah lingkungan untuk membangun, deploying/ menyebarkan, dan menjalankan services Web dan aplikasi lainnya.
Dot Net Framework disusun oleh dua komponen utama yaitu Common Language Runtime (runtime bahasa umum) dan .NET Framework Class
Library (pustaka class .NET Framework).
Secara sederhana .NET Framework adalah platform tunggal di mana semua orang dapat mengembangkan aplikasi menggunakan suatu sistem yang mirip
dengan JVM (Java Virtual Machine). Hanya berbeda dengan Java, tidak ada penghalang bahasa dengan .NET sehingga aplikasi dapat dikembangkan menggunakan bahasa: VB, C++, C#, J# dan bahasa pemrograman lainnya yang kompatibel dengan .NET Framework.
Tujuan dari .NET Framework adalah:
o Menyediakan lingkungan pemrograman berorientasi objek, apakah kode objek disimpan dan dijalankan secara lokal, dijalankan secara lokal tetapi disebarkan melalui Internet atau dijalankan secara remote (dijalankan dari suatu tempat).
o Menyediakan lingkungan untuk menjalankan suatu kode yang meminimalkan konflik saat software disebarkan dan dibuat secara versi. o Menyediakan lingkungan untuk menjalankan suatu kode yang menjamin
kemanan saat kode dijalankan, termasuk kode yang dibuat oleh pihak yang tidak diketahui atau pihak ketiga yang setengah dipercaya.
o Menyediakan lingkungan untuk menjalankan suatu kode yang dapat mengeliminasi masalah performa dari lingkungan scripted dan interpreted. o Membuat pengembang memiliki pengalaman yang konsisten dalam
berbagai tipe aplikasi seperti aplikasi berbasis Windows dan aplikasi berbasis Web.
Gambar 1.3.1 .NET Framework
Pada gambar di atas terlihat level tertinggi dari .NET Framework adalah
compiler Visual Basic dan bahasa-bahasa pemrograman lainnya. Di bawah compiler terdapat CLS (Common Language Spesification, spesifikasi/perincian
bahasa umum). Spesifikasi adalah serangkaian aturan yang menentukan fitur minimum yang harus mendukung dari suatu bahasa untuk memastikan bahwa bahasa tersebut akan interoperate dengan CLS-compliant (bahasa yang kompatibel dengan CLS) lainnya dan tool-tool. Sepanjang bahasa tersebut mendukung CLS, maka dapat dipastikan bahasa tersebut akan bekerja dengan CLR (Common Language Runtime).
Seperti yang terlihat pada gambar di atas, VB .NET sejajar dengan C++, C#, J++, J#, dan bahasa-bahasa pemrograman lainnya yang mendukung .NET. Sekarang VB .NET memiliki tipe variabel, array, UDF (user-defined types, tipe yang didefinisikan sendiri oleh pemakai), class, form grafikal, kontrol visual, dan antarmuka yang sama dengan bahasa pemrograman lainnya. Struktur umum tersebut membuat pemanggilan class dari satu bahasa .NET ke bahasa .NET lainnya akan lebih mudah.
Dot Net Framework menyediakan banyak class untuk pengembang. Pustaka
class (library class) tersebut dapat digunakan untuk mengembangkan aplikasi client yang kaya, sama seperti aplikasi berbasis Web.
Pada gambar di atas, pustaka class dibagi menjadi empat area yang berwarna abu-abu muda yaitu:
o ASP .NET menyediakan inti dari infrastruktur form-form Web untuk pengembangan berbasis User Interface (antar muka pengguna) dan Service Web untuk pengembangan antarmuka secara terprogram.
o Pengembangan antarmuka pengguna pada platform Windows dapat dilakukan menggunakan Form-Form Windows.
o Fungsi akses data disediakan oleh ADO.NET dan XML.
o Akhirnya, inti dari pustaka base class menyediakan infrastruktur service/ layanan seperti sekuriti, pengelilaan transaksi dan lain-lain.
Common Language Runtime (CLR)
Common Language Runtime merupakan dasar dari .NET Framework. Runtime adalah engine yang menjalankan aplikasi .NET Framework. Runtime menyediakan sejumlah layanan, seperti berikut ini:
o Mengelola kode (loading dan menjalankan) o Isolasi memori aplikasi
o Verifikasi untuk keamanan type
o Konversi dari Intermediate Language ke kode native (asli) o Akses metadata
o Mengelola memori pada objek managed/terkelola o Mengelola keamanan kode akses
o Menangani eksepsi (kejadian yang tidak diharapkan yang muncul saat kode dieksekusi) termasuk eksepsi lintas bahasa.
o Interoperation di antara managed code, objek COM, dan preexisting DLL
(unmanaged code dan data) o Otomatisasi layout objek
o Mendukung layanan pengembang (profiling, debugging, dan sebagainya)
Gambar 1.3.2 Arsitektur .NET Framework (sumber: Microsoft MSDN) Konsep pengelolaan kode program merupakan prinsip dasar dari runtime. Kode yang menjadi target dari runtime disebut managed code (kode terkelola), sedangkan kode yang tidak menjadi target runtime disebut unmanaged code (kode tidak terkelola). VB .NET akan menjalankan managed
code apabila dalam sistem komputer tersebut terdapat CLR atau dengan kata
lain pemakai tidak dapat menjalankan aplikasi VB.NET tanpa menginstal CLR terlebih dahulu.
CLR “mengetahui” apa yang akan dilakukan pada data khusus (disebut metadata) yang berada dalam aplikasi. Metadata berisi peta di mana menemukan class, kapan memanggil class dan kapan mengatur batas isi runtime, menghasilkan native code/kode asli, mengatur keamanan, menentukan class mana yang menggunakan metode dan memanggil class jika dibutuhkan. CLR juga menentukan kapan suatu objek digunakan dan dilepas. Semua itu disebut managed code.
Kode yang dikompilasi dengan COM disebut unmanaged code. Ada dua cara yang dapat Anda lakukan dengan unmanaged code. Anda dapat mengekspor komponen COM ke .NET Framework atau Anda dapat mengekpor komponen .NET ke COM.
Untuk melakukan kegiatan Runtime, dibutuhkan compiler bahasa yang mengikuti CLS (Common Language Spesification) yang menerangkan suatu subset tipe data yang didukung oleh runtime serta umum dipakai oleh semua bahasa dalam lingkup .NET. Compiler bahasa akan mengkompilasi kode yang ditulis oleh pengembang menjadi bahasa tingkat menengah yang disebut MSIL (Microsoft Intermediate Language) atau disingkat IL saja, yang kemudian akan dikompilasi menjadi bahasa native/asli oleh runtime pada saat instalasi, atau dikompilasi menjadi JIT (Just-In-Time) pada awal eksekusi. Kode yang dikompilasi oleh MSIL dan dikelola oleh runtime merupakan
managed code. Disebut managed code karena tanggung jawab pengelolaan
eksekusinya dilakukan oleh runtime termasuk instansi objek, alokasi memori, dan pengumpulan sampah objek oleh memori.
Komponen-komponen yang dikelola oleh runtime disebut managed assembly atau disingkat assembly. Assembly adalah unit dasar penerapan dalam dunia .NET. Sebuah Assembly memiliki manifestasi yaitu serangkaian metadata yang menerangkan isi assembly. Salah satu kelebihan assembly adalah sifat menerangkan diri pada komponen .NET artinya menjalankan komponen-komponen tersebut tidak perlu diregister pada komputer.