You are on page 1of 24

Yrd.Doç.Dr.

Yüksel ÇELİK
Java Projesinin Temelleri
 Bir Java projesinde kaynak
kodlarımız src adlı klasörde tutulur.
Oluşturacağımız her türlü Java
uzantılı dosya (Java sınıfları) bu
klasörde saklanır ve uygulamayı
çalıştırdığımızda bu klasör içinden
derlenir. libklasör ise harici Java
kütüphanelerini projemize eklemek
için kullanılan jar dosyalarının
saklandığı klasördür.
 NOT: Herhangi bir jar dosyasını
projeye ekleyerek içerisindeki
sınıfları kullanmak için
bir jar dosyasını sağ tuşla
tıklayarak Build Path -> Add to
Build Path demeniz yeterlidir.
Java Yazım Kuralları ve Önerileri
Her dilin olduğu gibi programlama dillerinin de kendi içinde
belli kuralları var. Bu kurallara uyarak yorumlayıcıya veya
derleyiciye kodunuzu doğru biçimde ifade edebilirsiniz
 Yazılım üretimindeki %80'lik zaman dilimi, kod bakımına
(maintenance) harcanıyor.
 Çok az yazılım, yaşamı boyunca ilk yazarınca geliştirilir.
 Kod yazma gelenekleri yazılımın okunmasını ve
anlaşılmasını kolaylaştırır.
 Mühendislerin yeni kodu hızlı ve verimli bir şekilde
anlamasını sağlar.
 Kodunuzu açmaya karar verdiğinizde daha anlaşılır olacağı
için daha kolay destek bulursunuz.
Değişken tanımlama kuralları ve önerileri
Kural: Bir değişken yazarken önce onun tipini, sonra
adını yazmalısınız:

Öneri: Değişken ismi yazmanın belli kuralları var. Örneğin


