Java, nesne yönelimli bir programlama dilidir. Nesne yönelimli programlamada, programlar nesneler olarak adlandırılan ve işlevler ile verileri bir arada bulunduran birimlerden oluşur. Java’da nesne yönelimli programlamayı temsil eden en önemli kavramlardan biri olan Sınıf, nesneleri oluşturmak için kullanılan bir şablondur. Bir sınıf, nesnenin sahip olduğu verileri ve bu veriler üzerinde gerçekleştirebileceği işlevleri tanımlar.
Java’da, temel ve önemli sınıflar şunlardır:
- Object sınıfı: Java’nın tüm sınıflarının atası olan Object sınıfı, tüm nesnelerin ortak özelliklerini tanımlar.
- String sınıfı: Metin verileri depolamak ve işlemek için kullanılan String sınıfı, Java’nın en önemli sınıflarından biridir.
- Integer, Double, Float, Long, Short ve Byte sınıfları: Sayısal verileri depolamak ve işlemek için kullanılan sınıflardır.
- Arrays Sınıfı: Belirli sayıda ve aynı veri tipinde olan elemanları sıralı bir şekilde tutan dizileri temsil eden ve bu diziler üzerinde işlemler yapmayı sağlayan en temel Java sınıflarından biridir.
- ArrayList Sınıfı: Dinamik boyutlu dizileri temsil eder ve elemanları eklemek, çıkarmak ve sıralamak için kullanılır.
- File Sınıfı: Dosya işlemleri yapmak için kullanılır.
- Date sınıfı: Tarih ve saat verilerini depolamak ve işlemek için kullanılan bir sınıftır.
- Math sınıfı: Matematiksel işlemler gerçekleştirmek için kullanılan Math sınıfı, Java’da çok yaygın olarak kullanılır.
- Random sınıfı: Rastgele sayılar üretmek için kullanılan bir sınıftır.
- Scanner Sınıfı: Kullanıcıdan girdi almak için kullanılır.
Sınıflar, nesne yönelimli programlama dili olan Java’nın temel yapı taşlarıdır ve nesnelerin özellikleri ile davranışlarını tanımlamak için kullanılırlar. Java API, çeşitli işlemleri gerçekleştirmek için hazır olarak sunulan önemli sınıflar içerir. Bu sınıflar güçlü ve esnek uygulamalar oluşturmamıza yardımcı olur. Sınıf kavramını anlamak, Java programlama becerilerimizi geliştirmek ve daha karmaşık uygulamalar tasarlamak için önemli bir adımdır. Java’da, bu temel ve önemli sınıfların yanı sıra, Java’nın farklı özelliklerini ve işlevlerini gerçekleştirmek için kullanılan çok sayıda başka sınıf da vardır.
Java’nın bize sunduğu sınıfları sıklıkla kullanırız fakat programımızda ihtiyaçlarımıza göre oluşturacağımız kendi sınıflarımız da olacaktır. Oluşturacağımız sınıflar, o sınıflardan türeteceğimiz nesnelerin nitelik ve davranışlarını belirleyecektir. Sınıfta belirleyeceğimiz nitelik/özellik ve davranışlar, sınıftan türetilecek nesnelerin de özelliği ve davranışı olacaktır. Sınıflardan türetilen nesnelerin nitelikleri (attributes/properties) değişkenler (variables) ile, davranışları (behaviours) ise metotlar (methods) ile tanımlanır. Sınıf aynı zamanda bir veri tipi tanımlama yapısıdır. Herhangi bir kalıtım vs. söz konusu olmadan doğrudan aynı sınıftan türetilen tüm nesnelerin veri tipleri aynı olur.
Java programlama dilinde sınıf tanımlamak için “class” anahtar kelimesi kullanılır.
class SınıfIsmi {
// 0 ya da daha fazla özellik değişkeni...
// 0 ya da daha fazla kurucu metot...
// 0 ya da daha fazla davranış (method)
}
Nesne veya obje (object) diye adlandırdığımız kavram ise nispeten soyut bir yapı olan sınıfın programımız açısından somutlaştırılmış örneğidir. Kitap isminde bir sınıf oluşturur ve programımız içerisinde o sınıftan nesneler türetmeye başlarız. Sınıf olan kitap genel bir tanımlayıcı, bir şablon iken, türettiğimiz kitap nesneleri ise sınıfın da tanımlanan özellik ve davranışları gerçekleştirebilen ve üzerlerinde işlemler yapabileceğimiz yapılardır.
class Kitap {
//Özellikler (attributes / properties)
String isim;
int sayfaSayisi;
// Davranışlar (Behaviours)
public String isminNe() {
return isim;
}
public void isminiBelirle(String belirlenecekIsim){
isim = belirlenecekIsim;
}
public int kaçSayfanVar () {
return sayfaSayisi;
}
public void sayfaSayiniBelirle (int belirlenecekSayfaSayisi){
sayfaSayisi = belirlenecekSayfaSayisi;
}
}
// Kitap sınıfından "kitap1" referansıyla erişebileceğimiz yeni bir nesne oluşturma;
// 1. Aşama : Tanıtma;
Kitap kitap1;
// kitap1 = Kendisine atanacak olan kitap nesnesine erişmemizi sağlayacak olan referans
// değişkeni. Atama yapılmazsa varsayılan değeri null olur.
// 2. Aşama : İlk değerin atanması;
kitap1 = new Kitap();
// new Kitap() = Belleğin heap alanında Kitap sınıfından türetilmiş bir nesne oluşturacak
// olan kurucu metot çağrısı.
// "kitap1 = " : oluşturulan nesnenin bellek adresinin kitap1 değişkenine atanması.
Bir sınıftan yeni bir nesne türetilirken “new” anahtar kelimesi kullanılır. Farklı durumlar söz konusu olsa da, genel olarak oluşturulan nesne, kendisi ile aynı veri tipinde bir değişkene atanır ve kendisine, atandığı referans değişkeni üzerinden ulaşılır. Kitap isminde bir sınıfımız olduğunu düşünelim. Bu sınıftan bir nesne türetmek istediğimizde Kitap kitap1 = new Kitap(); söz dizimini kullanırız. Burada new anahtar kelimesi ile oluşturacağımız nesnenin kurucu metodunu (Kitap(); ) çalıştırarak bellekte veri tipi Kitap olan bir nesne oluşturmuş oluruz. Bellekte nerede olduğunu bilmediğimiz bu nesne ile bir işlem yapmak istediğimizde nesneye, onu işaret eden referans değişken (kitap1) aracılığıyla ulaşırız. kitap1 değişkeni, bizim için işaret ettiği nesnenin bellek adresini tutar.
Sınıf, nesne, referans değişkeni kavramlarını pratik söylemde birbirlerini kast edecek şekilde kullanırız. Örneğin “kitap1 nesnesinin 220 sayfası var” cümlesini kurduğumuzda aslında kitap1 in bir nesne değil, bellekteki bir kitap nesnesine ulaşmamızı sağlayan değişken olduğunu biliriz. Söyle ki bu cümle aslında “kitap1 referans değişkeninin gösterdiği Kitap sınıfı nesnesinin sayfa sayısı değeri 220’dir” şeklinde uzatılabilir. Burada kitap1 in nesne değil değişken olduğunu bilmek, kitap1 değişkeninin programın başka bir yerinde başka bir Kitap nesnesini işaret edebileceğini de bilmek anlamına gelir.
Özetle program yazarken, ihtiyacımıza göre kendi sınıflarımızı oluşturur, bu sınıfların özellik ve davranışlarını taşıyan nesneler türetir ve türettiğimiz nesneleri atadığımız referans değişkenler aracılığıyla onlara ulaşarak üzerlerinde işlemler yaparız.
Sonuç olarak, programcıların ortak özelliklere ve davranışlara sahip nesneleri tanımlamasına ve oluşturmasına olanak tanıyan sınıf kavramı, programların daha esnek ve tekrar kullanılabilir olmasını sağlamaktadır.