Yazılım Kavramları

Nesneye Dayalı Programlama Nedir? Nesne – Sınıf İlişkisi

Nesneye Dayalı Programlama Nedir? Programlamada en önemli kavramlardan biri olan Nesneye Yönelik Programlama konusunu, bu makalemizde kapsamlı bir şekilde ele aldık ve anlaşılır örneklerle “OOP Nedir” sorusunun cevabını vermeye çalıştık. Eğer programlama ve programlama dili üzerine bilginiz yoksa bu makaleye geçmeden önce, Programlama Nedir? Programlama Dili Nedir? makalemizi okumanızı tavsiye ederim.

Konumuza ufaktan başlarsak, OOP (Object Oriented Programming) yani Nesneye Yönelik Programlama yazılımdaki karmaşıklığa son vermek amacıyla ortaya çıkmış bir yaklaşımdır. Birde hemen belirtelim. OOP kavramı, Nesne Yönelimli, Nesne Tabanlı ve Nesneye Dayalı gibi farklı şekillerde karşınıza çıkabilir. Bunların hepsi aynı ifadelerdir. Peki bu Nesneye Dayalı Programlama Nedir? Nesne Nedir? Tam olarak mantığı ne? Hadi gelin birlikte bakalım.

Nesneye Dayalı Programlama Nedir?


Nesneye Dayalı Programlama da asıl amaç, gerçek hayatta var olan olguları programlamaya aktarma yaklaşımıdır. Bu yaklaşım temelde hiyerarşi düzenini baz alır. Bu hiyerarşiyi de sınıflar ve nesneler oluşturur.

Mesela bir proje üzerine çalışan bir ekip düşünelim. Bu ekip nesneye dayalı programlama mantığında sınıfa karşılık gelir. Bu ekipteki her bir üye ise nesneye karşılık gelir. Bu ekipteki her bir üyenin yani nesnenin, diğer nesneler ile etkileşimi ve organize çalışması sonucunda Nesneye Dayalı Programlama kavramı ortaya çıkmaktadır.

nesne-dayali-programlama-kavramlari
Nesneye Dayalı Programlama Nedir?

Yukarıdaki resimde OOP kavramıyla ilişkili yapıları görebilirsiniz. Bu kavramlardan dört tanesi Nesneye Dayalı Programlamanın temel prensiplerini oluşturmaktadır. Nesneye yönelik programlama,

  • Inheritance (Kalıtım/Miras alma)
  • Encapsulation (Kapsülleme)
  • Abstraction (Soyutlama)
  • Polymorphism (Çok Biçimlilik)

bu dört temel esastan meydana gelmektedir. Fakat Nesneye Dayalı Programlama prensiplerini daha iyi anlamak için bunlardan önce Sınıf ve Nesne kavramlarını iyi bir şekilde anlamamız gereklidir.

Bu makalemizin ardından, Nesneye Dayalı Programlama Esaslarını anlattığımız yazımıza buradan ulaşabilirsiniz.

Hadi gelin şimdi Sınıf ve Nesne kavramlarına daha yakından bakalım.

Nesneye Dayalı Programlama da Nesne Nedir?


Etrafınızda gördüğünüz her şey aslında birer nesnedir. Şuan kullandığınız bir elektronik cihaz veya çalıştığınız masa, evinizin penceresi, dışarıdaki arabalar, sokaktaki kedi vs. nesne kavramına örnektir.

Buradan da anlayacağımız üzere nesneler somut bir kavramdır aslında. Şimdilik bu bilgide aklımızın bir köşesinde dursun.

Nesnelerin önemli iki özelliği vardır. Durum ve davranış. Peki bu kavramlarla ne demek istiyoruz? Bu kavramların daha iyi anlaşılması adına yine örneklerle gideceğim.

  • Mesela bir telefon düşünelim. Bu telefonun rengi, fiyatı, markası, modeli, boyutları, işlemcisi, hafızası vs. gibi özellikleri onun durumunu belirtir. Buna attribute (özellik) de denir.
  • Yine bu telefonun çağrı yapmak, resim çekmek, ses kaydı almak, parlaklık ayarını değiştirmek gibi eylemleri ise onun davranışını belirtir. Dolayısıyla buradan şöyle bir tanım çıkartabiliriz.
Programlamada, durumu ve davranışı olan her şey bir nesnedir.

Telefon örneğimizin durumlarında belirttiğimiz özellikler, Nesneye Dayalı Programlama tarafında, değişkenler sayesinde hafızada saklanır.

  • Yani biz nesnemizin durumlarını değişkenler ile tanımlayacağız.
  • Nesneye yönelik programlama da davranışların karşılığı ise metotlardır. Yani nesnemize ait bir çeşit fonksiyon olarak da tanımlayabiliriz.

Şimdi de yine bir örnek üzerinden Sınıf ve Nesne kavramını birlikte ele alalım. Sınıf kavramını açıkladıktan sonra nesne mantığını daha iyi anlayacaksınız. Bununla birlikte Nesne – Sınıf ilişkisi mantığını da anladıktan sonra, ” Nesneye Dayalı Programlama Nedir ” sorusunun cevabını çok güzel bir şekilde verebiliyor olacağız.

Nesneye Dayalı Programlama da Sınıf Nedir?