CamelCase kuralıyla isimlendirme yaparken isimlerin ilk
harfi büyük olmalı. Eğer değişken ismi iki kelimeden
oluşuyorsa ikinci kelimenin de ilk harfi büyük olmalı. Örn:
Integer UyeSayisi
Öneri: Geleceği Yazanlar'da genellikle Mixed Case olarak
isimlendirilen, ilk harfinin küçük olması dışında
CamelCase'e benzeyen yaklaşımı tercih ediyoruz. (Çünkü
CamelCase, çoğunlukla sınıf isimlendirmelerinde
kullanılır) Örn:
Integer uyeSayisi
Değişken tanımlama kuralları ve önerileri
Kural: Değişken isimlerinde Türkçe
karakter kullanamazsınız.
Kural: Değişken adları rezerve edilmiş Java
sözcüklerinden oluşamaz (int, float, public, static,
volatile vs). Bu sözcükler Java derleyicisinde bir
anlam ifade ettiğinden değişken adı olarak
kullanılamazlar.
Kural: Değişken isimleri rakamla
başlayamaz ancak içinde rakam olabilir. Örn:
Integer dogrulamaKodu2;
Değişken tanımlama kuralları ve önerileri
Öneri: Sabit-değeri değişmeyen değişkenleri büyük harfle ve kelime aralarına alt çizgi
koyarak yazınız. Örn:
public static final Integer VARSYLN_CARPISMA_KATSAYISI;
Öneri: Java'da uygulamalar sınıflar halinde yazılır. Ayrıntılarını ilerleyen bölümlerde
göreceksiniz. Bir sınıfın üyesi olacak değişken tanımlayacağınız zaman onun isminin
önüne m getirebilirsiniz. Böylelikle kodunuzu okuyan kişi, bu değişken ismini nerede
görürse görsün, sınıfın üyesi (member) olduğunu anlayacaktır. Örn:
1.public class ProfileTask {
2.
3.private Integer mArkadasSayisi;
4.
5.}
Öneri: Bazı sınıf değişkenleri static olarak tanımlanırlar. Böyle değişkenlerin adının
önüne s ön eki getirebilirsiniz. Bu da onun diğer değişkenlerden ayrılmasını
kolaylaştırılacaktır. Örn:
1.public class ProfileTask {
2.
3.private Integer mArkadasSayisi;
4.private static Integer sEtkinIslemSayisi;
5.
6.}
Değişken tanımlama kuralları ve önerileri
Öneri: Fonksiyonlara parametre olarak gönderdiğiniz değişken isimlerinin önüne alt
çizgi koyabilirsiniz. Böylelikle fonksiyon içinde çalışırken hangisinin parametre,
hangisinin sınıfın ya da nesnenin kendi değişkeni olduğunu karıştırmamış olursunuz.
Örn:​
1.public class ProfileTask {
2.
3.private Integer mArkadasSayisi;
4.private static Integer sEtkinIslemSayisi;
5.
6....
7.
8.public static Boolean isEtkinIslemSayisiBigger(Integer _islemSayisi) {
9.if (_islemSayisi>sEtkinIslemSayisi) {
10.return true;
11.} else {
12.return false;
13.}
14.}
15.
16....
17.
18.}
Fonksiyon tanımlama kuralları ve önerileri
Kural: Bir fonksiyonun işini bitirdikten sonra
döndüreceği değerin tipi fonksiyon adından önce
yazılır. Örneğin:
1.public Integer getArkadasSayisi(){
2.return mArkadasSayisi;
3.}
Burada getArkadasSayisi() isimli
fonksiyonun Integer türünden değer döndüreceğini
anlıyoruz.
Öneri: Kendi oluşturduğunuz fonksiyonların isimlerini
fonksiyonun görevini ifade edecek şekilde seçmelisiniz.
sayi() yerine getDersSayisi() gibi.
Sınıf tanımlama kuralları ve önerileri
Kural: Sınıf ismiyle, o sınıfı sakladığınız dosyanın ismi aynı
olmalıdır.
Örneğin LoginManager sınıfıLoginManager.java dosyasında
saklanmalı.
Kural: Sınıf isimleri verirken değişken tanımlarken uyguğunuz
kurallara uymalısınız.
Öneri: Sınıfları isimlendirirken fiilleri kullanmak yerine özellikle
isimler kullanmalısınız. Çünkü sınıflar gerçek hayattaki nesnelerin
karşılığıdır. Örneğin User, UserManager birer isimdir. Register,
Login, Delete gibi işlemler birer fiildir.
Öneri: Sınıf isimleri CamelCase biçiminde verilmelidir.
public class usermanager {...}
yerine
public class UserManager
kullanmak kodunuzu daha okunur kılacaktır.
Yorum satırı kuralları ve önerileri
Yazılan kodu ister siz ister başkası yazmış olsun, sonradan okuyan herkes için kodu
anlatmanın en kolay yollarından biri ona yorumlar bırakmaktır. Java'da satıra ya da birçok
satıra blok olarak yorum koyulabilir.
Kural: Java'da bir yorum satırı oluşturmak için satırın başına "//" (iki tane bölü işareti)
getirmek yeterlidir. Birden fazla satırı aynı anda yorum satırı haline getirmek için tek tek
hepsinin başına "//" koymak yerine en baştaki satıra "/*" ve en sondaki satırın sonuna da
"*/" koymak yeterlidir.
Örnek:
1./*public Integer getArkadasSayisi(){
2. return mArkadasSayisi;
3. }*/
4....
5.
6.public static Boolean isEtkinIslemSayisiBigger(Integer _islemSayisi) {
7.if (_islemSayisi>sEtkinIslemSayisi) {
8.return true;
9.} else {
10.//return false;
11.return 0;
12.}
13.}
14.
15....
Öneri: Bir sınıfı tanımlarken o sınıfın ne işe yaradığını hemen sınıf tanımlamasının
üzerine yazabilirsiniz. Örneğin:
Sabitlerden Oluşan İfadeler
Sabitler; değişkenler gibi veri tutan sınıf öğeleridir. Ancak C dilinde olduğu gibi sabit
öğe kavramı da yoktur. Java'da sabitler bir değişken bildirimi yaparak hareket ederler.
Sabitlere atanan değerler değiştirilemez ve sabit bildirimi yapıldığı anda değeri
atanmalıdır.
Sabitlerden (constants) oluşan ifadeler, sadece sabit ve operatör içerirler. Örneğin;
17 + 2
3
'b' – 200 / 3
Burada ilk ifadenin sonucu 19 sabitidir. İkinci ifade zaten sadece 3 sabitinden oluşuyor.
Üçüncü ifadenin sonucu ise, b karakterinin ASCII kodu 98 olduğu için:
98–200/3
şeklinde hesaplanacaktır. Önce bölme yapılacağı için 200/3’ün sonucunu 66 olarak
buluruz; çünkü iki tam sayı arasındaki işlemin sonucu daima bir tam sayıdır. Bu
durumda sonuç;
'b'–200/3=98-66=32
olarak hesaplanacaktır.
int Türü İfadeler
int türünde tamsayı sabit ya da değişken içeren ifadeler, sonuçta tamsayı (int) değer
üretecektir. Örneğin,
int a,b,c;
​a=9;
b=12;
c=13;
şeklindeki atamalar ile,​
a+b/c
ifadesi,
9+12/13=9+0=9
olarak hesaplanacaktır. 12 ve 13’ün int türünde olduğunu ve bu nedenle 12/13 işleminin
sonucunun da int türünde olacağını ve 12/13’ün int türündeki sonucunun da 0 olacağını
hatırlatalım.
b – c % a + ‘x’ – 3 + (int) 8.7
ifadesi ise

