0Pricing
C# Academy · Ders

Çok biçimli davranışlar

Arayüz tabanlı çok biçimliliği kullanın: farklı şekilleri tek biçimde işleyin, çağıranları değiştirmeden yeni şekiller ekleyin ve küçük davranışları birleştirin.

Çok biçimli davranışlar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Çok biçimliliğe genel bakış

Amaç: Çağıran kodu basit tutmak için çok biçimliliği kullanmak.

  • Her yerde IShape ile çalışın
  • Bir listede birçok şekli bir araya getirin
  • Kodu değiştirmeden yeni şekiller ekleyin
  • Küçük davranışları birleştirin (biçimlendirme, filtreleme)

Tüm şekiller için tek arayüz

Yardımcı programlarda IShape arayüzünü kabul edin. Çalışma zamanı dağıtımı doğru uygulamayı seçer.

using System;

public interface IShape
{
  double Area();
  double Perimeter();
}

public sealed class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public sealed class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public class Program
{
  // One function works for any IShape (dynamic dispatch on overrides)
  static void PrintSummary(IShape s)
  {
    Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
  }

  public static void Main(string[] args)
  {
    PrintSummary(new Rectangle(3, 4));
    PrintSummary(new Circle(2));
  }
}

Karışık liste işleme

Birçok şekli Liste<IShape> içinde depolayın. Her örnekte davranış değişse de yineleme basit kalır.

using System;
using System.Collections.Generic;

public interface IShape { double Area(); double Perimeter(); }

public sealed class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public sealed class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public class Program
{
  public static void Main(string[] args)
  {
    List<IShape> shapes = new List<IShape>();
    shapes.Add(new Rectangle(2, 5));
    shapes.Add(new Circle(1.5));
    shapes.Add(new Rectangle(1, 1));

    foreach (IShape s in shapes)
    {
      Console.WriteLine("A=" + s.Area());
    }
  }
}

Genişletmeye açık

Çok biçimlilik genişletmeye açıklığı destekler: yeni şekiller, mevcut çağıran kodları düzenlemeden tümleştirilebilir.

using System;

public interface IShape { double Area(); double Perimeter(); }

public sealed class Triangle : IShape
{
  private readonly double _a, _b, _c;
  public Triangle(double a, double b, double c) { _a = a; _b = b; _c = c; }
  public double Perimeter() { return _a + _b + _c; }
  public double Area()
  {
    double s = (_a + _b + _c) / 2.0;
    return Math.Sqrt(s * (s - _a) * (s - _b) * (s - _c));
  }
}

public class Program
{
  // Existing helper still works; no changes needed
  static void Show(IShape s) { Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter()); }

  public static void Main(string[] args)
  {
    Show(new Triangle(3, 4, 5)); // new type plugs in
  }
}

Davranış bileşimi (strateji)

Küçük arayüzler (örneğin bir biçimlendirici) aracılığıyla küçük davranışları birleştirin. Şekli değiştirmeden stratejileri değiştirin.

using System;

public interface IShape { double Area(); double Perimeter(); }

public sealed class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

// Small strategy interface for formatting
public interface IShapeFormatter
{
  string Format(IShape s);
}

public sealed class SimpleFormatter : IShapeFormatter
{
  public string Format(IShape s) { return "A=" + s.Area() + " P=" + s.Perimeter(); }
}

public class Program
{
  static void Print(IShape s, IShapeFormatter f)
  {
    Console.WriteLine(f.Format(s));
  }

  public static void Main(string[] args)
  {
    Print(new Rectangle(3, 2), new SimpleFormatter());
  }
}

Çok biçimlilik ipuçları

İpuçları:

  • Yardımcı programlara IShape geçirin; tür kontrollerinden kaçının.
  • Mümkün olduğunda yardımcı programları küçük ve yan etkisiz tutun.
  • Yeni şekilleri özgürce ekleyin; mevcut çağıran kodları düzenlemeyin.
  • Özellikleri genişletmek için küçük davranış arayüzleri (biçimlendirme, filtreleme) kullanın.

Arayüzün yararı

Hızlı kontrol: Bu kütüphanede IShape arayüzü üzerinden programlamanın temel yararı nedir?

Özet

Özet: Parametreleri IShape olarak alın, karışık listeleri işleyin ve çağıran kodlara dokunmadan şekiller ekleyin. Kodu esnek tutmak için biçimlendirme veya filtreleme gibi küçük davranışları birleştirin.

Sıkça Sorulan Sorular

“Çok biçimli davranışlar” dersi ücretsiz mi?

Evet — “Çok biçimli davranışlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“Çok biçimli davranışlar” dersinde ne öğreneceğim?

Arayüz tabanlı çok biçimliliği kullanın: farklı şekilleri tek biçimde işleyin, çağıranları değiştirmeden yeni şekiller ekleyin ve küçük davranışları birleştirin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Çok biçimli davranışlar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Tasarım (arayüzler ve kalıtım)
  2. Uygulama ve sınamalar
  3. Çok biçimli davranışlar
← C# Academy Sayfasına Dön