Mendesain dan menggunakan kelas
Dalam pemrograman berorientasi objek (OOP), kelas adalah blok penyusun aplikasi. Memahami hubungan antara kelas dan objek sangat penting.
- Kelas adalah cetak biru yang digunakan pengembang untuk menentukan properti (data) dan metode (perilaku) objek. Kelas menyediakan cara untuk merangkum data dan perilaku, sehingga lebih mudah untuk mengatur dan mengelola kode.
- Objek adalah instans kelas. Saat kelas dibuat, objek dibuat dalam memori. Setiap objek memiliki sekumpulan properti dan metodenya sendiri, tetapi berbagi struktur yang sama yang ditentukan oleh kelas .
Memeriksa objek dunia nyata di sekitar Anda dapat membantu Anda memahami bagaimana kelas dan objek bekerja dalam pemrograman. Objek di dunia nyata memiliki atribut (properti) dan perilaku (metode) yang menentukan tujuan dan fungsionalitasnya. Misalnya, mobil adalah objek dengan atribut seperti membuat, model, dan warna, dan perilaku seperti mengemudi dan berhenti.
Objek dunia nyata
Orang berinteraksi dengan objek terus-menerus dalam kehidupan sehari-hari mereka. Bahkan, hampir semua yang berinteraksi dengan kita dapat dianggap sebagai objek.
Kriteria berikut dapat digunakan untuk menentukan objek di dunia nyata:
- Objek adalah hal-hal yang dapat kita lihat dan sentuh.
- Objek memiliki tujuan.
- Objek memiliki bagian yang mendukung tujuannya.
Pensil adalah contoh objek fisik. Tujuan pensil adalah untuk membuat catatan atau gambar. Bagian-bagian pensil termasuk tubuh, ujung, dan mungkin penghapus. Bagian-bagian bekerja sama untuk mencapai tujuan yang dimaksudkan dari pensil.
Ada juga objek fisik yang ada sebagai rakitan objek lain. Daftar berikut ini menyediakan contoh objek yang terdiri dari objek lain:
- Mobil: Tujuan mobil adalah untuk menyediakan transportasi darat bagi individu dan keluarga. Bagian-bagian mobil termasuk mesin, roda, roda kemudi, dan banyak lainnya. Bagian-bagian mobil bekerja sama untuk mengaktifkan transportasi darat.
- Rumah: Tujuan sebuah rumah adalah untuk menyediakan tempat bernaung. Bagian-bagian rumah termasuk fondasi, dinding luar, atap, dan kamar. Bagian-bagian ini bekerja sama untuk menciptakan ruang hidup.
- Ponsel pintar: Tujuan dari ponsel pintar adalah untuk membantu pengguna dengan tugas dan aktivitas sehari-hari. Bagian-bagian dari ponsel pintar termasuk layar, microprocessor, memori dan penyimpanan, baterai, kamera, dan tombol. Bagian-bagian ini bekerja sama untuk mengaktifkan fitur komunikasi, hiburan, dan produktivitas.
Setiap bagian dari mobil, rumah, atau ponsel pintar adalah objek dengan tujuannya sendiri dan mungkin juga merupakan perakitan objek.
Atribut dan fitur objek fisik
Luangkan waktu semenit untuk mempertimbangkan contoh pensil. Pensil memiliki bagian (isi, tip, penghapus) dan tujuan (buat catatan atau gambar). Pensil berbagi karakteristik dasar ini. Namun, tidak semua pensil sama.
Beberapa pensil pendek, beberapa panjang. Beberapa pensil berwarna kuning, beberapa berwarna hitam. Beberapa pensil memiliki ujung yang kusam, beberapa memiliki tip yang dipertajam. Beberapa pensil memiliki penghapus, beberapa tidak memiliki penghapus.
Atribut objek sering dibagi menjadi kategori fisik dan perilaku berikut:
- Fisik: Atribut fisik adalah aspek objek yang dapat dilihat atau diukur.
- Perilaku: Atribut perilaku adalah aspek objek yang menjelaskan kemampuan atau interaksinya dengan objek lain.
Untuk contoh pensil, atribut fisik termasuk panjang tubuh, warna tubuh, ketajaman ujung, dan apakah pensil memiliki penghapus atau tidak. Atribut perilaku termasuk kemampuan untuk menulis, kemampuan untuk menghapus, dan kemampuan untuk dipertajam. Pensil berinteraksi dengan kertas atau benda padat lainnya yang dapat ditulis atau digambar.
Atribut fisik sering disebut sebagai properti, sementara atribut perilaku sering disebut sebagai fungsi (metode dalam pemrograman C#).
Kelas kode dan objek dalam pemrograman C#
Dalam dunia pemrograman C#, properti dan metode objek didefinisikan oleh kelas. Kelas menyediakan cetak biru untuk apa yang dapat dilakukan objek (instans kelas). Cetak biru untuk kelas disebut definisi kelas.
Saat aplikasi berjalan, komputer menggunakan definisi kelas untuk mengalokasikan memori untuk objek (instans kelas). Komputer menggunakan cetak biru untuk mengonfigurasi blok memori yang merupakan ukuran yang tepat untuk objek. Objek pada dasarnya adalah blok memori.
Objek kode, sama seperti objek fisik, dapat memiliki nilai berbeda yang ditetapkan ke propertinya.
Kelas merangkum data dan perilaku
Kelas menyediakan cara untuk merangkum data dan perilaku. Enkapkulasi adalah proses menggabungkan data dan perilaku ke dalam satu unit. Kelas menggunakan properti untuk mengaktifkan akses ke data dan metode untuk mengaktifkan perilaku.
Properti kelas
Properti kelas digunakan untuk mengelola data yang membedakan satu objek (instans kelas) dari objek lain dengan jenis yang sama.
Properti kelas memungkinkan objek membaca, menulis, atau menghitung nilai variabel (bidang data) yang ditentukan dalam kelas. Properti muncul sebagai anggota data publik, tetapi diimplementasikan sebagai metode khusus yang disebut aksesor . Fitur ini memungkinkan penelepon untuk mengakses data dengan mudah dan masih membantu mempromosikan keamanan dan fleksibilitas data.
Nilai properti dapat dibaca menggunakan aksesor get dan ditetapkan menggunakan aksesor set.
Metode kelas
Metode kelas menentukan tindakan (perilaku) yang dapat dilakukan kelas.
Metode dapat mengambil parameter yang menyediakan data input, dan dapat mengembalikan data output melalui parameter. Metode juga dapat mengembalikan nilai secara langsung, tanpa menggunakan parameter.
Misalnya, kelas Console mencakup metode WriteLine, ReadLine, dan Clear (antara lain). Metode ini membantu mengaktifkan perilaku yang dimaksudkan dari kelas Console. Metode dapat digunakan untuk melakukan tindakan, seperti perhitungan, manipulasi data, atau interaksi dengan objek lain.
Metode sering dirancang untuk menerima satu atau beberapa argumen metode. Argumen metode diteruskan ke metode sebagai parameter pernyataan panggilan yang digunakan untuk memanggil metode . Misalnya, metode WriteLine kelas Console dapat menerima argumen string yang disediakan oleh pernyataan panggilan.
Definisi kelas dalam kode C#
Contoh berikut menunjukkan kelas sederhana di C#. Kelas Phone memiliki properti untuk Brand, Model, dan Year. Kelas ini juga mencakup metode untuk Call dan Text.
public class Phone
{
public string? Brand { get; set; }
public string? Model { get; set; }
public int Year { get; set; }
public void Call(string phoneNumber)
{
Console.WriteLine($"Calling {phoneNumber}...");
}
public void Text(string phoneNumber, string message)
{
Console.WriteLine($"Texting {phoneNumber}: {message}");
}
}
Menggunakan namespace layanan
Dalam pemrograman C#, namespace digunakan dengan dua cara:
- Pustaka kelas .NET menggunakan namespace untuk mengatur banyak kelasnya.
- Pengembang mendeklarasikan namespace layanan mereka sendiri untuk membantu mengontrol cakupan nama kelas dan metode dalam proyek pemrograman yang lebih besar.
Namespace di pustaka kelas .NET
Namespace digunakan oleh pustaka kelas .NET untuk mengelompokkan jenis terkait bersama-sama, sehingga lebih mudah untuk menemukan dan menggunakannya.
Pertimbangkan cuplikan kode berikut:
System.Console.WriteLine("Hello World!");
Dalam contoh ini, System adalah namespace layanan dan Console adalah kelas di namespace tersebut.
Memberikan nama kelas yang sepenuhnya memenuhi syarat (System.Console) memastikan bahwa kelas yang benar digunakan. Namun, menggunakan nama yang sepenuhnya memenuhi syarat dapat rumit saat bekerja dengan banyak kelas dari namespace yang sama. Untuk meningkatkan keterbacaan kode, Anda dapat menggunakan direktif using. Direktif using memungkinkan Anda menggunakan jenis yang ditentukan dalam namespace tanpa menentukan namespace layanan yang sepenuhnya memenuhi syarat dari jenis tersebut.
Cuplikan kode berikut mengimplementasikan arahan using untuk meningkatkan keterbacaan kode:
using System;
Console.WriteLine("Hello World!");
Nota
Mulai dari .NET 6, arahan implisit global using ditambahkan pada proyek C# baru. Ini berarti Anda dapat menggunakan jenis yang ditentukan dalam namespace layanan ini tanpa harus menentukan nama yang sepenuhnya memenuhi syarat atau menambahkan direktif menggunakan secara manual. Aspek implisit mengacu pada fakta bahwa direktif penggunaan global ditambahkan ke file yang dihasilkan dalam direktori obj proyek. Fitur ini memungkinkan Anda menggunakan Console.WriteLine tanpa secara eksplisit mendeklarasikan using System saat mengembangkan aplikasi di versi 6.0 atau yang lebih baru dari .NET.
Mengatur kelas dengan namespace
Mendeklarasikan namespace Layanan Anda sendiri dapat membantu Anda mengontrol cakupan nama kelas dan metode dalam proyek pemrograman yang lebih besar. Gunakan kata kunci namespace untuk mendeklarasikan namespace.
Pertimbangkan cuplikan kode berikut:
namespace SampleNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine("SampleMethod inside SampleNamespace");
}
}
}
Nama namespace harus berupa nama pengidentifikasi C# yang valid.
Anda dapat mendeklarasikan namespace untuk semua jenis yang ditentukan dalam file tersebut, seperti yang ditunjukkan dalam cuplikan kode berikut:
namespace SampleNamespace;
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine("SampleMethod inside SampleNamespace");
}
}
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine("AnotherSampleMethod inside SampleNamespace");
}
}
Keuntungan dari sintaks baru ini adalah lebih sederhana, menghemat ruang horizontal dan kurung kurawal. Itu membuat kode Anda lebih mudah dibaca.
Gambaran umum namespace
Namespace memiliki properti berikut:
- Mereka mengatur proyek kode besar.
- Mereka dibatasi dengan menggunakan operator
.. - Direktif
usingmelarang persyaratan untuk menentukan nama namespace layanan untuk setiap kelas. - Namespace layanan global adalah namespace layanan "root":
global::Systemselalu merujuk ke namespace .NET System.
Menggunakan namespace untuk mengelompokkan jenis terkait bersama-sama memudahkan untuk menemukan dan menggunakannya.