12 –13%9+120 –3+8
12 – 4 + 120 –3+8=133
aşamalarından geçerek 133 olarak hesaplanır. ’x’ karakter sabiti yerine onun ASCII kodu olan
120 değeri alınır. 13%9 ifadesi ise 13’ün 9 ile bölümünden elde edilecek olan kalanı
hesaplanır. (int) 8.7 ifadesi ise 8.7 ondalık sayısını int türüne yani 8’e dönüştürür.
float Türündeki İfadeler
Programlamada özellikle hesaplama aşamasındayken, sadece tamsayılar üzerinden gitmek sizi
sınırlayabilir. Rasyonel sayıları kullanmak istediğinizde, yeni değişken türlerini de kullanmalısınız.
Java dilinde float ve double türündeki değişkenler ile rasyonel sayıları tutabilirsiniz.
Float ve double türünden değişkenlerin adını kayan noktalı (floating point) değişkenler olarak da
duyabilirsiniz. Buradaki nokta kısmı, tam sayı kısmı ile ondalıklı sayı kısmını bölen virgül oluyor.
Float ve double türlerinin arasındaki fark, virgülden sonraki ondalık kısımda tutabildikleri hane
sayısıdır. Bu yüzden bir float değişken sanal bellekte 32 bitlik yer tutarken, double türündeki bir
değişken 64 bit yer tutacaktır.
Kayan noktalı bir tip yerine tamsayı tipini kullandığınızda olacakları daha iyi anlamak için
aşağıdaki örneği inceleyiniz:
1.public class FloatDeneme1 {
2.public static void main(String[] args) {
3.
4.int sinav1=50;
5.int sinav2=55;
6.
7.int ortalama_yaklasik =(sinav1+sinav2)/2;
8.float ortalama_tam =(float) (sinav1+sinav2)/2;
9.
10.System.out.println("Sinav ort. (yaklasik): "+ortalama_yaklasik);
11.System.out.println("Sinav ort. (tam olrk): "+ortalama_tam);
12.}
13.}
Bu programın çıktısı şu şekilde olacaktır:

Gördüğünüz gibi int tipindeki ortalama_yaklasik değişkenin 52,5 çıkan sonucu, tamsayı tipinde
olduğu için 52'ye yuvarladı. float tipindeki ortalama_tam değişkeni ise olması gerektiği gibi 52,5
olarak kaldı.
float Türündeki İfadeler
NOT: float ortalama = (float) (sinav1+sinav2)/2; satırındaki (float) ifadesi ile "(sinav1+sinav2)/2"
işleminden gelen sonucun float olarak tutulmasını sağlıyoruz.

Gördüğünüz gibi kayan noktalı değişkenleri tanımlarken bazı ifadelere dikkat etmek gerekiyor.
Şimdi de float ile double türlerinin hassasiyetleri üzerine bir örneğe göz atalım:
1.public class FloatDeneme2 {
2.public static void main(String[] args) {
3.
4.//Math.PI, bize PI sayısını döndürür
5.float PI_float =(float) Math.PI;
6.double PI_double=Math.PI;
7.
8.System.out.println("PI sayisi: "+PI_float);
9.System.out.println("PI sayisi: "+PI_double);
10.}
11.}
Çıktısı şöyle olacaktır:

