İlginizi Çekebilir
featured
  1. Ana Sayfa
  2. Java
  3. Java Nesne ve Sınıf Kavramları

Java Nesne ve Sınıf Kavramları

Bir önceki yazım içeriğinde Java OOP kavramına değindik ve Java Nesne ve Sınıf kavramları konusunu ayrı bir başlıkta inceleyeceğimizi dile getirmiştim.

Bu konu içerisinde önceki konularımızdan sıklıkla bahsederek örnekler oluşturacağımız için önce onlara göz atmanızı tavsiye ederim. Java OOP kavramı konusunda yabancılık çekmemek ve nesneye yönelik programlama kavramından başlamak isterseniz Java OOP Nedir? içeriğime göz atabilirsiniz.

Java'da Sınıf ve Nesne Kavramları
Java Nesne ve Sınıf Kavramları

Java Nesne ve Sınıf Kavramlarını Tanıyoruz

Java Nesne ve Sınıf kavramları aslında tamamen bir bütün, ayrılmaz ikili olarak görebiliriz. Bu ayrılmaz ikilinin tam olarak ne işe yaradığını, nasıl tanımlandığını, kullanım örnekleri şeklinde başlıklara yer vererek Java nesne ve sınıf kavramları konusuna derinlemesine iniş gerçekleştireceğiz.

Java Nesne Nedir?

Java Nesne kavramını incelemeden, Java Nesne Nedir sorusuna cevap bulmadan önce gelin doğadan yola çıkarak nesne kavramını biraz anlamaya çalışalım. Doğada bulunan her şey bir nesnedir. Havada uçan kuşlar, evimizde bulunan pencere, dışarıda yolda gördüğümüz arabalar ve birçok şey nesnedir. Nesnelerin durum ve davranış olmak üzere iki temel özelliği vardır.

Nesne kavramını anlayabilmek için durum ve davranış özelliklerini bilmemiz gerekmektedir. Bunları daha kolay anlayabilmek için örneklemeler ile anlatım gerçekleştireceğim. Bir arabayı ele alalım. Arabanın rengi, markası, fiyatı, modeli, üretim yılı gibi bazı özellikleri bulunur ve bu özellikler arabanın durumunu belirtir. Java Nesne kavramında durumlardan bahsederken attribute (özellik) kavramı olarak da telaffuz edebiliriz.

Söz konusu arabanın hızlanması, yavaşlaması, vites değiştirmesi veya kaza yapması gibi özellikler ise davranışını belirtmektedir. Dolayısıyla içerisinde bir durum ve davranışı olan her şey bir nesnedir diyebiliriz. Bu örneğimiz üzerinden anlatımını gerçekleştirdiğim attribute ve davranış kavramı Java üzerinde karşılığı nesnedir. Arabamızın durumu olarak bahsettiğimiz attribute kavramı, Java OOP kavramında değişkenler üzerinde saklanır. Davranış olarak bahsettiğimiz kavram ise Java nesneye yönelik programlama kavramında karşılığı metotlardır. Metotlar kavramı hakkında eksiklikleriniz olduğunu düşünüyorsanız daha önce yayımladığım Java’da Metotlar konuma göz atabilirsiniz.

Java Nesne kavramını bu sayede tanımış olduk. Java Nesne Nedir sorusuna cevap bulduğumuza göre artık bir nesnenin nasıl tanımlanması gerektiğine göz atabiliriz.

Java’da Nesne Nasıl Oluşturulur?

Java’da Nesne oluştururken yazmamız gereken kod dizisi şu şekildedir;
SinifAdi nesneAdi = new SinifAdi();
şeklinde Java dilinde bir nesne oluşturabilir ve bu nesneyi kullanabiliriz.

Java’da değişken tanımlaması ve veri tipleri konumu anlatırken oluşturmuş olduğum bir görseli kullanarak bir kaç not eklemek istiyorum.

Java'da stack ve heap verilerin ayrımı
Stack ve Heap Ayrımı

Oluşturmuş olduğumuz her bir nesne, bellek üzerinde farklı bir alanda muhafıza edilir. Java’da nesnelerin bellekte tutulduğu alana heap adı verilir. Oluşturmuş olduğumuz bu nesnelere, nesnelerin referansı ile ulaşabiliriz. Oluşturulan bir nesnenin birden fazla referansı bulunabilir. Nesne oluştururken dikkatli olmamız gerekmektedir fazla cüretkâr davranarak gereğinden fazla nesne tanımlaması gerçekleştirirsek olası bir Exception (hata mesajı) ile karşılaşmamız kaçınılmaz olabilir. Eğer, Java Exception Handling konusunda henüz bir fikriniz yoksa emrecelen.com.tr/java-exception-handling-nedir/ bu adrese giderek ilgili konuma göz atabilirsiniz.

