Java’da Object Oriented Programming (Nesne Yönelimli Programlama)

Bu yazımda Java OOP (Object Oriented Programming) nedir sorusunun cevabını vereceğim. OOP konsepti programlarımız için olmazsa olmazdır. Bu yüzden yazının içeriğini anlayana kadar dikkatlice okumanızı tavsiye ederim. İşte yazının içeriği:

İçindekiler

  1. Java OOP Nedir ve Neden Kullanılır?
  2. OOP Prensipleri Nelerdir?

Java OOP Nedir ve Neden Kullanılır?

OOP (Object-Oriented Programming – Nesne Yönelimli Programlama), yazılım geliştirme sürecinde kullanılan bir programlama paradigmasıdır. OOP, karmaşık bir yazılımı daha modüler, esnek ve anlaşılır hale getirmek için kullanılır.  OOP ile yazdığımız kodları parçalara böler, istersek oluşturduğumuz nesnelere yeni özellikler ekler ve istediğimiz yerde kullanabiliriz. OOP ile daha az kod yazarak programlarımıza daha çok iş yaptırabiliriz. Günümüz programcılığının vazgeçilmezidir diyebiliriz.

Bu kısa tanımdan sonra isterseniz neden OOP kullanıyoruz sorusunun cevabını bulalım.

 Daha iyi kod organizasyonu ve sürdürülebilirlik :  OOP, büyük projeleri daha küçük, anlaşılır ve yönetilebilir parçalara böler, kodun daha kolay okunmasını ve sürdürülmesini sağlar. Bu ayrıca verilerin ve işlevlerin birlikte tutulmasını da sağlar, daha düzenli ve anlaşılır kod yazmaya yardımcı olur.

Yukarıdaki örnekde oluşturduğum Employee Class‘ında attributes olarak name ve age adlı iki değişken ve displayInformation() adında Console çıktısı almamı sağlayan bir metod oluşturdum.

Main Class‘ ımın içerisindeki main metod da ise Employee Class‘ını kullanarak employee1 adlı bir nesne oluşturdum.

Normalde programımın içerisinde yer alması gereken bazı metodlar var bunlar constructor, getter ve setter metodları.  Bunları kodumu karmaşık hale getirmemek için şu anda tanımlamadım. İlerleyen derslerde her biri için bir yazı oluşturacağım.

Konumuza dönersek setter metodu ile oluşturduğum employee1 nesnesinin name ve age özelliklerine değer atayabilirim. Ayrıca displayInformation() metodu ile bilgilerimi Console’da görebilirim. Burada dikkat etmemiz gereken nokta şu;

Employee Classı‘na ait herşeyi Main Class içerisinde de yapabilirim. Eğer herşeyi Main Class içerisinde yaparsak classımız oldukça büyük hale gelecektir. Bu programlarımızın yönetilebilirliğini zorlaştırır ve hata olasılığını artırır. Main metodun içinde ne kadar az kod olursa bizim için o kadar iyidir. Az kod içerisinde hata bulmak kolaydır ve kodumuz daha anlaşılabilir olacaktır.  

 Kodun yeniden kullanılabilirliği :  Sınıfların ve mirasın kullanılması, kodun tekrarını önler ve daha önce yazılmış kod parçalarını yeniden kullanabiliriz.

Bu kodumuz ise oldukça karışık görünüyor. Çünkü içerisinde OOP’ye ait bir çok özellik kullanılmış. Burada dikkat etmemiz gereken nokta ise şu:

Square Class‘ı Rectangle Class‘ından Inheritance (Miras) alınmış. Inheritance konusunu daha sonraki yazılarda oldukça detaylı olarak açıklayacağım. Bu aşamada bilmemiz gereken bilgi sadece şu.

Bir class Inheritance(Miras) yoluyla oluşturulmuşsa miras aldığı classın özelliklerinide alır. Eğer main metodun içerisine bakarsak bunu görebiliriz. Square Class‘ı calculateArea() metoduna sahip olmadığı halde kullanabildik. Bu yeniden kullanıma basit bir örnek.

 Esneklik ve genişletilebilirlik :  OOP, yeni özellikler eklemeyi ve var olanları değiştirmeyi kolaylaştırır. Sınıflar arasındaki ilişkileri düzenli bir şekilde yöneterek programın genişlemesini kolaylaştırır.

