Ö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 çok biçimlilik hakkında öğrendiğin her şeyi bir araya getiren bir şekil hesaplayıcı oluşturalım. Farklı şekillerin ortak bir arayüz üzerinden aynı şekilde işlenebildiği ve çalışma zamanı çok biçimliliğinin gücünü gösteren bir sistem oluşturacaksın.
Kodunu dört dosyaya ayıracaksın:
IShape.cs:IShapead alanındaShapesadlı bir arayüz tanımla. Her şekil, alanını hesaplayabilmeli ve kendisini açıklayabilmelidir. İki metot bildir:CalculateArea()döndürendoubleveGetDescription()döndürenstring.Circle.cs:Circlead alanındaShapesarayüzünü uygulayan birIShapesınıfı oluştur. Bir dairenin, kurucusu aracılığıyla ayarlanan birRadiusözelliği (double) vardır. Alan formülüMath.PI * Radius * Radiusşeklindedir. Açıklama"Circle with radius {Radius}"döndürmelidir.Rectangle.cs:Rectanglead alanındaShapesarayüzünü uygulayan birIShapesınıfı oluştur. Bir dikdörtgenin, kurucusu aracılığıyla ayarlananWidthveHeightözellikleri (her ikisi de double) vardır. Alan, genişlik ile yüksekliğin çarpımına eşittir. Açıklama"Rectangle {Width}x{Height}"döndürmelidir.Program.cs: Ana dosyanda, girdi değerlerini kullanarak bir daire ve bir dikdörtgen oluştur; ardından bunlarıIShapereferanslarından oluşan bir dizide sakla. Dizi üzerinde döngü kur ve her şekil için açıklamasını, ardından iki ondalık basamağa yuvarlanmış alanını yazdır. Bu, tamamen farklı şekilleri aynı arayüz üzerinden nasıl işleyebileceğini gösterir!
Üç girdi alacaksın:
- 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:
{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ün bir daireyle mi yoksa dikdörtgenle mi çalıştığını bilmesine gerek olmadığına dikkat et - döngü yalnızca arayüz metotlarını çağırır ve geri kalanını çok biçimliliğe bırakır. Arayüzlere 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ıKendi başına pratik yap: Online C# derleyicisi