Nesne Yönelimli Programlama Temelleri

0
313

Nesne yönelimli programlama, yazılım dünyasında artan ihtiyaçlar doğrultusunda geliştirilmiş tekniklerden oluşmaktadır. Bu teknikler sayesinde karmaşık programlar daha düzenli kod satırlarına sahip olmaktadır. Gerçek dünyadaki nesneler ve aralarındaki ilişki baz alınarak oluşturulan bu teknikler programcılara ‘yeniden kullanılabilir’ ve ‘geliştirebilir’ kodlar ile kolaylık ve zamandan tasarruf sağlamaktadır.

Bir programlama dilinin nesne yönelimli bir dil olabilmesi için 4 temel özelliği taşıması gerekmektedir. Bu özellikler:

1) Abstraction (Soyutlama)
2) Encapsulation (Sarmalama)
3) Inheritance (Kalıtım)
4) Polymorphism (Çok Biçimlilik)

1) Abstraction (Soyutlama)

Bir kavramın bilgi içeriğini azaltma veya indirgeme süreci soyutlamadır. Başka bir deyişle, bir nesneyi bazı karakteristikleri olan bir veri tipi olarak genelleştirme sürecidir. Nesne denilen şey gerçek dünyadaki varlıklara tekabül eder. Mesela kitap bir nesnedir. Bu nesnenin yani kitabın ayırt edici özellikleri:

Sayfa sayısı
Yazarı
Türü
Yani bu özellikler kitabı tanımlarken aklımıza gelen özelliklerdir. Nesnenin özelikleri, karakteristikleri ve yapılabileceği eylemler ise metot adını alır. Soyutlama sonucunda nesne, özellikleri ve metotları ile temsil edilebilmektedir.

Nesne yönelimli programlama dilleri, soyutlamayı sınıf (class) yapısıyla gerçekleştirir. Sınıf yapısı içinde o nesneye ait özellikler ve metotlar tanımlanabilir. Örneğin nesne insan olsaydı, metotlar; konuşma, yürüme vb. gibi metotlar olurdu.

Nesne yönelimli programlamada soyutlama, nesnelerin gerekli özelliklerinin kodlanıp, gereksiz özelliklerinin kodlanmaması ile sağlanabilir.

2) Encapsulation (Sarmalama)

Nesne, bu nesneye ait özellikler ve metotlardan oluşur. Programda sınıfı oluşturan (sınıfın içerisinde yer alan) metot ve özelliklerin gerçekleşme biçiminin bu sınıfı kullanan kişilerden gizlenmiş olması encapsulation ile sağlanır. Yani programdaki kodları dışarıdan yapılabilecek müdahalelere karşı koruyan bir sistemdir encapsulation.

Bir nesneye ait özellikler ve metotlar sadece içinde tanımlı olduğu nesne tarafından veya dışarıdan erişilecek şekilde tanımlanabilir. Nesne içindeki özel kod ya da verilere sadece nesne tarafından erişilebilir. Nesne dışında kalan kodlar nesne içindeki verilere erişemezler. Erişebilmeleri için nesne içindeki kodların herkese açık olarak tanımlanması gerekir. Buna Access Modifiers (erişim belirleyicileri) denir.

Encapsulation, bir sınıf içerisinde yer alan nesneye ait özellik ve metotları korur yani bunlara erişebilme durumunu belirler. Erişim belirleyicilerin özellikleri aşağıdaki gibidir.

Private: Sadece sınıfa özel elemanlardır. Sınıfta yer alan elemanlar tarafından erişim sağlanabilir.
Public: Program içinde yer alan sınıf dışındaki tüm kodlar tarafından erişim sağlanabilir.
Protected: Bu sınıftan türetilen sınıf ve aynı pakette olanlara açık olan elemanlardır.
Default: Herhangi bir tanımlama yapılmazsa, aynı pakettekilerin erişebildiği elemanlardır.

4) Inheritance (Kalıtım)

Nesne yönelimli programlamada bir sınıftan başka sınıflar türetilebilir. Türetilen sınıf/sınıflar alt sınıf (subclasses) olurken, kendisinden alt sınıf türetilen sınıfa temel sınıf (base class), süper sınıf (super class) veya ana sınıf (parent class) adı verilir.

Alt sınıfın nesneleri türetildikleri ana sınıfa ait özellikleri alıyorsa bu da kalıtım (inheritance) özelliğidir. Bu sayede alt sınıflar ana sınıfın özelliklerini ve metotlarını aynen alırlar.

4) Polymorphism (Çok Biçimlilik)

Çok biçimlilik, farklı nesnelerin aynı isimdeki kendi metotlarını devreye sokarak bir önceki metodu ezme özelliğidir. Örneğin Alan isimli bir ana sınıfımız olsun. Ucgen, Kare isimli iki alt sınıfımız olsun. Bu alt sınıfların her biri alan hesabı yapan AlanBul adlı bir metoda sahip olsun. Ucgen alt sınıfındaki AlanBul metodu üçgenin alanını hesaplayan kodları içerir. Kare alt sınıfındaki AlanBul metodu ise karenin alanını hesaplayan kodları içerir. Yalnız dikkat edelim bu iki alt sınıfın da metotlarının adı AlanBul. Şimdi bu metotları kullandığımızda Ucgen alt sınıfındaki AlanBul metodu çalıştığında üçgen alanı hesaplanabilecek. Kare alt sınıfındaki AlanBul metodu çalıştığında ise karenin alanı hesaplanabilecek. İşte, her bir alt sınıf için bu sınıfa ait metot da aynı olmasına karşın, her alt sınıfa ait nesne farklı bir alan hesabı yapacaktır. Bu nesne yönelimli programlamanın çok biçimlilik özelliğidir.

Kaynaklar

  • https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/nesne-ve-nesne-yonelimli-programlama-teorisinin-4-temel-ozelligi
  • http://www.bilgigunlugum.net/
  • http://turgayozgur.com/oop-1-nesneye-yonelik-programlamaya-baslangic.html
  • http://www.bilisimogretmeni.com/wp-content/uploads/NesneYonelimliProgramlamaTemelleri.pdf

Henüz Yorum Yok

CEVAPLA