Ana Sayfa > Java > Java ve eClipse Dersleri 1-4

Java ve eClipse Dersleri 1-4

1) Proje Oluşturmak

File / New / Project / Java / Java Project kısmından proje oluşturabilirsiniz.

Projemizin adını SerhatDundar olarak belirledim.

2) Paket Oluşturmak

Projemizin şimdi classları ekleyebileceğimiz bir pakete ihtiyacı var.

Paket isimleri web adresi formatındadır “org.serhatdundar.paket” şeklinde örneklendirebiliriz.

File / New / Package kısmından paket oluşturabiliriz.

Paket ismine org.Serhatdundar.paket yazalım.

Paket ne işe yarar? Paket gündelik hayatta olduğu gibi bir toplayıcı, düzenleyicidir. Sınıfları paketler içine oluştururuz. Bir paketten, başka bir paketteki veriyi çekebiliriz.

* Paket isimleri nokta ile başlayamaz ve bitemez.

Paketimiz oluştuğuna göre şimdi bir sınıf yaratmalıyız.

3) Class (sınıf) oluşturmak

Paketimize sağ tıklayıp File / New / Class seçeriz

Class adını Kisi olarak seçtim. Bu kisinin adını, yaşını belirteceğiz.

package org.Serhatdundar.paket;

public class Kisi {

//Fields

private String Isim;

private int Yas;

//constructor

public Kisi() {

Isim = “serhat”;

Yas = 19;

}

Şuanda bir sınıfın en temel 2 kısmını oluşturduk. Bunlar fields yani alanlar ve constructor yani işçiler-işi görenler. Bir sonraki kısımda 3.temel özelliği oluşturacağız.

Fields => object’in data elemanlarını barındırır.

Constructor => herhangi bir objeyi belirleyen-isimlendiren kısımdır.

Dikkat ettiyseniz süslü parantezlerimiz içine classlar, metodlar ve diğer kod bloklarını yazıyoruz.

Ve her java cümlesinin sonuna noktalı virgül koyuyoruz.

Bunlardan birini unutursanız Eclipse size bir yerde hata yapıyorsunuz diye uyarır.

1

Ek olarak eclipse’in mor olarak belittiği kelimeler asla projeniz içinde isim olarak kullanılamaz.

Java büyük ve küçük harfe duyarlıdır. kisi ve Kisi aynı şeyler değildir. Büyük – küçük harf yazılımında hata yaparsanız eclipse sizi uyarır.

Fields’te kullandığımız objeleri constructors’ta tekrar kullanmamız gerektiğinda CTRL+Space tuşları ile eclipse’in bize fields kısmında belirttiğimiz objeleri göstermesini sağlayabiliriz.

4) Getter ve Setter Oluşturmak

Bir sınıf en basit şekilde 3 kısımdan oluşur. Fields Constructors ve Metods.

İlk 2 temel bileşeni oluşturmuştuk. Şuanda 3. temel bileşeni oluşturacağız.

Getter : Sınıf alanlarındaki değerlere dönecek olan metodlar.

Setter : Sınıf alanlarındaki değerleri belirleyecek olan metodlar.

Normalde bu işi manuel olarakta yapabiliriz fakat eclipse bunu bizim yerimize yapacak.

Source / Generate Getters and Setters’e tıkladığınızda otomatik olarak getter ve setter’larınız oluşacak.

Kodumuza eklenen kısımlar neler bi bakalım :

public String getIsim() {

return Isim;

}

public void setIsim(String Isim) {

this.Isim = Isim;

}

public int getYas() {

return Yas;

}

public void setYas(int Yas) {

this.Yas = Yas;

}

Bunların tam olarak kullanımlarını deneme-yanılma yöntemiyle bir sonraki başlıkta, Scrapbook ile göreceğiz.

5) Scrapbook kullanımı

* Yeni classları test etmek ve komutları denemek için harika.

* Otomatik test imkanı sunmuyor. (Bunun için JUnit Test Case kullanacağız ileriki bölümlerde)

File / New / Java / Java Run-Debug / Scrapbook Page

Scrapbook sayfasına “TestSayfamiz” ismini verdim.

Expression = tek değerden ibaret kod parçasıdır (2+2) – inspect (incele) özelliği ile sonuçlarını görüntüleyebiliriz.

statement = noktalı virgül ile biten tam anlamda kod cümlesidir. (a=3;) execute özelliğini kullanırız.

* Expression ve Statement kelimelerin anlamlarına bakarsanız ikisininde “ifade” olduğunu görürsünüz. Fakat aradaki fark statement daha kesin bir ifade özelliği taşır.

Şimdi oluşturduğumuz Scrapbook sayfasında birkaç deneme yapalım.

Örnek 1 :

int a = 5;

int b = a * 10;

b

İnt yani integer yani sayı demektir. A sayısı 5’tir dedik. B sayısı; a sayısı ile 10’un çarpımıdır dedik. B yazarak istediğimiz şeyin b olduğunu belirttik. Kodu highlight ediyoruz yani seçiyoruz. (Üstünü mavi yapmak :)

Kodu seçip inspect ettiğinizde açılan pencerede “50” sonucunu göreceksiniz.

2

Örnek 2 :

int a = 5;

a = a * 10;

a

Kodu seçip inspect ettiğinizde açılan pencerede “50” sonucunu göreceksiniz.

Yukarıdaki işlemle aynı sonucu alacaksınız yani 50. İnteger olan a’yı 5e eşitledik. Başka bir a’yı ise integer olan a’nın 10 ile çarpılmasıdır diye ifade ettik. Sonuç olarak a’yı istedik. Bu örneği yazmamın sebebi integer olan a ile a’nın farklı şeyler olduğunu göstermekti.

Örnek 3 :

System.out.println(“deneme”); // statement yani tam bir kod cümlesi

Kodu seçip Execute ettiğinizde Consol’da “deneme” yazısını göreceksiniz.

6) Scrapbook’a Paket import etmek

package org.Serhatdundar.paket;

Eclipse sınıfları bunun sonuna . (nokta) işareti ile sınıfları ekleyerek ifade eder.

Örnek :

package org.Serhatdundar.paket.Kisi

Başka bir pakete ait sınıfa ihtiyaç duyarsanız import etmeniz yeter.

Şuan scrapbook sayfamız “Serhatdundar” paketini tanımıyor. Yani ona “Kisi” değişkenini sorsak bilemez. Çünkü bu değişken tanımadığı bir paket içinde. Tanıtmak için Java Snipper İmport kısmından (Set The Import Declerations For Running Code) (stopun yanındaki) add packages diyoruz. “org.Serhatdundar.paket” i seçiyoruz.

3

Şimdi scrapbook’a Kisi dersem anlayacak ki “org.Serhatdundar.paket” de var bu.

Kisi p = new Kisi ();

p.

Yazdık bisürü metod gördük. Yani neymiş, bütün java metod’ları object class’ının altında barınırmış. Bütün java sınıfları metodlarını object sınıfından miras alırmış.

p.<method Isim> = object p’nin üstünde bu methodu çalıştırır.

Eğer metodlar görünmez ise CTRL+Space ile gösterebilirsiniz.

Set methodu :

Kisi p = new Kisi ();

p.setIsim(“Serhat”);

p.setYas(19);

p

inspect edelim :

4

Get Methodu :

Kisi p = new Kisi();

p.setIsim(“Serhat”);

p.setYas(19);

p.getIsim();

yazdık inspect ettik. Koddan anlayacağınız üzere, adı Serhat, yaşı 19 olsun dedik ve bide bize ismini gösteriver dedik :

5

Yine aynı kodu highlight edip inspect etmek yerine “Display results of evulating text” seçeneği ile inceleyelim. (Inspect tuşunun yanındadır, eğer yoksa “Run” menüsünden bulabilirsiniz.

Eclipse Çıktısı :

Kisi p = new Kisi();

p.setIsim(“Serhat”);

p.setYas(19);

p.getIsim();

(java.lang.String) Serhat

Şimdi de hatalı kod yazmayı deneyelim :

Kisi p = new Kisi();

p.setIsim(“Serhat); // Çift tırnak ile kapamayı unuttuk.

p.setYas(19);

p.getIsim; // Parantezleri unuttuk.

inspect dediğimizde

String literal is not properly closed by a double-quote

Syntax error, insert “)” to complete Expression

uyarısını aldık.

İlk hata kodunda double-quote yani çift tırnak ile kapamayı unuttunuz diyor.

İkinci hata kodunda ise anlayacağınız üzere parantez hatası yaptınız diyor.

7) Unit Testing

* Bütün metodları otomatik test eder.

* Kodda değişiklik yaparken işimize çok yarayacak.

* Güçlü projelerin vazgeçilmezi.

* Eclipse’in içinde hazır gelir.

Test için yeni bir kaynak klasör oluşturmalıyız. Projeyi seçtikten sonra File/New/Source Folder yolundan klasörümüzü oluşturalım. Adını test koyalım.

Test klasörüne yeni paket oluşturalım. Onunda adı org.Serhatdundar.paket olması gerekmekte. Yani test edeceğimiz uygulamanın paketi ile aynı. (Page/New/package)

Oluşan pakete sağ tıklayıp. New / Junit test case yolundan yeni bir Test Case oluşturun. Name kısmına KisiTest yazdık (siz farklı bişeyde yazabilirsinizi tabiki) “Class under test” kısmına “Kisi” yazdık. Çünkü biz “Kisi” isimli sınıfı test edeceğiz.

Üst kısımda “Superclass does not exist” uyarısı aldık. Bu neden kaynaklandı? Çünkü JUnit3, SerhatDundar projemizin yapılandırma yoluna dahil değil. (Build path=Yapılandırma yolu)

Build Path : Uygulamayı derlemek için gereken harici Java sınıflarının yeri.

JUnit’te yukarıda bahsettiğimiz harici Java sınıflarından biri olduğu için build path’e eklememiz gerekmekte.

Next’e tıklayarak ilerliyoruz.

6

“Kisi” sınıfı altında kullandığımız tüm metodları karşımızda görmemiz gerekiyor.

“Object” sınıfı altında ise object sınıfına bağlı superclass’ları görebilmekteyiz.

Eclipse bu ekranda seçtiğimiz metodlar için içi boş test metodları oluşturacak.

Biz projemizde “Kisi()” , “setIsim(String)”, “setYas(int)” metodlarını test edeceğiz. Bunları seçelim.

Finish’e tıklayalım.

** Yukarıda belirttiğimiz alt kısımdaki uyarı mesajı görünmezse panik yapmayın, Finish’e tıkladığımızda bize JUnit Test Case’i build path’e ekleyeyim mi diye sorulacak :

7

OK’e basarak geçelim.

package org.Serhatdundar.paket;

import junit.framework.TestCase;

public class KisiTest extends TestCase {

public void testKisi() {

fail(“Not yet implemented”);

}

public void testSetIsim() {

fail(“Not yet implemented”);

}

public void testSetYas() {

fail(“Not yet implemented”);

}

}

*** Şuan eclipse’in projemizin altına JUnit3 isminde bir kütüphane oluşturması gerekiyor. Eğer bu oluşmadıysa sayfanızda bir çok hata göreceksiniz. Bu hataları düzeltmek için “Problems” bölümüne gelip ilgili probleme sağ tıklayıp “Quick Fix”i seçebilirsiniz.

Quick Fix Nedir?

*Derleyici hatalarını düzeltmek için bize önerilerde bulunur.

*Hataya sağ tıklayarak veya CTRL+1 kombinasyonu ile ulaşılabilir.

*Programcıların işini kolaylaştıran pratik bir özelliktir.

Quick Fix’in bizim yerimize yaptığı işi görmek için SerhatDundar’a sağ tıklayın. Build Path kısmından Configure Build Path’i seçin. Üst menüden Libraries’i seçerseniz JUnit3 kütüphanesini görebilirsiniz. Biz bu işi Add Library kısmından bizde yapabilirdik fakat eclipse bunu bizim yerimize kolay bir şekilde yaptı.

Fail(“Not yet implemented”) uyarısı bize TestCase’in henüz görevini yapmamış olduğunu bildiriyor.

Çalışmasını kontrol etmek için Run/Run As/Junit Test yolunu seçiniz.

Test sonucunda 3 adet failure yani eksiklik tespit edilmesi gerekiyor. Bu beklediğimiz bir sonuç..

8

Failure Trace kısmından neden hata aldığımızı görebilirsiniz.

Oluşan kod içinden “fail(“Not yet implemented”);” satırlarını silelim.

İlk sildiğimiz satırda boşalan yere yeni bir Kisi nesnesi oluşturup bu alanın doğru yapılanıp yapılanmadığını test etmeliyiz.

package org.Serhatdundar.paket;

import junit.framework.TestCase;

public class KisiTest extends TestCase {

public void testKisi() {

fail(“Not yet implemented”);

}

public void testSetIsim() {

fail(“Not yet implemented”);

}

public void testSetYas() {

fail(“Not yet implemented”);

}

}

Belki devam eder belki etmes..

  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.
Yorum yapmak için giriş yapmış olmalısınız.