O kadar nesne dedik, peki bu nesne dediğimiz kavram kimin adamı? Onu hiç konuşmadık. Sınıf ve nesne ilişkisini tanımlamak için etle tırnak gibiler desek, yalan olmaz. Çünkü sınıflar, az önce çokça konuştuğumuz nesnelerden oluşur. Nesnelerimizin durum ve davranışlarını sınıflar tutar.

Bu örneğimizde bir araba nesnesi üzerinden gidelim. İlk olarak bu nesnemizin durumları nelerdir, onları belirleyelim.

  • Rengi,
  • Fiyatı,
  • Markası,
  • Modeli,
  • Beygir gücü,
  • Yakıt tipi,
  • Ağırlığı

gibi özellikler araba nesnemizin durumlarını yani programlama karşılığı olarak da, nesnenin değişkenlerini temsil eder. Bu arabanın,

  • Hızlanması,
  • Yavaşlaması,
  • Vites değiştirmesi,
  • Komuta edilmesi

gibi özellikleri de araba nesnemizin davranışlarını yani nesneye dayalı programlama karşılığı olan metotlarımızı temsil eder. İşte sınıf kavramı da tam bu noktada ortaya çıkmaktadır. Bu durumlar ve davranışların beraber tutulduğu yer sınıftır.

Bu sınıfa araba sınıfı diyebiliriz ve bu araba sınıfından istediğimiz kadar araba üretebiliriz. Bu ürettiğimiz yeni nesneleri biz programlamada instance (örnek) olarak adlandırırız. Yine bu araba sınıfından oluşturduğumuz her araba nesnesinin, değerleri (rengi,modeli gibi) farklı olsa da, yukarıda yazdığımız durum ve davranışlara sahiptir.

Nesne – Sınıf İlişkisi


nesneye-yönelik-programlama-nedir
Nesneye Dayalı Programlama Nedir? Sınıf – Nesne İlişkisi

Bir sınıftan ihtiyacımız doğrultusunda istediğimiz kadar nesne üretebiliriz.

Biraz durup düşündüğünüzde, doğadaki bir çok şeyden sınıf – nesne ilişkisini içeren başka örneklerde bulabilirsiniz. Yani aslında doğada ki her şeyin bir nesne ve bu her bir nesneninde kendine ait bir sınıfı olduğunu söylememiz yanlış olmaz sanırım.

Konuyu genel bir özetleyip toplarsak;

Yani aslında sınıf, soyut bir veri tipidir. Nesne (object) ise onun somutlaşan bir varlığıdır. Sınıflarda, nesnelerde olması gereken özellikler, yani durum ve davranışlar bulundurulur. Bu sınıftan bir instance (örnek) oluşturduğumuzda ise buna nesne denir. Dolayısıyla bir sınıftan istediğimiz kadar nesne üretebiliriz.

Fakat sadece aynı sınıftan oluşturulan nesnelerin tipi aynıdır. Yani bir telefon sınıfından üretilen bir nesne ile araba sınıfından üretilen nesnenin özellikleri farklıdır.

Nesneye Dayalı Programlama Nedir ? Nesne Farklılıkları
Aynı sınıftan üretilen farklı değerlere sahip araba nesneleri

Karıştırılmaması gereken önemli bir nokta ise, aynı sınıftan üretilen nesneler aynı ortak özelliklere sahip olsalar da, bu özelliklerin değeri farklıdır. Örneğin bir insan sınıfı düşündüğümüzde, bazı insanlar zayıf bazı insanlar şişman olabilir. Yada başka bir örnek olarak yandaki araba sınıfı örneğine bakalım.

Aynı sınıftan üretilen fakat renk, marka, model ve yakıt tipleri farklı olan araba nesneleri verilmiş. Bu nesnelerin ortak özellikleri aynı olsa da, özellik değerlerinin farklı olduğunu görüyoruz. İşte nesneye dayalı programlama mantığı da, burada başlıyor aslında.

Tam da bu noktada sıradaki, Nesneye Dayalı Programlama Neden Kullanılır? Ne İşe Yarar?  adlı makalemiz, NDP kavramının ihtiyacını, daha iyi anlamanıza yardımcı olabilir.

Son olarak programlamaya yeni başlayan arkadaşlar için küçük bir tavsiye;

Nesneye dayalı programlama konusu, yeni başlayan arkadaşlar için korkutucu ve karmaşık gelmiş olabilir. Sakın bu konuda bir paniğe kapılmayın. Başlangıçta anlaması biraz güç ama zamanla programlama bilginizi ve becerinizi geliştirecek çok önemli bir konudur. Bu yüzden size tavsiyem bu konuyla alakalı bolca okuyun ve NDP yapılarını iyi kavrayın. Tabi bunun üzerine bir de yazılımcı olarak parmaklarımızı çalıştırmak gelir. Bolca uygulama ve küçük çaptada olsa NDP esaslarına uygun projeler.

Son söz olarak da konuyla alakalı anlaşılmayan bir nokta olduysa yorumlardan bize yazmayı unutmayın. Bir başka yazımızda görüşmek üzere, iyi çalışmalar.

Yazılım tasarımı yapmanın iki yolu vardır: Birinci yol yazılımda hiçbir problem olmayacak kadar basit bir tasarım yapmaktır, ikinci yöntem ise görünürde hiçbir problem olmayacak kadar karmaşık bir tasarım yapmaktır. Birinci yöntem çok daha zordur. C.A.R. Hoare

 

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Kapalı
Share via