Yapısal programlama 1960 yıllarında, nesne yönelimli programlama ise ilk olarak Bjarne Stroustrup tarafından C++ ile 1800lü yılların başında geliştirilmiştir. Buradan C++ dilinin, C diline göre daha üstün olduğu sonucunu çıkarmak yanlıştır. İkisinin de kullanım yerleri farklıdır ve C dili şu anda mevcut işletim sistemlerinin temelini oluşturmaktadır. Yine aynı şekilde Java’ nın C++ dilinden daha üstün olduğunu söylemekte doğru değildir.
Hergün gelişen yazılım sektöründe kodların çok karmaşık ve uzun bir hal alması, grafik ara yüzünün hayatımıza girmesi, nesne yönelimli programlama ihtiyacını doğurmuştur. Programcının işini büyük ölçüde kolaylaştıran bu teknoloji, işlemleri hızlı ve zahmetsiz bir şekilde yapılmasını sağlar. Nesne yönelimli programlama dillerinden bazıları: Ruby, C++, Java, Php, C#, ,Objective-C, Pascal, Python, VB.net …
JAVA, Pure Object Oriented (saf nesne yönelimli programlama dili) olarak tanımlanır ve Java baştan aşağı nesne yönelimli olarak inşa edilmiştir.
Bu teknoloji ile classlar içerisinde yazılmış olan kodlar, classlardan türeyen nesneler üzerinden çağırılıyor. Yani yapacağınız işi parçalara ayırarak daha kolay bir şekilde yapmanızı sağlıyor.
OOP, takım halinde bir proje geliştirmeyi de oldukça kolaylaştırmaktadır. Kısacası OOP, “karmaşıklık” sorununun çözümüdür diyebiliriz.
Bir kitabın; kapağı, sayfaları bir araya getirilerek üretilmesi gibi düşünülebilir. Nesne yönelimli programlama da nesneler birbirleriyle iletişim halindedir.
NYP’ nin 4 temel özelliği aşağıdaki gibidir. Bir dil nesne yönelimliyse bu özelliklerin tümünü sağlamak zorundadır.
1. Soyutlama (Abstraction)
Nesnelerin sadece gerekli görülen özelliklerinin kodlanması diyebiliriz. Soyutlamaya örnek olarak bir kitapevinden “Bana bir kitap verir misiniz?” demeyle “Bana X yayınının Java kitabını verir misiniz” arasındaki fark gibi düşünülebilir. Burada içeriği ne olursa olsun istenilen nesne bir kitaptır, ancak kitap nesnesi artık soyutlanmış olacaktır.
2. Sarmalama / Paketleme/Kapsülleme (Encapsulation)
Örneğin bir kitabı ele alalım. Bu kitabın kapak rengi, sayfa sayısı gibi özellikleri encapsulation olarak ifade edilir.
3. Miras Alma/Kalıtım (Inheritance)
Bu özellik nesneden nesne oluşturma gibi düşünülebilir. Yazılan kod defalarca başka bölümlerde kullanılabilir. Örneğin kitapta kâğıt, mürekkep gibi ihtiyaçlar vardır. Buradaki kâğıt ve mürekkepte birer nesnedir. Örneğin kitap sınıfına edebiyat, roman gibi değişkenler ekleyebiliriz. Buradaki edebiyat, roman gibi değişkenler kitap sınıfını miras olarak almaktadır.
4. Çok Biçimlilik (Polymorphism)
Polymorphism ile bir metodu birden fazla nesnenin kullanması sağlanmaktadır. Kitaptaki her bölümde farklı bilgiler vardır ancak okuma işlemi her sayfa için geçerlidir.