Ileri Programlamaünite4 PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

YBS306U-İLERİ PROGRAMLAMA

Ünite 4: Java’da Sınıf Tanımlama

Aşağıda listelen niteleyiciler hem sınıf, hem üye değişken


Giriş hem de üye metot tanımlanırken kullanılan anahtar
Bu ünitede üye değişkenler, üye metotlar ve yaratıcı sözcüklerdir. Bu sınıf, metot ya da değişkenlere erişim
metotlar (constructors) tanımlayarak kendi sınıflarımızı kısıtlaması getirmek için kullanılır. Tablo, aşağıdan
nasıl oluşturabileceğimizi ve bu sınıflardan nesneler yukarıya olmak üzere, en serbestten en kısıtlayıcı olan
yaratıp bu nesneleri kullanmasını öğreneceğiz. Görevini niteleyiciye göre sıralanmıştır. Bu tablodaki erişim
tamamlayan nesnelerin otomatik olarak çöp toplayıcısı niteleyiciler dışında niteleyicilerde vardır ama bunlara
tarafından nasıl temizlendiğini kavrayacağız. Tüm erişim dışında kalan niteleyiciler denir.
nesneler arasında ortak paylaşılan sınıf üyeleri tanıdıktan
sonra, sınıfların iç içe tanımlanmasını, başka bir ifadeyle, • public
bir sınıfı başka bir sınıf içinde tanımlamayı göreceğiz. En • protected (Dış dünya için kullanılmaz.)
son olarak kategorik değişkenleri tutmaya yarayan • --- (Alt sınıf ve dış dünya için kullanılmaz.)
enumation tipi üzerinde duracağız. • private (Alt sınıf ve dış dünya için kullanılmaz.)

Sınıflar Genel olarak değişkenleri üçe ayırabiliriz:


Java programlama dilinde her unsurun nesnelerden 1. Üye değişkenler: Sınıfların içindeki alanlar
oluştuğunu belirtmiştik. Bu nesnelerin ayrıntılı planlarına 2. Yerel değişkenler: Bir metot içindeki veya kaşlı
ise sınıf denir. Örneğin, bir akıllı telefonun ayrıntılı ayraçlar içinde yazılmış kod bloğunun içindeki
tasarımını sınıfa benzetirsek, bu tasarımdan üretilen ve değişkenler
satışa sunulan çeşitli renklerde ve özelliklerdeki akıllı 3. Parametreler: metot tanımlarken kullandığımız
telefonlarda bu sınıfa ait nesnelerdir. Bu nedenle tasarısı metot isminden sonra gelen ayraçlar içinde
aynı olmasına rağmen bir akıllı telefon mavi renkte iken tanımlanan değişkenler
diğer biri pembe renkte olabilir. Java programlama dilinde
bir sınıf basit anlamda iki unsurdan oluşur. İlk unsur Üye değişken tanımlarken kullanılan bileşenleri sırasıyla
sınıfın durumunu tarif eden alanlardır (üye değişkenler). listeleyecek olursak:
İkincisi ise değişkenler üzerinde işlemler yapan • Niteleyiciler (bu örneğimizde private ve final
metotlardır. Bunlara ek olarak, sınıfı yaratırken anahtar sözcükleri)
kullandığımız, özel bir metot olan yaratıcı metot vardır. • Alanın tipi (bu örneğimizde int, ama String, dizi
Bu metodun ismi sınıfın ismi ile birebir aynıdır ve değer ya da başka bir sınıfta olabilirdi)
döndürmez. Java’da sınıf tanımlaması şu şekilde yapılır: • Alanın ismi (bu örneğimizde en ve boy)
public class Sınıfİsmi { Metot tanımlarken kullanılan bileşenleri sırasıyla
// alanlar (fields) listeleyecek olursak:
// yaratıcı metot (contructor)
// metotlar (methods) • Niteleyiciler (bu örneğimizde public anahtar
} sözcüğü)
• Döndürdüğü değerin tipi (bu örneğimizde int ama
Yukarıdaki örnekte, kaşlı ayraçlar arasında bulunan bölüm void, dizi ya da başka bir nesne de olabilirdi.)
sınıf gövdesidir. Sınıf gövdesi bu sınıftan yaratılmış bütün
• Metot ismi (bu örneğimizde hesaplaAlan ve
nesnelerin hayat döngüsünü sağlayan tüm kodları içerir.
hesaplaÇevre). Genel olarak metot isimleri küçük
Alanlar (üye değişkenler) sınıfın durumunu belirtir.
harf ile yazılan bir fiil ile başlar. Eğer ikinci bir
Yaratıcı metot nesneleri ilk nesneyi yaratırken çalışır.
kelimesi varsa bu ikinci kelime büyük harf ile
Metotlar ise sınıfın ve o sınıftan yaratılmış nesnelerin
başlayan sıfat veya isim olur.
davranışını modeller.
• Parametre listesi, parantezler içine yazılır.
Java’da sınıf tanımlarken kullanılan bileşenleri sırasıyla • İstisna listesi, throws anahtar sözcüğünden sonra
aşağıdaki gibi listeleyebiliriz: yazılır.
• Erişim niteleyiciler (public, private veya Bir metodun ismi ve parametre listesinin birleşimine o
protected) metodun imzası denir. İsmi aynı olan metotlar
• Erişim dışındaki diğer niteleyiciler (final, static, tanımlayabiliriz ama bunların imzası farklı olmalıdır.
veya abstract) Derleyici imzası aynı olan iki metodu aynı anda
• Class anahtar sözcüğünden sonra sınıfın adı tanımlamaya izin vermez. Aynı isimli metotların
• Eğer varsa extends anahtar sözcüğünden sonra kullanılmasına metotların yüklenmesi (overloading
yazılmak üzere, üst sınıf methods) adı verilir.
• Eğer varsa implements anahtar sözcüğünden Yaratıcı metotlar, standart metotlar gibi tanımlanırlar.
sonra yazılmak üzere, sağladığı arayüz ya da Fakat bu tür metotlar değer döndürmezler. Argümansız
arayüzlerin isimleri olan metotta, nesneyi yaratırken hiçbir bilgi metoda
• Son olarak kaşlı ayraçlar { } içine alınmış sınıf
gövdesi

