avatar
Today is Cumartesi
04 Eylül 2010

Arama Sonuçları Etiket: nesneye yönelik programlama

09 Temmuz 2009

Java’ya Giriş-2 Nesneye Yönelik Programlama

yapan Yavuz Selim Bilgin — Kategoriler: Java — Etiketler:, , , Yorum yapılmamış

Eğer daha önce nesneye yönelik bir programlama dili ile çalışmadıysanız ilk bakışta Java’yı anlamanız zor olabilir. Bu yazımızda OOP(Object Oriented Programming-Nesneye Yönelik Programlama) kavramını irdeleyeceğiz.

Nesne nedir?

Nesnenin anlamı aslında günlük hayatta kullandığımızdan pek farklı değil. Nasıl bir masa, sandalye, dolap, araba nesneyse, nesneye yönelik dillerdeki nesneler de bunlara benzer.

Peki, neden nesne? Java dokümantasyonunda bunun için 4 sebep belirtilmiş.

  1. 1. Modülerlik:

Bir nesnenin kaynak kodu diğer nesnelerden ve programdan bağımsız olarak yazılabilir, değiştirilebilir. Mesela matematikle ilgili bir programda dört işlemi yapan bir nesnenin içine kök alma, logaritma gibi özellikleri eklememiz için tüm programın kodunu değiştirmemiz gerekmez. Sadece o nesneyi değiştirerek işimizi halledebiliriz.

  1. 2. Bilgi Saklama:

Dış dünya bir nesnenin sadece metotlarına erişebilir. Böylelikle kendi iç uygulama detayları gizli kalır.

  1. 3. Kodu Tekrar Kullanabilme:

Eğer bir nesne daha önceden siz veya başka bir geliştirici tarafından yazılmışsa siz bunu diğer uygulamalarınızda da kullanabilirsiniz. Sürekli aynı metotları kullanıyorsanız farklı programlarda bunları bir sınıf içinde toplayıp tekrar kullanabilir veya bunları satarak ticari gelir elde edebilirsiniz.

  1. 4. Hata Ayıklama Kolaylığı:

Gerçek hayattan örnek vermek gerekirse mesela bir bisikletin fren nesnesi sorunlu ise fren nesnesini değiştirerek bu sorunu halledebilirsiniz. Programda da aynı şekilde sadece sorunlu olan kısmı onararak veya değiştirerek sorunları giderebilirsiniz. Bu programın bakımında ve hata ayıklamada kolaylık sağlar,

Yukarıdaki dört madde Java geliştiricilerinin gözünden nesneye yönelik program geliştirme konseptinin faydalarını anlatıyor. Aslında ilk başta bazı şeyler havada kalsa da prosedürel bir programlama dilinden sonra nesneye yönelik bir dille program geliştirmeye başladığınızda bu kolaylıkları uygulamalı olarak göreceksiniz.

Class (sınıf) Nedir?

Gerçek hayatta nesneleri sınıflandırırız. Mesela bisiklet sınıfını ele alalım. Bir bisikletin hız, ağırlık ve vites değişkenleri vardır. Ayrıca bu bisikletin hızı ve vitesi değişebilir. Şimdi biraz kod yazalım.

class Bisiklet

{
int hiz;
int agirlik;
int vites;
void hizdegistir(int yenihiz)
{
hiz=yenihiz;
}
void vitesarttir()
{
vites++;
}
void vitesazalt()
{
vites--;
}
public Bisiklet(int a)
{
hiz=0;
vites=1;
agirlik=a;
}
}

Java dilinde bisiklet sınıfını oluşturduk. Şimdi ne yaptığımızı açıklayalım. Class Bisiklet diyerek yeni bir class oluşturduk. Sonra bu sınıfın içinde integer türünden hız, vites ve ağırlık değişkenlerini oluşturduk. Daha sonra bu değişkenler üzerinde işlem yapmak için gerekli hız değiştirme , vites arttırma ve vites azaltma metodlarını oluşturduk. En sonda tanımladığımız metot ise kurucu metot. Yani bu sınıftan bir nesne oluşturulduğunda yapılacak işlemlerin (ilk değerleri verme gibi) belirtildiği metot. Bu metot class ile aynı ismi taşımak zorunda. Classımızı oluşturduk. Şimdi bunu nasıl kullanacağımıza bakalım.

public static void main()

{

Bisiklet bisikletim1=new Bisiklet(10);//Bisiklet classından yeni bir object tanımlıyoruz. Kurucu metot bir parametre aldığı için parametre olarak ağırlık değerini gönderiyoruz.

bisikletim1.hizdegistir(50);//hizdegistir metoduna 50 parametresini göndererek hız değerini 50 yapıyoruz

bisikletim1.vitesarttir();//vites değişkenini bir arttırıyoruz.

}

Kalıtım (Inheritance)

Kalıtım bir sınıftan benzer başka sınıfların oluşturulmasına denir. Az önceki örnekten devam edelim. Biz bisiklet sınıfını oluşturduk ama birçok bisiklet çeşidi var. Dağ bisikleti, yarış bisikleti, iki kişilik bisiklet gibi. Bunlar arasında farklılıklar olmasına rağmen aslında bunların hepsi bisiklet sınıfının alt kümeleri. Yani hepsinin hız değeri, vites değeri, ağırlığı vs. özellikleri var. Nesneye yönelik diller bir sınıftan bir başka sınıf türetilebilmesine izin verir. Bu durumda bisiklet classına superclass diğerlerine ise sub-class ismi verilir.

Kod kısmına bakacak olursak bir sınıftan başka bir sınıf türetmek için extends sözcüğünü kullanırız.

class dagBisikleti extends Bisiklet

{

//bisiklet sınıfına ek olarak yazılacak yeni değişken veya metotlar

}

Classları yazarken bu classtan başka bir class türetilmesini engelleyebilir, bazı metot veya değişkenleri alt sınıflardan saklayabiliriz. Bu konuyu ilerleyen makalelerde ele alacağız.

Arayüzler (Interfaces)

Aslında çok farkında olmasak da günlük hayatımızda bir çok arayüz kullanıyoruz. Karışık yapılarda işleyen makinelerin bizim kullanmamız için tasarlanmış ve basite indirgenmiş kontroller içeren kumanda panelleri buna örnek olarak gösterilebilir. Şimdilik giriş aşamasında bu kadarını söyleyelim. İleride detaylı oalrak inceleyeceğiz bu konuyu.

Özet

Nesneye yönelik programlamanın temel kavramlarına Java penceresinden baktık. Burada belki nesne ve sınıf kavramları karışabilir. Onu da şu şekilde açıklığa kavuşturabiliriz. Nesne sınıfın bir örneğidir. Yani bir sınıf tanımlanır ve bu sınıftan bir çok nesne üretilir.

Bu makalede işin detayına ve kod kısmına çok girmeden sözel olarak nesneye yönelik programlama konseptini açıklamaya çalıştık. Burada bahsettiğimiz kavramları ilk defa görüyorsanız sizi korkutabilir. Fakat ileride detaylı olarak incelediğimizde daha iyi anlayacağınızdan emin olabilirsiniz.

Yavuz Selim Bilgin

© 2010 Yavuz Selim Bilgin All rights reserved - Wallow theme by TwoBeers Crew - Powered by WordPress - İyi eğlenceler!