Bu yazımda nesneye yönelik programlama, Bjarne Stroustrup ve James Gosling hakkında bir takım bilgiler vereceğim. Bugün kime sorsanız Steve Jobs’u tanır bugün kimin eline baksanız android yada ios işletim sistemine sahip bir telefonu kısacası akıllı bir telefonu vardır. Peki bu telefonları yapanları, satanları çok iyi tanırken arka planda bunların doğuşuna bunların oluşumuna sebep olan kişileri, yazılımları, programları tanıyor muyuz, biliyor muyuz?
Mesela James Gosling veya Bjarne Stroustrup ne kadar tanıyoruz? Eminim bir çoğunuzun tanımadığı; duymadığı isimler bunlar. İşte bizim hayatımızı değiştiren teknolojinin dahada farklı bir boyut almasını sağlayan yani “object oriented programming” dediğimiz nesneye yönelik programlamanın mucitleri.
Nesneye Yönelik Programlama Nedir
Nesneye yönelik programlama, uygulamalar geliştirmek için nesne ve bu nesneler arasında alışverişi kullanan bir yazılımdır.
Temelleri 1960’lı yıllara dayanan nesneye yönelik programlama o dönem donanımla beraber uygulamalar daha karmaşık bir hal aldı ve bu neticede araştırmacılar bilgisayar programlarının sürekliliğinin ve kalitesinin nasıl arttıracağını, Geliştireceğini Araştırmaya başladılar ve bu araştırmalar sonucunda NESNEYE YÖNELİK PROGRAMLAMA ortaya çıktı.
Nesneye yönelik programlama; birbiriyle ortaklaşa çalışan nesneler koleksiyonu diye adlandırılabilir. Nesneler aralarında mesaj alışverişi yapan ve belirlenen görevleri yerine getiren küçük makinalar olarak da düşünülebilir.
- Katılım
- Modülerlik
- Çok Biçimlilik
- Kapsülleme
- Sınıflar
Temel olarak bu bölümleri bulundurur ve diğer dillerden ayıran özellikler de burada yatar.
Modülerlik: Kompleks ve Büyük bir problemin uygulama esnasında Küçük küçük parçalara ayrılarak çözümlenmesine denilebilir.
Sınıflar: Nesneye yönelik programlamadaki yapıyı ve modülerliği sağlayan türlerdir.
Bunu bir örnek ile açıklayacak olursak örneğin; insanlar diye bir sınıf oluşturduğumuzda siz bu sınıfın bir parçasısınız alt bir sınıf olarak canlılar sınıfının bir alt sınıfıdır insanlar.
Bir nesne bir sınıfta tanımlanan özellik ve davranışlara sahipse o sınıfa aittir.
Katılım: Bir sınıfa ait özellikler ve işlemlerin yeni bir sınıfa birebir aktarılmasıdır. Yeni sınıf eski sınıfın özellikleri ve işlemlerine sahip olmasına ek olarak kendisi de özellikler ve işlemler tanımlayabilir.
Çok Biçimlilik: Nesneye yönelik programlamada oluşturulan nesnelerin gerektiğinde başka bir nesne gibi davranabilmesi diyebiliriz. Çok biçimlilikle programdaki her nesne kendi davranışını değiştirmeden, kalıtım hiyerarşisine göre farklı biçimlerde görülebilir.
Kapsülleme: Nesneye yönelik programlamada herhangi bir nesnenin metotlarını, verilerini ve değişkenlerini diğer nesnelerden saklayarak ve bunlara erişimini sınırlandırarak yanlış kullanımlarını karşı koruyan bir konsep diyebiliriz. Bu konsepti 3 aşamalı olarak sınırlandırabiliriz.
- Public (açık): Metotlara ve verilere her nesneden erişebiliriz.
- Private (özel): Sadece metodun tanımlandığı sınıftan örneklendirilmiş nesnelerle ulaşabiliriz.
- Protected (korumalı): Sadece metodun tanımlandığı sınıftan örneklendirilmiş nesnelerle ulaşabiliriz ve bu sınıftan türetilmiş alt nesnelerinden ulaşabiliriz.
Ve gelelim bu alanda çığır açmış günümüzde kullanımı halen popüler olan JAVA ve C++ yaratıcılarına;
Bjarne Stroustrup: C++ yaratıcısıdır nesneye yönelik programlamada ilk ve başarılı bir programlama dili yapmıştır.
Yazdığı “The C++ Programming Language” kitabı 19’dan fazla dile çevrilmiştir. Bu nesneye yönelik programlama dili diğer programlama dilleri gibi kodlama ve kullanıldığı platform üzerinde çalışıyordu.
James Gosling: Sun Microsystems mühendislerinden biridir. 23 Mayıs 1995’te piyasaya sürülen açık kaynak kodlu nesneye yönelik olan JAVA dilinin yaratıcısıdır. JAVA, platformdan bağımsız çalışma gereksiniminden ortaya çıkmıştır.
Yani JAVA’dan önceki dillerle yazılmış programlar sadece yazıldığı platformda çalışıyordu ve JAVA’nın bu dillere nazaran en büyük avantajı ise sadece yazıldığı değil bütün platformlarda çalışabilir olması idi. Örneğin JAVA ile Windows’ta yaptığınız programı aynı zamanda LİNUX’tada çalıştırabiliyorsunuz. JAVA birçok özelliğini C ve C++ dillerinden almıştır. Nesneye Yönelik Programlamada C++ yakındır, Sözdizim (syntax) olarakda C yakın bir dildir tabi JAVA’yı bu dillerden ayıran en büyük özellik dediğimiz gibi programlandığı platform ve diğer tüm platformlarda çalışabilmesi.
İşte günümüz teknolojisi özellikle telefon ve hayatımızın vazgeçilmezi olan diğer teknolojilerin ilerlemesi ve gelişmesine büyük katkıları olan iki büyük mimar James Gosling ve Bjarne Stroustrup.