Menu
Coddy logo textTech

İfade Gövdeli Üyeler

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

Expression-bodied üyeler, yalnızca tek bir ifade içeren üyeler için kısa bir sözdizimi sağlar. Küme parantezleriyle dolu metot veya özellik gövdeleri yazmak yerine, => ok sözdizimini kullanırsınız.

Tek bir `expression` döndüren yöntemler için tüm gövdeyi değiştirebilirsiniz:

// Geleneksel metot
public int Add(int a, int b)
{
    return a + b;
}

// İfade gövdeli metot
public int Add(int a, int b) => a + b;

Bu sözdizimi, daha önce kısaca gördüğünüz salt okunur (read-only) özellikler için de çalışır:

public class Circle
{
    public double Radius { get; set; }
    public double Area => Math.PI * Radius * Radius;
    public double Circumference => 2 * Math.PI * Radius;
}

Property getter ve setter'ları için ayrı ayrı da expression body kullanabilirsiniz:

private string name;
public string Name
{
    get => name;
    set => name = value.Trim();
}

Tek bir ifade içerdictiklerinde kurucular (constructors) bile bu sözdizimini kullanabilir:

public class Person
{
    public string Name { get; }
    public Person(string name) => Name = name;
}

Expression-bodied üyeler, mantık basit olduğunda kodunuzu daha okunabilir hale getirir. Basit işlemler için bunları kullanın, ancak birden fazla ifadeye veya karmaşık bir mantığa ihtiyacınız olduğunda geleneksel gövdelere bağlı kalın.

challenge icon

Görev

Kolay

Temiz ve öz kod yazmak için ifade gövdeli üyelerin (expression-bodied members) gücünü sergileyen bir ürün fiyatlandırma hesaplayıcısı oluşturalım.

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

  • Product.cs: Store ad alanında (namespace) bir Product sınıfı tanımlayın. Bu sınıf çeşitli ifade gövdeli üyeleri göstermelidir:
    • Otomatik uygulanan (auto-implemented) bir Name (string) ve BasePrice (decimal) özelliği (property)
    • Her iki özelliği de ayarlayan ifade gövdeli bir constructor
    • Taban fiyatın %10'unu hesaplayan ifade gövdeli salt okunur (read-only) bir TaxAmount özelliği
    • Taban fiyat artı vergi miktarını döndüren ifade gövdeli salt okunur bir TotalPrice özelliği
    • İndirim miktarını (taban fiyat çarpı yüzde bölü 100) döndüren ifade gövdeli bir GetDiscount(decimal percentage) metodu
    • Toplam fiyattan indirimin çıkarılmasıyla elde edilen değeri döndüren ifade gövdeli bir GetFinalPrice(decimal discountPercentage) metodu
  • Program.cs: Ana dosyanızda, girdi değerlerini kullanarak bir Product oluşturun ve ardından fiyatlandırma dökümünü görüntüleyin.

Üç girdi alacaksınız:

  • Ürün adı
  • Taban fiyat (base price)
  • Uygulanacak indirim yüzdesi (discount percentage)

Fiyatlandırma ayrıntılarını şu biçimde yazdırın:

Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}

Örneğin, girdiler Laptop, 1000 ve 15 ise, çıktı şu şekilde olmalıdır:

Product: Laptop
Base Price: 1000.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00

Her parasal değeri tam olarak iki ondalık basamağa biçimlendirin — örneğin value.ToString("F2") veya $"{value:F2}". Bu kural taban fiyat, vergi, toplam, indirim ve nihai fiyat için aynı şekilde geçerlidir.

Tek bir ifade içeren tüm üyeler için => ok sözdizimini kullanmayı unutmayın. Bu, kodunuzun temiz ve okunabilir kalmasını sağlar!

Kendin dene

using System;
using Store;

class Program
{
    public static void Main(string[] args)
    {
        // Girdileri oku
        string name = Console.ReadLine();
        decimal basePrice = Convert.ToDecimal(Console.ReadLine());
        decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());

        // Girdi değerlerini kullanarak bir Product nesnesi oluştur
        Product product = new Product(name, basePrice);

        // GetDiscount metodunu kullanarak indirim tutarını hesapla
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // GetFinalPrice metodunu kullanarak son fiyatı hesapla
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // Fiyatlandırma detaylarını gerekli formatta yazdır:
        Console.WriteLine($"Product: {product.Name}");
        Console.WriteLine($"Base Price: {product.BasePrice:F2}");
        Console.WriteLine($"Tax (10%): {product.TaxAmount:F2}");
        Console.WriteLine($"Total Price: {product.TotalPrice:F2}");
        Console.WriteLine($"Discount ({discountPercentage}%): {discountAmount:F2}");
        Console.WriteLine($"Final Price: {finalPrice:F2}");
    }
}
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