Mari kita belajar tentang ‘Versioning’ dan ‘Struct’. Apa itu versioning?? Apa itu struct?? Inilah judul tutorial kita yang ke 8 versi beginner ini. Kita akan mulai dengan versioning terlebih dahulu :)
Versioning, sebetulnya saya lebih suka menyebut versioning ini dengan overriding. Anda pasti sudah familiar dengan ‘override’ kan, itu lho, kalo di windows namanya overwrite, , jadi intinya sebuah method dapat digantikan dengan method lain yang memiliki nama method yang sama.
Nah, overriding dalam C# ini disebut dengan versioning. Jadi nantinya kita akan mendemo kan versioning dengan ‘override’ keywords dan ‘new ‘keywords. Versioning ini sangat erat hubungan nya antar base class dengan derived class (class utama dengan class turunannya).
Perhatikan bahwa method Hai dengan modifier virtual dapat di override oleh class turunan dengan method yang sama. Inilah yang disebut dengan versioning.
Secara default, pada C#, semua method bukanlah method virtual. Sehingga untuk membuatnya overrideable kita harus menambahkan modifier ‘virtual’ di belakang deklarasi methodnya seperti pada contoh di atas.
Nah, untuk meng-override method, kita dapat menggunakan ‘override’ keyword dan juga ‘new’ keyword. Bila keduanya belum disetting atau belum diberikan maka compiler akan memberikan warning, bukan error, dan method di base class akan disembunyikan (bukan di override).
Bingung kah??
Perhatikan, dan baca kode dari MSDN berikut ini,
Kode di atas akan memberikan output:
MyDerived-Meth1
MyBase-Meth2
MyBase-Meth3
Gampang bukan??
STRUCT
Struct merupakan sebuah tipe value (value type) sedangkan class adalah tipe reference (reference type). Untuk yang baru belajar class pasti bingung yak arena penulisan struct ini sama dengan penulisan class hanya saja diubah dikit, coba perhatikan kode struct di bawah ini
Struct Manusia{
}
Class Manusia{
}
Mirip kan?
‘Value type’ menghandle value nya di memory saat sudah dideklarasikan, sedangkan ‘Reference type’ menghandle reference untuk object di memory. Hmmm, pasti bingung. Kalo pada tutorial class sebelumnya kita mengenal ‘destructor’, maka pada struct kita tidak akan menemuinya. Ah, perbedaan struct dengan class yang lain adalah struct tidak ada inheritance, sedangkan class ada.
Nah, sekarang mari kita lihat struct di bawah ini, meskipun behavior antara class dan struct sangat berbeda tapi dalam penulisan sangat mirip. Kita akan membuat sebuah persegi, dan kita berikan properties panjang dan lebar:
Coba perhatikan dan baca kodenya, sangat mudah dimengerti bukan, ada get dan set yang sudah kita bahas pada tutorial sebelumnya yaitu untuk mengsetting dan menambahkan properties Width dan Height.
Penulisannya sangat mirip kan, kecuali bila kita menulis class maka keywordnya ada class tetapi karena kita mendeklarasikan struct maka keywordnya adalah struct.
Untuk menggunakan struct ini juga sama seperti class, kita buat instance baru kemudian kita tulis seperti biasa selayaknya class. Perhatikan contoh kode berikut ini, kita akan membuat class dan kemudian kita membuat instance baru dari struct:
Coba perhatikan kode penggalan dari kode diatas berikut ini:
Rectangle rect1 = new Rectangle();
rect1.Width = 1;
rect1.Height = 3;
Di sini kita membuat rect1 yang merupakan instance dari struct Rectangle kemudian kita memberikan value untuk properties height dan width. Nah, ada cara yang lain untuk membuat instance dan men-setting propertiesnya. Yaitu seperti di bawah ini:
Gampang bukan?? Perhatikan tanda koma(,) dan curly braces({}) serta tanda titik komanya (;).
Lalu apa sebetulnya kegunaan struct? Apa fungsi struct? Kenapa tidak memakai class saja? Kenapa harus menggunakan struct??
Mungkin url ini akan bermanfaat untuk anda http://programmers.stackexchange.com/questions/92339/when-do-you-use-a-struct-instead-of-a-class
Dalam framework .NET banyak sekali class yang merupakan struct, seperti a System.Int32 yang merupakan C# int, kemudian ada lagi System.Single yang merupakan C# float, System.Bool yang merupakan C# bool dan masih banyak lagi.
Oke, tutorial ini hanya pengertian simple tentang struct. Anda akan menjumpai banyak sekali model struct nantinya.