🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-6: Nesne Yönelimli Programlamaya (OOP) Giriş, Sınıf ve Nesne Kavramları 🧱

Konu Özeti

Java'da Nesne Yönelimli Programlamaya (OOP) giriş yapılıyor; sınıf ve nesne kavramları, new anahtar kelimesi ile nesne oluşturma, Stack ve Heap bellek yönetimi ve this referansının kullanımı örneklerle açıklanıyor. Araba ve Öğrenci sınıfları üzerinden field, metot tanımlama ve nesne örneklendirme gösteriliyor. Bir sonraki bölümde yapıcı metotlar ve çöp toplayıcı konularına değinileceği belirtiliyor.

🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-6: Nesne Yönelimli Programlamaya (OOP) Giriş, Sınıf ve Nesne Kavramları 🧱

Selamlar! Serimizin 6. bölümüne hoş geldiniz.

Önceki bölümde metot yapılarını, `return` mekanizmasını, Method Overloading ilkelerini ve `varargs` kullanımını detaylarıyla görmüştük. Bu bölümde ise Java'nın kalbi ve ruhu olan **Nesne Yönelimli Programlamaya (Object-Oriented Programming - OOP)** resmi giriş yapıyoruz.

Sınıf (Class) ve Nesne (Object) kavramlarını, `new` anahtar kelimesinin bellek yönetimindeki yerini ve `this` keyword'ünün kullanım amaçlarını öğreneceğiz.

---

📌 1. Nesne Yönelimli Programlama (OOP) Nedir? 🎭

OOP, yazılımı gerçek dünyadaki nesneleri modelleyerek tasarlama yaklaşımıdır.

Geleneksel prosedürel programlamanın aksine kodumuzu fonksiyonlar yığını olarak değil; veri (özellikler/fields) ve bu veriler üzerinde çalışan davranışları (metotlar/methods) bir arada tutan **Sınıf** ve **Nesne** yapıları etrafında kurgularız.

### Temel İkili:
• **Sınıf (Class):** Bir nesnenin şablonudur (blueprint/taslak). Nesnenin hangi özelliklere ve davranışlara sahip olacağını tanımlar. Bellekte yer kaplamaz (kod bloğu hariç).
• **Nesne (Object):** Sınıf şablonundan üretilen somut varlıktır (instance). Bellekte (Heap) yer kaplar ve kendi durum verisini (state) tutar.

Örnek Analoji:
`Araba` bir **Sınıf**'tır (Rengi, hızı, markası olacağı tanımlanmıştır).
Garajınızdaki `Kırmızı 2024 Model BMW` ise o sınıftan üretilmiş somut bir **Nesne**'dir.

---

🏗️ 2. Sınıf Tanımlama ve Nesne Oluşturma (`new`) ⚙️

Bir sınıf içerisinde **Fields (Özellikler)** ve **Methods (Davranışlar)** barındırır.

### Sınıf Tanımı (`Araba.java`):

public class Araba {
// Özellikler (Fields / State)
String marka;
String model;
String renk;
int hiz;

// Davranışlar (Methods / Behavior)
public void hiziArtir(int miktar) {
hiz += miktar;
System.out.println(marka + " " + model + " hızlandı. Güncel Hız: " + hiz + " km/s");
}

public void frenYap(int miktar) {
hiz -= miktar;
if (hiz < 0) hiz = 0;
System.out.println(marka + " " + model + " yavaşladı. Güncel Hız: " + hiz + " km/s");
}

public void bilgileriGoster() {
System.out.println("--- Araç Bilgileri ---");
System.out.println("Marka: " + marka);
System.out.println("Model: " + model);
System.out.println("Renk : " + renk);
System.out.println("Hız : " + hiz + " km/s");
}
}

### Nesne Oluşturma ve Kullanımı (`Main.java`):

public class Main {
public static void main(String[] args) {
// 'new' anahtar kelimesi ile Araba sınıfından bir nesne türetiyoruz
Araba araba1 = new Araba();

// Özelliklere değer atama
araba1.marka = "BMW";
araba1.model = "M3";
araba1.renk = "Mavi";
araba1.hiz = 100;

// Metotları çağırma
araba1.bilgileriGoster();
araba1.hiziArtir(40);
araba1.frenYap(20);

System.out.println();

// İkinci bağımsız bir nesne türetme
Araba araba2 = new Araba();
araba2.marka = "Mercedes";
araba2.model = "C63";
araba2.renk = "Siyah";
araba2.hiz = 80;

araba2.bilgileriGoster();
}
}

---

🧠 3. Bellek Yönetimi: Stack vs Heap 📍

Java'da bellek iki ana bölgeye ayrılır:

1. **Stack (Yığın):** Yerel değişkenler (local variables) ve nesne referansları (pointer/adresler) tutulur. Hızlıdır, scope bitince anında temizlenir.
2. **Heap (Öbek):** `new` kelimesi ile oluşturulan TÜM nesneler (`new Araba()`) ve onların içindeki field verileri Heap bölgesinde saklanır.

`Araba araba1 = new Araba();` satırında olanlar:
• `araba1` isimli referans değişkeni **Stack** alanında oluşturulur.
• `new Araba()` komutu **Heap** alanında gerçek nesne verisini tahsis eder.
• `araba1` referansı, Heap'teki o nesnenin adresini işaret eder.

---

🎯 4. `this` Anahtar Kelimesi Kullanımı 🔑

`this`, bulunulan sınıftan üretilen **mevcut nesnenin kendisini** (current instance) temsil eden özel bir referanstır.

En yaygın kullanım amacı: Sınıfın field isimleri ile metodun parametre isimleri aynı olduğunda çakışmayı önlemektir (Shadowing).

public class Ogrenci {
String isim;
int numara;

// Metot parametre isimleri field isimleriyle aynı
public void bilgiGuncelle(String isim, int numara) {
// 'this.isim' sınıfın field'ını temsil eder.
// 'isim' ise metoda gelen parametredir.
this.isim = isim;
this.numara = numara;
}

public void selamVer() {
System.out.println("Merhaba, ben " + this.isim);
}
}

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde OOP ilkelerine giriş yaptık, Sınıf ve Nesne arasındaki farkı, `new` anahtar kelimesi ile nesne örneklendirmeyi, Stack/Heap bellek mantığını ve `this` referansını öğrendik.

👉 **Bölüm 7'de Bizi Ne Bekliyor?**
• Yapıcı Metotlar (Constructors) 🏗️
• Varsayılan (Default) ve Parametreli Constructor
• `this()` ile Constructor Chaining (Yapıcı Metot Z
incirleme)
• Garbage Collector (Çöp Toplayıcı) Mantığı

Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! ☕✨

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
136,546Threads
3,306,437Messages
328,389Members
therivalsxLatest member
Top Bottom