Java nesne nedir, nasıl tanımlanır gibi soruları anlattığıma göre aklımızın biraz daha karışacağı yere bakabiliriz.

Java Class (Sınıf) Nedir?

Java Class (Sınıf) kavramı ile Nesnenin ayrılmaz bir ikili olduğunu dile getirmiştim. Yani, tahmin edebileceğiniz üzere, Java’da sınıflar nesnelerden oluşur. Aklımızda daha kolay şekil alması için bir örnek vereceğim. Bir personel nesnesi düşünelim. Bu nesnenin özellikleri olarak maaş, cinsiyet, uzmanlık alanı, yaşı, işe girim tarihi, yıllık izinleri gibi çeşitli özelliklerin ve davranışların bir arada tutulduğu yer sınıftır. Bu personel nesnesi olarak tanımladığımız sınıfa çalışan sınıfı diyebiliriz. Daha sonra her işe alımımızda kullanmak için çalışan sınıfı ile yeni bir personel nesnesi oluşturabiliriz.

Bu alana kadar anlattığım durum ve davranışlara, Java nesneye yönelik programlama kavramında field(alan) olarak geçmektedir.

Java’da Class (Sınıf) Nasıl Oluşturulur?

Projelerimiz için sınıf oluştururken yazmamız gereken basit kod dizisi şu şekildedir;

erişim_belirleyici(public, protected,private) + class + class_ismi {
//Class içerği
}

Yazdığımız kod yapısının ilk kısmında sınıfımıza erişim seviyesini belirtiyoruz. Erişim seviyesini belirledikten sonra sınıfımıza bir isim veriyor ve süslü parantezlerini açtıktan sonra içerisine özellikler ekliyoruz.

Örnek bir kod dizisi oluşturarak hem Java Nesne kavramını hem Java Class kavramını daha iyi anlayalım. Bu örnek içerisinde kullanıcıdan alacağı bilgileri işleyerek çıktı vermesini istediğimiz bir program oluşturalım. Bu programı oluştururken yaptığım aşamalar şu şekildedir;

#1 UserManager.java isminde ayrı bir kısım oluşturarak UserManager sınıfına gerekli işlemleri gerçekleştirebilmek için bazı değişkenler oluşturdum.

import java.util.Calendar;

public class UserManager {
    // Yıl Verisini Alma İşlemi:
    Calendar takvim = Calendar.getInstance(); // Güncel Tarihi Almamız İçin Sınıf tanımlaması.
    // Değişken Tanımlaması:
    String userName,userSurName;
    int dateOfBirth;
    // Metot Tanımlamaları:
    public String writeName(){
        return userName;
    }
    public String writeSurName(){
        return userSurName;
    }
    public int writeAge(){
        return takvim.get(Calendar.YEAR)-dateOfBirth; // Günümüz Yıl Verisinden Doğum Yılımızı Çıkartıyor.
    }
}

#2 Tanımlama yaparken günümüz yılını çekebilmek adına Calendar sınıfını programımıza import ettim ve kullanıcının yaşının hesaplanmasını gerçekleştirmek için yıl verisine ulaşmayı hedefledim. Ulaştığım bu yıl verisi ile kullanıcının doğum yılını çıkartarak yaşını bulan bir metot tanımladım.
#3 Main.java dosyamıza giriş yaparak bu programın çalışabilmesi için UserManager sınıfını nesne olarak tanımladım ve değişkenlerin verilerini tanımladım.

public class Main {
    public static void main(String[] args) {
        // Nesne Oluşturma:
        UserManager userManager = new UserManager();
        // Nesne İçerisindeki Özelliklere Veri Ekleme:
        userManager.userName = "Emre";
        userManager.userSurName = "Çelen";
        userManager.dateOfBirth = 1998;
        // Ekrana Yazdırma İşlemi:
        System.out.println("Kullanıcı Bilgileri\n-----------\nAdınız: "+userManager.writeName()+"\nSoyadınız: "+userManager.userSurName+"\nYaşınız: "+userManager.writeAge()+"\n-----------");
    }
}

#4 Tanımladığım verilerin çıktılarını görebilmek için UserManager sınıfı üzerindeki metotları kullanarak ekrana çıktı verilmesini sağladım.

Kod Çıktısı:

Java Nesne ve Sınıf Kavramları
Java’da Class ve Nesne Kullanımı

Java Nesne ve Sınıf Kavramları konusunda bir anlatım olacaksa bu içeriğin temelinde değinmemiz ve bilmemiz gereken en önemli konuda Constructor (Yapıcılar) kavramıdır.

Java Yapıcı Metotlar Nedir
Java Constructor Metot Nedir

Java Constructor Metodu

