Страницы

воскресенье, 25 марта 2012 г.



Javada Final anlayışı  



 Javada Final əsasən dəyişənlərə,metodlara,siniflərə tətbiq edilir.Əvvəlcə finalın metoda necə tətbiq edilməsinə baxaq.Bir final metod təməl sinifdə tətbiq olunduqda,törədilən siniflərdə ləğv edilə bilməyən metodları ifadə edir.
   
class Temel

{

final void Yaz( )

   {

       System.out.println("Temel sinifdeki Yaz metodu");

    }

}


class Toreyen extends Temel

 {

     public void Yaz( )

 {

     System.out.println(" Toreyen sinifdəki Yaz metodu ");

  }

}





public class FinalTest1

{

   public static void main( )

 {

     Toreyen t=new Toreyen( );

      t.Yaz();

  }

}

 Bu nümunəni işlətsək səhv göstərəcək.Çünki təməl siniflərdə final olan metod törəyən siniflərdə override edilmir.

 İndi isə final olaraq təyin olunan dəyişənlərə baxaq.Dəyişənləri final olaraq bildirdiyimizdə,onlara ilk  qiymət verildikdən sonra qiymətlərini dəyişdirə bilmərik.Bu əslində Javaya qədər öyrəndiyimiz proqramlaşdırma dillərindən bizə tanış olan const anlayışı ilə eynidir.Bununla yanaşı final dəyişənlərə qiymət verilməsi həmin sətirdə və ya metod içərisində olmalıdır.Belə ki,obyekt yaradılması bitdikdən sonra final dəyişənin qiyməti məlum olur və bir daha dəyişilmir.Aşağıdakı nümunəyə baxaq.
  
public class FinalTest2 {



   private final int finalDeyişen;



   public void printFinal( ) {

             System.out.println("Final Deyisen Deyeri: " + finalDeyisen);



         }

}



 Beləki,bunu işlətsək səhv göstərəcək.Yuxarıda qeyd etdiyimiz kimi ilk qiymət verilməsi sətrdə və ya metod içərisində olmalıdır.Buna görə də bu nümunəni aşağıdakı kimi yazaq.

   

public class FinalTest2 {



   private final int finalDeyişen;



   public void printFinal( ) {



    finalDeyişen = 5;

             System.out.println("Final Deyisen Deyeri: " + finalDeyisen);



         }

}


 Bu halda da səhv göstərəcək.Çünki burada qiymət verilməsi sinifin içərisində hər hansı bir metodun içərisindədir. İndi isə yazdığımız kodda aşağıdakı kimi dəyişiklik aparaq.

public class FinalTest2 {



   private final int finalDeyişen;
   public FinalDeneme(int deger)
  {
      finalDegisken = deger;
  } 


   public void printFinal( ) {

      System.out.println("Final Deyisen Deyeri: " + finalDeyisen);

          }

 } 

 Kodu bu cür yazdığımızda səhvsiz işləyəcək.Çünki,final dəyişənin qiyməti quruluşcu metod içərisində verilmişdi.
 İndi isə az da olsa bir iki cümlə ilə final siniflər haqqında qeydlər aparaq.Beləki,final olaraq təyin olunmuş bir sinifdən başqa bir sinifi irsi olaraq törətmək olmaz.Aşağıdakı nümunəyə baxaq.



    final class FinalSinif

 {

            }



  class Toreyen extends FinalSinif
{
         }
 Düzdü,bu yazılışı kod adlandırmaq olmaz.Amma başa düşülən olması üçün mən belə yazılışdan istifadə etməyi məqsədə uyğun hesab edirəm.Əvvəldən qeyd etdiyim kimi final olaraq təyin olunmuş bir sinifdən başqa bir sinifi törətmək olmaz.Yəni belə bir kod yazılışını genişlədib bir proqram şəkilinə gətirsək,səhvlə qarşılaşacağıq.
 Bu da sonuna bəlkə də gəlib çıxa bilmədiyim mövzulardan birinin sonu.

пятница, 16 марта 2012 г.

 Javada sinif anlayışı 

 

  Bilidiyimiz kimi Java proqramlaşdırma dilindəki proqramlar siniflərdən təşkil olunub.Bütün siniflər eyni quruluşa malikdirlər.Aralarındakı fərq sadəcə daxillərindəki metod və dəyişənlərdir.Lakin bu o demək deyil ki, bir sinif içində  mütləq dəyişən və ya metod olmalıdır.Bu bizim yazacağımız proqramdan asılıdır.
Java proqramlaşdırma dili obyekt yönümlü bir dil olduğu üçün obyektlər də siniflərə əsaslanır.
  Obyekt nədir?Ətrafımızda gözlə görə bildiyimiz hər bir şey obyektdir.Bəzi obyektlər bir yerə gələrək yeni obyektlərin yaranmasına səbəb olur.Proqramlaşdırmada da belədi.Beləki,proqramlaşdırmada hər hası obyektə misal göstərmək üçün sinif lazımdı.
Sadə bir sinif göstərək.

public class BosSinif
{


}


Əlbəttə bu sadəcə sinifin nə olduğunu göstərmək üçün verdiyim heç bir mənası olmayan nümunədir.
İndi isə metod və dəyişənlərlə bol aşağıdakı sinifə baxaq və onu araşdıraq.


public class Sinif1
{
private int dəyər1;
private int
dəyər2;
public Sinif1()
{
dəyər 1=10;
dəyər 2=15;
}
public Sinif1(int d1,int d2)
{
dəyər1=d1;
dəyər2=d2;
}
public
Sinif1 (int d1)
{
dəyər1=d1;
}
public void Yaz()
{
System.out.println("D
əyər1:"+ dəyər1+"Dəyər2:"+ dəyər2);
}
}



Göründüyü kimi Sinif1 adlı sinif yaratdıq.Bu sinif 3 dənə eyni adlı metodlardan təşkil olunub.Bu metodları işlətmək üçün aşağıdakı Program adlı sinifi yaradaq.



public class Program
{
public static void main(String[] args)
{
Sinif1 birinciobyekt=new  Sinif1();
birinciobyekt.Yaz();
Sinif1 ikinciobyekt =new Sinif1(18,24)ı

ikinciobyekt.Yaz();
Sinif1 ucuncuobyekt =new Sinif1(45);
ucuncu
obyekt.Yaz();
}
}



İndi isə proqramı işlədək.Nəticədə aşadakıları alarıq.


Dəyər1:10  Dəyər2:15

Dəyər1:18  Dəyər2:24

Dəyər1:45  Dəyər2:0



Lakin əgər biz 



public class Sinif2
{
private int dəyər1;
private int
dəyər2;

public Sinif2(int d1,int d2)
{
dəyər1=d1;
dəyər2=d2;
}
public
Sinif2 (int d1)
{
dəyər1=d1;
}
public void Yaz()
{
System.out.println("D
əyər1:"+ dəyər1+"Dəyər2:"+ dəyər2);
}
}




Və proqram daxilində yazaq.

public class Program
{
public static void main(String[] args)
{
Sinif2 obyekt=new Sinif2();
Obyekt.Yaz();
}
}




Proqramı işlətsək görərik ki,səhv göstərəcək.Çünki,Javada vəziyyət fərqlidir.Beləki burada metodlar yalnız parametrlərinə görə fərqlərinlər.Metodların tiplərinin onların fərqlənməsinə heç bir təsiri yoxdu.Lakin biz  


{
Sinif2 obyekt=new Sinif2(12,20);
Obyekt.Yaz();
}


 yazsaq səhv ardan qalxacaq.