Yukarıdaki örnekte, Shape abstract class’ı şekillerin ortak davranışını belirlerken, Rectangle ve Circle sınıfları Shape sınıfını genişletir ve kendi şekillerine özgü alan hesaplamalarını gerçekleştirir.

Yani miras alınan Class temel özellikleri belirlerken türetilen Class’lar kendi özelliklerini ekliyor. Bu sayede yeni şekiller eklemek ve mevcutları değiştirmek kolaylaşırken, kod esnekliği ve genişletilebilirliği sağlanıyor.

OOP Prensipleri Nelerdir?

OOP prensiplerini sadece tanım olarak vereceğim. Yukarıdaki örnekleri detaylı olarak incelerseniz hepsinde OOP’ye ait prensiplerin kullanıldığını göreceksiniz. Ayrıca bu prensiplerin her biri ayrı yazıların konusu ve detaylı olarak ele alınacak. İşte OOP prensipleri:

 Nesne Tabanlılık :  OOP, gerçek dünyadaki nesneleri (objects) programlamaya yansıtır. Nesneler, verileri (öznitelikler) ve bu veriler üzerinde çalışan işlevleri (metodlar) içeren birimlerdir. Örneğin, bir Araba sınıfı oluşturarak her bir aracı bir nesne olarak temsil edebiliriz.

 Modülerlik :  OOP, kodu daha küçük ve yeniden kullanılabilir parçalara (class) ayırma yeteneği sağlar. Bu, kodun daha kolay yönetilmesini ve sürdürülmesini sağlar. Her sınıf, kendine özgü özelliklere ve davranışlara sahip olabilir ve gerektiğinde başka sınıflarla ilişkilendirilebilir. Bu modüler yaklaşım, büyük projelerdeki karmaşıklığı azaltır ve daha okunabilir, anlaşılır bir kod sağlar.

 Abstraction (Soyutlama) :  OOP, verilerin ve işlevlerin bir araya getirilerek daha yüksek seviyeli bir soyutlama sağlar. Yani, bir sınıfı diğer sınıflardan ayırırken yalnızca gerekli olan özellikler ve davranışlar üzerinde odaklanabiliriz. Örneğin, bir Çalışan sınıfı oluşturarak çalışanların ortak özelliklerini ve davranışlarını soyutlayabiliriz.

 Inheritance (Miras) :  OOP, inheritance (miras) mekanizması ile bir sınıfın diğer bir sınıftan özelliklerini ve davranışlarını devralabilmesini sağlar. Bu, kodun tekrarını önler ve kodun yeniden kullanılabilirliğini artırır. Örneğin, bir Araç sınıfı oluşturarak otomobil, kamyonet ve bisiklet gibi alt sınıfların ortak özelliklerini paylaşmasını sağlayabiliriz.

 Polymorphism (Çok Biçimlilik) :  OOP, polymorphism (çok biçimlilik) kavramıyla farklı sınıfların aynı isimli metodları farklı şekillerde uygulayabilmesine olanak sağlar. Bu, aynı kod parçasının farklı nesneler tarafından farklı şekillerde çalıştırılabilmesini sağlar. Örneğin, bir Şekil sınıfının alan hesaplaması yapabilen farklı alt sınıfları olabilir (Kare, Dikdörtgen, Üçgen gibi).

Bu yazımda Java OOP nedir sorusunun cevabını verdim. Eğer anlamadığınız bir yer olduysa yada önceki yazılardan okumadıklarınız varsa Java if else kullanımıJava OperatörlerJava Veri Tipleri yazılarını okumanızı tavsiye ederim.

Umarım sizin için faydalı bir yazı olmuştur. Bir sonraki yazımda görüşmek üzere.

Happy Coding!

Yorum Yazın