NOT: Math.PI ifadesi, PI sayısını tutan bir ifadedir.

Gördüğünüz üzere double türündeki PI_double değişkeni, PI sayısına ilişkin daha fazla ondalık
değeri tutabiliyor. Bu yüzden double değişkenler, daha hassas hesaplama gereken yerlerde
kullanılır.
Tekli Operatörler
Bu bölümde negatifini alma (–), pozitifini alma (+), artım (++) ve
azaltım (––) operatörlerini inceleyeceğiz. Negatifini alma
operatörü (–) tek bir operand üzerinde etkili olduğu için, iki
operand ile işleme giren (––) sembolü ile karıştırılmamalıdır.
ÖRNEK:
1.public class Uyg5 {
2.public static void main(String[] args){
3.int x, y=-5;
4.
5.x=16- -y;
6.System.out.println("x="+x);
7.}
8.}
Bu programda x’in değeri 11 olarak bulunacaktır. –y – (–5)=
+5 olarak hesaplanır. 16’yı izleyen çıkarma operatörü (–) ile y’nin
önündeki negatifini alma (–) operatörü arasında mutlaka bir
boşluk olmalıdır. Aksi halde (–) ifadesi azaltım operatörü olarak
algılanacaktır.
Tekli Operatörler
Son artım ve son azaltım operatörlerinde derleyici, değişkenin o andaki değerini bellekte
geçici bir değişkene atayarak saklar. Sonra değişkenin değerini 1 artırır (son artım) veya 1
azaltır (son azaltım). Geçici değişkendeki değer ise ifade içinde kullanılır.
Tablo T.1-Tekli Operatörler
operatör sembolü kullanlışı işlem sonucu

tekli negatif alma – –a a’nın negatifini alır

önce a’nın değerini al,


son artım ++ a++
kullan, sonra 1artır.

önce a’nın değerini 1


ön artım ++ ++a
artır, sonra kullan.

önce a’nın değerini al,


son azaltım –– a–– kullan, sonra 1son
azaltım azalt.

önce a’nın değerini 1


ön azaltım –– ––a
azalt, sonra kullan.
Tekli Operatörler
ÖRNEK PROJE:
1.public class Uyg6 {
2.public static void main(String[] args){
3.int x=4, y=8, z;
4.
5.z= x++ + y--;
6.
7.System.out.println("z="+z);
8.System.out.println("x="+x);
9.System.out.println("y="+y);
10.}
11.}
PROJENİN ÇIKTISI:
Tekli Operatörler
ÖRNEK UYGULAMA:
1.public class Uyg7 {
2.public static void main(String[] args){
3.int x, y, z, m;
4.
5.x=10;
6.y=5;
7.z=16;
8.
9.m=++x - --y + z++;
10.
11.System.out.println("z="+z);
12.System.out.println("x="+x);
13.System.out.println("y="+y);
14.System.out.println("m="+m);
15.}
16.}
UYGULAMANIN ÇIKTISI:
Tekli Operatörler
ARTIM VE AZALIM OPERATÖRLERİ İÇİN BİR DİĞER ÖRNEK UYGULAMA
1.public class Uyg8 {
2.public static void main(String[] args){
3.int m, n, p, q;
4.
5.m=4;
6.n=2;
7.p=10;
8.q=8;
9.
10.m= -m++;
11.n= n--;
12.p= --p;
13.q= -++q;
14.System.out.println("m="+m);
15.System.out.println("n="+n);
16.System.out.println("p="+p);
17.System.out.println("q="+q);
18.}
19.}
UYGULAMANIN ÇIKTISI
İkili Aritmetiksel Operatörler
İşlem
Operatör Sembolü Kullanılışı
Sonucu
çarpma * a*b a ile b’nin çarpımı
bölme / a/b a’nın b’ye bölümü
a’nın b’ye
kalan % a%b
bölümünden kalan
a’nın b ile
toplama + a+b
toplanması
b’nin a’dan
çıkarma – a-b
çıkarılması

*, / ve % operatörleri, + ve –'ye göre önceliklidir. *, /, + ve – operatörlerinin int veya float


