Java’da OOP (nesne yönelimli programlama), yazılım geliştirmenin temel bir parçası işlevini görmektedir. Java, C# veya C++ gibi popüler dillerde OOP kavramını sıkça duyup kullanacaksınızdır. Java’da OOP kavramı veri ve metotları içeren, nesneler kavramına dayalı programlama yöntemi olarak ifade edebiliriz. Java’da OOP yani nesneye yönelik programlamanın temel amacı programların esnekliğini, yeniden kullanılabilirliğini ve sürdürülebilirliğini sağlamaktadır. Şöyle düşünelim, OOP ile yazdığımız kodları parçalar haline böleriz, parçalar haline böldüğümüzden dolayı herhangi bir hata ile karşı karşıya kaldığımızda, veya bir veri eklemek istediğimizde bunu kolaylıkla yapabilme imkanımız olur.
Java’da OOP Nesne Yönelimli Programlamanın Bize sunduğu Avantajlar
- Yapacağımız programları, kodu baştan yazmaya başlamak zorunda kalmadan, birbiriyle iletişim kuran çalışma bağlantıları oluşturabiliriz, bu da program geliştirme süresinde zamandan tasarruf ve yüksek verimlilik gibi avantajlar sağlar.
- Çalışmamızı nesneye dayalı bir projede ayrıştırmak çok kolaydır.
- Veri gizleme ilkesi ile programın ele geçirilemeyen güvenli programlar oluşturulmasında yardımcı olur.
- Gereksiz kodları ortadan kaldırabilir ve mevcut sınıfların kullanımını genişletebiliriz.
- Birden fazla nesne örneğini herhangi bir müdahale olmaksızın bir arada var olması mümkün kılar
- Daha fazla programcı üretkenliği, daha iyi yazılım kalitesi ve daha az bakım maliyeti vaat eder.
Java OOP Kavramları:
- Encapsulation (Kapsülleme)
- Abstraction (Soyutlama)
- Polymorphism (Çok Biçimlilik)
- Inheritance (Kalıtım)
- Class (Sınıflar)
- Object (Nesneler)

- Encapsulation (Kapsülleme):
Kapsülleme; bir sınıfın, içerisindeki metot ve değişkenleri korumasıdır. Barındırdığı metot ve değişkenlere dışarıdan erişmenin tehlikeli olduğu durumlarda encapsulation (kapsülleme) kavramı kullanılır. Bir örnek ile anlatacak olursak; biz bilgisayarın açma tuşuna basarız ve bilgisayar açılır. Fakat bilgisayarı açan kişi, bilgisayar açılırken arkaplanda ne gibi işlemlerin gerçekleştiğini bilmez. Sadece o işin nasıl yapılacağını bilir. Kapsülleme bu işi yapar.
- Abstraction (Soyutlama):
Abstraction (soyutlama); kullanıcıya sadece temel ayrıntıların verildiği bir özelliktir. Bir kurutma makinesi örneği verelim, kullanıcı kurutma makinesini çalıştırmıştır ama kullanıcı sadece çalıştırmayı bilmektedir, nasıl kuruttuğu, nasıl ısındığı veya iç mekanizması hakkında bir fikri yoktur. Abstraction (soyutlama) Önemsiz veya temel olmayan birimler kullanıcıya gösterilmemesini sağlamaktadır.
- Polymorphism (Çok Biçimlilik):
Polymorhism (çok biçimlilik), yapılacak olan tek bir eylemi farklı şekillerde gerçekleştirmemizi sağlayan özelliklerden biridir. Yani bir nesnenin birden farklı nesne gibi davranmasına diyebiliriz.
- Inheritance (Kalıtım):
Kalıtım, bir sınıfın başka bir sınıftan özelliklerini miras olarak almasıdır. Gerçek hayattan bir örnek ile düşünürsek, anne ve babamızdan saç rengi, göz rengi veya boy gibi genetik özellikleri almamız gibi düşünebiliriz. Kalıtım sayesinde yazmış olduğumuz kodlarda sade ve sürekli tekrar gerektirmeden işlemler yapmamıza olanak sağlar.
- Class (Sınıflar):
Sınıfları, istediğimiz kadar nesne oluşturabileceğimiz plan şeması olarak düşünebiliriz. Sınıflarda nesnelerin özelliklerini, davranışlarını veya durumları belirlemek için kullanırız. - Object (Nesneler):
Nesneleri, sınıfların örnekleri olarak nitelendirebiliriz. Her bir nesnenin kendine ait davranışı, durumu ve kimliği vardır. Örnek olarak bir kuşu düşünelim bu kuşun rengi, boyu, göz rengi kuşun durumunu belirtir. Bu kuşun uçması veya kanatlarını çırpması onun davranışını belirtmektedir.
Çok güzel bir yazı yazmışsınız beni aydınlattıgınız için çok teşekkür ederim