Secara umum, jika kamu amati bahasa pemrograman C, C++ dan C#, kamu akan melihat perbedaan sifat dasar sebagai berikut:
- Program C merupakan kumpulan fungsi dan tipe data
- Program C++ merupakan kumpulan fungsi dan kelas
- Sedangkan inti dari program C# adalah kumpulan deklarasi tipe
Kode sumber dari program eksekusi C# (file EXE) atau pustaka tautan dinamis (DLL) dibangun dari satu atau lebih deklarasi tipe.
File DLL tidak memiliki titik masuk Main, sedangkan file eksekusi (EXE) wajib mendeklarasikan minimal satu kelas yang berisi metode bernama Main sebagai titik awal jalannya program.
Perangkat lunak berskala besar bisa memiliki ribuan tipe (seperti kelas) di dalam kode sumbernya. Proyek besar biasanya dikerjakan oleh banyak pemrogram yang masing-masing bertanggung jawab atas modul berbeda, sehingga bentrok nama tipe yang sama sulit dihindari. Bagaimana cara menghindari bentrok nama? Di sinilah peran dari “ruang nama” yang kita bahas sebelumnya.
Ruang nama (namespace) berfungsi untuk mengelompokkan sekumpulan deklarasi tipe yang saling berkaitan, serta memberikan nama identitas tunggal untuk kelompok tipe tersebut. Karena program pada dasarnya adalah rangkaian deklarasi tipe yang saling terhubung, pengembang biasanya membuat ruang nama buatan sendiri dan menaruh semua tipe program di dalamnya.
Sederhananya, ruang nama adalah label kelompok yang ditambahkan ke sekumpulan kelas. Jika bagian kode lain ingin mengakses kelas-kelas ini, harus menyertakan label kelompok tersebut.
Bayangkan di satu kelas ada dua siswa dengan nama lengkap yang sama. Guru dan teman sekelas tidak bisa membedakan mereka hanya dari nama, maka akan diberi penanda kelompok misal TOM kelompok A dan TOM kelompok B. Penanda A dan B ini sama fungsinya dengan ruang nama.
Kode di bawah menampilkan contoh program dengan tiga deklarasi tipe, semua tipe didefinisikan di dalam ruang nama bernama MyProgram.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloDemo // Deklarasi ruang nama
{
class A // Deklarasi tipe A (kelas)
{
void Fun1() // Fungsi
{
// Logika program
}
}
class B // Deklarasi tipe B (kelas)
{
void Fun1() // Fungsi
{
// Logika program
}
}
class C // Deklarasi tipe C (kelas)
{
static void Main(string[] args) // Titik masuk Main program
{
double pi = 3.14;
string webSite = "foxdevelop.com";
Console.WriteLine($"The Pi is {pi} and the website is {webSite}.");
}
}
}
Code language: PHP (php)
Kita akan membahas ruang nama secara mendalam di pelajaran selanjutnya.
Tipe adalah cetakan
Karena program C# pada dasarnya adalah kumpulan deklarasi tipe, inti dari belajar C# adalah memahami cara membuat dan menggunakan tipe. Hal pertama yang perlu dipahami:
Apa itu tipe (Type)
Kamu bisa mengartikan tipe sebagai cetakan untuk membuat struktur data: tipe itu sendiri bukanlah struktur data nyata, melainkan aturan yang menentukan ciri semua objek yang dibuat dari cetakan ini.
Tipe hanyalah sebuah “gambar desain”, ia tidak memakai memori penyimpanan sama sekali; memori baru dialokasikan dan data disimpan setelah proses instansiasi.
Tipe adalah gambar desain untuk menghasilkan objek nyata. Ibarat gambar desain rumah, dari satu gambar desain bisa dibangun banyak rumah terpisah.
Satu tipe didefinisikan dari tiga bagian berikut:
- Nama
- Struktur penyimpanan data anggota
- Perilaku dan batasan
Dalam C#, semua hal adalah tipe, termasuk tipe bawaan sistem.
Berikut dua contoh tipe bawaan: short dan int.
Strukturnya sebagai berikut:
| Tipe short | Tipe int |
|---|---|
| Nama: short | Nama: int |
| Struktur: menempati 2 byte | Struktur: menempati 4 byte |
| Perilaku: bilangan bulat 16-bit | Perilaku: bilangan bulat 32-bit |
- Nama: penanda identitas tipe (
int/string/nama kelas buatan) - Struktur penyimpanan: menentukan ukuran memori dan susunan field (contoh:
shorttetap sebesar 2 byte) - Batasan perilaku: mengatur operasi yang didukung, rentang nilai, dan metode bawaan (contoh:
intmendukung operasi hitung tambah kurang kali bagi, rentang nilai-2^31 ~ 2^31-1)
Instansiasi (Instantiate)
Membuat objek data nyata yang bisa dipakai dengan kata kunci new berdasarkan cetakan tipe
Objek (object) = Instans (instance)
Contohnya tipe int dan short di atas bisa kita gunakan untuk membuat instans. Variabel pi, age, nums pada kode contoh di bawah adalah instans yang dibuat dari tipe double, int dan short.
namespace HelloDemo
{
class Program
{
static void Main(string[] args)
{
double pi = 3.14;
int age = 12;
short nums = 23;
}
}
}Code language: JavaScript (javascript)
Dalam C#, semua variabel dan data di program tanpa pengecualian merupakan instans dari suatu tipe, tidak ada data tanpa tipe.
Lihat kembali contoh kode di atas
Kelas C pada contoh adalah kelas titik masuk program dan memenuhi syarat file eksekusi:
- Merupakan tipe buatan di dalam ruang nama
MyProgram - Memuat metode statis
Maintanpa nilai balik sebagai titik mulai aplikasi
Di C# tidak hanya ada tipe class
Semua tipe yang bisa dideklarasikan di C#: Kelas (class), Struktur (struct), Antarmuka (interface), Enumerasi (enum), Delegat (delegate), Rekaman (record)
BCL (Base Class Library): Pustaka kelas standar bawaan .NET yang menyediakan tipe sistem seperti int, short, string, List<T> dan lainnya, pengembang bisa langsung instansiasi untuk digunakan.
Deklarasi tipe