1. Dersin Amacı
Nesne Tabanlı Programlama dersibinin amaçlarını şöyle özetleyebiliriz.
- Nesne tabanlı programlamanın ne olduğunu açıklayabilmek
- Neden OOP kullandığımızı anlayabilmek
- Class (sınıf) kavramını tanımlayabilmek
- Object (nesne) kavramını tanımlayabilmek
- Class ve Object arasındaki farkı anlayabilmek
- C# ile basit bir sınıf ve nesne oluşturabilmek
- OOP'nin temel prensiplerini genel olarak tanıyabilmek
2. Programlama Nedir?
Programlama, bilgisayara bir problemi çözmesi için vereceğimiz talimatların oluşturulmasıdır.
Örneğin:
"Bir öğrencinin notlarını al, ortalamasını hesapla ve sonucu ekrana yazdır."
Bu problemi çözmek için bilgisayara adım adım ne yapacağını söylememiz gerekir.
Programlama dilleri bu talimatları bilgisayarın anlayabileceği şekilde ifade etmemizi sağlar.
Bu derste kullanacağımız programlama dili: C# (C Sharp)
C#, nesne tabanlı programlamayı destekleyen modern bir programlama dilidir.
3. Neden Farklı Programlama Yaklaşımları Var?
Küçük bir program düşünelim:
1. Öğrenciyi oluştur
2. Notlarını gir
3. Ortalamayı hesapla
4. Ekrana yazdır
Program küçükken problem yaşamayabiliriz. Ancak program büyüdükçe işler karmaşıklaşır.
Örneğin bir okul otomasyonu düşünelim:
- Öğrenciler
- Öğretmenler
- Dersler
- Sınıflar
- Notlar
- Bölümler
- Sınavlar
- Ödemeler
gibi birçok farklı yapı olacaktır.
Bu yapıların tamamını yalnızca değişkenler ve fonksiyonlarla yönetmeye çalıştığımızda kod giderek karmaşıklaşabilir.
İşte burada nesne tabanlı programlama yaklaşımı devreye girer.
4. Nesne Tabanlı Programlama Nedir?
Nesne Tabanlı Programlama (Object-Oriented Programming – OOP), programı nesneler ve bu nesnelerin arasındaki ilişkiler üzerinden tasarlayan bir programlama yaklaşımıdır.
Gerçek hayatta birçok şeyi "nesne" olarak düşünebiliriz.Örneğin:
- Araba
- Öğrenci
- Öğretmen
- Telefon
- Banka hesabı
- Kitap
- Bilgisayar
Nesne Özellikleri (Properties / Fields)
Örneğin bir öğrencinin:
- adı
- soyadı
- numarası
- bölümü
olabilir.
Nesne Davranışları (Methods)
Örneğin öğrenci:
- derseGir()
- sınavaGir()
- kendiniTanit()
gibi davranışlara sahip olabilir.
Gerçek Hayattan Örnek: Araba
Bir araba düşünelim. Arabanın özellikleri:
Marka
Model
Renk
Hız
Arabanın davranışları:
Çalıştır()
Hızlan()
FrenYap()
Durdur()
Bunu programlamaya ARABA nesnesi ile aktarabiliriz.
Özellikler
----------------
Marka
Model
Renk
Hız
Davranışlar
----------------
Calistir()
Hizlan()
FrenYap()
Durdur()
Burada önemli fikir şudur: Bir nesnenin hem verilerini hem de bu veriler üzerinde gerçekleştirebileceği işlemleri birlikte düşünebiliriz.
6. Class (Sınıf) Nedir?
Class, nesnelerin oluşturulacağı bir şablondur. Bir kalıp veya tasarım gibi düşünebiliriz.
Örneğin: Class: Araba
Bu sınıf şunları tanımlayabilir:
Marka
Model
Renk
Hız
Calistir()
Hizlan()
FrenYap()
Fakat class'ın kendisi henüz belirli bir araba değildir.
7. Object (Nesne) Nedir?
Object, bir class'tan oluşturulan örnektir. Örneğin:
Class
↓
Araba
Object
↓
BMW
Aynı class'tan birden fazla nesne oluşturabiliriz.
Araba
│
├── araba1 → BMW
├── araba2 → Mercedes
└── araba3 → Audi
Üç nesnenin de yapısı Araba class'ından gelir. Fakat özellikleri farklı olabilir.
Örneğin:
araba1 Marka: BMW Renk: Siyah Hız: 120
araba2 Marka: Mercedes Renk: Beyaz Hız: 90
8. Class ve Object Farkı
Class Bir şablondur.
Object Bu şablondan oluşturulan gerçek örnektir.
Günlük hayattan örnek verecek olursak :
Class = Ev planı
Object = O plana göre inşa edilmiş gerçek ev
Öğrenci öğrneği düşünelim
Class = Öğrenci
Object = Ahmet
Object = Ayşe
Object = Mehmet
9. C# ile İlk Class'ımız
Şimdi bunu C# ile yapalım.
class Ogrenci
{
public string isim;
public int yas;
public void KendiniTanit()
{
Console.WriteLine("Ben " + isim);
}
}
Burada Ogrenci adında bir class oluşturduk. Class'ın içerisinde:
public string isim; öğrencinin ismini,
public int yas; öğrencinin yaşını temsil ediyor.
Şu bölüm ise öğrencinin davranışıdır:
public void KendiniTanit()
{
Console.WriteLine("Ben " + isim);
}
10. Class'tan Object Oluşturmak
Şimdi Ogrenci class'ından bir nesne oluşturalım.
Ogrenci ogrenci1 = new Ogrenci();
Burada:
Ogrenci → Class'ın türüdür.
ogrenci1 → oluşturduğumuz nesnenin ismidir.
new Ogrenci() → Ogrenci class'ından yeni bir nesne oluşturur.
11. Nesnenin Özelliklerini Değiştirmek
Nesnenin özelliklerini değiştirmek için nesna_adi.özellik yapısı kullanılır.
ogrenci1.isim = "Ahmet";
ogrenci1.yas = 20;
Artık ogrenci1 için isim = Ahmet yas = 20 olur
Nesnenin metodunu da yinew nesne_adi.method yapısı ile çalıştırabiliriz.
ogrenci1.KendiniTanit();
Bu kod çalıştığında ekranda "Ben Ahmet" yazar.
12. Tam Örnek
using System;
class Ogrenci
{
public string isim;
public int yas;
public void KendiniTanit()
{
Console.WriteLine("Ben " + isim);
Console.WriteLine("Yaşım: " + yas);
}
}
class Program
{
static void Main()
{
Ogrenci ogrenci1 = new Ogrenci();
ogrenci1.isim = "Ahmet";
ogrenci1.yas = 20;
ogrenci1.KendiniTanit();
}
}
yukarıdaki program çalıştığında ekran çıktısı aşağıdaki gibi olur.
Ben Ahmet
Yaşım: 20
13. Aynı Class'tan Birden Fazla Object
Bir class'tan birden fazla nesne oluşturabiliriz.
Ogrenci ogrenci1 = new Ogrenci();
Ogrenci ogrenci2 = new Ogrenci();
Sonra özelliklerini farklı verebiliriz:
ogrenci1.isim = "Ahmet";
ogrenci1.yas = 20;
ogrenci2.isim = "Ayşe";
ogrenci2.yas = 22;
Artık elimizde iki farklı nesne olur:
ogrenci1
----------------
isim = Ahmet
yas = 20
ogrenci2
----------------
isim = Ayşe
yas = 22
İkisi de Ogrenci class'ından oluşturulmuştur.
14. Özellik ve Davranış
Nesneler verileri ve bu verilerle ilişkili davranışları bir arada barındırabilir. Örneğin:
Öğrenci için Özellikler:
isim
yas
numara
Davranışlar ise
DerseGir()
SinavaGir()
KendiniTanit()
Araba için Özellikler:
marka
model
hiz
Davranışlar ise
Calistir()
Hizlan()
FrenYap()
Banka Hesabı için Özellikler:
hesapNo
bakiye
musteriAdi
Davranışlar ise
ParaYatir()
ParaCek()
BakiyeGoster()
olabilir.
15. OOP'nin Temel Prensipleri
Nesne tabanlı programlamada ilerleyen derslerde daha ayrıntılı göreceğimiz dört temel kavram vardır:
1. Encapsulation – Kapsülleme
Verilerin ve davranışların kontrollü bir şekilde bir arada tutulması.
2. Inheritance – Kalıtım
Bir sınıfın başka bir sınıftan özellik ve davranışları miras alabilmesi.
Örneğin:
Hayvan
│
┌───────┴───────┐
│ │
Kedi Köpek
3. Polymorphism – Çok Biçimlilik
Aynı arayüz veya yapı üzerinden farklı davranışlar sergileyebilme.
4. Abstraction – Soyutlama
Gereksiz ayrıntıları gizleyerek önemli özelliklere odaklanma.
Bu dört kavramı ilerleyen derslerde tek tek inceleyeceğiz.
16. ÖZET
Programlama
↓
Nesne Tabanlı Programlama
↓
Class
↓
Object
↓
Properties / Fields
↓
Methods
En önemli üç soru:
Class nedir?
Nesneleri oluşturmak için kullanılan şablondur.
Object nedir?
Bir class'tan oluşturulan örnektir.
Neden OOP kullanıyoruz?
Programı gerçek hayattaki varlıkları ve aralarındaki ilişkileri modelleyerek daha düzenli ve yönetilebilir bir şekilde tasarlamaya yardımcı olur.