Nesne Yönelimli Programlamaya Giriş Dersi Laboratuvar uygulamaları

Nesne Yönelimli Programlamaya Giriş dersinin laboratuvar uygulamaları internet üzerinden moodle ile http://moodle.kou.edu.tr sitesinden üzerinden yapılmaktadır.

Nesne Yönelimli Programlamaya Giriş (Bilgisayar Bölümü) laboratuvar uygulamalarında karşılaştığımız en sık problemler ve çözümlerinden bir kısmı aşağıdaki gibidir :

NOT:
Aşağıdaki çözümler bazı durumlar için doğru olmayabilir fakat en sık
karşılaştığımız problemler ve çözümleri aşağıdaki gibidir.
Örneğin ; expected hatası her zaman bir üst satırda eksik olması ile ilgili olmayabilir.

  • class adı verilirken arada boşluk bulunmaz.
    Örnek
    class Fatura Tutari —-> YANLIŞ
    class FaturaTutari —–> DOĞRU
  • class ismi ile dosya ismi aynı olmalıdır.
    FaturaTutari.java Dosyasındaki class adı class FaturaTutari şeklinde olmalıdır.
  • Oku komutu kullanılırken Oku ‘nun İlk harfi büyük yazılır.
    Kullanım şekli:

Oku.intSayi();

dikkat edilirse ilk harfler büyük yazılmıştır.

  • ; expected Hatası ise ; eksikliğinden kaynaklanan hatadır. dolayısıyla ; karekterinin kullanılması gerektiğini belirtmektedir ve bir üst satır kontrol edilmelidir.
    Örneğin
    bu hatayı 8. satırda verdiyse Compiler 7. satırda eksik olduğu vurgulanmaktadır. 7. satır kontrol edilmelidir.
  • public static void main( String args[] ); —–> YANLIŞ
    Sonunda ; olmaz.
    public static void main( String args[] ) —–> DOĞRU
  • cannot find symbol variable x hatası,
    x isimli bir değişkeni daha önce tanımlaMAdan kullanılmaya çalışılmış.Örneğin :
    x = 5; //YANLIŞ .. x nerede tanımlandı ? tipi nedir ?
    float x = 50f; // DOĞRU x float olarak tanımlandı.
  • variable x might not have been initialized hatası,(ilk değer ataması değişken tanımlandığında yapılmamıştır.)
    değişken
    tanımlaması yapılmış ve değişken tanımlandığında herhangi bir değer
    atanmamış fakat değişkene hiçbir değer ataması yapılmamasına rağmen
    değişken kullanılmaya çalışılmış.
    Örneğin:
    int x;
    int sonuc = x * 2; //YANLIŞ.. neyin iki katını almaya çalışıyorsunuz?x değeri belli değil.
    int x = 5;
    int sonuc = x * 2; //DOĞRU .. x değeri 5 olduğuna göre 5 in karesini al.
  • possible loss of precision (hassasiyet kaybı).
    Değişken tipleri birbirleriyle uyumlu olmalıdır
    ve değişkenlere değer atamada tip uyumluluğu sağlanmalıdır.
    Float bir değer int bir değere atanmaya çalışılırsa bu hata verilir.
    örnek =>
    int x,y;
    short z;
    z=x+y; ====> YANLIŞ ( çünkü z değişkeni short tipinde olduğundan
    yalnız short değişken atanabilir.)int x,y;
    int z;
    z=x+y; ====> DOĞRU ( z değişkenide int tipinde olduğundan atama
    işlemi doğrudur.)
  • Float tanımlamalarda sayılar 10.05 değil 10.05f şeklinde kullanılır.
    Sonundaki f değeri sayının bir float olduğunu gösteriyor.Eğer f koymazsanız bu bir double değerdir.
    float sayi1 = 10,05; ====> YANLIŞ
    float sayi1 = 10.05f; ====> DOĞRU
  • public static void main() ifadesinden sonra { kullanılmalıdır.
  • karakter tanımlamaları ‘a’ şeklinde yapılır.
    “a” ile tanımlanan bir karakter değildir, bir string değerdir. Karakter tanımlamak istiyorsanız ‘ ‘ kullanın.
  • VEYA yazmak istiyorsanız klavyeden Alt GR tuşu ile birlikte < > tuşuna basın. Sonuçta || şunları elde etmelisiniz. // \ gibi ifadeler veya anlamına gelmez.
  • for(i=0;i<100;i++); for döngüsünden sonra ; kullanılmaz.
    Döngünün doğrusu :
    for ( i=0; i<100 ; i++ ) {
    }//for i
    Eğer her bir { parantezin bittiği yere } açıklama olarak komutun başlangıcını yazarsanız yanlışlık yapmanızı engellersiniz.

Örneğin :

do{
for ( i=0; i< 100 ;i++)
{
for ( j=0; j<100 ; j++)
{
System.out.println(i+” “+j+” ” );
}//for j
}//for i
}while( cevap == ‘E’ ||cevap==’e’ );
BU şekilde yazdığınızda hangi for döngüsü nerede bitiyor belli olur.

  • == ifadesi karşılaştırmalarda kullanılır. = ifadesi atamada kullanılır.
    while ( cevap =’e’ ) derseniz cevap değişkenine e değerini atarsınız.Kontrol yapmış olmazsınız.
  • Exception in thread “main” java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
    at Oku.intSayi(Oku.java:19)
    at karsilik.main(karsilik.java:11)

cevap=Oku.charDeger();
ile bir karakter okunur. Fakat klavyeden girilirken enter tuşuna
basılır. Girilen değer cevap değişkenine atanır fakat ENTER tuşu bir
sonraki a=Oku.intSayi(); değerine gider ve hiçbir sayı girilmeden
enter’a basılmış olur. Bu nedenle yukarıdaki hata verilir. Bu hatanın
çözümü için enter tuşunun temizlenmesi gerekir.