1
YBS306U-İLERİ PROGRAMLAMA
Ünite 4: Java’da Sınıf Tanımlama

iletilmemektedir. Argümanlı olan metotta ise argümanlar “süper” anahtar sözcüğü, this anahtar sözcüğü ile aynı
yaratıcı metota bilgi olarak aktarılmaktadır. mantıkta çalışır fakat bu sefer üst sınıfın üyelerine erişim
için kullanılır.
Eğer üst sınıfa ait bir metodu kendimize göre yeniden
tanımlıyor isek o metodun üstüne @Override işaretini Bir sınıftan yaratılmış tüm nesneler için ortak olmasını
koymak tavsiye edilir. Böyle bu metodun üst sınıfına ait istediğimiz değişken ya da metotları tanımlarken önüne
bir metot olduğu ayırt edilmiş olur. “static” anahtar sözcüğünü koyarız. Böylece bunlar sınıf
üyeleri olmuş olur.
Üç nokta yan yana ifadesini sadece metotların
parametreleri (argümanları) için kullanılabilir. Dolayısıyla Şu ana kadar hep static olmayan üye değişkenleri ve üye
üye değişkenler ve yerel değişkenler için bu gösterimi metotları kullandığımızı hatırlayalım. Bunlara ise örnek
kullanmak mümkün değildir. (instance) üye denir. Her yeni yaratılan nesne için örnek
değişkenler farklı olabilmektedir. Bazı durumlarda bütün
SınıfAdı::Fonksiyon ifadesi bir lambda ifadesidir ve Java
nesneler için ortak bir değişken tanımlamak isteyebiliriz.
8’in bir özelliğidir. Parametresi metot olan metotlar
Bu tür değişkenlere sabit alanlar veya sınıf değişkenleri
yazmak için kullanılır. Bir anlamda değişken olarak bir
denir. Bu tür değişkenlere erişmek için artık new ile yeni
metot kullanmayı mümkün kılan bu yeni teknoloji bu
nesne yaratmamıza gerek yoktur. Bunlara sınıfın ismi ile
ünitenin konularının dâhilinde değildir.
erişilebilir. Bu tür değişkenler genellikle sabit değerleri
Nesneler saklamak için kullanılır. Örneğin java.lang.Math sınıfı
Tipik bir Java programında birçok nesne yaratılır ve bu içinde e sayısını tutan değişken sınıf değişkenidir. Bu
nesneler birbirleriyle etkileşim içinde çalışarak birtakım değişkene erişmek için new Math() dememize gerek
işleri yerine getirirler. Bir nesne kendisine tanımlanan işi yoktur. Direk olarak Math.E ifadesi ile erişebiliriz.
tamamladığında ise bu nesnenin tükettiği ve kullandığı Örneğin, System.out.println(Math.E); kodu ekrana,
kaynak boşa çıkarılır. Böylece boşa çıkan bu kaynaklar 2.718281828459045 değerini yazdırır.
başka nesnelerin kullanımına açılmış olur. Nasıl static anahtar sözcüğü ile değişken
Her sınıfın en az bir tane yaratıcı metodu vardır. Eğer tanımlayabiliyorsak, aynı şekilde metot tanımlayabiliriz.
sınıfın içinde açık olarak hiç yaratıcı metot tanımlanmamış java. lang.Math sınıfı içindeki mutlak değer fonksiyonu
ise, hiç argümanı olmayan bir yaratıcı metot Java buna bir örnektir. Değişkenlerde olduğu gibi, bu metotlara
derleyicisi tarafından otomatik olarak sağlanır. Buna erişmek için new anahtar sözcüğüne gerek yoktur.
varsayılan yaratıcı metot denir. Varsayılan yaratıcı metot, Aşağıdaki örnek kod, -5 değerinin mutlak değerini
üst sınıfın argümansız yaratıcı metodunu çağırır. Bu hesaplar ve ekrana 5 yazdırır.
yüzden üst sınıfın argümansız bir yaratıcı metodu yoksa public static void main(String[] args) {
derleyici bu durumda hata verir. Ancak, açık olarak System.out.println(Math.abs(-5));
belirtilmemiş üst sınıf olmaması durumunda, örtük olarak }
üst sınıf java.lang.Object sınıfıdır ve bu sınıfın argümansız
yaratıcı metodu vardır. Bu tür metotlar genelde sadece parametre listesindeki
değişkenler üzerinde anlamlı işlemler yapan yardımcı
Çöp Toplayıcısı Java programlama dilinde yarattığınız metotlardır. java.lang.Math sınıfı içinde minimumu bulan,
nesnelerin kayıtlarını tutup daha sonra nesnelerle işimiz maksimumu bulan, ondalıklı sayıları yuvarlayan, gibi bir
bittiğinde onları yok etmekle uğraşmanıza gerek yoktur. çok static metot örneği bulunabilir. Eğer static olarak
Bu işlem çöp toplayıcısı tarafından otomatik olarak tanımlanmış değişkenlere ilk değer atamak istersek ve bu
yapılır. Eğer bir nesne artık kullanılmıyorsa otomatik tek satırdan daha uzun sürecek bir işlemse bunu static kod
olarak silinir. Bu işleme çöp toplama denir. Çöp toplama bloğu içinde yaparız. Örneğin, Anadolu Üniversitesinin
işlemi periyodik olarak uygun zamanlarda otomatik yapılır harf notlarının katsayı değerlerini içeren static bir dizimiz
ve bellek temizlenir. Java’da birkaç çeşit çöp toplayıcısı olsun. Bu dizinin ilk değerlerini aşağıdaki örnekteki
vardır ve programcı bunlardan hangisi kullanmak atayabiliriz. static metotlar, static olmayan üye
istediğini seçebilir. değişkenlere erişemezler.
Üye metotlar ve yaratıcı metotlar için, şu anki nesneye İç İçe Sınıflar
erişim “this” anahtar sözcüğü ile yapılır. En sık olarak üye
Java programlama dilinde bir sınıf tanımı içerisinde başka
değişken isimleri ile yaratıcı metodun parametre
bir sınıfı tanımlamak mümkündür. Bu şekilde tanımlanan
listesindeki değişkenleri ayırt etmek için kullanılır. this
sınıfa iç sınıf denir. İç sınıf dış sınıfın bir üyesidir. Bir iç
anahtar sözcüğü ile aynı isimlere sahip olmalarına rağmen
sınıf, dış sınıfın diğer bütün üyelerine erişebilir. Bu tür iç
farklı üye değişkenlerine farklı değişkeni atayabiliriz. Bir
sınıf tanımlamasını birbirleriyle alakalı sınıfları bir araya
başka kullanım ise this anahtar sözcüğünün bir yaratıcı
toplamak için kullanabiliriz. Böylece geliştirilen kodun
metodu çağırmak için kullanılabilmesidir.
okunabilirliği ve bakımı kolaylaşır.
Kaşlı ayraçlar içine alınmış kod bloğunda da sınıf
tanımlaması yapılabilir. Yerel sınıflar, iç sınıflara

2
YBS306U-İLERİ PROGRAMLAMA
Ünite 4: Java’da Sınıf Tanımlama

benzerler. İç sınıflarda olduğu gibi, yerel sınıflarda


tanımlandıkları dış sınıfın bütün üyelerine erişebilirler.
Ancak bir arayüzü sağlayan ya da bir üst sınıfı extend
ifade ise genişleten bir alt sınıf anonim olarak
tanımlanabilir. Bu durumda sınıfın tanımlaması ve
yaratılması aynı anda gerçekleşir. Anonim sınıf
tanımlaması sadece bir arayüzü implement eden ya da bir
sınıfı extend eden sınıflar için mümkündür.
Kategorik değişkenleri saklamak için kullanılırlar.
Örneğin, bir insana ait kan grubu bilgisini düşünelim. Bir
insanın kan grubu A, B, AB veya 0 olabilir. Bu tür bir
veriyi modellemek için Enum tanımlaması yapmak
uygundur. Trafik ışığı renkleri, haftanın günleri gibi
önceden belirli sabit değerlerden oluşan verileri temsil
etmek için Enum tipi kullanılır. Aşağıda Enum tiplerinden
biri görülmektedir:
public enum KanGrubu {
A, B, AB, O
}

You might also like