# OOP Nedir?

Nesne Yönelimli programlama bir yazılım geliştirme yaklaşımıdır. Bu yaklaşımın olmadığı yıllarda geliştirilen yazılımlar bakım ve iyileştirme konularında oldukça maliyetli olmaktaydı. Yazılan kodların boyutları gün geçtikçe artmakta ve kontrol edilmesi çok zor olmaktaydı. Bir proje üzerinde birden çok yazılımcı çalışma imkanı bulamıyordu bazı durumlarda çünkü merkezi bir kontrol sistemi proje kodları üzerinde yoktu çokça kod tekrarı yapılan bölümler projede olabiliyordu haliyle efektif bir gelişim söz konusu değildi. Bu konuların çözümü olarak da nesne yönelimli programlama modeli öne sürüldü ve kısa sürede birçok programcı tarafından benimsendi.Bu modelde yazım tasarımı çok rahat bir şekilde yapılabilmekte kalıtım soyutlama çok biçimlilik temel kavramları bulunmaktadır bunlara tek tek  değineceğim.&#x20;

Nesne yönelimli nesne tabanlı programlama dilleri: C# ,C++ , Eiffel,Java , PHP , Python, Ruby , Visual Basic .Net



**Nesne Yönelimli programanın sağladığı kolaylıklar:**

Gerçek dünyadaki nesnelerin tasarımları sınıf içinde yapılır.

Sınıftan nesne üretilip değişiklik yapılmak istendiğinde tüm programda değişiklik yapmak gerekmez sadece oluşturulan nesnenın sınıf içinde değişiklik yapmak yeterlidir.

Oluşturulan nesneler birbirinden bağımsız olduğu için bilgi gizleme olanağı artar.\
&#xNAN;_**Örneğin**_ A nesnesi B nesnesinin özelliklerini kullanamaz ve erişemez.

Nesne oluşturma bir sınıf içerisinde gerçekleştirilir ve bu kodlar başka projelerde kullanılabilir.\
&#xNAN;_**Örneğin**_ bir A nesnesi oluşturduysak bunu birçok yerde kullanabiliriz.

Sınıflar oluşturarak daha az kod oluşturup daha fazla iş yapıp kod tekarı önlenir.\
**Örneğin** insan sınıfında isim, soyisim, yaş… gibi özellikleri bir defa oluşturup istediğimiz kadar kullanabiliriz.

Kod tekrarı önlediği için geliştirme sürecinin verimliliğini artırır.



**Nesne Nedir?**

Nesneye yönelik programlamada nesneler sınıflardan üretilirler. Nesler sınıfların aksine canlıdır ve kimlikleri vardır. Aynı sınıftan üretilmiş iki nesnenin sahip olduğu özellikler benzerdir ancak bu özellikler farklılıklar da gösterebilir. Bir ifadenin nesne olabilmesi için bellekte yer belirtmesi gerekir. Sınıfı kullanan programda nesneler tanımlanır ve bu nesnelere mesajlar gönderilir. Gönderilen mesajlara göre yeni bir nesneye gereksinim duyulduğunda bu nesne yaratılır. Mesajlar karşısında bir davranışta bulunmak sınıfın işidir. Bir nesne kendi hakkında, yapabileceği işlemler ile ilgili bilgiler saklar.Programın gereksinim duyduğu tüm veriler nesneler tarafıdan tutulur. Yapılan işlemin cinsine göre nesnelerde farklı bilgiler içerirler.



**Nesne Yönelimli Programlama Özellikleri**

Nesne Yönelimli Programlamada 4 temel özellik vardır. Bu 4 özellikten birini sağlamayan programlama dili nesne yönelikli programlama dili sayılmaz.

&#x20;Soyutlama (Abstraction,Interface)\
&#x20;Kapsülleme (Encapsulation)\
&#x20;Miras Alma (Inheritance)\
&#x20;Çok biçimlilik (Polymorphism)
