Nesne Tabanlı Programlama(OOP) Nedir?
Konuya başlamadan önce bilmeniz gereken bunun bir yazı serisi olacağıdır. Nesne Tabanlı Programlamanın tamamını birkaç makalede verilemeyeceği için bu konuları bölerek yazmaya devam edeceğim. İlk olarak Nesne Tabanlı Programlamanın temellerini anlattıktan sonra daha sonra Design Patterns(Tasarım Desenleri) konusuna değineceğim.
Nesne Tabanlı Programlama(OOP)
Temelde OOP belirli bir problemin çözüm adımlarını parçalara bölerek bunları objeler haline dönüştürmektir. Buradaki temel amaç ileriki zamanlarda aynı problem ile karşılaşıldığında bu objelerin kullanılması. Tabii çözümü bir bütün olarak değil de bir parçalar olarak ele alındığından dolayı müdahalesi ve değişimi de daha hızlı olmaktadır. Örnek vermemiz gerekirse günümüz fabrikasyon üretimleri örnek olabilir.
Mesela bir araba üreticisinin yeni bir araba serisi üretmek istediğini düşünün. Bu araba serisinin belirli özellikleri olduğu gibi birbirinden farklı özellikleri de olacaktır. Yapılacak araba serisi: A10, A11, A12 diye adlandırıldığını farz edelim. Her üç araba serisi içinde klima, merkezi kilit, müzik sistemi olacaktır. A11 serisinde ekstra olarak yol bilgisayarı, yağmur sensörü olacaktır. A12 serisinde ise yol bilgisayarı, yağmur sensörü, hava yastığı, sesli kontrol sistemi yer alıyor.
Her üç araba serisi içinde kullanılan ortak materyaller klima, merkezi kilit, müzik sistemi, camlar, kapılar, farlar, direksiyon, vb materyallerdir. Firma bu materyallerin tasarımı ve üretimini bir sefer yapmaktadır. Ama aynı materyalleri üç farklı araba serisinde kullanmaktadır. OOP’deki ana mantık da budur. Problemimiz araba yapmaktır, problemin çözümü için gerekli olan yol belirlenir. Daha sonra bu çözüm yolu parçalara bölünür. Bütün parçalar birer objedir. Ve objeler birleşimi problemin çözümüdür.
OOP’nin Ortaya Çıkışı ve Faydaları
OOP aslında bir mecburiyetten ortaya çıkmıştır. OOP nin en büyük avantajı büyük çaplı projelerdeki zaman ve para kaybını önlemesidir. 1960 ların sonuna doğru programların git gide büyümesi ve programlardaki değişikliklerin çok uzun zaman alması ve maliyetinin yüksek olması ile ortaya çıkmış bir programlama yaklaşımıdır. Prosedürel Programlama (sınıf yapısı olmadan, Örn: Timelinde sınıf yapısı olmadan programlamak) ile kodlanan yazılımlardaki değişiklikler çok uzun zaman alır. Mesela değiştirmek istediğiniz bir işlev için binlerce satır kod arasına girip saatlerce belki günlerce uğraşmanız gerekmektedir. OOP de ise bu mantık farklıdır. Değiştirmek istediğiniz işlevi sınıf yapısı içerisinde değiştirip hemen güncelleyebilirsiniz. Bu hem kodların daha derli toplu olmasını sağlar. Hem yapılacak olan değişiklikler için zaman kaybı olmaz ve maliyeti düşürür. Ayrıca yazılan sınıf yapılarını tekrar tekrar kullanabilirsiniz. Yani bir proje içerisinde yer alan sınıf yapısını farklı bir projede kullanabilirsiniz.
OOP’nin Kullanımı
OOP yi kullanmadaki temel amaç iş gücünü düşürtmek ve aynı işlemleri tekrar tekrar yapmamaktır. Diyelim ki sıklıkla kullandığınız bir animasyonun temel işlevlerini bir sınıf haline dönüştürmek istiyorsunuz. Böylece her seferinde aynı kodları yazmak zorunda kalmadan sorununuzu çözmüş olursunuz. Mutlaka ki 2,3 satır beklide daha fazla satır kodu yapmak istediğiniz işlem için kullanacaksınız. Ama her zaman yapılan temel kodlamayı yapmadan işin içinden çıkabilirsiniz. Tabii burada şu fikride iyi anlamanız gerekmektedir. Sırf şaşalı olsun diye de her zaman sınıf yapılarını kullanmak mantıklı değildir. Yani sadece bir sefer yapacağınız bir işlem için oturup sınıflar yazmanızın bir anlamı yoktur. Çünkü işlemi sadece bir sefer yapıyorsunuzdur. Ama diyelim ki yapacağınız bir uygulamada sadece bazı bölümleri sürekli olarak kullanabilirsiniz. Mesela animasyon veya arka planın yapımı, veri tabanı ile iletişimi gibi işlemleri sürekli kullanabilirsiniz. Böyle bir durumda yapmanız gereken ihtiyacınız olan sınıf yapısını bir sefer oluşturup sürekli olarak kullanmaktır.
Aradaki karar sürecini düzenli ve saplıklı bir şekilde yaparsanız bu hem sizin gelişiminizde hem de çalışma zamanınızda çok büyük değişiklikler yapacaktır.
Kapanış
Nesne Yönelimli Programlama (Object Oriented Programming) önce ne yapacağınıza karar veririsiniz sonra bunları oluşturmaya başlarsınız. Her bir parça ayrı ayrı sınıf (class) yapılarından oluşur. Bu yapılara istediğiniz zaman müdahale edebilir istediğiniz zaman değiştirebilirsiniz. Tabii bu yapıları farklı projeler için kullanabilirisiniz. Buradaki ana mantık bir sefer oluşturduğunuz sınıfı farklı projelerde kullanabilmenizdir. Tabii zaman ve maliyette düşmektedir.
Bir sonraki makalede Prosedürel Programlamadan, Nesne Tabanlı Programlamaya geçiş konusuna değineceğim.
Kolay Gelsin
Engin!
2 Responses to “Nesne Tabanlı Programlama(OOP) Nedir?”
Leave a Reply


Müthis aciklamissin kardesim, tesekkürlerimi sunarim.
Bu yazidan anladigim sudur;
Nesneler ana Siniflardan peydahlanir ve gereksinimlerine göre ait olduklari siniflarda sadece düzenleme yapilir ve bu düzenlemeler sadece onu o anda temsil eden nesnelerin ciktilarini degistirir ve diger anladigim ise nesnelerim ayni cözüm programi icinde benzer ama farkli ciktlar göstermesi gerektiriyorsa yani sürekli degisecekse kendime ana sinifi kopyalarim ve gereksinimlerim dahilinde yeni siniflar olusturur ve nesneleri bunlara yönlendiririm ederim. tabiiki bu dedigim ayni programda gereksinimi olan nesnecikler icin gecerli.
yukaridaki(asagidakidesek daha mantikli olour)yazima eklentidir.
Burada demek istedigim yani senin dedigin örnege bagli kalirsam, ayni model üretilen arabam var ve bunun icin Kapisi icin bir sinifim var ama arabanin sag kapisi mavi sol kapisi yesil olsun diyorsam nerdeyse esdeger kodlara ait iki sinif kopyalarim ve nesnelerimi bu farkli renkleri disinda esdeger olan farkli siniflara baglarim.