Nesne Yönelimli Programlama Nedir
Bilgisayar mühendisliği 1.sınıfı bitirmiş bir öğrenci yoğun bir şekilde C programlama dili ile meşgul olmuştur. Dolayısıyla nesne yönelimli ifadesine bir hayli yabancı olması pek muhtemeldir. Bu yazı yeni nesil bilgisayar mühendisliği öğrencilerine ve meraklı kimselere yöneliktir.





C diline aşina olduğunuzu varsayarak çıkış noktasını C dili olarak belirleyeceğim. Bildiğiniz üzere C dilinde bir işi sadece main()'de yapabildiğimiz gibi o işi bölümlendirip çeşitli sayıda fonksiyonlara dağıtarak da yapabilmekteyiz. Fark ettiyseniz C'de sürekli fonksiyon yazarız. Hatta farkında mısınız bilmem ama main() de bir fonksiyondur. Nesne yönelimli bir dil olan Java'da ise işler biraz daha farklıdır. Nesne yönelimli derken kasıt şudur: Fonksiyon yönelimli değil, nesne yönelimli. Diğer bir ifadeyle eylem yönelimli değil, nesne yönelimli. Peki nesne yönelimli ne demektir? Bunu bir benzetme(analoji) ile açıklayıp birazcık teknik detay vereceğim. Düşünün ki bir uçak kokpitindesiniz ve bir pilotsunuz. Yıllardan ise 1998. Sizce sizin kumanda edeceğiniz uçağın kokpitinde mesul olduğunuz kaç düğme vardır? Bir sürü değil mi? İşte 98'li yıllardaki uçak kokpiti eylem yönelimli bir kokpittir. Nesne yönelimli bir kokpit nasıldır sizce? Günümüze gelelim. 2014 yılında bir uçağın kokpitinde oturan bir pilotsunuz. Kokpit geçmiş yıllara göre gayet akıllıca tasarlanmış. Çünkü eskiden bir işi yapmak için 10 düğmeyle uğraşırken şimdi bir dokunmatik panel ile aynı işi pratik şekilde yapabiliyorsunuz. Aynı zamanda eskisi gibi etraf düğmeden geçilmiyor değil. Daha sistematik bir düğme azaltmasına gidilmiş ve bu azaltma çeşitli araçlara daha fazla fonksiyonellik katılarak karşılanmış. İşte günümüzün tasarımı, günümüzün dili. Nesne yönelimli programlama.

Peki nesne ne demektir? Nesne objedir. Masadır. Sandalyedir. İnsandır. Radyodur. Arabadır. Nesneler dünyasında yaşıyoruz. Gerçek dünyada nesneler ve bu nesnelerin özellikleri, davranışları yer alır. Mesela araba nesnesinin renk, ağırlık, model,... gibi özellikleri vardır. Nesnenin gaz, fren gibi bazı fonksiyonları vardır. Bu araba nesnesini ilerletmek için nesnenin kendisinde olan gaz fonksiyonuna basarız. Nesneyi boyatarak nesnenin kendisinde olan renk özelliğini değiştirmiş oluruz. İşte bu mantık nesne yönelimli programlamada kodlamaya tıpkı bu şekilde yansımıştır.





Nesne yönelimli programlamada sınıflar(class'lar), nesne üretmek için bizim "mimari kağıdımızdır". İngilizcede blueprint derler. Yani hani görmüşsünüzdür: Bir bina yapacak inşaat mühendisleri masaya rulo halindeki bir mavi kağıdı açarlar. Planları incelerler. İşte class'da budur. Bu blueprint'ten bir nesne, mesela araba ya da bina oluşturulacaktır. Sınıf ve nesne arasındaki ilişki de budur.

Sıra teknik detay vermeye geldi. C dilinde ve Java dilinde "Hello World!" programının kodları aşağıda verilmiştir.

C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Hello world!n");
    return 0;
}


Java:
public class IlkDeneme {

    public static void main(String[] args) {
        System.out.println("Hello World");
    }
    
}


C dilinde bildiğiniz üzere struct blokları vardır. C'nin struct'ı Java'nın class'ına benzer. Ayrıştıkları nokta struct, üye olarak sadece değişken alırken fonksiyon al(a)maz. Class ise değişken gibi fonksiyon(method) da alır. C'de nasıl struct'tan bir değişken türetiyorsak Java'da da sınıftan nesne türetilir. Nesne yönelimli programlamanın sihri sınıflar ve onlardan türetilen nesnelerdir. Bu temel alındığı için büyük projelerde projenin sürdürülebilirliği kat be kat daha iyi olmaktadır. Halbuki c ile büyük bir projeye girişilse zamanla gelişen programın okunurluğu dibi boylayacağı gibi, sürdürülebilirliği gün geçtikçe kan kaybedecektir. Dolayısıyla nesne yönelimli programlama büyük projeler için daha iyidir.

Yararlanılan Kaynak: C How To Program - Deitel
Bu yazı 24.11.2014 tarihinde, saat 00:30:34'de yazılmıştır. 01.11.2018 tarihi ve 07:37:19 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 3675
Yorumlar
fakyr gun
üstad yine döktürmüş
Bu yorum 11.07.2016 tarihinde, saat 16:14:09'de gönderilmiştir.
ruger manson
Ve yine Harika bir yazı Ellerin dert görmesin.
Bu yorum 22.04.2017 tarihinde, saat 16:05:47'de gönderilmiştir.
önemsiz
Yahu ben şimdi c öğreniyordum nasıl devam edeyim soğudum C'den :)
Bu yorum 22.01.2018 tarihinde, saat 14:34:56'de gönderilmiştir.
Hasan Fatih ŞİMŞEK
@önemsiz C'den soğuman kesinlikle doğru değil. Doğru, nesne yönelimli programlama daha konforlu, fakat bize okullarda öğretilmese de şu an kullandığın işletim sistemleri (Windows & MacOS & Linux) C'de yazılmış işletim sistemleridir. Eğer işletim sistemi çekirdeği yazmak gibi bir idealin varsa ya da Pardus gibi özelleştirilmiş milli linux işletim sistemine driver'lar, modüller yazmak istersen (geliştiricisi olmak istersen) C dilinden sakın soğuma. Bilakis C'ye yönel. Nesne yönelimli programlama çok daha konforludur. Ancak performans açısından C'ye göre daha yavaş çalışır. İşletim sistemleri ise çapları gereği devasa yazılımlar olduklarından performansın düşmemesi için C dilini halen tercih etmektedirler. Ancak işletim sistemi içerisinde çalışacak bir yazılım için nesne yönelimli programlama kullanmak daha akıl karıdır. Geliştiricilere esneklik, sürdürebilirlik kolaylığı ve zaman tasarrufu sağlar. Ayrintili bilgi icin bkz. a) https://stackoverflow.com/questions/580292/what-languages-are-windows-mac-os-x-and-linux-written-in , b) https://www.quora.com/Does-Java-run-faster-than-C-and-C++-today
Bu yorum 16.01.2019 tarihinde, saat 15:39:05'de gönderilmiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :