Ders 23| Java Dilinde Inheritance(Kalıtım)

Bu dersimizde inheritance’ye örnek vereceğiz. Örnek programımızda ise dortgen sınıfı oluşturup buradan inheritance yoluyla kare ve dikdortgen sınıfları oluşturduk. Daha sonra kare ve dikdortgen sınıflarının nesnelerini oluşturup main() içinde gerekli işlemleri yaptık.

Şimdi örneğimize geçelim:

dortgen sınıfı kenarlara değerler atayıp bu değerler ile alan ve çevre hesabı yapan fonksiyonlara sahip.

Şimdi dikdörtgen sınıfını inceleyelim:

dikdortgen sınıfı sadece want() fonksiyonuna sahiptir. Bunun yanında 2 adet constructor(yapıcı) fonksiyon kullanmaktadır. Çevre, alan hesabını ise miras aldığı üst sınıftan almaktadır.

Şimdi kare sınıfını inceleyelim:

kare sınıfı da sadece want() ve print() fonksiyonlarına sahiptir. Bunun yanında 2 adet constructor(yapıcı) fonksiyon kullanmaktadır. Çevre, alan hesabını ise miras aldığı üst sınıftan almaktadır.

main() fonksiyonunu içeren sınıfımız da aşağıdaki gibidir:

Burada görüldüğü gibi dortgen sınıfı bizim için temel sınıf görevi üstlendi ve bir kez tanımladığımız fonksiyonları ise birbirinden bağımsız kare ve dikdortgen sınıfları içinde kullanarak iş yükümüzü yarıya indirdik.

Program çıktısı da aşağıdaki gibidir:

Ders 22| Java Dilinde Inheritance(Kalıtım)

Öncelikle kalıtım nedir bunu açıklamalıyız. Kalıtım bir sınıfın başka bir sınıfa ait olan public ve protected değişken ve fonksiyonlarını kendi değişken ve fonksiyonu gibi kullanması(miras) alması olayıdır.

Bunu Java extends kelimesi ile kullanırız. Ust sınıfın (miras alınan) sınıfın fonksiyonlarına yeni özellikler yükleyeceksek veya işleyişini değiştireceksek bunu alt sınıf içinde yaparken önce @Override ifadesini kullanmamız gerekir. Bu kelime ile derleyiciye fonksiyonun yeni bir özellik kazandığı veya işleyişinin değiştiğini aktarır.

Şimdi bahsettiklerimizi bir örnekte inceleyelim:

Yukarıdaki örneğimizde miras vermek üzere tanımlanmış ustClass isimli bir sınıf oluşturuldu ve tüm fonksiyonları public olduğu için inheritance edilen sınıf bu fonksiyonların tamamını kullanabilir. Fakat değişkenler private olduğu için bunlar inheritance ile miras verilemez.

Şimdi miras alan sınıfı inceleyelim:

Burada da üst sınıftan alınan yazdir() fonksiyonu yeni özellik kazandığı için @Override(21. satır) ifadesi ile kullanılmıştır. Burada sınıfımız miras aldığı üst sınıfa erişebilmek için super ifadesi kullanılmıştır. Bu ifade ile ust sınıfa erişim sağlamıştır.

Programın derlenip çalışması için gerekli olan main() fonksiyonunu taşıyan sınıf aşağıdaki gibidir.

Program derlenip istenen değerler girildikten sonraki program çıktısı ise aşağıdaki gibidir.

Bir sonraki dersimizde inheritance örneklerine devam edeceğiz…

Ders 21| Java Dilinde Yaygın Kullanılan Sınıflar

int, float, double gibi tipler olduğu gibi bu tiplere ait class yapıları da java içinde tanımlanmıştır.

int için Integer
double için Double
float için Float
boolean için Boolean
gibi sınıf tanımlamaları yapılmıştır. Bu sınıflarda en çok kullanılan fonksiyon ise parse fonksiyonlarıdır. Integer içinde parseInt(), Double içinde parseDouble() şeklinde fonksiyonlar tanımlanmıştır. Bu fonksiyonları önemli klan nokta ise bir tipi başka tipe dönüştürür.

Basit bir örnekte inceleyelim:

Örneğimizde String tipinde olan 25 değeri parseInt() fonksiyonu ile int tipine dönüştürüldü ve 7 eklenerek sonuç ekrana yazdırıldı. Aynı işlemler double, float gibi değişkenler için de yapılabilir. Fakat “merhaba” yazısını parseInt() ile int tipine dönüştürmeye çalışırsak programımız hata verecektir. Çünkü String olan 25,87,16 gibi değerler bu fonksiyonlar ile başka tiplere dönüştürülebilir. Buna da dikkat edelim.

Bunun yanında a değişkeninin tipinin string olarak kaldığına dikkat edelim. Fonksiyondan geçirdikten sonra ise b değişkeni içine aldık. Yani a değişkeninin tipini değiştirmedik.

Çıktı aşağıdaki gibidir.

Şimdi bir önceki derste gördüğümüz JOptionPane sınıfı ile bu derste gördüğümüz sınıfları karıştırarak basit bir toplama işlemi yapalım:

Görüldüğü gibi 10-11. satırlarda kullanıcıdan iki sayı girişi istedik. showInputDialog() içerisine sayı da girsek bunları String olarak aktarır programa bu nedenle String tipinde sayi1 ve sayi2 girilen değişkenleri tuttu. int tipinde olan toplam değişkeni de 12. satırda parseInt() foksiyonu yardımıyla integer‘a çevrilen sayi1 ve sayi2 değişkenlerinin toplamını tuttu ve daha sonra da ekrana bu sonuç yazdırıldı.

Çıktı aşağıdaki gibidir:




Bir kaç örnek daha vereceğim ama çıktıyı kendiniz yazıp görmeniz için program çıktılarını vermeyeceğim.

Örnek 1:

Örnek 2:

Örnek 3:

Örnek 4:

Ders 20| Java Dilinde Yaygın Kullanılan Sınıflar

Bu dersimizde java içerisinde tanımlı sınıflardan bahsetmeye devam ediyoruz.

Görsel programlama da kullanılan swing kütüphanesi oldukça popüler bir sınıftır. swing kütüphanesi içinde bulunan bir çok sınıf bizim görsel programlama yapabilmemize olanak sağlar. Bu dersimizde swing kütüphanesinin en temel sınıflarından olan JOptionPane sınıfından bahsedeceğim.

JOptionPane içindeki fonksiyonlar static fonksiyonlardır. Dolayısıyla da sınıf üyelerine erişim sınıf adıyla sağlanır ve nesne üretmemize gerek yoktur. JOptionPane içinde yer alan showMessageDialog() fonksiyonu ekrana mesaj yazdırılmak üzere bir pencere oluşturur.

Basit bir örnekte inceleyecek olursak:

Ekrana bir mesaj penceresi oluşturur ve tırnak içindeki ifadeyi ekrana yazdırır.
Programın derlemesi ve çıktısı aşağıdaki gibidir.

Böylelikle ilk penceremizi oluşturduk.

Eğer penceremizde klavyeden girdi almak istiyorsak bu kez kullanacağımız fonksiyonun adı showInputDialog()‘ dur.

Kullanımını bir örnekte inceleyelim:

Kod ile ilgili ayrıntı yorum satırlarında olduğu için doğrudan program çıktısını veriyorum:


Sonraki dersimizde JOptionPane ile ilgili örnek programlar yazacağız

Ders 19| Java Dilinde static

Bu dersimizde çok önceden bahsetmem gereken static kelimesinin ne anlama geldiğini açıklamaya çalışacağım.

static kelimesi bizim değişkenlerde veya fonksiyonlarda kullanılır. Fonksiyonlarda kullanıldığı zaman bu static kelimesi derleyiciye bu fonksiyonu kullanmak için herhangi bir nesne oluşturmamıza gerek olmadığını belirtir. Yani static fonksiyon başka bir sınıf içinde bile olsa bunu kullanırken nesne oluşturmadan sınıf adı ve nokta (.) ile çağırıp kullanırız.

Daha önceki derslerde java içinde tanımlı sınıflardan bahsederken sadece sınıf adını kullanarak ulaştığımız fonksiyonlar vardı(Math sınıfı fonksiyonları gibi). İşte bu fonksiyonlar da static fonksiyonlara birer örnektir.

Basit bir örnekte inceleyelim:

örnekte görüldüğü gibi deneme1 sınıfı içindeki static fonksiyona deneme2 içinde bulunan main() fonksiyonunda nesne oluşturmadan sınıf adı ile çağırdık.

Program çıktısı aşağıdaki gibidir:

Static anahtar kelimesi kullanılarak oluşturulan değişkenler nesne değişkeni değil “sınıf değişkeni” olarak adlandırılırlar. Bu değişkenler nesneye ait değil, sınıfa ait bilgileri taşırlar. Sınıf değişkenleri içinde tanımlandığı sınıftan hiçbir nesne oluşturulmamış olsa bile bellekte yer kaplarlar. Nesne değişkenleri ise ancak bir nesne tanımlandığında bellekte yer kaplarlar. Bu iki tür değişkenin ayrıldığı bir başka nokta da sınıf değişkenlerinin sadece bir örneğinin olmasıdır. Yani o sınıftan kaç tane nesne oluşturulursa oluşturulsun, bellekte tek bir tane sınıf değişkeni vardır ve ne şekilde erişirsek erişelim, aynı sınıf değişkenine erişiriz.

Bir örnekte pekiştirelim:

Normalde counter değişkeni her sınıf nesne için ayrı çalışırdı fakat static olduğu için tüm nesnelerin artit() fonksiyonundan etkilendi ve counter değeri her artir() fonksiyonu çağrıldığında bir artarak 5 değerine ulaştı.

Program çıktısı aşağıdaki gibidir.

Bir sonraki dersimizde java içinde tanımlı olan sınıflara örnekler vererek devam edeceğiz.

Ders 18| Java Dilinde Yaygın Kullanılan Sınıflar

Bir önceki dersimizde ArrayList sınıfından bahsetmiştik. Bu dersimizde ise Arrays sınıfını gözden geçireceğiz. Arrays sınıfı bizim oluşturduğumuz array’ler üzerinde kopyalama yapma, sıralama ve arama işlemlerini içinde barındırdığı fonksiyonlar sayesinde hızlı şekilde yapmamıza olanak sağlar.

Arrays sınıfı içinde sort(), copy() gibi fonksiyonlar sayesinde işlemlerimiz daha hızlı olarak gerçekleşiyor. Arrays sınıfını kullanırken yine programımıza import etmemiz gereklidir. import ettikten sonra ise nesne oluşturmamıza gerek yoktur. Math sınıfında olduğu gibi sınıf adını kullanarak bu fonksiyonları çağırabiliriz.

Arrays sınıfı da ArrayList sınıfında belirttiğim gibi ihtiyacınız oldukça bu fonksiyonları öğrenmenizi tavsiye ediyorum. Burada tüm fonksiyonları açıklayıp örnekleyebilmem mümkün değil.

Şimdi bir örnekte Arrays sınıfını inceleyelim.

Örneğimizde 9. satırda Arrays sınıfına ait sort() fonksiyonu ile array siralandi. 24. satırda yine bu sınıfa ait binarySearch() fonksiyonu çağrılarak ikili arama yaptık. arraycopy() fonksiyonu ise bir array’i diğer boş bir array içerisine kopyalamak için kullanıldı. 13. satırda yer alan Arrays sınıfına ait fill() fonksiyonu ise 2 parametre alır. Birinci parametresi array değişkenimizin adı 2. parametresi ise o array içerisine atanacak değerdir. Array’in bütün değerlerini belirtilen değere eşitler. Programımızın belirli satırlarında yer alan yine Arrays sınıfına ait olan bir diğer fonksiyonumuz ise boolean değer döndüren equals() fonksiyonudur. Bu fonksiyon da 2 parametre alır ve ikisi de array’dir. Aldığı bu iki array’i karşılaştırır. Eşit ise true değilse false değer döndürür.

Program çıktısı aşağıdaki gibidir:

Ders 17| Java Dilinde Yaygın Kullanılan Sınıflar

Java içinde bulunan hazır sınıflara devam ediyoruz bu dersimizde.

Java içinde hazır bulunan sınıflardan biri de ArrayList sınıfıdır. ArrayList sınıfı sayesinde array işlemlerini daha hızlı şekilde gerçekleştirebilme imkânımız var. Array içinedeki herhangi bir indiste bulunan elemanı silme, herhangi bir indise eleman ekleme gibi işlemler ArrayList sınıfı ile çok kolay ve daha hızlı yapılır. Bunun yanında Array dolu mu boş mu diye kontroller de yapabileceğimiz fonksiyonlar ArrayList içinde mevcuttur.

ArrayList sınıfına ait fonksiyonları ihtiyacınız oldukça araştırıp öğrenebilirsiniz. Ben örneğimde bazı ArrayList sınıfına ait fonksiyonlardan örnekler vereceğim:

Örneğimizde görüldüğü gibi renkler adında bir ArrayList nesnesi oluşturduk ve bu renkler nesnesi sadece String değer kabul edecek şekilde tanımlandı. Eğer her tipten değişkenleri tutacak bir ArrayList nesnesi oluşturmak istersek;
ArrayList obje= new ArrayList();
şeklinde bir tanımlama yapabilirdik. Bu durunda obje isimli nesne içerisinde int,double,float gibi tipler karma şekilde eklenebilirdi.

7. satırda add() fonksiyonu ile nesneye eleman eklenmiştir. Bu yöntem ile ArrayList elemanı sona ekler. 8. satırda ise add() fonksiyonu 2 parametre almıştır: 1.parametre elemanın ekleneceği indis 2.parametre ise eklenecek eleman. Bu yöntem ile de herhangi bir indise eleman ekleme işlemi başarı ile gerçekleştirilir.

size() fonksiyonu ise eleman sayısını verir. Kaç eleman eklenmişse onu gösterir. 10-17-23-29. satırlardaki for döngüsünde eleman sayısı kontrolü size() fonksiyonu ile yapılmıştır.

remove() fonksiyonu ile de listeden eleman silme işlemi yapılmıştır. Yine bu fonksiyon sayesinde baştan, ortadan veya sondan eleman silme işlemi başarıyla yapılabilir.

get() fonksiyonu ise bir parametre alır ve bu da indistir ve o indiste yer alan elemanın değerini döndürür.

Çıktı ise aşağıdaki gibidir:

Ders 16| Java Dilinde Yaygın Kullanılan Sınıflar

Bu dersimizde java içinde hazır bulunan class yapılarını inceleyeceğiz. Önceki derslerimizde genel olarak Scanner sınıfını kullandık. Bu sınıfa aşina olduğumuz için önce Scanner sınıfından bahsedelim. Scanner sınıfı genel olarak I/O işlemleri için kullanılır. Bu sınıfı kullanmak için öncelikle Scanner sınıfı programa import edilmelidir. Daha sonra ana program içinde Scanner sınıfına ait nesne oluşturulur ve bu nesneler üzerinden fonksiyonlara erişim sağlanır.

Şimdi Scanner içinde bulunan bazı fonksiyonlara bakalım:

Scanner

Scanner sınıfını basit bir örnekte inceleyelim:

Sizde diğer Scanner fonksiyonlarının örneklerini yaparsanız daha hızlı yerleşir.
Program çıktısı aşağıdaki gibidir:

Matematiksel işlemler için kullandığımız sınıf ise Math sınıfıdır. Math sınıfına ait fonksiyonlara erişebilmek için herhangi bir import işlemi yapmamıza gerek olmadığı gibi bu sınıfı kullanmak için nesne de oluşturmamıza gerek yoktur.
Math sınıfına ait foksiyonlara erişebilmek için sınıf adını kullandıktan sonra nokta (.) koyup kullanacağımız fonksiyon adını yazmamız yeterli olacaktır.

Örneğimize geçmeden önce Math sınıfına ait fonksiyonları verelim:

Şimdi basit bir örnek yapalım:

Diğer fonksiyonları da görmeniz açısından diğer fonksiyonlarıda kendiniz yazacağınız uygulamalarda kullanmanızı tavsiye ederim.
Program çıktısı aşağıdaki gibidir:

Bu dersimiz burada bitti. Bir sonraki dersimizde ise yine java içinde tanımlı sınıflardan bahsetmeye devam edeceğiz.

Ders 15| Java Dilinde Class (Sınıf) Yapıları

Bu dersimizde class yapılarına kaldığımız yerden devam edeceğiz. Karmaşık örneklerimize geçmeden önce constructor(yapıcı) fonksiyonları açıklayalım ve basit bir örnek verelim.

constructor’lar bizim sınıfımızda bulunan değişkenlere ilkdeğer atamamıza yarayan fonksiyonlardır. Herhangi bir değer döndürmezler ve herhangi bir tipe sahip değillerdir. constructor fonksiyonunun adı class adı ile aynı olmak zorundadır.

Önceki örneklerimizde zaten yapmıştık ama açıklamamıştık burada da açıkladık ve basit bir örnek de verelim görmek için:

sayi isimli sınıf adında sayi fonksiyonu(4. satırda) oluşturduk ve main() de nesne oluşturulduğu an a ve b değişkenleri için 0 değeri atanacaktır.

main() fonksiyonunun bulunduğu class aşağıdaki gibidir:

Program çıktısı ise aşağıdaki gibidir:

Şimdi bir de ortalama alan program örneği verelim:

main() fonksiyonunun bulunduğu class aşağıdaki gibidir:

Çıktı ise aşagıdaki gibidir:

Ders 14| Java Dilinde Class (Sınıf) Yapıları

Bu dersimizde class yapılarına devam edeceğiz. Şimdi yapacağımız örnekte ise 2 sayıyı toplayan bir program yazacağız. Fakat bu programda ana fonksiyon olan main içinde hiçbir işlem yapmadan diğer class’lar ile yapacağız. main fonksiyonda yalnızca obje oluşturup bu objeler üzerinden fonksiyonlara erişeceğiz:

Örneğimizi inceleyelim:

Örneğimizde deneme1.java isimli dosyamızda deneme1 class’ı oluşturduk ve burada sayı1 ve sayı2 değişkenleri private olarak tanımlandı. Ardından da deger_iste() fonksiyonu ile bunlara deger ataması yaptık.Bunun için Scanner sınıfından nesne oluşturup klavyeden girdi alık. topla() fonksiyonu bu sayıları toplarken, yaz() fonksiyonu da sonucu ekrana yazdırdı.

Şimdi bu fonksiyonlar main() de nasıl kullanıldı/çağrıldı bunu inceleyelim:

Görüldüğü gibi deneme2.java adlı dosyada main() fonksiyonu yer alıyor ve bu fonksiyon sadece deneme1 sınıfından bir obje oluşturuyor ve bu obje üzerinden public fonksiyona erişiyor. Kalan tüm işi ise deneme1 sınıfına ait fonksiyonlar yapıyor.

Program çıktısını vermeden önce şunu belirtmeliyim, 1. ve 2. satırdaki yaptığımız import’lar gereksiz. Bunlar bir önceki derslerimizden kalmış import’lar. Siz de kendiniz yazarken bu gereksiz import’ları yapmanıza gerek yok bunlar olmadan da program çalışır. Görüldüğü gibi main() içerisinde bu import’lar kullanılmamış.

Program çıktısı aşağıdaki gibi olacaktır:

Projemiz derlenirken her zaman main() fonksiyonunun bulunduğu  java dosyası üzerinden derlenir bunu da unutmayalım.