Soyut Yapılar: Interface ve Abstract

Soyut Yapılar Nedir

Soyut yapılar, bir arayüz (interface) veya soyut sınıf (abstract class) şeklinde olabilir. Bu yapılar, bir dizi metot veya özellik tanımı içerir ve alt sınıflar tarafından bu metotları gerçeklemek veya özellikleri sağlamak için kullanılır.

Soyut yapılar, yazılım tasarımında önemli bir rol oynar. İşlevsel birimlerin soyutlanması, kodun daha esnek, ölçeklenebilir ve bakımı daha kolay hale gelmesini sağlar. Ayrıca, soyut yapılar sayesinde, farklı alt sınıfların aynı arayüzü uygulaması ve bu arayüz üzerinden kullanılması sağlanabilir.

Arayüzler, soyut yapıların bir türüdür ve sadece metot, özellik ve olay tanımları içerir. Arayüzler, bir davranış setini belirtir ve uygulayan sınıflar tarafından bu davranışları sağlamak için kullanılır.

Soyut sınıflar ise soyut yapıların bir başka türüdür ve hem soyut metot/özellik tanımları hem de somut metot/özellik gerçeklemeleri içerebilir. Soyut sınıflar, alt sınıfların ortak özelliklerini ve davranışlarını tanımlamak için kullanılır. Alt sınıflar, soyut sınıfın soyut metotlarını gerçeklemek zorundadır.

Soyut sınıflar, tam olarak oluşturulamayan ve diğer sınıflar tarafından türetilmek üzere tasarlanan sınıflardır. Soyut sınıflar, ortak davranışları ve özellikleri tanımlamak için kullanılır ve bu sınıflardan doğrudan nesne oluşturulamaz. Soyut sınıflar, genellikle soyut metodlar içerir ve bu metodların alt sınıflar tarafından uygulanması gerekmektedir.

Soyut metodlar ise sadece imzaları (dönüş tipi, parametreler ve isim) belirtilmiş, gerçek içerikleri olmayan metodlardır. Alt sınıflar, soyut sınıfları miras aldıklarında soyut metodları uygulamak zorundadırlar. Böylece, alt sınıfların kendi özelleştirilmiş davranışlarını sağlaması beklenir.

Yazılımda soyut yapı, genel bir kavram veya temel bir şablon sağlayan bir yapıdır. Soyut yapılar, somut veri veya işlevselliği içermeyebilir, ancak bu yapıları uygulayan ve gerçekleştiren alt sınıflar tarafından kullanılır.

Soyut yapılar, kodun yeniden kullanılabilirliğini artırır ve genel tasarım desenlerinin uygulanmasını sağlar. Aynı zamanda, nesne tabanlı programlamada polymorphism (çokbiçimlilik) ilkesini destekleyerek, farklı nesnelerin aynı arayüzü kullanabilmesini sağlar.

Özetle, yazılımda soyut yapılar, genel kavramları veya temel şablonları tanımlayan ve alt sınıflar tarafından gerçeklenen yapılar olarak kullanılır. Soyut yapılar, kodun esnekliğini, ölçeklenebilirliğini ve bakımını kolaylaştırır ve nesne tabanlı programlamanın temel prensiplerini destekler.

Interface doğrudan instance alınır mı?

Bir interface, sadece metodların imzalarını (yani dönüş tipi, parametreler ve isim) tanımlar, ancak bu metodların gerçek içeriklerini sağlamaz. Gerçek içerikleri sağlamadığı için soyut olarak isimlendirilir.

C# programlama dilinde bir arayüzden (interface) bir örnek (instance) almak mümkün değildir. Bir arayüz, soyut bir yapıdır ve doğrudan örneklendirilemez.

Ancak, bir arayüzden türetilmiş bir sınıfın örneği alınabilir. Bir arayüzü uygulayan sınıflar, arayüzde tanımlanan tüm üyeleri (metodlar, özellikler, olaylar) uygulamak zorundadır. Dolayısıyla, bir arayüzün türünden bir sınıf örneği alarak, aslında o arayüzü uygulayan bir sınıfın örneğini elde etmiş olursunuz.

Aşağıda, bir arayüzden türetilmiş bir sınıfın örneğini nasıl alabileceğinizi gösteren bir örnek bulunmaktadır:

// Arayüz tanımı

public interface IMyInterface

{

    void MyMethod();

}

 

// Arayüzü uygulayan sınıf

public class MyClass : IMyInterface

{

    public void MyMethod()

    {

        Console.WriteLine("MyMethod çağrıldı!");

    }

}

 

// Örnek alma

class Program

{

    static void Main(string[] args)

    {

        IMyInterface myInstance = new MyClass(); // Arayüz türünden bir sınıf örneği alınıyor

 

        myInstance.MyMethod(); // Arayüzde tanımlanan metodu çağırma

 

        // Diğer işlemler...

    }

}

İnterface kullanımına basit bir örnek

public interface ICalculator

{

    int Add(int a, int b);

}

 

public class BasicCalculator : ICalculator

{

    public int Add(int a, int b)

    {

        return a + b;

    }

}

 

public class AdvancedCalculator : ICalculator

{

    public int Add(int a, int b)

    {

        return a + b * 2;

    }

}

Programdan nasıl çağrılır

class Program

{

    static void Main(string[] args)

    {

        ICalculator basicCalculator = new BasicCalculator();

        int result1 = basicCalculator.Add(3, 4);

        Console.WriteLine("Basic Calculator Result: " + result1);

 

        ICalculator advancedCalculator = new AdvancedCalculator();

        int result2 = advancedCalculator.Add(3, 4);

        Console.WriteLine("Advanced Calculator Result: " + result2);

        // Diğer işlemler...

    }

}

İnterface class en iyi kullanım örneği

public interface ILogger

{

    void Log(string message);

}

 

public class ConsoleLogger : ILogger

{

    public void Log(string message)

    {

        Console.WriteLine($"Console Logger: {message}");

    }

}

 

public class FileLogger : ILogger

{

    public void Log(string message)

    {

        // Dosyaya günlük kaydı yapma işlemleri

    }

}

 

public class Application

{

    private ILogger logger;

 

    public Application(ILogger logger)

    {

        this.logger = logger;

    }

 

    public void Run()

    {

        // Uygulama çalıştığında günlük kaydı yapma

        logger.Log("Uygulama başlatıldı.");

 

        // Diğer işlemler...

    }

}

Programdan nasıl çağrılır

class Program

{

    static void Main(string[] args)

    {

    / ConsoleLogger kullanarak Application oluşturma

    ILogger consoleLogger = new ConsoleLogger();

    Application applicationWithConsoleLogger = new Application(consoleLogger);

    applicationWithConsoleLogger.Run();

 

    // FileLogger kullanarak Application oluşturma

    ILogger fileLogger = new FileLogger();

    Application applicationWithFileLogger = new Application(fileLogger);

    applicationWithFileLogger.Run();

 

    // Diğer işlemler...

    }

}

Telefon +90 505 747 42 84
Email info@devedijital.com
Adres
Tacettin Veli Mahallesi Halit Narin Caddesi Bahadır Plaza Kat:11 Daire:41 38230 Deve Dijital Melikgazi/Kayseri/Türkiye