Rehber Nesneye Yönelik Programlama Nedir? Ne için kullanırız?

Nesne yönelik programlama, (İngilizce: Object - Oriented Programming) ilkel diyebileceğimiz programlama yöntemlerinin ve ilkel veri tiplerinin yetersiz kalmasından dolayı ortaya çıkmış bir yöntemdir.

Not: Konuda bazı yerlerde "nesne" bazı yerlerde "obje" olarak belirttim fakat ikisi aynı kavramlardır.

Genel olarak programlama dillerinde 3 tip ilkel veri tipi vardır:
-Sayı
-Karakter
-Bit ya da Mantıksal (1, 0 ) ya da (true, false).

Hızlıca bir örnek verecek olursak. Yazdığımız programda bir insanın yaşını tutmak için sayı tipinde bir değişken tutmak yeterlidir.

Kod:
yaş = 22

*Bu makalede bulunan kod parçaları kaba kod denilen ve çalışmayan kodlardır. Okuması kolay olsun diye JavaScript ve JSON'a benzer kodlar kullandım.
Ya da ismini tutmak için karakterler dizisi kullanırız.

Kod:
isim= "Ahmet"

Ama bunun yeterli olmadığı durumlarda, örneğin bir sosyal medya uygulaması ya da sitesi programlarken, insana ait özelliklerin bir arada verilmesi ve verilerin beraber işlenmesi, yönetilmesi çok daha kolaydır.
Bu örnekte ise ilkel veri tiplerini bir arada kullanarak ihtiyacımız olan insan özelliklerinin beraber bulunduğu bir "İnsan" nesnesi örneği verelim. Zaten örneği inceleyince Nesne ile veri tipinin farkını çok rahat anlayacaksınız.

Kod:
İnsan: {
 "yaşı": 22,
 "cinsiyeti": "Erkek",
 "isim": "Ahmet",
 "soyisim": "Yılmaz",
 "eposta": "[email protected]",
 "evli": false,
 }

Gördüğünüz gibi ilkel veri tiplerini beraber kullanarak bir İnsan nesnesi oluşturdum. Artık her insan özelliklerine ihtiyacım olduğunda direkt bu nesneden erişebilirim.
Mesela bu kişinin isim verisine erişmek istersem,

Kod:
İnsan.isim

Ya da E-Posta adresine,

Kod:
İnsan.eposta

Şeklinde erişebilirim.

Kısaca birden fazla objeyi birlikte kullanma, bunları oluşturma, değiştirme, ya da bunlardan başka objeler üretme (kalıtım) gibi tekniklerin geneline nesneye yönelik programlama denir.

Objelerin sadece özellikleri olmaz. Fonksiyonları(metotları) da olabilir. Yani bir insan kendi adını söyleyebilir. E-posta adresini değiştirebilir veya başka işleri de yapabilir gibi.

İnsan objemize kendini tanıtma fonksiyonu eklersek,

Kod:
İnsan: {
 "yaşı": 22,
 "cinsiyeti": "Erkek",
 "isim": "Ahmet",
 "soyisim": "Yılmaz",
 "eposta": "[email protected]",
 "evli": false,

 kendiniTanıt: function() {
 alert('Merhaba! ben ' + this.isim+ '.');

 }

 }

Kod:
İnsan.kendiniTanıt()

Kodunu çalıştırdığımızda bu objenin çıktısı;

Merhaba! Ben Ahmet.

Şeklinde olacaktır.

Bu kısımda bir şey anlamadıysanız sorun yok. Zaten tüm programlama dillerinin diğerlerinden farklı şekillerde Nesne oluşturma ve bunlara metot tanımlama yöntemleri vardır.

Basitçe tüm programlama dillerinin nesneye yönelik programlama yolları farklı olabilir. Yeni bir dil öğrenirken o dilin nesneye yönelik programlama mantığını da öğrenmeniz gereklidir.

Teşekkür ederim.
 
Son düzenleyen: Moderatör:
Bunlar yalnizca objelerin kullanimlasi, fieldlara erisim gibi seyleri acikliyor.
Bir programlama paradigmasi olarak OO nun ne oludugunu ve neden tercih edilebilecegini anlatmiyor.
Araba diye class yaratip field'larini doldurunca OO yapmis olmuyorsun.
 
Bunlar yalnizca objelerin kullanimlasi, fieldlara erisim gibi seyleri acikliyor.
Bir programlama paradigmasi olarak OO nun ne oludugunu ve neden tercih edilebilecegini anlatmiyor.
Araba diye class yaratip field'larini doldurunca OO yapmis olmuyorsun.
Fark ettiğin üzere konunun başlığı OOP nedir ? Burda amaç OOP nedir diye soranlara fikir vermek. Komple OOP'yi oturup tek seferde anlatamaz kimse.
 
İyi de, süslü parantez ile oluşturduğun bir veri dictionary ya da array olmuyor mu?

OOP deyince akla, class tanımları gelir, methodlar gelir, instancelar gelir. Be bileyim, bunu Java ile yapıyorsan polymorphism, abstrack class gibi terimler gelir.

Örnekler biraz zayıf sanki. :)

Not içerisinde de belirttiğim şekilde JS syntax'ı şeklinde yazdım. Ve yazıda da belirttim, farklı dillerdeki gösterimler farklı olabilir ve kodlar kaba kod şeklindedir.

Haklısınız fakat konuyu açma sebebim derinlemesine OOP değil de daha çok insanların OOP nedir ne değildir bir fikir edinmeleriydi. Forumda hala "Farklı diller için ayrıca nesneye yönelik programlama öğrenmeli miyim ? " gibi sorular gelince en basit şekli ile kafaları karıştırmadan OOP nedir anlatmak istedim. Eğer çok fazla istek gelirse derinlemesine konuyla ilgili yazı yazabilirim.

Teşekkür ederim. 😄
 
Çok fazla soran olmuştu. Umarım anlaşılır anlatmışımdır.

Merhabalar. Benim de bir sorunum vardı acaba yardımcı olabilir misiniz?
 

Yeni konular

Yeni mesajlar

Geri
Yukarı