IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Nesne Yönelimli (Geliştiriciler için Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

Nesne yönelimli programlama (OOP), modüler, yeniden kullanılabilir ve uyarlanabilir kodlar oluşturmayı sağlayan yazılım geliştirme alanında temel bir kavramdır. C#, modern bir nesne yönelimli programlama dili olarak, karmaşık uygulamalar oluşturma için sağlam bir çerçeve sunar. Bu kılavuz, C#'ı kullanarak OOP kavramlarını tanıtır, başlangıç seviyesindekilerin bu ilkeleri etkili bir şekilde anlamalarına ve uygulamalarına yardımcı olacak pratik uygulamalar ve kod örnekleri üzerine odaklanır. IronPDF kütüphanesi için C# ile birlikte bu ilkelerin nasıl uygulanabileceğini de tartışacağız.

Nesne Yönelimli Programlama Kavramlarını Anlamak

OOP'nin kalbinde birkaç anahtar kavram yatar: sınıflar, nesneler, kalıtım, çok biçimlilik, soyutlama ve kapsülleme. Bu kavramlar, geliştiricilerin gerçek dünya varlıklarını modellemesine, karmaşıklığı yönetmesine ve kodlarının sürdürülebilirliğini artırmasına olanak tanır.

Sınıflar ve Nesneler: Yapı Taşları

Bir sınıf, bireysel nesneler oluşturur. Sınıf, sınıfın tüm nesnelerinin paylaştığı verileri ve davranışları tanımlayan bir taslaktır. Bir nesne, bir sınıfın bir tezahürüdür. Sınıf taslağında tanımlanan soyut yer tutuculardan ziyade gerçek değerleri somutlaştırır.

public class Car // A class declared as 'Car' defines its structure and behavior.
{
    public string Name;
    public string Color;

    public void DisplayInfo()
    {
        Console.WriteLine($"Name: {Name}, Color: {Color}");
    }
}

class Program // This is the program class, serving as the entry point of a C# program.
{
    static void Main(string[] args)
    {
        Car myCar = new Car();
        myCar.Name = "Toyota";
        myCar.Color = "Red";
        myCar.DisplayInfo();
    }
}

Bu örnekte, Araba sınıfında iki veri üyesi (Ad ve Renk) ve bir metot (DisplayInfo) vardır. Uygulamanın giriş noktası olarak hizmet veren Ana metot, Araba sınıfının bir örneğini yaratır ve bu nesneye değerler atar, ardından bu değerleri göstermek için metodu çağırır.

C# Nesne Yönelimli (Geliştiriciler için Nasıl Çalışır): Şekil 1 - Konsol, DisplayInfo yöntemi ile Araba Nesnesinin üye değerlerini (isim, renk) gösterir

Kalıtım: Mevcut Sınıfları Genişletmek

Kalıtım, bir sınıfın mevcut bir sınıfın özelliklerini ve metotlarını devralmasına olanak tanır. Özellikleri devralınan sınıfa temel sınıf denir ve bu özellikleri devralan sınıfa türetilmiş sınıf denir.

public class Vehicle
{
    public string LicensePlate;

    public void Honk()
    {
        Console.WriteLine("Honking");
    }
}

public class Truck : Vehicle // Truck is a child class derived from the Vehicle base class.
{
    public int CargoCapacity;
}

class Program
{
    static void Main(string[] args)
    {
        Truck myTruck = new Truck();
        myTruck.LicensePlate = "ABC123";
        myTruck.CargoCapacity = 5000;
        myTruck.Honk();
    }
}

Bu örnekte, Kamyon, Araç temel sınıfını uzatarak, Plaka alanını ve Korna metodunu devralan, yeni bir alan olan Yük Kapasitesi ekleyerek türetilmiş bir sınıftır.

Çok biçimlilik ve Soyutlama: Arayüzler ve Soyut Sınıflar

Çok biçimlilik, nesnelerin, spesifik sınıfları yerine temel sınıflarının örnekleri olarak ele alınmasına olanak tanır. Soyutlama, somutlaştırılamayan, ancak temel sınıf olarak kullanılabilecek soyut sınıfların ve arayüzlerin tanımlanmasına izin verir.

Soyut Sınıflar ve Metotlar

Soyut sınıflar somutlaştırılamaz ve genellikle birden çok türetilmiş sınıfın paylaşabileceği bir temel sınıfın ortak bir tanımını sağlamak için kullanılır.

public abstract class Shape
{
    public abstract void Draw();
}

public class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a circle");
    }
}

Birden Fazla Arayüzü Uygulama

Bir arayüz, sınıfların tanımlı yöntemlerini uygulayarak yerine getirebileceği bir anlaşma veya sözleşme tesis eder. Sınıflar, çok biçimliliğin bir biçimini sağlayarak birden fazla arayüzü uygulayabilir.

public interface IDrawable
{
    void Draw();
}

public interface IColorable
{
    void Color();
}

public class CustomShape : IDrawable, IColorable // Defining a new class CustomShape that implements IDrawable and IColorable.
{
    public void Draw()
    {
        Console.WriteLine("Custom shape drawn");
    }

    public void Color()
    {
        Console.WriteLine("Custom shape colored");
    }
}

Kapsülleme: Verileri Koruma

Kapsülleme, bir nesnenin belirli bileşenlerine erişimi sınırlama ve dış tarafların iç temsili görmesini engelleme mekanizmasıdır. Bu, erişim belirleyicilerinin kullanımı aracılığıyla gerçekleştirilir.

public class Person
{
    private string name; // Private variable, inaccessible outside the class
    public string Name   // Public property to access the private variable
    {
        get { return name; }
        set { name = value; }
    }
}

// Example showing a simple customer class with encapsulated data
public class Customer
{
    public string Name { get; set; }
    public string Address { get; set; }
}

Bu örnekte, isim alanı özel olup, Kişi sınıfının dışında erişilemez. Bu alana erişim, get ve set yöntemlerini içeren kamuya açık İsim özelliği aracılığıyla sağlanır.

Pratik Kullanım Durumları ve Kod Örnekleri

Şimdi bu ilkelerin eylemde olduğunu göstermek için birden fazla sınıf içeren bir örnek keşfedeceğiz.

using System;

namespace OOPExample
{
    public class Program
    {
        static void Main(string[] args)
        {
            ElectricCar myElectricCar = new ElectricCar();
            myElectricCar.Make = "Tesla";
            myElectricCar.Model = "Model 3";
            myElectricCar.BatteryLevel = 100;
            myElectricCar.Drive();
            myElectricCar.Charge();
        }
    }

    public abstract class Vehicle
    {
        public string Make { get; set; }
        public string Model { get; set; }

        public abstract void Drive();
    }

    public class Car : Vehicle
    {
        public override void Drive()
        {
            Console.WriteLine($"The {Make} {Model} is driving.");
        }
    }

    public class ElectricCar : Car
    {
        public int BatteryLevel { get; set; }

        public void Charge()
        {
            Console.WriteLine("Charging the car.");
        }

        public override void Drive()
        {
            Console.WriteLine($"The {Make} {Model} is driving silently.");
        }
    }
}

Bu örnekte, Sür(), Araç soyut sınıfından alınmış soyut bir metottur. Araba, Sür()'ü uygulayan bir türetilmiş sınıf olup, ** ElectricCar** ise yeni özellikler ekleyerek, Batarya Seviyesi gibi ve kendi Sür() uygulamasını içeren başka bir hiyerarşi seviyesidir. Bu yapı, bir C# uygulamasında soyutlama, kapsülleme, kalıtım ve çok biçimliliğin birlikte çalışmasını göstermektedir.

C# Nesne Yönelimli (Geliştiriciler için Nasıl Çalışır): Şekil 2 - Koddaki konsol çıktısı, drive soyut yöntemi ve charge yöntemi çıktısını yazdırıyor

IronPDF: C# PDF Kütüphanesi

IronPDF kütüphanesi .NET için, C# geliştiricileri için .NET uygulamalarında PDF belgeleri oluşturma, düzenleme ve çıkarma sürecini basitleştirmek için tasarlanmış çok yönlü bir araçtır. IronPDF, HTML dizelerinden PDF oluşturmanın, URL'lerden veya ASPX dosyalarından, PDF oluşturma ve manipülasyon sürecinde yüksek bir kontrol seviyesi sunarak basitliğini sağlar. Buna ek olarak, IronPDF üstbilgi ve alt bilgi ekleme, filigran ekleme ve şifreleme gibi ileri düzey özellikleri destekler, bu da onu .NET uygulamalarında PDF'leri işlemek için kapsamlı bir çözüm haline getirir.

OOP ile IronPDF Örneği

İşte C# uygulamasında IronPDF kullanımını gösteren, OOP'deki temel bir kavram olan kalıtımla IronPDF işlevselliğini genişletmenin nasıl olabileceğini göstermek için virtual anahtar kelimesini içeren basit bir örnek. Bir temel sınıfın temel bir PDF raporu oluşturduğunu ve türetilen bir sınıfın bu işlevselliği özel bir başlık eklemek için genişlettiğini varsayalım:

using IronPdf;

public class BasicReportGenerator
{
    public virtual PdfDocument GenerateReport(string htmlContent)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        return pdf;
    }
}

public class CustomReportGenerator : BasicReportGenerator
{
    public override PdfDocument GenerateReport(string htmlContent)
    {
        var pdf = base.GenerateReport(htmlContent);
        AddCustomHeader(pdf, "Custom Report Header");
        return pdf;
    }

    private void AddCustomHeader(PdfDocument document, string headerContent)
    {
        // Create text header
        TextHeaderFooter textHeader = new TextHeaderFooter
        {
            CenterText = headerContent,
        };
        document.AddTextHeaders(textHeader);
    }
}

class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key";
        // HTML content for the report
        string htmlContent = "<html><body><h1>Sample Report</h1><p>This is a sample report content.</p></body></html>";

        // Using BasicReportGenerator
        BasicReportGenerator basicReportGenerator = new BasicReportGenerator();
        var basicPdf = basicReportGenerator.GenerateReport(htmlContent);
        basicPdf.SaveAs("basic_report.pdf");

        // Using CustomReportGenerator
        CustomReportGenerator customReportGenerator = new CustomReportGenerator();
        var customPdf = customReportGenerator.GenerateReport(htmlContent);
        customPdf.SaveAs("custom_report.pdf");

        Console.WriteLine("PDF reports generated successfully.");
    }
}

Bu örnekte, BasicReportGenerator, HTML içeriğini alıp IronPDF kullanarak bir PDF belgesi oluşturan GenerateReport adlı bir yönteme sahiptir. CustomReportGenerator sınıfı, BasicReportGenerator'den türetilmiş olup, temel yöntem tarafından oluşturulan PDF'ye özel bir başlık eklemek için GenerateReport yöntemini geçersiz kılar. İşte kod tarafından üretilen özel rapor:

C# Nesne Yönelimli (Geliştiriciler için Nasıl Çalışır): Şekil 3 - Makalede tartışılan OOP yöntemlerini sergileyen kod örneğinden üretilmiş özel PDF

Sonuç

OOP'nin temel ilkelerini anlamak ve uygulamak, yeni başlayanların C#'ı ve sağlam yazılım çözümleri geliştirmeyi öğrenmelerine önemli adımlar attırabilir. Kalıtım ve çok biçimlilik, yeni sınıfların mevcut yapı ve işlevsellikler üzerine inşa edilmesine, kodun yeniden kullanılmasına ve esnekliğe izin verir. Soyutlama ve kapsülleme, sınıfların yalnızca dış dünyaya gerekli olanı göstermesini ve dahili çalışma düzenlerinin özel ve istenmeyen kullanımından korunduğundan emin olur. IronPDF ücretsiz denemesini C#'ta PDF oluşturma için deneyebilirsiniz, başlangıç liteLicense.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez