Menu
Coddy logo textTech

Özet - Şekil Hesaplayıcı

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

challenge icon

Görev

Kolay

Arayüzler ve polimorfizm (çok biçimlilik) hakkında öğrendiğiniz her şeyi bir araya getiren bir şekil hesaplayıcı oluşturalım. Farklı şekillerin ortak bir arayüz üzerinden tek tip olarak işlenebildiği bir sistem oluşturacak ve çalışma zamanı polimorfizminin gücünü göstereceksiniz.

Kodunuzu dört dosya halinde düzenleyeceksiniz:

  • IShape.cs: Shapes ad alanı (namespace) içinde IShape adında bir arayüz tanımlayın. Her şekil kendi alanını hesaplayabilmeli ve kendisini tanımlayabilmelidir. İki metot bildirin: double döndüren CalculateArea() ve string döndüren GetDescription().
  • Circle.cs: Shapes ad alanı içinde IShape arayüzünü uygulayan bir Circle sınıfı oluşturun. Bir dairenin, yapıcı metodu (constructor) aracılığıyla atanan bir Radius özelliği (double) vardır. Alan formülü Math.PI * Radius * Radius şeklindedir. Açıklama (description) "Circle with radius {Radius}" değerini döndürmelidir.
  • Rectangle.cs: Shapes ad alanı içinde IShape arayüzünü uygulayan bir Rectangle sınıfı oluşturun. Bir dikdörtgenin, yapıcı metodu aracılığıyla atanan Width ve Height özellikleri (her ikisi de double) vardır. Alan, genişlik ile yüksekliğin çarpımıdır. Açıklama "Rectangle {Width}x{Height}" değerini döndürmelidir.
  • Program.cs: Ana dosyanızda, girdi değerlerini kullanarak bir daire ve bir dikdörtgen oluşturun, ardından bunları bir IShape referans dizisinde saklayın. Diziyi döngüye alın ve her şekil için açıklamasını, ardından iki ondalık basamağa yuvarlanmış alanını yazdırın. Bu, tamamen farklı şekilleri aynı arayüz üzerinden nasıl işleyebileceğinizi gösterir!

Üç girdi alacaksınız:

  • Daire yarıçapı (double)
  • Dikdörtgen genişliği (double)
  • Dikdörtgen yüksekliği (double)

Her şekil için çıktıyı şu formatta yazdırın:

{GetDescription() result}
Area: {CalculateArea() rounded to 2 decimal places}

Örneğin, girdiler 5, 4 ve 6 ise çıktı şu şekilde olmalıdır:

Circle with radius 5
Area: 78.54
Rectangle 4x6
Area: 24.00

Döngünüzün bir daireyle mi yoksa bir dikdörtgenle mi uğraştığını bilmesine gerek olmadığına dikkat edin; sadece arayüz metotlarını çağırır ve gerisini polimorfizmin halletmesine izin verir. Arayüzlere göre programlamanın zarafeti budur!

Kendin dene

using System;
using Shapes;

class Program
{
    public static void Main(string[] args)
    {
        // Giriş değerlerini oku
        double circleRadius = Convert.ToDouble(Console.ReadLine());
        double rectWidth = Convert.ToDouble(Console.ReadLine());
        double rectHeight = Convert.ToDouble(Console.ReadLine());
        
        // TODO: Verilen yarıçap ile bir Circle nesnesi oluşturun
        
        // TODO: Verilen genişlik ve yükseklik ile bir Rectangle nesnesi oluşturun
        
        // TODO: Her iki şekli de içeren bir IShape dizisi oluşturun
        
        // TODO: Dizi boyunca döngü kurun ve her şekil için:
        // - GetDescription() kullanarak açıklamayı yazdırın
        // - "Area: " ve ardından 2 ondalık basamağa yuvarlanmış CalculateArea() değerini yazdırın
    }
}

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