Blog C/C++ C# Eğitim Genel Java PHP Programlama Dilleri Programlama Dilleri Eğitim Python Yazılım

Nesneye Dayalı Programlama (Object-Oriented Programming) Nedir?

    Nesneye dayalı programlama, bildiğimiz prosedürlere ya da fonksiyonlara bölerek  yazdığımız programlama şekli yerine data ve fonksiyon içeren nesneler (object) ve sınıflar (class) yaratarak bu nesnelerin üzerinde işlem yapma metodudur. Nesneye dayalı programlama belirli dillerde kullanılır ve bunlar Java, C++, C#, Python, PHP, JavaScript, Ruby, Perl, Smalltalk, Objective-C dilleridir. Ben bu yazımda C++ dilini kullanarak örnekler vereceğim. Her şeyden önce nesneye dayalı programlamanın dört temel ilkesi, zorunluluğu vardır. Bunlar:

• Encapsulation (Kapsülleme)
• Inheritance (Kalıtım)
• Polymorphism (Çok Biçimlilik)
• Abstraction (Soyutlama)

adlı ilkelerdir. Nesneye dayalı programlamanın tercih edilmesinin ana sebebi şu avantajlara sahip olmasıdır:

• NDP’yi çalıştırmak daha hızlı ve kolaydır.
• NDP bize programımız için daha düzgün bir yapı sunar.
• NDP ile kodu değiştirmek, debuglamak daha kolaydır.
• NDP daha az kod ve zaman ile yeniden kullanılabilir programlar yazmamızı mümkün kılar.

Sınıf ve Nesne

    Sınıf ve nesne NDP’nin iki ana yapı taşıdır. Örnek verirsek; meyveler bir sınıftır ve böğürtlen, ananas ve muz bu sınıfın nesneleridir. Daha ayrıntıya inecek olursak nesne belirli bir sınıfın metotlarını(method) veya prosedürlerini (procedure) ve veri değişkenlerini barındıran birer örneğidir. Sınıfların kendi özellikleri (attributes) vardır ve bunun sayesinde o sınıfın her bir nesnesine ayrı ayrı başlıklar girilmesine gerek yoktur. Aşağıdaki çalışanların ismi, yaşı ve maaşını gösteren basit bir NDP örneğidir:

Sonuç şöyle olucaktır:

Isim: Mehmet Yas: 34 Maas: TL4000
Isim: Ali Yas: 28 Maas: TL3400

 

Encapsulation (Kapsülleme) Nedir?

    Encapsulation (Kapsülleme) istenilen datanın yabancı kullanıcılar tarafından değiştirilmemesi için gizlenilmesidir. Public (herkese açık), private (özel) ve protected (koruma altında) olmak üzere üç adet access modifierdan (erişim dönüştürücüsü) bahsedilebilir.

Örneği açıklarsak sınıfa Çalısan dedik ve maaş özelliğini private (özel) olarak girdik yani değiştirilemez yaptık ama maaşın değerini public (herkese açık) yaptığımızdan maaş değerini değiştirilebilir olarak bırakmış olduk.

Inheritance (Kalıtım) Nedir?

    Inheritance (Kalıtım) sınıfların türeyebilmesidir. Bu sınıflar türetilmiş sınıf (örnek olarak: çocuk) ve ana sınıf (örnek olarak: ebeveyn) olarak ikiye ayrılır. Özellik olarak türetilmiş sınıf ana sınıfın özelliklerini alabilir. Aşağıdaki şemada anlaşılması daha kolay olacaktır:

Polymorphism (Çok Biçimlilik) Nedir? 

    Kalıtım yoluyla birbiriyle ilişkili birçok sınıfa sahip olduğumuz durumlara Polymorphism (Çok Biçimlilik) denir. Ayrıca metotları ve türetilmiş sınıfları yeniden tanımlama yeteneği de denilebilir. Polymorphism sayesinde programcı farklı şekillerin alanlarını farklı metotlar ile belirleyebilir.  Aşağıdaki örnekte türetilmiş sınıfların ana sınıfın hayvanSesi metodunu kullandığını görüyoruz. Ayrıca o metodu kendilerince değiştirerek kullanıyorlar:

 Abstraction (Soyutlama) Nedir? 

    Alt sınıfların ortak özelliklerini ve işlevlerini taşıyan ancak henüz bir nesnesi olmayan bir üst sınıf oluşturmak istenirse bir soyut (abstract) üst sınıf oluşturulur. Soyut sınıfın yöntemleri alt sınıfları tarafından üzerine yazılmak üzere şablon olarak tanımlanabilir veya soyut metot olarak oluşturulabilir.

Zaman ayırıp yazımı okuduğunuz için teşekkürler.

 

Kaynakça

https://www.w3schools.com/cpp/cpp_oop.asp

https://bidb.itu.edu.tr/seyir-defteri/blog/2019/02/05/object-oriented-programming

learncpp.com

 

 

 

 

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir