Definisi kelas

Pemrograman Berbasis Prosedur dan Pemrograman Berorientasi Objek

Sebelum adanya konsep kelas, bahasa pemrograman seperti C belum mengenal kelas. Gaya pemrograman tanpa kelas dan objek seperti bahasa C dinamakan pemrograman berbasis prosedur.

Pemrograman Berbasis Prosedur: Program merupakan rangkaian urutan instruksi, dengan fokus utama mengoptimalkan langkah eksekusi.

Dengan hadirnya kelas, kita dapat menerapkan pemrograman berorientasi objek.

Pemrograman Berorientasi Objek: Program terdiri dari sekumpulan kelas yang sudah dikapsulasikan. Ide utamanya adalah menggabungkan data beserta fungsi yang mengolah data tersebut ke dalam unit yang saling berkaitan secara logis, unit ini dinamakan kelas (class).

Definisi Kelas

Kelas adalah struktur data yang berisi data yang disimpan serta kode yang dapat dieksekusi. Terdapat dua jenis anggota utama di dalamnya:

  1. Anggota Data (Data Members): Menyimpan data properti objek, meliputi Bidang (Fields) dan Konstanta (Constants)
  2. Anggota Fungsi (Function Members): Menerapkan logika perilaku objek, seperti metode, properti, konstruktor, destruktor, operator, pengindeks, dan peristiwa

Kelas merupakan kumpulan yang mengkapsulasikan data dan fungsi yang saling berkaitan secara logis, digunakan untuk memodelkan hal-hal di dunia nyata maupun dunia abstrak.

Secara singkat, kelas adalah struktur data yang dibentuk dari data dan fungsi. Kita dapat membuat objek dari sebuah kelas, data serta anggota dapat diakses melalui objek, dan juga dapat diakses langsung dari dalam kelas itu sendiri.

Deklarasi Kelas

Kata kunci class hanya mendefinisikan cetakan kelas dan tidak membuat instansi objek. Sebuah cetakan terdiri dari tiga bagian: nama kelas, anggota kelas, dan karakteristik kelas.

Sintaks

class NamaKelas
{
    // deklarasi anggota (bidang, metode, urutan tidak wajib diatur)
}Code language: JavaScript (javascript)

Deklarasi kelas sering juga disebut sebagai definisi kelas (class definition)


class Program
{
    static void Main(string[] args)
    {
        AddCalculator addCalculator = new AddCalculator();
        SubCalculator subCalculator = new SubCalculator();
    }
}


class AddCalculator
{
    public int A { get; set; }
    public int B { get; set; }
    public int Add()
    {
        return A + B;
    }
}

class SubCalculator
{
    public int A { get; set; }
    public int B { get; set; }
    public int Subtract()
    {
        return A - B;
    }
}Code language: JavaScript (javascript)

Pada contoh di atas, terdapat dua kelas yang dideklarasikan: satu untuk perhitungan penjumlahan dan satu lagi untuk pengurangan. Di fungsi Main program utama, kita membuat instansi dari kedua kelas tersebut lalu menggunakannya.

Konten ini bersumber dari foxdevelop.com

Deklarasi kelas tidak harus ditulis secara berurutan dari atas ke bawah. Anda bisa mendeklarasikan kelas di bagian bawah kode, lalu memanggilnya di fungsi Main yang ada di bagian atas tanpa masalah. Kelas hanyalah cetakan atau rancangan. Kode tidak dieksekusi secara berurutan dari atas ke bawah, eksekusi dimulai dari fungsi Main, dan program akan mencari cetakan kelas yang dibutuhkan saat diperlukan.

Anggota Kelas

Bidang (Fields)

Bidang adalah variabel yang menjadi bagian dari kelas. Dapat berupa tipe bawaan maupun tipe buatan pengguna, serta mendukung operasi baca dan tulis data.

Tipe NamaBidang;
class MyClass
{
    int MyField; // bidang tipe int bernama MyField
}Code language: JavaScript (javascript)

Perbedaan penting dengan C/C++: C# tidak mengenal variabel global. Semua bidang harus dideklarasikan di dalam tipe data (kelas atau struktur).

Aturan Inisialisasi Bidang

(1) Inisialisasi Implisit (tanpa pemberian nilai)

Kompiler akan secara otomatis memberikan nilai bawaan sesuai tipe data, nilai bawaan setiap tipe berbeda-beda.

int F1;    // Nilai bawaan 0
string F2; // Nilai bawaan nullCode language: JavaScript (javascript)

Tabel di bawah mencantumkan daftar tipe data C# beserta nilai bawaan untuk bidang. Aturan ini hanya berlaku untuk bidang, variabel lokal wajib diinisialisasi secara manual oleh pengembang.

Tipe Nilai Dasar

Tipe DataNilai BawaanKeterangan
sbyte0Bilangan bulat 8-bit bertanda
byte0Bilangan bulat 8-bit tanpa tanda
short0Bilangan bulat 16-bit bertanda
ushort0Bilangan bulat 16-bit tanpa tanda
int0Bilangan bulat 32-bit bertanda
uint0Bilangan bulat 32-bit tanpa tanda
long0LBilangan bulat 64-bit bertanda
ulong0ULBilangan bulat 64-bit tanpa tanda
float0.0fTitik mengambang presisi tunggal
double0.0dTitik mengambang presisi ganda
decimal0.0mDesimal presisi tinggi
char'\0' (karakter nol, ASCII 0)Satu karakter
boolfalseTipe boolean
Enum EnumAnggota enum yang sesuai bilangan bulat dasar 0Enum berbasis bilangan bulat, nilai bawaan adalah 0
Struktur structSetiap bidang memperoleh nilai bawaan masing-masingTipe nilai buatan pengguna, seluruh bagian diatur ke nol