(double) türde operand kabul etmelerine karşılık kalan operandları sadece int türde operand
olarak kabul eder. % operandı bölmede kalanı hesaplar.
Örnek:
17 % 3 işleminin sonucunda 2 değeri (17’nin 3 ile bölümünden kalan) elde edilir. ANSI
standardı, kalan ve bölme operatörleri arasında aşağıdaki bağıntının bulunmasını zorunlu kılar:
a = a % b + (a /b) *b (a ve b tamsayı)
İkili Aritmetiksel Operatörler
ÖRNEK UYGULAMA:
1.public class Uyg9 {
2.public static void main(String[] args){
3.int a, b, c;
4.double p, q, r, x, y, z, k;
5.
6.a=7; b=4; c=15;
7.p=2.7;
8.q=13.8; x değeri
9.r=12.45;
10.
7 % 4 * 15 – 15 / 4 * 7
11.x= a % b * 15 - c / b * a; 3 * 15 – 3 * 7
12.y= a * 2 % (b + 1) - c / (a +b); 45 – 21
13.z=x / y * a - b ++ * --c; 24
14.k=p -q / (r +z) * (q -r) + b++ * z;
15. y değeri
16.System.out.println("x="+x);
17.System.out.println("y="+y);
7 * 2 % (4 + 1 ) – 15 / (7 + 4)
18.System.out.println("z="+z); 14 % 5 – 15 / 11
19.System.out.println("k="+k); 4–1
20.} 3
21.}
ÖRNEK UYGULAMANIN ÇIKTISI: z değeri
24 / 3 * 7 – 4++ * 15 ,
8 * 7 – 4 * 14
56 – 56
0
olarak hesaplanır.
Aritmetiksel Atama Operatörleri
Operatör Sembolü Kullanılışı İşlem Sonucu
y’nin değerini x’e
Atama = x=y
ata
x + y’nin değerini
Topla-ata += x+=y
x’e ata
x – y’nin değerini
Çıkar-ata –= x–=y
x’e ata
x * y’nin değerini
Çarp-ata *= x*=y
x’e ata
x / y’nin değerini
Böl-ata /= x/=y
x’e ata
x % y’nin değerini
Kalanını ata %= x%=y
x’e ata

Tablodan kolayca anlayacağımız üzere, x + = y ifadesi x = x + y ifadesine, x % =


y ifadesi de x = x % yifadesine denktir.
= operatörünün atama amacı ile kullanıldığını biliyoruz. Sembolün sol tarafındaki operand
bir sol taraf operandı (left hand operand, Lvalue) olmalıdır.
Sol taraftaki operand (değişken, dizi elemanı, yapı elemanı vb.) sağ taraftaki operandın
değerini bellekte saklar.
Aritmetiksel Atama Operatörleri
ÖRNEK:
int k;
double l;
l = k = 13.72;
Yukardaki komutlar ile (=) sembolünün birleşme özelliği sağdan sola
olduğu için,
( l = (k = 13.72));
sırasıyla atamalar yapılacaktır. Java hassasiyetin kaybolmasına izin
vermeyeceği için k=13.72 atamasında,
“possible loss of precision” veya Eclipse'te "cannot convert from
double to int"
şeklinde bir hata mesajı verilecektir. Java’da sadece programcının açıkça
cast ifadeleri ile,
(int) 13.72
gibi, hassasiyetin kaybolmasına özellikle izin verdiğini belirtmesi halinde
bu tür atamalar yapılır.
Aritmetiksel Atama Operatörleri
ATAMA OPERATÖRLERİ: ÖRNEK PROGRAM
1.public class Uyg10{
2. public static void main(String[ ] args){
3.
4. int k;
5. double l;
6. l = k =13.72;
7.
8. System.out.println("l="+l);
9. System.out.println("k="+k);
10. }
11.}
ÖRNEK PROGRAMIN ÇIKTISI

ÖRNEK PROGRAM: CAST İFADESİNİN KULLANIMI


1.public class Uyg10{
2. public static void main(String[ ] args){
3.
4. int k;
5. double l;
6. l = k =(int)13.72;
7.
8. System.out.println("l="+l);
9. System.out.println("k="+k);
10. }
11.}

CAST İFADESİNİ KULLANAN ÖRNEK PROGRAMIN ÇIKTISI:

You might also like