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.

İfade gövdeli üyeler, yalnızca tek bir ifade içeren üyeler için kısa ve öz bir sözdizimi sağlar. Süslü parantezlerle tam metot veya özellik gövdeleri yazmak yerine, => ok sözdizimini kullanırsınız.

Tek bir ifade döndüren metotlar 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öz dizimi, daha önce kısaca gördüğünüz salt okunur özellikler için de geçerlidir:

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

Özellik getter ve setter'ları için ifade gövdelerini (expression bodies) ayrı ayrı da kullanabilirsiniz:

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

Yapıcı metotlar bile tek bir ifade içerdiklerinde bu söz dizimini kullanabilirler:

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

İfade gövdeli üyeler (expression-bodied members), mantık basit olduğunda kodunuzu daha okunabilir hale getirir. Bunları basit işlemler için kullanın, ancak birden fazla ifadeye veya karmaşık mantığa ihtiyaç duyduğunuzda geleneksel gövdelere bağlı kalın.

challenge icon

Görev

Kolay

Temiz ve özlü 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ı (namespace) içinde bir Product sınıfı tanımlayın. Bu sınıf çeşitli ifade gövdeli üyeleri göstermelidir:
    • Otomatik uygulanan özellikler Name (string) ve BasePrice (decimal)
    • Her iki özelliği de ayarlayan ifade gövdeli bir yapıcı metot (constructor)
    • Taban fiyatın %10'unu hesaplayan ifade gövdeli, salt okunur bir özellik TaxAmount
    • Taban fiyat artı vergi tutarını döndüren ifade gövdeli, salt okunur bir özellik TotalPrice
    • İndirim tutarını (taban fiyat çarpı yüzde bölü 100) döndüren ifade gövdeli bir metot GetDiscount(decimal percentage)
    • Toplam fiyattan indirimi çıkararak sonucu döndüren ifade gövdeli bir metot GetFinalPrice(decimal discountPercentage)
  • Program.cs: Ana dosyanızda, giriş değerlerini kullanarak bir Product oluşturun ve ardından fiyatlandırma dökümünü görüntüleyin.

Üç giriş alacaksınız:

  • Ürün adı
  • Taban fiyat
  • Uygulanacak indirim yüzdesi

Fiyatlandırma ayrıntılarını şu formatta yazdırın:

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

Örneğin, girişler Laptop, 1000 ve 15 ise çıktı şöyle olmalıdır:

Product: Laptop
Base Price: 1000
Tax (10%): 100
Total Price: 1100
Discount (15%): 150
Final Price: 950

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!

Kopya kağıdı

İfade gövdeli üyeler (expression-bodied members), tek bir ifade içeren üyeler için => ok söz dizimini kullanarak geleneksel metot ve özellik gövdelerine kısa bir alternatif sunar.

İfade gövdeli metotlar:

// 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;

İfade gövdeli salt okunur özellikler:

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

İfade gövdeli özellik alıcıları (getters) ve ayarlayıcıları (setters):

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

İfade gövdeli yapıcı metotlar (constructors):

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

Basit işlemler için ifade gövdeli üyeleri kullanın. Birden fazla ifade veya karmaşık mantık için geleneksel gövdeleri kullanın.

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());

        // TODO: Giriş değerlerini kullanarak bir Product nesnesi oluşturun

        // TODO: GetDiscount metodunu kullanarak indirim tutarını hesaplayın

        // TODO: GetFinalPrice metodunu kullanarak nihai fiyatı hesaplayın

        // TODO: Fiyatlandırma ayrıntılarını istenen formatta yazdırın:
        // Product: {Name}
        // Base Price: {BasePrice}
        // Tax (10%): {TaxAmount}
        // Total Price: {TotalPrice}
        // Discount ({percentage}%): {discountAmount}
        // Final Price: {finalPrice}
    }
}
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