Tipe Referensi

Semua tipe referensi memiliki nilai bawaan seragam yaitu null, artinya variabel tidak menunjuk ke objek mana pun di heap memori.

Artinya variabel tidak menyimpan alamat memori apa pun. Ingat diagram memori yang dibahas sebelumnya: tipe referensi menyimpan alamat heap seperti 000001 01010. Jika bernilai null, tidak ada alamat memori valid yang tersimpan.

Kategori TipeContoh TipeNilai Bawaan
Tipe referensi bawaanstring, objectnull
Kelas buatan classPerson Studentnull
Array (semua dimensi)int[], string[,]null
Delegat / PeristiwaAction, Func, delegate buatannull
Antarmuka interfaceSemua variabel antarmukanull

Contoh

string str;        // bawaan null
Student jason;     // kelas buatan, bawaan null
int[] arr;         // array, bawaan null
Action callback;   // delegat, bawaan nullCode language: JavaScript (javascript)

Tipe yang Mengizinkan Null (Nullable / T?)

Jika kita menambahkan tanda tanya ? di belakang tipe data dasar, akan terbentuk tipe baru yang dapat tidak memiliki nilai. Contohnya variabel int age; jika tidak diberi nilai, secara bawaan bernilai 0. Jika kita ingin merepresentasikan kondisi “tidak ada nilai sama sekali”, gunakan penulisan int? age2;. Variabel age2 merupakan tipe nullable sehingga dapat diisi nilai null: int? age2 = null;

Tipe nullable adalah ValueType yang dibungkus, nilai bawaannya adalah null yang bermakna “tidak ada nilai valid”.

Sintaks DeklarasiNilai Bawaan
int? numnull
bool? flagnull
decimal? pricenull
class Test
{
    int a;      // otomatis bernilai 0
    string b;   // otomatis bernilai null
    bool c;     // otomatis bernilai false
}Code language: JavaScript (javascript)

(2) Inisialisasi Eksplisit

Berikan nilai menggunakan operator = saat deklarasi. Nilai yang diberikan harus sudah diketahui pada waktu kompilasi; tidak boleh berupa nilai acak atau input pengguna.

int days = 25;
string word = "foxdevelop";Code language: JavaScript (javascript)
(3) Penulisan singkat beberapa bidang tipe sama

Variabel dengan tipe yang sama dapat dideklarasikan sekaligus dipisah koma. Tidak boleh mencampur tipe data yang berbeda dalam satu baris deklarasi

int player, blood = 25;
string title, subTitle = "hi welcome to foxdevelop.com";Code language: JavaScript (javascript)

Metode (Methods)

Definisi Metode

Metode adalah blok kode bernama yang dapat digunakan kembali dan dapat dieksekusi, setara dengan fungsi anggota pada C++. Ketika dipanggil, kode di dalamnya akan dijalankan lalu kendali kembali ke titik pemanggilan. Metode dibagi dua kategori: memiliki nilai kembalian dan tidak memiliki nilai kembalian.

Empat unsur utama metode

  1. Tipe kembalian: tulis void jika tidak mengembalikan nilai
  2. Nama metode
  3. Daftar parameter: tanda kurung () tetap wajib meskipun tanpa parameter
  4. Isi metode: kode eksekusi dibungkus di dalam {}

class Program
{
    static void Main(string[] args)
    {
        Robot robot = new Robot();
        robot.SayHello();
    }
}


class Robot
{
    public void SayHello()
    {
        Console.WriteLine("Hello everyone");
        Console.WriteLine("Welcome to visit foxdevelop.com");
    }
}Code language: JavaScript (javascript)

Kata kunci public di depan public void SayHello() adalah pengubah akses, berarti fungsi ini dapat diakses dari luar kelas dengan format namaObjek.namaFungsi. Jika tidak menuliskan public, akses secara bawaan adalah private. Fungsi private hanya dapat dipanggil di dalam tubuh kelas; tidak dapat diakses dari luar meskipun menggunakan nama objek seperti robot.

Membuat Variabel Kelas dan Instansi

1. Karakteristik Dasar Tipe Referensi

Kelas termasuk ke dalam tipe referensi. Memori dibagi menjadi dua bagian:

  1. Tumpukan (Stack): Menyimpan variabel referensi (penunjuk alamat memori)
  2. Heap: Menyimpan data asli objek

2. Membuat Objek Secara Bertahap

1 Hanya mendeklarasikan variabel referensi (hanya dialokasikan memori stack, tidak ada data di heap)
Robot robot; 
// Hanya dialokasikan ruang referensi di stack, nilainya belum terdefinisi, tidak ada objek di heap
Code language: JavaScript (javascript)
Kode di atas membuat variabel di stack untuk menampung referensi Robot (alamat memori heap), namun saat ini bernilai null dan masih kosong.

2 Operator new untuk mengalokasikan memori heap

new NamaTipe();Code language: JavaScript (javascript)
  1. Mengalokasikan memori di heap dan menginisialisasi semua bidang ke nilai bawaan secara otomatis
  2. Mengembalikan alamat referensi objek di heap lalu ditugaskan ke variabel stack
robot = new Robot();
Code language: JavaScript (javascript)
class Program
{
    static void Main(string[] args)
    {
        Robot robot;
        robot = new Robot();
    }
}


class Robot
{
    void SayHello()
    {
        Console.WriteLine("Hello everyone");
        Console.WriteLine("Welcome to visit foxdevelop.com");
    }
}Code language: JavaScript (javascript)
3. Deklarasi dan instansiasi dalam satu baris
Robot robot = new Robot();Code language: JavaScript (javascript)
class Program
{
    static void Main(string[] args)
    {
        Robot robot = new Robot();
    }
}Code language: JavaScript (javascript)

Definisi kelas

Previous:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *