Subbab 2 / 9

Class, Object, Atribute, Method, Namespace


Bab ini akan memperkenalkan konsep fundamental OOP di C#. Fokus utama kita adalah memahami bagaimana merepresentasikan entitas dunia nyata ke dalam struktur kode yang terorganisir dan modular.

1. Konsep Class dan Object

Dalam OOP, kita memandang program sebagai kumpulan objek yang saling berinteraksi.

  • Class: Adalah cetak biru (blueprint) atau template yang mendefinisikan karakteristik dan perilaku dari suatu entitas. Class tidak memakan ruang memori sebelum diinstansiasi.
  • Object: Adalah perwujudan nyata (instance) dari sebuah Class. Objek memiliki identitas unik dan menyimpan data nyata di dalam memori.

Analogi: Class adalah gambar arsitektur rumah, sedangkan Object adalah rumah fisik yang dibangun berdasarkan gambar tersebut.

Untuk membuat sebuah objek hampir serupa dengan membuat variabel yaitu dengan syntax

csharp
1
NamaClass namaObjek = new NamaClass();

2. Atribut (Fields) dan Method

Sebuah Class terdiri dari dua elemen utama:

  • Atribut (Fields): Variabel yang dideklarasikan di dalam class untuk menyimpan data, keadaan (state) dari objek, atau informasi tentang objek. Atribut ini menentukan keadaan atau karakteristik dari objek tersebut. Dalam OOP, atribut sering disebut juga sebagai properti atau data member.
  • Method (Behaviors):
  • Fungsi yang dideklarasikan di dalam class untuk mendefinisikan tindakan atau perilaku yang dapat dilakukan oleh objek.
  • Method merupakan sekumpulan perintah yang melekat pada objek
  • Sebuah method perlu didefinisikan tipe data apa yang akan dikembalikan / di return nantinya. Apabila tidak ada yang dikembalikan dapat menggunakan keyword void

Contoh Implementasi

csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;

namespace Praktikum2
{
    // Definisi Class
    class Rumah
    {
        // Atribut (Fields)
        public string warna;
        public int jumlahKamar;

        // Method
        public void TampilkanInformasi()
        {
            Console.WriteLine($"Rumah ini berwarna {warna} dan memiliki {jumlahKamar} kamar.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Instansiasi Objek (Membuat object dari class)
            Rumah rumahSaya = new Rumah();
            
            // Memberikan nilai ke atribut
            rumahSaya.warna = "Putih";
            rumahSaya.jumlahKamar = 3;

            // Memanggil method
            rumahSaya.TampilkanInformasi();
        }
    }
}

3. Constructor (Konstruktor)

  • Constructor adalah method spesial yang akan dijalankan pertama kali ketika objek dibuat.
  • Sebuah constructor tidak akan mereturn apapun sehingga dalam membuatnya tidak perlu mendefiniskan tipe data return.
  • Nama method constructor sama dengan nama class nya.

Contoh:

csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
class Rumah {
    // Properties / Attributes
    string warna = "Putih";  
    int jumlahKamar;
    int jumlahLantai;

    // Konstruktor 
    public Rumah(int jumlahKamarInput, int jumlahLantaiInput)
    {
        jumlahKamar = jumlahKamarInput;
        jumlahLantai = jumlahLantaiInput;
    }
}

4. Namespace

Namespace adalah cara C# untuk mengelompokkan kelas-kelas yang berkaitan dalam satu lingkup penamaan.

Analogi Sederhana: Folder Komputer

Bayangkan Anda memiliki file bernama tugas.docx. Anda tidak bisa menyimpan dua file dengan nama yang sama persis di dalam satu folder. Namun, Anda bisa memiliki tugas.docx di folder Kuliah dan tugas.docx lainnya di folder Pribadi.

  • Folder adalah Namespace.
  • File adalah Class.

Tujuan Utama: Mencegah konflik penamaan (naming collision). Dengan namespace, dua tim developer bisa membuat kelas dengan nama yang sama tanpa menyebabkan error, asalkan diletakkan di namespace yang berbeda.

csharp
1
2
3
4
5
6
7
namespace Folder.Kuliah {
    public class Tugas{ /* Tugas Mata Kuliah*/ }
}

namespace Folder.Pribadi {
    public class Tugas{ /* Tugas Pribadi*/ }
}

5. Keyword 'this'

Keyword this merujuk pada objek. Selain itu juga dapat untuk mengakses method pada objek dengan this.NamaMethod(). Tujuannya apa bang Messi keyword this ? Simple untuk mengurangi ambiguitas antara variable lokal (parameter) dengan variable dalam class (field)

csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
class Rumah {
    // Properties / Attributes
    string warna = "Putih";  
    int jumlahKamar;
    int jumlahLantai;

    // Konstruktor dengan keyword this
    public Rumah(int jumlahKamar, int jumlahLantai)
    {
        this.jumlahKamar = jumlahKamar;
        this.jumlahLantai = jumlahLantai;
    }
}

6. Keyword 'static'

Atribut dan method dapat bersifat static, artinya atribut dan method melekat pada class bukan pada objek. Sehingga apabila hendak mengakses tidak perlu membuat objek terlebih dahulu. Caranya cukup menambahkan keyword static sebelum tipe data atribut / method.

csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// STATIC PADA ATRIBUT

class Rumah {
    // Properti static (berlaku untuk semua objek Rumah)
    public static string warna = "Putih";  

    // Properti non-static (berbeda untuk setiap objek)
    int jumlahKamar;
    int jumlahLantai;

    // Konstruktor
    public Rumah(int jumlahKamar, int jumlahLantai)
    {
        this.jumlahKamar = jumlahKamar;
        this.jumlahLantai = jumlahLantai;
    }
}


class Program
{
    static void Main()
    {
        // Mengakses atribut static tanpa membuat objek
        Console.WriteLine("Warna awal: " + Rumah.warna); // Output: Warna awal: Putih

        // Mengubah warna, semua rumah ikut berubah
        Rumah.warna = "Biru";
        Console.WriteLine("Warna setelah diubah: " + Rumah.warna); // Output: Warna setelah diubah: Biru

        // Membuat objek Rumah
        Rumah rumah1 = new Rumah(3, 2);
        Rumah rumah2 = new Rumah(4, 1);

        // Warna tetap sama untuk semua rumah karena static
        Console.WriteLine("Warna rumah1: " + Rumah.warna); // Output: Warna rumah1: Biru
        Console.WriteLine("Warna rumah2: " + Rumah.warna); // Output: Warna rumah2: Biru
    }
}
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// STATIC PADA METHOD
class Kalkulator
{
    // Method static (tidak perlu objek)
    public static int Tambah(int a, int b)
    {
        return a + b;
    }
}

class Program
{
    static void Main()
    {
        // Memanggil method static tanpa membuat objek
        int hasil = Kalkulator.Tambah(5, 3);
        Console.WriteLine("Hasil penjumlahan: " + hasil); // Output: Hasil penjumlahan: 8
    }
}