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:

csharp
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:

  1. public class RekeningBank: mendeklarasikan class bernama RekeningBank; nama class secara konvensi diawali huruf kapital.
  2. Tiga deklarasi field: Nomor dan Pemilik bertipe string, Saldo bertipe int; kata kunci public menandai anggota yang dapat diakses dari luar class.
  3. public void TampilkanInfo(): mendefinisikan method yang mencetak data; void menyatakan method ini tidak mengembalikan nilai.
  4. 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:

csharp
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:

text
Rekening REK-2001 a.n. Budi - Saldo: Rp700000
Rekening REK-2002 a.n. Siti - Saldo: Rp1200000

Baris 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.