Teknik insanların önemli bir kısmı bu gerçeği kaçırsa da bilgisayar bilimleri, pek çok yönü ile hayatın ve özellikle beynin düşünsel fonksiyonlarının, yaşamı algılayışının bir modelidir. Dolayısıyla; bilgisayar ile bir bilim olarak derinleşmek hayatı daha sistematik olarak değerlendirmek, analitiğini görebilmek fırsatını verir insana. Bu önermenin tersi de önemlidir: Bilgisayar bilimlerinin karmaşık gibi görünen dehlizlerle dolu yollarında, güncel yaşamdan örnekler alarak benzetimlerde bulunmak, çoğu kez sorunu çözücü, anlaşılmazı anlaşılır kılmaya yeter. Tıpkı nesneye yönelik tasarıma ve programlamaya nereden gelindiğini anlarken kullanacağımız yöntem gibi:
Yaşama biraz daha alıcı gözle baktığımızda, algı sınırlarımızla çevrelenmiş bu dünyanın, her biri kendince anlamlı, sayısız varlıktan oluşma bir yapboz olduğunu düşündürecek yeterince bulguya erişiriz. İşe başlıyoruz:
Coğrafi olarak söylersek; dünya, kıtalar, ülkeler, şehirler, ilçeler, mahalleler, sokaklar, binalar, daireler...
Biyolojik olarak söylersek; canlı, familya, cins, beden, organ, hücre...
Dikkat ederseniz; sağdan sola doğru gidildikçe bir bütün oluşuyor. O halde her maddenin atomdan oluştuğu gibi, her varlığın alt varlıklardan oluşması, akla yatkın gözüküyor.
Bir evi örnek alın ve isim tamlamaları türetin: evin penceresi, evin kapısının kulpu, evin ocağının bacasının dumanı...
Bu örneklerin akıl almaz kombinasyonlarla çoğaltabileceğimiz gerçeği, yaşamın ne denli zengin bir varlıklar (nesneler) kümesi olduğunu ortaya koyuyor. Ve biraz daha derin bir analizde şunun da farkına varmak mümkündürki; nesnelerin yaşam uzayı içindeki rolünü ve önemini belirleyen temel faktörlerden birisi de diğer nesnelerle kurduğu ilişkilerdir. Sosyal ağ kavramının da çıkış noktası burasıdır. Diğer bir ifadeyle karmakarışık bir ağın parçalarıyız, diğer tüm varlıklar gibi ve sürekli olarak diğer varlıklarla (nesnelerle) etkileşim halindeyiz ki yaşam bu demek.
Daha da teknik ifadeyle; kendimiz de dahil olmak üzere tüm canlı ve cansız hayat yapı taşları, hayat denen çizgenin (grafın) düğümleriyiz. Birbirimizle olan ilişkiyi gösteren, belki de sonsuz sayıda kenar ile birbirimize bağlıyız. Bu karman çorman ağın bir parçası olmaktır, yaşamak.
Bu kadar bilişim felsefesinden sonra, bir soru geliyor akla: Bir nesneyi diğerlerinden ayırmak, onunla iletişim kurmak ve onu yönetebilmek için bazı özel tanımlara ihtiyacımız yok mu? Elbette! Yaşamı iyi gözlemleyenler -ki iyi bilim insanı olmak, bu demektir- nesnelerlr ilgili bu tanımları üç kategoride toplamışlar:
1- Bu nesnenin nicel özellikleri (Boyu posu, rengi, tadı, ağırlığı, şekli şimali vb.) [özellik, attribute]
2- Her varlık gibi bu nesnenin de başına gelebilecek haller (kırılma, çarpma, düşme, yürüme, patlama, ölme vb.) [olay, event]
3- Bu nesneye iletişime geçilerek yaptırılabilecek eylemler (bağır, yaz, koş, göster, sus, ye, kapat, azalt vb.) [metod, method]
İşte bu tespit üzerine modellenmiş ve kurgulanmış bir yapıdır, nesneye yönelik tasarım ve programlama: Daha gerçeğe yakındır, bir orkestra şefi olduğu hissini verir tasarımcısına. Yine canlılar dünyasında olduğu gibi bazı özellikler kalıtsal olabilir yani; genetik yolla kendinden türeyen diğer canlılara geçebilir. [kalıtım, inheritance] Yine canlılar dünyasında olduğu gibi; kalıtım yoluyla geçen özelliklerden bazıları mutasyona uğrayarak değişebilir [çok biçimlilik, polymorphism] , atasında olmayan yeni özellikler kazanabilir [üzerine yazma, overriding]. Hatta bir bukalemunun renk değiştirerek kendini gizlemesi gibi bazı özelliklerin bazı kimselere görünür bazılarına görünür olmamasını tercih gibi güvenlik amaçlı davranışlar da olabilir canlılar dünyasında. [sarmalama, encapsulation] Ve nihayet soyut kavramlar da vardır yaşamın içinde; duyu organlarımızla algılayamayız belki ama var olduğunu biliriz. [soyut, abstract]...
Bir kapı:
Özellikleri var; rengi kırmızı, boyu 2 metre, cinsi tokmaklı, durumu açık...
Olayları var, başına gelen; açılır, kapanır, çalınır, kırılır...
Metodları var, yapmasını istediğimiz; açıl, kapan, dur, devril...
Bu kapıdan bir başka yavru doğabilir, o da kapı lakin bir özellik eklenerek mutasyona uğratılmış, o bir "camlı" kapı. Bir diğer çocuğu da "sürgülü kapı". İşte size çok biçimlilik.
Bu kapının kilidi var, öyle herkese açılmaz. Kimisine kilitli görünür kimisine açık. Sarılıp "sarmalanmıştır" bir güzel...
Ne kadar renkli bir yaşam değil mi? İşte o rengi kaçırmamak adına, insanoğlunun en iyi yaptığı iş yapılarak yaşam taklit edilmiş; kuşların kanatları uçaklara, köstebeğin tırnakları iş makinesinin kepçesine nasıl takıldıysa gerçek yaşamın nesneler analitiği de yazılım dünyasına kurgulanarak, "nesneye dayalılık" konsepti geliştirilmiştir. Önceki yaklaşım olan "yapısal programlama" gibi makine sistematiğine göre değil, nesnelere parçalanmış gerçek bir yaşamın düzenine göre davranır. Yazılımcının kendisini başrollerde çeşitli nesnelerin oynadığı bir filmin yönetmeniymiş gibi hissetmesi, bundandır ki doğaldır.
Bir başka önemli nokta: Burada anlatılanlar sanki meslektaşlarımla ve programcılarla ilgili gibi düşünülebilir ama aslında her meslek kesiminde karşılaşılan bir olgudur nesneler. Çünkü hayat o nesnelerin etkileşiminden ibarettir. Umuyorum farklı alandaki kişilere de nesnelerin sistematiği açısından fikir verir, yazdıklarım.
İşten Cemce bir nesne tabanlı yaşam tarifi. Onu lezzetli bir yemeğe dönüştürmek ise sizin maharetinizle mümkün.