1. Indikator Topik Pembahasan.
- Pembuatan class statis.
- Pemanfaatan statis pada anggota class.
- Pembuatan metode ekstension.
2. Peralatan yang digunakan.
- Visual Studio 2017 Community.
3. Materi Pembelajaran,
Kata kunci Static
Dalam kondisi normal ketika sebuah objek dari class diinstasikan, kemudian
diberi nilai, maka objek akan otomatis dihancurkan ketika sudah selesai daur
hidupnya. Kejadian ini akan menyebabkan hilangnya nilai yang terkandung
bersamaan dengan hancurnya objek. apabila objek tersebut digunakan bersama oleh
objek yang lain, maka akan membuat terjadinya kesalahan. Cara yang ditempuh
adalah dengan melakukan banyak instansi pada class yang sama didalam objek-objek
yang berbeda. Cara tersebut dirasa rumit dan pastinya akan terjadi kesulitan dalam
berbagi data yang dikandung pada objek tersebut. Untuk menyelesaikan masalah
tersebut, bahasa pemrograman memiliki mekanisme khusus. Mekanisme itu adalah
menjadikan class tersebut dibuat secara statis. Kata kunci static digunakan untuk mendeklarasikan statis class. Anggota dari
class seperti atribut, metode, properti, konstruktor, dan event juga dapat dibuat statis.
Static dapat berarti menghubungkan dengan dirinya sendiri, bukan menginstansikan
ke dalam objek. Dengan kata lain jika menggunakan kata kunci static, maka langsung
diakses dengan nama dari tipe itu bukan dari nama objek yang direferensikan.
Class Statis
Dalam membuat/mendeklarasikan sebuah class, kata kunci static dapat
ditambahkan untuk membuat sebuah class menjadi static class. Class statis tidak
membutuhkan objek. Class statis hanya dapat berisikan anggota yang statis juga. Hal
ini disebabkan tempat penyimpanannya yang berbeda. Anggota statis ketika dibuat
akan langsung ditempatkan kedalam memori, sedangkan non statis ditempatkan
kedalam memori ketika melalui proses instansi. Class statis tidak dapat diinstasikan
sehingga anggota non statis tidak dapat berada didalam class statis. Class statis secara
default merupakan "sealed class" yang bearti tidak dapat diwariskan ke class yang
lain.

Setelah class atau anggotanya ditandai sebagai statis, maka kompilator akan
mengeluarkan panggilan non-virtual kepada member tersebut. Hal tersebut dilakukan
dengan tujuan menahan pengecekan ketika proses "runtime" untuk setiap panggilan
yang memastikan bahwa pointer objek saat itu adalah "Not-Null". Berikut beberapa
aturan yang berlaku pada class statis.
- Class statis tidak dapat menjadi base class.
- Class statis tidak dapat mengimplementasikan interface.
- Class statis tidak dapat diinstasikan kedalam objek.
- Class statis tidak memiliki konstruktor ataupun overload-nya dan kompilator
tidak akan membuat default konstruktor (parameterless construktor).
- Class statis boleh memiliki konstruktor yang bersifat statis dan harus
parameterless.
- Class statis tidak memperbolehkan adanya kata kunci "abstract" untuk
anggotanya.
- Class statis dapat dibuat "Generic".
- Class statis ataupun anggota lain yang statis dapat dibuat didalam class non
statis tapi tidak sebaliknya.
- Class statis dapat membuat sebuah metode extension (sejak C# versi 3.0).
Class statis dapat digunakan apabila sebuah aplikasi memiliki seperangkat
metode "helper" atau metode "utility" yang harus dibuat dalam suatu class. Metodemetode tersebut perlu dipanggil berulang kali. Membuat instansi pada class tersebut
akan membuat struktur koding menjadi rumit. Maka penggunaan class statis akan
menjadi sebuah solusi yang baik, sebab tidak diperlukan objek yang diinstansikan
berulang-ulang.
Konstruktor
Statis
Kata kunci static berlaku untuk konstruktor baik di class statis maupun class
non-statis. Konstruktor statis merupakan tipe spesial dari konstruktor dimana dalam
pembuatannya tidak membutuhkan akses modifier apapun.
Konstruktor statis hanya akan dipanggil satu kali yaitu ketika class pertama kali
dimuat dan sebelum objek pertama kali diinstansikan. Konstruktor statis tidak dapat
dipanggil secara langsung dan eksekusi konstruktor statis tidak dapat dikontrol.
Atribut Statis & Metode Statis
Perilaku-perilaku yang telah disebutkan dari class statis, memberikan banyak
sekali kekurangan yang sulit diterapkan kedalam kode program skala besar. Kebutuhan
akan statis kemudian lebih banyak diterapkan hanya dianggota class itu saja. Class dibuat
secara non-statis namun beberapa anggota seperti atribut dan metode beberapa dibuat
statis. Hal ini dapat menutup kekuranga yang ada pada class statis, seperti tidak dapat
dijadikan base class, tidak dapat diterapkan interface, dan konstruktor tidak dapat
dikontrol.
Perlu diingat jika atribut atau metode diberikan kata kunci statis, maka atribut dan
metode itu akan tersimpan di memori yang berbeda. Hal ini akan membuat akses data
akan menjadi berbeda. Perhatikan contoh berikut.
Pada contoh diatas dapat dilihat apabila terdapat dua atribut static dan non static dipanggil
bersamaan didalam static metode, maka akan terjadi kesalahan. Kesalahan muncul
dikarenakan kedua atribut tersebut tersimpan diarea memori yang berbeda. Metode statis
dengan atribut statis tersimpan diarea yang sama sedangkan non-statis tidak memiliki
alamat memori sebelum class tersebut diinstansikan.
Untuk menghindari error, maka setiap anggota (atribut, metode, dll) yang non statis harus
diinstansikan dulu kedalam objek. Tujuan diinstansikan kedalam objek adalah untuk
mendapatkan tempat didalam memori sehingga attribut tersebut dapat diberi nilai dan
digunakan.
Ada cara lain yang ditempuh oleh beberapa programmer untuk menghindari
instansi objek yang berulang-ulang dan tanpa harus membuatnya menjadi class statis.
Yaitu dengan membuat sebuah properti "Get" yang dimodif menjadi statis. Properti ini
akan bertanggung jawab menggantikan objek instansi menjadi statis. Properti ini akan
memastikan bahwa hanya akan satu objek saja yang dibuat. Cara ini dirincikan kedalam
sebuah pola yang kemudian dikenal dengan nama singleton.
Cara kerjanya adalah dengan menambahkan satu atribut private dengan tipe class
yang sama yang dimodif statis. Lalu menambahkan satu buah properti get statis yang
melakukan instansi terhadap dirinya sendiri. Langkah terakhir adalah membuat
konstruktor menjadi private. Hal ini dilakukan untuk menghindari class diinstansikan
diluar kelas.
Comments
Post a Comment