# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mehmetozdemir.gitbook.io/oop/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
