bir yazılım terimidir. nesne yönelimli (object oriented) bir dilin ne kadar nesne yönelimli olduğunu belirtir. türkçe'ye mesela "tamamıyla nesne yönelimli" şeklinde çevrilebilir.
ne demek "tamamıyla"? yani bu işin nesneye "accık yöneleni", "yekten
* yöneleni" diye bir ayrımı mı var?
evet var:
herşeyden önce: pure object oriented (
oo) diller (en babası
smalltalk, sonra
ruby) bütün işi nesneler üzerinden yürütürler. diyelim ki toplama işlemi yapacaksınız.. bu dillerde
int gibi ilkel (
primitive) veri tipleri bulunmaz. bu dillerin böyle ilkel şeylerle işi olmaz. onlar için integer bir nesnedir ve kendine ait metodları vardır. bir integer nesnesine + mesajını ve başka bir nesneyi gönderirsiniz sonuçtaki toplam verisini de başka bir nesne olarak alırsınız. hemen bir örnek:
a:=1
b:= a + 1
gibi bir şey yazarsanız bunun meali şöyle olur:
sevgili a nesnesi,
sana ":=" mesajını ve "1" nesnesini gönderiyorum. sen bunlarla ne yapacağını biliyorsun.
daha sonra sana "+" mesajını ve 1 nesnesini gönderiyorum. bunu işleyip yanıtını bana gönderiver.
ve sen sevgili b nesnesi, sana da ":=" mesajını ve a'dan az önce aldığım yanıtı gönderiyorum. sen de bunu nasıl işleyeceğini biliyorsun.
sonra, bu tür dillerde procedural programming çağından kalma bakış açıları
* bulunmaz. ortalıkta
static metodlar dolaşmaz.
constructor'lar yoktur. çalışma sıraları önceden belirlenmiş olan fonksiyonlar yoktur, gerektiği zaman iletilmek üzere tasarlanmış mesajlar vardır. yine bir örnek:
15 factorial (15 nesnesine factorial mesajını gönderen koddur bu)
madalyonun diğer yüzündeki bazı oo programlama dilleri ise, nesneye yönelmiş olmalarına rağmen temelde önemli işlerini nesne kullanmayan yöntemlerle hallederler. misal:
java ya da
c++ programları başlarken static bir main fonksiyonuna ihtiyaç duyarlar. içlerinde
int,
bool,
byte gibi primitive type'lar vardır.
herşeye nesne kullanmanın idealiziminden vazgeçmişlerdir, haindirler, dönektirler ama bunun karşılığında hız kazanmışlardır, çalışırken performansları yüksektir.