Özet - Şekil Hesaplayıcı
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 30 / 70.
Görev
KolayArayü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:Shapesad alanı (namespace) içindeIShapeadında bir arayüz tanımlayın. Her şekil kendi alanını hesaplayabilmeli ve kendisini tanımlayabilmelidir. İki metot bildirin:doubledöndürenCalculateArea()vestringdöndürenGetDescription().Circle.cs:Shapesad alanı içindeIShapearayüzünü uygulayan birCirclesınıfı oluşturun. Bir dairenin, yapıcı metodu (constructor) aracılığıyla atanan birRadiusö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:Shapesad alanı içindeIShapearayüzünü uygulayan birRectanglesınıfı oluşturun. Bir dikdörtgenin, yapıcı metodu aracılığıyla atananWidthveHeightö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ı birIShapereferans 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.00Dö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
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları