# OOP (Nesne Yönelimli Programlama)

Adres: https://softwaredictionary.org/tr/terimler/oop
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-29
Türkçe karşılığı: nesne tabanlı programlama, nesneye yönelik programlama

Kısaca: OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.

## OOP nedir?

Nesne yönelimli programlama, bir programı her biri kullanıcı, sipariş ya da banka hesabı gibi bir şeyi ya da kavramı temsil eden nesnelerin bir topluluğu olarak düzenler. Bir nesne, özellik (property) ya da alan (field) adı verilen verileri, metot adı verilen davranışlarla birleştirir. Çoğu OOP dili, her nesne türünün neler içerdiğini ve neler yapabildiğini anlatan planlar olan sınıfları (class) kullanır.

OOP genellikle dört temel fikirle anlatılır. Kapsülleme (encapsulation) bir nesnenin iç ayrıntılarını gizler ve yalnızca güvenli bir genel arayüz sunar; soyutlama (abstraction) ise bir nesnenin nasıl yaptığına değil, ne yaptığına odaklanır. Kalıtım (inheritance) bir sınıfın başka bir sınıfı yeniden kullanıp genişletmesini sağlar; çok biçimlilik (polymorphism) ise farklı nesnelerin aynı metot çağrısına kendi yöntemleriyle yanıt vermesine izin verir.

OOP'de sınıf, bir evin mimari planına benzer; her nesne ise o plana göre inşa edilmiş gerçek bir evdir. Tüm evlerin yerleşimi aynıdır, ama her birinin kendi adresi ve boya rengi vardır. Java, C#, Python, C++, Ruby ve TypeScript gibi diller OOP'yi destekler; iş uygulamalarında, oyunlarda ve kullanıcı arayüzü araç setlerinde yaygındır.

OOP çoğunlukla, programları saf fonksiyonlardan kuran ve paylaşılan verileri değiştirmekten kaçınan fonksiyonel programlamayla karşılaştırılır. Birçok modern dil her iki stili de bir arada kullanır. OOP'de sık verilen bir öneri, katı ve değiştirilmesi zor hâle gelmeye yatkın derin kalıtım hiyerarşileri yerine, nesneleri daha küçük nesnelerden oluşturmak olan bileşimi (composition) tercih etmektir.

## Önemli noktalar

- OOP, kodu veri ile davranışı birleştiren nesneler etrafında yapılandırır.
- Sınıf bir plandır; nesne ise ondan oluşturulan bir örnektir (instance).
- Dört temel direk kapsülleme, soyutlama, kalıtım ve çok biçimliliktir.
- Kalıtım yerine bileşimi tercih etmek tasarımları esnek tutar.

## Örnek: TypeScript'te basit bir sınıf

```typescript
// A class is a blueprint for creating objects
class BankAccount {
  private balance = 0; // encapsulated: hidden from outside code
  constructor(public owner: string) {}

  deposit(amount: number): void {
    if (amount <= 0) throw new Error("Amount must be positive");
    this.balance += amount;
  }

  getBalance(): number { return this.balance; }
}

const account = new BankAccount("Ada"); // an object (instance)
account.deposit(50);
```

## Sık sorulan sorular

**OOP'nin dört temel direği nedir?**

Dört direk; kapsülleme (iç ayrıntıları gizleme), soyutlama (yalnızca önemli olanı sunma), kalıtım (üst sınıftaki kodu yeniden kullanma) ve çok biçimliliktir (farklı nesnelerin aynı çağrıya kendi yöntemleriyle yanıt vermesi).

**Sınıf ile nesne arasındaki fark nedir?**

Sınıf, özellikleri ve metotları tanımlayan bir şablondur. Nesne ise o sınıftan oluşturulmuş, kendi verisine sahip belirli bir örnektir.

**OOP ile fonksiyonel programlama arasındaki fark nedir?**

OOP, kodu durumu ve davranışı bir arada tutan nesneler etrafında düzenler. Fonksiyonel programlama ise kodu saf fonksiyonlar ve değişmeyen veriler etrafında düzenler; JavaScript ve Python dahil birçok dil her iki stili de destekler.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
