Bir önceki yazımız Eclipse Kullanarak Java Projesi Oluşturma konusunda bir projenin nasıl oluşturulacağını ve kullanılacağını görmüştük. Genel olarak proje yapısını gördükten sonra artık Java dünyasına adım atmanın vakti geldi. Yani Java’nın temeli “sınıf”lara.
Bu bölümde Nesne Yönelimli Programlama’nın temeli olan sınıf yapısının Java’da kullanımını göreceğiz.
Aslında belki farketmediniz ama biz zaten sınıfları kullanıyorduk. Çünkü temel olarak bütün olarak Java programları bir sınıfın içinde çalışır. En temel yapımızı bir hatırlayalım:
// Created by MuhammedTutar | 2014 public class SinifYapisi { public static void main(String[] args) { } }
Bir class dosyası oluşturduğumuzda karşımıza bu kodlar gelir. İçerde bir main metodu ve dışında da onu sarmalayan bir class. İşte gördüğünüz gibi sınıf olmadan Java bir hiçtir 🙂
[alert style=”red”]NOT: Oluşturduğumuz class dosyası sınıf ismimizle aynı olmak zorunda. Mesela yukarıdaki kod parçacığı SinifYapisi.java olarak kaydedilmelidir. [/alert]
Sınıf demek OOP, Nesne Yönelimli Programlama demektir. Sınıflar nesnelerimiz için genel özellikler tanımladığımız yapılar olarak düşünülebilir. Yaşamımızda bunun birçok örneğini görüyoruz. Örneğin Varlıklar bir sınıftır. Canlılar ve Cansızlar olarak ikiye ayrılır. Canlı sınıfında Cansızlardan ayrı belirli özellikler vardır. Canlılar içerisindeki Hayvanlar sınıfına dahil Omurgalı Hayvanlardan Balıklar da diğer omurgalı hayvanlardan kendilerini ayıran belli özelliklere sahiptir. Ancak sonuçta tüm omurgalı hayvanları ortak noktada buluşturan bir hayvan sınıfı, tüm canlı ve cansızları da ortak noktada buluşturan bir Varlık sınıfı vardır. Sonuç olarak da Hamsi, Balıklar sınıfından bir nesne olur! İşte Allah’ın bizi koyduğu bu mükemmel düzen programlamada da aynen geçerlidir 🙂
Basit bir sınıf şu şekilde tanımlanır:
// Created by MuhammedTutar | 2014 class SinifYapisi { // Sınıf bu şekilde tanımlanır. // Buraya bazı metotlar tanımlanabilir. // Buraya bazı değişkenler tanımlanabilir. }
Dolayısıyla sınıflar bize benzer yapıdaki işlemleri bir arada tutmak için kolaylık sunar. Bu hem yazma, hem okuma, hem çalıştırma, hem düzenleme, hem güncelleme, hem hata kontrolü… Bunun sonu gelmez. Gerçekten birçok konuda faydalar sağlamaktadır. Yaşasın dümdüz gidip duran fonksiyonel programalama dillerinden ziyade OOP dilleri! (Şaka şaka. Bazen fonksiyonel programlama muhteşem sonuçlar verebiliyor ;))
Öyleyse haydi basit bir sınıf örneği yapalım:
// Created by MuhammedTutar | 2014 class DortIslem { // Sınıfımız. int a; int b; } public class SinifYapisi { // Ana sınıfımız. public static void main(String[] args) { double sonuc; DortIslem topla = new DortIslem(); // Nesne bu şekilde oluşturulur. topla.a = 5; // Değişkene değer atama. Ama sadece topla nesnesi için. topla.b = 3; DortIslem cikar = new DortIslem(); cikar.a = 10; cikar.b = 9; DortIslem carp = new DortIslem(); carp.a = 2; carp.b = 20; DortIslem bol = new DortIslem(); bol.a = 12; bol.b = 6; sonuc = topla.a + topla.b; System.out.println("a+b= "+sonuc); sonuc = cikar.a - cikar.b; System.out.println("a-b= "+sonuc); sonuc = carp.a * carp.b; System.out.println("a*b= "+sonuc); sonuc = bol.a / bol.b; System.out.println("a/b= "+sonuc); } }
DortIslem adında bir sınıfımız var. Bu sınıftaki iki adet değişkenimizi dört işlem için de kullanacağız. Bunun için sınıfımızdan her işlem için nesne üretip değişkenlere değerini veriyoruz. Ve işlemlerimizi yaptırıp ekrana yazdırıyoruz. Üstelik tüm nesneler değişkenleri kendisi için kullanıyor, birbirine karışmıyor!
Nesne Tam Olarak Ne Oluyor?
Sınıflar bizlere bir veri tipi oluşturur. Benzer işlevlere sahip elemanları belirli sınıflar altında toplarız. Mesela maaş ödeme sistemi yazacaksak Memur, Müdür, CEO, İşçi vb. sınıflar oluşturup maaş ödeme sistemlerini kolayca kurarız. Fakat nesneler olmadan asla!
Sınıfımızı yazdık ama tanımladığımız değişken veya metotları kullanabilmek için bir nesne gerekir bize. Nesne aracılığı ile sınıfla iletişim kurarız. Nesne oluşturmak şu şekildedir:
// Created by MuhammedTutar | 2014 SınıfAdı NESNEADI = new SınıfAdı();
SınıfAdı yazan kısımlar malum olduğu üzere sınıfımızın isminin yazıldığı yerler. NESNEADI ise nesnemize vermek istediğimiz isim. Bu kadar!
new Operatörü Ne İşe Yarar?
Görüldüğü üzere nesne oluşturma işlemi iki aşamalıdır. Önce sınıfın adını ve nesne adını belirtiriz. Bu aşamada null değerinde bir nesnemiz olur. Çünkü henüz bir gerçek nesneyi temsil etmemektedir. Gerçek bir nesne olabilmesi için bellekte bir yere sahip olmalı.
İkinci aşamada new operatörünü kullanarak bellekte nesnemize bir yer açmış oluruz ve bu yeri nesnemize atarız. İşte şimdi hakiki bir nesneye sahip olduk.
Java’da sınıf yapısı işte böyle. İlerleyen konulara sınıfların faydalarını belirgin bir şekilde göreceğiz.
Bu yazıda Java’da sınıf yapısını ve nesne deklerasyonunu görmüş olduk.. Bir sonraki yazıda ise Java’da Metot Yapısı konusunu ele alacağız.
[…] önceki yazımız Java’da Sınıf Yapısı konusunda sınıf tanımlama ve nesne oluşturma konularına […]
[…] önceki yazımız Java’da Sınıf Yapısı konusunda sınıf tanımlama ve nesne oluşturma konularına […]
ellerine sağlık
Hocam mesela bir oyun yazıyor olsak Class Karakterler {} adında bir sınıfımız olsa ayrıca can,skor gibi şeyleri kontrol ettiğimiz bir class ımız daha olsa orada Karakterler anakarakter=new Karakterler(); yazmak yerine bu ana karakteri direkt Class Karakterlerde tanımlayıp Kontrol class ımızda kullanamaz mıyız ? Yani nesneleri illaki tanımladığımız class ta mı kullanabiliyoruz ?