Kayıtlar

java programlama etiketine sahip yayınlar gösteriliyor

Java SE Ders25 - Polymorphism (Polimorfizm - Çok Biçimlilik) ve Late Binding (Geç Bağlama)

Resim
   Polymorphism (Polimorfizm) aynı işi farklı biçimlerle yapmamızı sağlar. Polymorphism (Polimorfizm) işlemi üst sınıftaki bir metodu alt sınıflarda override ederek sağlanır.    Örnek olarak ; Sekil üst sınıfı tanımlayalım. Sekil üst sınıfında şeklin alanının hesaplayan alanHesapla metodu oluşturalım. Sekil üst sınıfından Kare ve Ucgen sınıflarını türetelim. Kare ve Ucgen alt sınıflarında alanHesapla metodunu şekillere uygun olarak override edelim. Böylece alanHesapla metotlarının hepsi alanı hesaplayacak.Fakat kendine has yöntemleriyle hesaplayacak. İşte bu çok biçimlilik polymorphism (polimorfizm) örneğidir. Şekil sınıfından oluşturulan nesnenin hangi sınıfın alanHesapla metodunu çağıracağı koşma zamanında belirlenir.Bu olaya da Late Binding (Geç Bağlama) denir. Main.java package test; public class Main { public static void main(String[] args) { Sekil s1= new Sekil(); Sekil s2= new Kare( 4 ); Sekil s3= new Ucgen( 2 , 11 ); System. out . println ( &

Java SE Ders23 - Aşırı Yüklenmiş (Overloaded) Metotlar

Resim
  Bir metot farklı parametre sayısı ve/veya parametre tipi versiyonları ile tekrar tekrar aynı isimle oluşturulabilir. Bu metotlara aşırı yüklenmiş metotlar diğer bir ifadeyle overloaded metotlar denir. Overloaded metotlarda dikkat edilmesi gereken şey dönüş tipinin farketmemesidir. Yani bir metodun sadece dönüş tipini değiştirerek aynı isim, aynı parametre tipleri ve aynı parametre sayısı ile oluşturulamaz. Metot overload etmek için aşağıdaki koşullardan en az biri farklı olmalıdır. parametre sayısı parametre tipi Şimdi örnek programımızı yapalım. Program da kullanılan alan metodu : Bir tane tamsayı argümanı gönderildiğinde karenin alanını, İki tane tamsayı argümanı gönderildiğinde dikdörtgenin alanını, Bir tane ondalık sayı gönderildiğinde de çember alanını hesaplamaktadır. Main.java public class Main { public static void main(String[] args) { System. out . println ( "Kare\t\tkenar :4\talan:" +alan( 4 )); System. out . println ( "Di

Java SE Ders22 - Override Metot

Resim
  Üst sınıfta tanımlanan bir metodun alt sınıfta işlevini değiştirmeye override etmek denir.Override eden metotlara override metot lar denir. Alt sınıfta override işlemini yapan metodun hemen üstüne @Override etiketi konur. Alt sınıftaki bir metoda @Override etiketi koyulmasa da üst sınıftaki  metodu override etmiş olur. @Override etiketini koymanın avantajı programın yazılma aşamasında programcıya bir bilgi vermesidir.Bu bilgi şudur. @Override etiketi üstüne koyulan bir metot eğer üst sınıfta tanımlanmamışsa derleyici programcıya üst sınıfta böyle bir metot olmadığına dair bir bilgi verecektir.  Şimdi örnek programa geçelim. Main.java package test; public class Main { public static void main(String[] args) { A a = new A(); B b = new B(); a. yazdir (); b. yazdir (); } } A.java package test; public class A { public void yazdir(){ System. out . println ( "A" ); } } B.java package test; public class B extends A { @

Java SE Ders21 - Kalıtım (Inheritance)

Resim
  Bir sınıfın başka bir sınıfın özelliklerini taşıması kalıtım ile sağlanır. Kalıtım sayesinde benzer özellikler taşıyan sınıfların her birinde aynı üye elemanların tanımlanmasına gerek kalmaz.Kalıtımın en üst sınıfında tanımlanması yeterlidir. Kalıtımın en üstünde yer alan sınıfa süper sınıf (super class), altındaki sınıflara ise alt sınıf (subclass) denmektedir. Java'da sınıf hiyerarşisi Object sınıfı ile başlar.Bu sınıf programlama aşamasında açık olarak belirtilmese de tanımlanan tüm sınıfların atasıdır. Java çoklu kalıtıma izin vermez.Bir sınıf iki veya daha fazla sınıfın özelliklerini tek seferde alamaz. Yani elimizde bir A,B,C sınıfları varsa, bu A sınıfı aynı anda B ve C'nin özelliklerini alamaz. Constructor (Yapılandırıcı) metotlar sınıfların kendilerine özeldir kalıtımla alt sınıflara geçmez.Ancak alt sınıfta üst sınıfın constructoru çağrılabilir.Bu super metoduyla yapılır.Bu konuyu daha sonra açılayacağız. Kalıtım extends anahtar kelimesi ile sağlanır. Yani A

Hibernate Ders08 - Inheritance Mapping - V

Resim
   Altsınıf başına tablo örneğini yapalım. Main.java package test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Main { public static void main(String[] args) { Configuration cfg= new Configuration(); cfg. configure ( "hibernate.cfg.xml" ); SessionFactory factory=cfg. buildSessionFactory (); Session session=factory. openSession (); Transaction t=session. beginTransaction (); Personel p = new Personel(); p. setAd ( "enes" ); Maas m = new Maas(); m. setAd ( "enes2" ); m. setMaas ( 3500 ); Araba a = new Araba(); a. setAd ( "enes3" ); a. setMarka ( "opel" ); a. setModel ( "astra" ); session. persist (p); session. persist (m); session. persist (a); t. commit (); session. close (); System. out . println ( "basarili islem !"

Java SE Ders20 - this Anahtar Kelimesi

Resim
   Java'da this anahtar kelimesi birçok amaçla kullanılabilir.Bu amaçlar aşağıda listelenmiştir. O anda kullanılan nesneye referans göstermek için. O anda kullanılan nesnenin özelliklerine erişebilmek için Sınıf içinde başla bir constructor (yapılandırıcı ) metodu çağırabilmek için. O anda kullanılan nesneye referans gösterimi … public void islem(String ad,int maas){    ….     ata(this); } …. O anda kullanılan nesnenin özelliklerine erişme  … public void islem(String ad,int maas){     this.ad=”abc”;     this.maas=123; … } … Sınıf içinde başka bir constructor (yapılandırıcı) metodu çağırma public class Personel{ …     public Personel(){        this(“enes”);     }     public Personel(String k){        ad=k;     } … } Şimdi örnek programımızı gösterelim. Main.java package test; public class Main { public static void main(String[] args) { Personel p= new Person

Java Mini Proje 005 - Dik Üçgenin Hipotenüsünü Bulma

Resim
   Hipotenüs,dik açının karşısında bulunan kenara verilen addır. Aşağıdaki şekilde hipotenüs c kenarıdır.  Hipotenüs kenarının hesaplanışı c^2 = a^2 + b^2  c^2 değerinin de kök alınırsa c yani hipotenüs bulunmuş olur. Şimdi örnek programımızı yapalım. Main.java package test; public class Main { public static void main(String[] args) { System. out . println ( "3,4\t->\t" +hipotenusBul( 3 , 4 )); System. out . println ( "5,12\t->\t" +hipotenusBul( 5 , 12 )); System. out . printf ( "1,2\t->\t%.3f" ,hipotenusBul( 1 , 2 )); System. out . printf ( "\n10,16\t->\t%.3f" ,hipotenusBul( 10 , 16 )); } public static double hipotenusBul( double a, double b){ double a2b2=a*a+b*b; return Math. sqrt (a2b2); } }

Java SE Ders19 - Statik (Static) Anahtar Kelimesi

Resim
   Bir sınıfta tanımlanan bir değişken sınıfın her nesnesi için özeldir. Fakat bir sınıf içindeki değişkeni statik olarak tanımlamak o sınıftan oluşturulacak tüm nesnelerin o değişkeni ortak olarak kullanılacağını söylemektedir. Örnek vermek gerekirse, her birinin kendine ait arabası olan 4 kişi olsun. Bu arabaların benzin durumları sadece arabaların kendi sahibini ilgilendirir. Fakat bu 4 kişi tek bir arabayı ortak olarak kullansalardı (statik) o arabanın benzin durumu herkesi ilgilendirecekti. Statik anahtar kelimesinin özellikleri Statik olmayan sınıf üyeleri sınıftan bir nesne yaratıldığında bellekte oluşturulur.Statik sınıf üyeleri ise sınıftan nesne üretilmese de bellekte vardır.  Statik metotlar static olmayan sınıf üyelerine erişemez.  Statik olmayan metotlar statik olan sınıf üyelerine erişebilir.  Statik sınıf üyeleri tüm nesneler için ortak olduğu için this anahtar kelimesiyle kullanılamaz.(this anahtar kelimesi daha sonra bahsedilecek.) Şimdi buna uygun bir ör

Java SE Ders18 - Sınıflar (Classes) - II

Resim
Yapılandırıcı (Constructor) Metot Kavramı   Constructor metot sınıfta bulunan değişkenlere ilk değerini vermek (initialize etme işlemi) için kullanılır. Bir sınıftan bir nesne oluşturulduğunda o sınıfa ait constructor metodu otomatik olarak çağırılır. Biz sınıf içinde constructor metodu tanımlamasak bile default olarak constructor metodu bulunur.  Tanımlayacağımız constructor ismi sınıf ismiyle birebir aynı olmalıdır. Constructor metotların dönüş tipi bulunmaz. Birden fazla constructor metot parametre tipi veya parametre sayısı farklı olmak şartıyla tanımlanabilir. Şimdi bunun bir örneğini yapalım. Personel.java package test; public class Personel { private String ad; private int yas; private int maas; public Personel(){ this . ad = "belirtilmedi" ; this . yas = 0 ; this . maas = 0 ; } public Personel(String ad){ this . ad =ad; this . yas = 0 ; this . maas = 0 ; } public Personel(String ad, int yas){ this . ad =ad; this .

Java SE Ders17 - Sınıflar (Classes) - I

Resim
  İçinde çeşitli java üye elemanları bulundurabilen yapılardır.Örnek bir sınıf tanımlanması aşağıdaki gibidir. public class Personel{…} Bir sınıf içerisinde değişkenler tanımlanabilir. public class Personel{             private String ad;  } Bir sınıf içinde metotlar tanımlanabilir. public class Personel{             private String ad;                     public vodi setAd(String t){                     ad=t;             }             public String getAd(){                    return ad;             } }   Sınıflar aslında soyut yapılardır. Sınıfl arı somutlaştıran, sınıf lardan oluşturulan nesne lerdir.Yani sınıflar bir değişken gibi davranmazlar. Örneğin, String ad="enes"; diyerek değişkene atadığımız değeri sınıflara atayamayız. Sınıflardan bir nesne oluşturulmalıdır ve oluşturulan nesnenin o özelliğine ancak değer atanabilir. Bir sınıftan nesne oluşturma işlemi aşağıda verilmi

Java SE Ders16 - Diziler - II

Resim
      Bu derstte dizileri ve dizi elemanlarını metotlara nasıl argüman olarak gönderileceğini göstereceğiz. Argüman olarak dizi alan bir metot örneği aşağıdadır. public void kareAl(int[] sayilar){..} Bu tür bir kullanımda kareAl metodunun parametresi olan sayilar dizisi üzerinde yapılacak bir değişiklik gönderilen argümanı da etkileyecektir.  Yani yukarıdaki metoda örneğin, int [] sayilar1 = {1,2,3,4} dizisini tanımayıp, karelAl(sayilar1) şeklinde argüman olarak gönderilirse, metodun parametresi olan sayilar üzerinde yapılan değişiklikler gönderilen argüman olan sayilar1 dizisini etkiler.Yani çağrılan metodun dışında da yapılan değişikler kendini koruyacaktır.  Fakat tanımlanan metot bir dizi değil de aşağıdaki gibi bir değişken alırsa, public void kareAl2(int sayi){..} Bu tür bir kullanımda kareAl2 metodunn parametresi olan sayi değişkeni metot bitiminde geçerliliğini yitirerek, bu metoda gönderilen argümanı etkilemeyecektir. Yani yukarıdaki kareAl2 metoduna örneği

Java SE Ders15 - Diziler - I

Resim
   Diziler aynı tipte verileri tutan yapılardır. degiskenTipi []diziIsmi = new degiskenTipi[diziUzunlugu]; Genel bir dizi oluşturma işlemi yukarıdaki gibidir. [] işareti dizinin tek boyutlu olduğunu ifade etmektedir. Örneğin, 4 tane elemanı olan tek boyutlu bir dizinin tanımlaması aşağıda verilmiştir. int [] sayilar = new int[4]; sayilar[0]=1; sayilar[1]=2; sayilar[2]=3; sayilar[3]=4; veya int [] sayilar= {1,2,3,4}; şeklinde yapılabilir.Burda dikkat edilmesi gereken husus dizi indisinin (sayilar[0]) 0'dan başlamasıdır Tek boyutlu diziler olduğu gibi çok boyutlu dizilerde olabilir. int tipinde 2 boyutlu bir dizinin tanımlanması aşağıda verilmiştir. int [][] sayilar = new int[2][7]; veya int [][] sayilar = new int[2][]; sayilar[0]=new int [3]; sayilar[1]=new int [2]; Buradaki tanımladaki bir fark da 1.satırın 3, 2.satırın ise 2 kolona sahip olmasıdır. Ayrıca tek boyutlu dizilerde old

Java Mini Proje 004 - Faktöriyel Bulma

Resim
  Bir sayının faktöriyeli 1'den başlayarak o sayıya kadar olan sayıların çarpımıyla bulunur. Yani n faktoriyel ; 1 x 2 x ......... x n ile hesaplanır. n faktöriyel n! ile gösterilir. Faktöriyel için bazı kurallar tanımlanmıştır. 0! = 1' dir. 1! = 1' dir. diğer sayılar standart biçimde hesaplanır.     Faktöriyelin ne olduğunu ve nasıl hesaplandığını anladık şimdi sıra programını yazmakta.Bu problemi basit bir döngü yardımıyla yapabiliriz. Bir tane araSonuc değişkeni oluşturursak ve n sayısına kadar olan sayıları çarparak bu araSonuc değişkenimize atarsak, en son n sayısı ile de çarptığımızda n sayısının faktöriyelini elde etmiş oluruz. Şimdi bunları uygulayalım. Main.java package test; public class Main { public static void main(String[] args) { System. out . println ( "0!\t->\t" +faktoriyel( 0 )); System. out . println ( "1!\t->\t" +faktoriyel( 1 )); System. out . println ( "2!\t->\t" +faktori

Java Mini Proje 003 - İki Sayının Ortak Bölenlerinin En Büyüğünü Bulma (OBEB)

Resim
  Bu projede iki sayının ortak katlarının en büyüğünü bulmaya çalışacağız. Bu işleme başlamadan önce ilk önce olayın özünü iyi kavramak gerekli. Basit örnekler vermek gerekirse; 1 ve 2'nin en büyük ortak katı 1'dir. 2 ve 3'ün en büyük ortak katı 1'dir. 12 ve 8'in en büyük ortak katı 4'tür. 16 ve 16'nın en büyük ortak katı 16'dır. 16 ve 24'ün en büyük ortak katı 8'dir. 25 ve 15'in en büyük ortak katı 5'tir.  15 ve 10'un en büyük ortak katı 5'tir. Bu bilgilere dayanarak aşağıdaki sonuçları çıkarabiliriz. İki sayının ortak katı Küçük sayıya eşit olabilir. (1 ve 2 örneği) Küçük sayıdan daha küçük olabilir. ( 12 ve 8 , 16 ve 24 örnekleri) Büyük sayıya hiçbir zaman eşit olmaz.(Eğer sayılar eşitse direkt o sayılara eşit olur.(16 ve 16 örneği)) İki sayı da çiftse obeb çifttir. (12 ve 8 , 16 ve 24) İki sayı da tekse obeb tektir (25 ve 15) Sayılardan biri tek, biri çiftse obeb tektir. (1 ve 2, 2 ve 3,15 ve 10) Bu p