İçeriğimizin başından itibaren sizlere Java nesne ve sınıf kavramları hakkında bilgiler verdim. Java Constructor, bir sınıf için olmazsa olmaz bir özelliktir. Sınıf üzerinde bir nesne oluşturduğumuz zaman Java bizim için otomatik bir constructor (yapıcı) metot çağırır. Bu yapıcı metotlar, oluşturmuş olduğumuz her bir nesne için çağrılır.

Java Constructor Özellikleri

  • Yapıcıların (constructor) ismi, sınıf adı ile aynı olmak zorundadır.
  • Yapıcı metotlar, aşırı yüklenebilir (overloading).
  • Constructor metotlar, geriye herhangi bir değer döndüremezler.
  • Her sınıf için bir standart yapıcı metot vardır. Bu default olarak tanımlı yapıcı metotlar, herhangi bir parametreye sahip olmazlar. Eğer biz parametre alan bir yapıcı kullanmak istiyorsak, kendimizin bir yapıcı metot tanımlaması yapması gerekmektedir.

Java Constructor (Yapıcı) metot kavramı ile alakalı standartlaşmış örnek olan koordinat sınıfı üzerinden örneklendirelim.

#1 Point.java isminde ayrı bir sınıf oluşturdum. Yapıcı metotları anlayabilmek için iki adet değişken tanımlaması gerçekleştirdim.
#2 Değişkenleri kullanarak default ve parametre alan yapıcı metotlar konusunu anlayabilmek için 3 adet constructor metot tanımladım. Tanımladığım metotların kod çıktılarını daha rahat görebilmek için konumYaz() isminde ayrı bir metot tanımlaması gerçekleştirdim.

public class Point {
    int x,y;
    Point(){
        x=0;
        y=0;
    }
    Point(int a){
        x=a;
        y=a;
    }
    Point(int a,int b){
        x=a;
        y=b;
    }
    String konumYaz(){
        return "X Koordinatı: "+x+" Y Koordinatı: "+y;
    }
}

#3 Main.java dosyamıza girerek tüm constructor metotları görebilmek için iki adet değişken ve üç adet nesne tanımladım.

public class Main {
    public static void main(String[] args) {
        // Değişken Tanımlaması:
        int a= 255,b=137;
        // Constructor Nensne Tanımlamaları:
        Point konum = new Point(); // Default Yapıcı Metot
        Point konum2 = new Point(a); // Tek Parametreli
        Point konum3 = new Point(a, b); // İki Parametreli
        // Çıktılarını Görelim:
        System.out.println("-----------------\n- Constructor (Yapıcı) Metotlar\n-----------------");
        System.out.println("1-> Default Constructor Kod Çıktısı: "+ konum.konumYaz());
        System.out.println("2-> Tek Parametreli Constructor Kod Çıktısı: "+konum2.konumYaz());
        System.out.println("3-> İki Parametreli Constructor Kod Çıktısı: "+konum3.konumYaz()+"\n-----------------");
        System.out.println("www.emrecelen.com.tr\n-----------------");
    }
}

#4 Tanımlamış olduğum nesnelerin çıktılarını görebilmek için ekrana yazdırma işlemlerini gerçekleştirecek kod satırlarını oluşturdum.

Kod Çıktısı:

Java Yapıcı Metotlar
Java’da Constructor Metotlar

Normal şartlarda ayrı bir başlık altında anlatmayı düşündüğüm Java this anahtar kavramı, konumuz ile alakalı olduğu için küçük bir değinerek bir örnek vermek istiyorum.

This Anahtar Sözcüğü

Yapıcı metotları anlatırken Point sınıfında değişken isimleri dikkat ettiyseniz farklı kullandım. Aslında bunu yapmama gerek yok, yani yukarıdaki kodu aşağıdaki şekilde oluşturmam daha doğru olacaktır.

public class Point {
    int x,y;
    Point(){
        this(0,0);
    }
    Point(int x){
        this.x=x;
        this.y=x;
    }
    Point(int x, int y){
        this.x=x;
        this.y=y;
    }
    String konumYaz(){
        return "X Koordinatı: "+x+" Y Koordinatı: "+y;
    }
}

Kod dizilerini bu şekilde değiştirdiğiniz zaman göreceksiniz ki aynı sonucu alacaksınız. Bir başlık altında this anahtar sözcüğünü anlatacağım için tam olarak işlevini açıklamamış olsamda çalışma prensibini anlamış oldunuz.

Java Nesne ve Sınıf kavramları konumuzun sonuna gelirken aklınıza takılan soru, karşılaşmış olduğunuz sorunlar veya konu işleyişi hakkında önerilerinizi aşağıda bulunan “yorum yap” kısmından benimle iletişime geçerek paylaşabilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap