JAVAya GİRİŞ

advertisement
NESNE YÖNELİMLİ PROGRAMLAMA
Nesne (object) nedir? Sınıf (class) nedir? Nesne ve sınıf kavramlarını bir benzetme üzerden açıklamaya
çalışalım.
Biraz hayal kuralım. Bir otomobil fabrikasında bir araba tasarımı üzerinde çalışmaktayız. Çalışmalarımız
sonucunda yeni bir araba tasarımı elde ettik ve üretim aşamasına geçireceğiz. Yeni arabamızın hangi
büyüklükte olacağı, hangi renkte olacağı ve motorunun içerisine kaç tane beygir koyacağımızı tararım
aşamasında önceden belirlemiştik. Tüm hazırlıklarımız tamam olduğuna göre önceden oluşturduğumuz
tasarım kalıbımıza- sınıfımıza uygun yeni araba nesneleri üretebiliriz. Yani tasarım süreçleri ile araba
nesnelerimize ait sınıfı oluşturmuş olduk. Burada kaçırılmaması gereken nokta tasarımın bir defa yapılıp
bu tasarımdan sınıftan binlerce ürünün elde edilmesidir. Buradan java’ya doğru bir dönüş yaparsak;
tasarım kalıbımız java’daki sınıflarımızı, üretim aşamaları bu sınıf içerisindeki değişkenleri, metotları daha
pek çok işlemi, ortaya çıkan ütün ise sınıfımızdaki işleler sonucunda elde edilen nesnemizdir. Bir sınıf
tanımlaması ile aslında yeni bir veri tipi oluşturulmuş varsayabiliriz. Bu veri tipine ait değişkenlere de
nesne adını verebiliriz.
Nesne Yönelimli programlamada; Nesneler bir sınıf baz alınarak oluşturulur(tasarım araba). Sınıf soyut bir
kavram iken nesne somut bir kavramdır. Tasarım soyut iken araba olduğunda somut olması gibi. Bir
sınıftan nesne oluşturma işlemine örnekleme denir (örnek- istance). Bir sınıfın hafızada yer alması için
örneklendirilmesi nesnesinin oluşturulması gerekir (araba yapmayacaksak tasarımla işimiz ne). Oluşturulan
her nesne kendi içerisinde bağımsızdır. Nesnelerin diğer nesnelerle olan ilişkisi mesaj gönderme - alma
işlemlerinden ibarettir. Yani her nesne kendi ile ilgili verileri kendi içerisinde saklar, bazılarını erişime
açar, bazılarını ise özel tutar.
Java Sınıfları
(Classes),
Java dilinde sınıf (class) kavramını doğada cins isimlere benzetebilir. Bir cins kendi başına belirli bir
nesne değildir; ancak belirli türden nesnelerin ortak özelliklerini belirten soyut bir kavramdır.
Örneğin, ağaç bir cins isimdir. Ama bahçedeki elma-ağacı ya da sokaktaki çınar ağacı belirli varlıklardır.
Onlar, ağaç sınıfının birer nesnesidir(üyesidir). Cinsler alt cinslere ayrılabilir. Alt cinsler, üst-cinslerin
özelikleri yanında kendilerine has başka özeller de taşırlar. Örneğin, memeli hayvanlar geniş bir sınıftır.
Filler, kaplanlar, şempanzeler, balinalar, insanlar vb. memeliler sınıfının (üst sınıf) birer alt-sınıfıdır. Altsınıftakiler, üst-sınıfın özeliklerini taşımakla birlikte, birbirlerinden kesinlikle farklıdırlar. Her cinsin
ve her alt-cinsin kendine özgü özellikleri (nitelikler ve davranışlar) vardır. Bu özellikler, onları diğer
cinslerden ayırır.
Java’da sınıfları doğadaki cinsler gibi düşünürsek, konuyu kavramamız kolaylaşacaktır. Java sınıfı, tıpkı bir
cinste olduğu gibi, ortak özellikleri belirlenmiş topluluğun adıdır. Bir java sınıfının niteliklerinin
değişkenlerle (öznitelik, attributes, fields), davranışlarını metotlarla (fonksiyon procedure) belirleriz.
Başka bir deyişle, istediğimiz özelliklerini belirterek bir sınıf (cins isim) tanımlarız. Kısaca bir java sınıfı
kendi öz niteliklerini belirleyen değişkenleri ve fonksiyonları içeren bir birimdir. Bu nedenle, Pascal ve
Cgibi yapısal dillerdeki yapı ( record, struct) kavramının bir genellemesidir. Record ve struct yalnızca
değişkenler içerebilir. Fonksiyonlar ve yordamlar (procedure) onların dışında kalır. Java sınıfı ise,
değişkenler yanında fonksiyonları da içeren daha genel yapıya sahiptir. Bir sınıf içindeki fonksiyonlar o
sınıfın değişkenlerine erişebildiği gibi, farklı sınıflar arasında da iletişim sağlanabilmektedir.
Sınıf ve alt-sınıfların tanımı, bütünüyle programcının gereksemelerine göre yapılabilir. Alt
sınıflardan başka alt-sınıflar üretilebilir. Böylece en üst sınıftan başlayarak en alt sınıfa ulaşan hiyerarşik
bir yapıya sahip olurlar. En alttaki sınıf, kendisinin üstünde olan bütün sınıfların özniteliklerini taşır.
Buna kalıtım (inheritance) özeliği diyoruz. Bu özelik, java’nın üstün özeliklerinden birisidir ve ilerideki
konularda nasıl işe yaradığını göreceğiz.
Java programları sınıf (class) lardan oluşur. Bütün sınıflar aynı yapıya sahiptirler. Aralarındaki farkı
yaratan şey, içerdikleri değişkenler ve metotlardır. Bazıları hiç değişken ve/veya metot içermez, bazıları
az, bazıları çok değişken ve metot içerebilir.
Uyarı: Bir sınıftaki değişkenler o sınıfın özniteliklerini, metotlar ise o sınıfın davranışlarını belirler.
Bu nedenle, Sun da dahil olmak üzere bazı kaynaklarda değişken terimi yerine öznetilk (attribute),
fonksiyon ve procedure yerine de metot terimi kullanılır. Buz de bu derlerde genellikle bu geleneğe
uyacağız. Ama, özellikle değişkeni ve fonksiyonu vurgulamak gerektiğinde bu gelenekten biraz
sapabileceğiz.
Download