Menu
Coddy logo textTech

Statik Alanlar ve Metotlar

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 12 / 70.

Şu ana kadar oluşturduğumuz her alan ve metot, bireysel nesnelere aittir. Ancak bazen, tüm örnekler arasında paylaşılan ve sınıfın kendisine ait olan verilere veya davranışlara ihtiyaç duyarsınız. İşte burada static anahtar kelimesi devreye girer.

Bir statik alan, bir sınıfın tüm nesneleri tarafından paylaşılır. Kaç tane örnek oluşturursanız oluşturun, yalnızca tek bir kopya vardır:

public class Player
{
    public static int TotalPlayers = 0;
    public string Name { get; set; }
    
    public Player(string name)
    {
        Name = name;
        TotalPlayers++;
    }
}

Her yeni Player oluşturulduğunda, TotalPlayers artar. Tüm oyuncular bu aynı sayacı paylaşır.

Bir statik metot sınıfa aittir ve bir nesne oluşturulmadan çağrılabilir:

public class Calculator
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

// Bir örnek üzerinde değil, sınıf üzerinde çağrılır
int result = Calculator.Add(5, 3);

Statik üyelere bir nesne başvurusu kullanarak değil, sınıf adını kullanarak eriştiğinizi unutmayın. Statik metotlar, belirli bir nesneye ait olmadıkları için örnek alanlarına erişemez veya this kullanamaz.

Farkında olmadan statik üyeleri zaten kullandınız. Console.WriteLine() statik bir metottur ve Math.PI statik bir alandır.

challenge icon

Görev

Kolay

Uygulamanız genelinde oluşturulan tüm siparişleri takip etmek için statik üyeleri kullanan bir sipariş takip sistemi oluşturalım.

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • Order.cs: Order ad alanında bir OrderSystem sınıfı tanımlayın. Her siparişin bir örnek özelliği olarak OrderId (int) ve CustomerName (string) bulunmalıdır. Sınıf ayrıca statik bir alan olan TotalOrders ile oluşturulan toplam sipariş sayısını takip etmeli ve kullanılabilir sonraki sipariş kimliğini (1'den başlayarak) döndüren statik bir GetNextOrderId() yöntemi sağlamalıdır. Yapıcı, bir müşteri adını kabul etmeli, statik yöntemi kullanarak sipariş kimliğini otomatik olarak atamalı ve toplam sipariş sayacını artırmalıdır.
  • Program.cs: Ana dosyanızda, girdiye göre siparişler oluşturun ve toplam sipariş sayısıyla birlikte ayrıntılarını görüntüleyin.

İki ayrı sipariş için müşteri adlarını temsil eden iki girdi alacaksınız.

Her sipariş için ayrıntılarını şu biçimde yazdırın:

Order #{OrderId} - Customer: {CustomerName}

Her iki siparişi oluşturduktan sonra toplam sayıyı yazdırın:

Total Orders: {TotalOrders}

Örneğin girdiler Alice ve Bob ise çıktı şu şekilde olmalıdır:

Order #1 - Customer: Alice
Order #2 - Customer: Bob
Total Orders: 2

Kendin dene

using System;
using OrderSystem;

class Program
{
    public static void Main(string[] args)
    {
        // Müşteri adlarını oku
        string customer1 = Console.ReadLine();
        string customer2 = Console.ReadLine();

        // TODO: Müşteri adlarıyla iki Order nesnesi oluşturun

        // TODO: Her siparişin ayrıntılarını şu formatta yazdırın:
        // Order #{OrderId} - Customer: {CustomerName}

        // TODO: Toplam sipariş sayısını şu formatta yazdırın:
        // Total Orders: {TotalOrders}
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C# derleyicisi