C# Data Abstraction

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda data abstraction yani veri soyutlama konusunu anlatacağım. Hadi başlayalım !
Table of Contents
Tanımı
C# dilinde, data abstraction (veri soyutlama) bir nesne yönelimli programlama (OOP) ilkesidir. Bu ilke, nesne yönelimli programlama için önemli bir kavramdır ve bir sınıfın detaylarını gizleyerek, sadece gerekli arayüzleri açığa çıkararak programlama yapılan bir tasarım desenidir. Bu, nesne yönelimli programlama kodlarının daha iyi organize edilmesine ve sürdürülebilirliğinin artırılmasına yardımcı olur.
Class İle Kullanımı
Data abstraction (veri soyutlama) sayesinde, sınıfların nasıl çalıştığına dair karmaşık bilgileri gizleyerek, sınıfları daha anlaşılır ve yönetilebilir hale getirebilirsiniz. Bu, sınıfın gerekli özelliklerinin dışarıdan erişilebilir arayüzlerinin tasarlanmasıyla mümkündür.
Örnek Kod
Aşağıda, C# dilinde data abstraction kullanarak bir sınıfın nasıl tasarlanacağına dair bir örnek bulunmaktadır:
public abstract class BaseClass
{
public abstract void Operation();
}
public class DerivedClass : BaseClass
{
public override void Operation()
{
Console.WriteLine("DerivedClass Operation method is called.");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass baseClass = new DerivedClass();
baseClass.Operation();
Console.ReadKey();
}
}
Kod Açıklamaları
Bu örnek, bir abstract sınıf olan BaseClass ve bu sınıfı miras alan DerivedClass sınıfını içerir. BaseClass, abstract olarak tanımlanmış bir sınıftır ve içerisinde Operation() adında bir metod bulunur. Bu metod, miras alan sınıflar tarafından implemente edilmek zorundadır.
DerivedClass, BaseClass’ı miras alan bir sınıftır ve Operation() metodunu override eder. Bu metodun içinde, “DerivedClass Operation method is called.” yazdırılır.
Main metodunda, DerivedClass sınıfından türetilen bir BaseClass nesnesi oluşturulur ve Operation() metoduna erişilir. Sonuç olarak, “DerivedClass Operation method is called.” yazdırılır.
Bu örnekte, BaseClass sınıfı ile DerivedClass sınıfı arasındaki arayüz, yalnızca BaseClass’ın içinde tanımlanmış Operation() metodudur. Bu sayede, BaseClass sınıfının içindeki diğer detaylar, sınıfın kullanıcısı tarafından gizlenmiştir. Aynı zamanda, BaseClass’ın içindeki Operation() metodunun abstract olarak tanımlanması, sınıfın türetilmesi zorunlu metodlar içermesini sağlar.
Bu örnekte, data abstraction (veri soyutlama) kullanılarak, sınıfların karmaşıklığı azaltılmış ve kodun daha iyi organize edilmesi sağlanmıştır.
Interface İle Kullanımı
Data abstraction kullanımının başka bir örneği de, interface’lerle oluşturulan arayüzlerdir. C# dilinde, interface’ler, bir sınıfın uyması gereken özellikleri tanımlayan bir arayüz sağlarlar. Bu özellikler, interface’de tanımlanan metodlar ve özelliklerdir. Sınıf, interface’yi implemente ettiği takdirde, interface’de tanımlanan tüm özellikleri uygulamak zorundadır.
Örnek Kod
Aşağıdaki örnek, bir interface kullanarak bir sınıfın nasıl tasarlanacağına dair bir örnektir:
public interface IAnimal
{
void Eat();
}
public class Dog : IAnimal
{
public void Eat()
{
Console.WriteLine("Dog is eating.");
}
}
class Program
{
static void Main(string[] args)
{
IAnimal dog = new Dog();
dog.Eat();
Console.ReadKey();
}
}
Kod Açıklamaları
Bu örnekte, IAnimal adında bir interface ve bu interface’i implemente eden Dog adında bir sınıf bulunur. IAnimal interface’inde, Eat() adında bir metod tanımlanmıştır. Bu metod, sınıflar tarafından implemente edilmek zorundadır.
Dog sınıfı, IAnimal interface’ini implemente eder ve Eat() metodunu override eder. Bu metodun içinde, “Dog is eating.” yazdırılır.
Main metodunda, IAnimal interface’ini implemente eden bir Dog nesnesi oluşturulur ve Eat() metoduna erişilir. Sonuç olarak, “Dog is eating.” yazdırılır.
Bu örnekte, IAnimal interface’i, Dog sınıfının uyması gereken özellikleri tanımlayan bir arayüz sağlar. Bu sayede, Dog sınıfının diğer detayları, sınıfın kullanıcısı tarafından gizlenmiştir. Ayrıca, IAnimal interface’inde tanımlanan Eat() metodunun, sınıfın uyması gereken bir metod olduğu garanti edilir.
Sonuç
Data abstraction (veri soyutlama), kodun daha okunaklı ve sürdürülebilir hale getirilmesine yardımcı olur. Bu sayede, kodun yeniden kullanılabilirliği ve bakımı da kolaylaşır. Ayrıca, data abstraction sayesinde, sınıfların iç detayları değiştirildiğinde, diğer kod parçalarında herhangi bir değişiklik yapmadan kullanmaya devam edebilirsiniz.
Evet C#’ta data abstraction bu şekilde yapılmakta. Tüm C# yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.