Class adalah cetak biru (blueprint) yang mendefinisikan data dan perilaku, sedangkan object adalah salinan class tersebut yang tersimpan di memori saat program berjalan. Satu class dapat menghasilkan banyak object, dan setiap object mengelola datanya sendiri. Bab ini mendefinisikan class pertama untuk domain perbankan, membuat object dari class tersebut, lalu membuktikan bahwa perubahan pada satu object tidak memengaruhi object lain.
Hubungan Class dan Object #
Diagram di atas menggambarkan satu class yang menghasilkan dua object. Class menentukan anggota apa saja yang dimiliki setiap object, sedangkan nilai datanya diisi per object. Karena itulah dua rekening dapat memiliki saldo berbeda meskipun berasal dari definisi yang sama.
Mendefinisikan Class #
Definisi class diawali kata kunci class, diikuti nama class dan kurung kurawal yang membungkus anggotanya:
public class RekeningBank
{
public string Nomor;
public string Pemilik;
public int Saldo;
public void TampilkanInfo()
{
Console.WriteLine($"Rekening {Nomor} a.n. {Pemilik} - Saldo: Rp{Saldo}");
}
}Mari kita bedah definisi di atas:
public class RekeningBank: mendeklarasikan class bernamaRekeningBank; nama class secara konvensi diawali huruf kapital.- Tiga deklarasi field:
NomordanPemilikbertipestring,Saldobertipeint; kata kuncipublicmenandai anggota yang dapat diakses dari luar class. public void TampilkanInfo(): mendefinisikan method yang mencetak data;voidmenyatakan method ini tidak mengembalikan nilai.- Isi method: membaca tiga field tanpa awalan nama object karena method berjalan atas object pemanggilnya.
Pada project nyata, definisi class biasanya ditulis di file terpisah, misalnya RekeningBank.cs, sehingga Program.cs cukup memuat baris-baris penggunaannya.
Membuat Object dengan new #
Kata kunci new membuat object dari sebuah class. Setelah object tersimpan di variabel, anggotanya diakses lewat tanda titik:
RekeningBank rekeningBudi = new RekeningBank();
rekeningBudi.Nomor = "REK-2001";
rekeningBudi.Pemilik = "Budi";
rekeningBudi.Saldo = 500000;
RekeningBank rekeningSiti = new RekeningBank();
rekeningSiti.Nomor = "REK-2002";
rekeningSiti.Pemilik = "Siti";
rekeningSiti.Saldo = 1200000;
rekeningBudi.Saldo = rekeningBudi.Saldo + 200000;
rekeningBudi.TampilkanInfo();
rekeningSiti.TampilkanInfo();Output yang Dihasilkan:
Rekening REK-2001 a.n. Budi - Saldo: Rp700000
Rekening REK-2002 a.n. Siti - Saldo: Rp1200000Baris rekeningBudi.Saldo = rekeningBudi.Saldo + 200000; hanya menambah saldo object Budi menjadi 700000. Saldo object Siti tetap 1200000 karena kedua object menyimpan data di lokasi memori yang berbeda. Inilah makna praktis dari pernyataan bahwa class adalah cetak biru: satu definisi, banyak salinan data yang tidak saling bergantung.
Perlu dicatat bahwa variabel object tidak menyimpan data rekening secara langsung, melainkan referensi ke lokasi object di memori. Menugaskan satu variabel object ke variabel lain hanya menyalin referensinya, sehingga kedua variabel menunjuk object yang sama. Perilaku tipe referensi ini dibahas lebih dalam pada bagian variabel dan tipe data.