Field dan method Statis
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 12 dari 70.
Sejauh ini, setiap field dan method yang kita buat dimiliki oleh masing-masing object. Namun, terkadang kamu membutuhkan data atau perilaku yang dimiliki oleh class itu sendiri dan digunakan bersama oleh semua instance. Di sinilah kata kunci static digunakan.
field statis dibagikan oleh semua object dari sebuah class. Hanya ada satu salinan, sebanyak apa pun instance yang kamu buat:
public class Player
{
public static int TotalPlayers = 0;
public string Name { get; set; }
public Player(string name)
{
Name = name;
TotalPlayers++;
}
}Setiap kali Player baru dibuat, TotalPlayers bertambah. Semua pemain menggunakan penghitung yang sama ini.
static method adalah bagian dari class dan dapat dipanggil tanpa membuat object:
public class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
// Dipanggil pada class, bukan pada instance
int result = Calculator.Add(5, 3);Perhatikan bahwa kamu mengakses anggota statis menggunakan nama class, bukan referensi object. Static method tidak dapat mengakses field instance atau menggunakan this, karena static method tidak dimiliki oleh object tertentu.
Kamu sudah menggunakan member static tanpa menyadarinya. Console.WriteLine() adalah method static, dan Math.PI adalah field static.
Tantangan
MudahMari kita buat sistem pelacakan pesanan yang menggunakan anggota statis untuk melacak semua pesanan yang dibuat di aplikasi kamu.
Kamu akan membuat dua file untuk mengatur kodemu:
Order.cs: Definisikan classOrderdi namespaceOrderSystem. Setiap pesanan harus memiliki property instanceOrderId(int) danCustomerName(string). Class tersebut juga harus melacak jumlah total pesanan yang dibuat menggunakan field statisTotalOrders, dan menyediakan method statisGetNextOrderId()yang mengembalikan ID pesanan berikutnya yang tersedia (dimulai dari 1). Konstruktor harus menerima nama pelanggan, otomatis menetapkan ID pesanan menggunakan method statis, dan menambah jumlah total pesanan.Program.cs: Di file utama kamu, buat pesanan berdasarkan input dan tampilkan detailnya beserta jumlah total pesanan.
Kamu akan menerima dua input yang berisi nama pelanggan untuk dua pesanan terpisah.
Untuk setiap pesanan, cetak detailnya dengan format berikut:
Order #{OrderId} - Customer: {CustomerName}Setelah membuat kedua pesanan, cetak jumlah totalnya:
Total Orders: {TotalOrders}Misalnya, jika input-nya adalah Alice dan Bob, output-nya akan seperti berikut:
Order #1 - Customer: Alice
Order #2 - Customer: Bob
Total Orders: 2Coba sendiri
using System;
using OrderSystem;
class Program
{
public static void Main(string[] args)
{
// Baca nama pelanggan
string customer1 = Console.ReadLine();
string customer2 = Console.ReadLine();
// TODO: Buat dua object Order dengan nama pelanggan
// TODO: Cetak detail setiap pesanan dalam format:
// Order #{OrderId} - Customer: {CustomerName}
// TODO: Cetak jumlah total pesanan dalam format:
// Total Orders: {TotalOrders}
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online