19 Constructor – 02

Merhaba Arkadaslar,
Bu yazimda Java’ da Constructor/yapilandirici konusuna devam edecegim. ilk yazida temel yapidan bahsetmistim burada biraz daha detaya inecegiz.

Yapilandirici/ Constructor icin kurallar

  • Yapilandiricilar private dahil tum access modifier /erisim belirteclerini kullanabilirler.
class B {
    private B() {}  //private yapilandirici
}
  • Yapilandiricilarin ismiyle sinifin ismi anyi olmak zorundadir.
  • Yapilandiricilarin donus tipi olamaz , void de olamaz.
  • Bir sinifta sinif ismiyle ayni olacak sekilde metot tanimlanabilir. Bu durumda yapilandirici tanimlanmis olmaz.
public class A {
	void A() {
		// metot
	}

	A() {
		//yapilandirici
	}
}

Continue reading 19 Constructor – 02

18 Constructor – 01

Merhaba Arkadaslar,
Bu yazimda Java’da constructor/ yapilandirici kavramindan bahsedecegim.
Javada , yeni bir obje olusturuldugunda constructor/yapilandirici calistirilir/invoke , sinifin kendi yapilandiricisinin yaninda superclass’in yapilandiricisi da calisir detaylar biraz asagida olacak.

Peki yapilandirici ne zaman calisacaktir ? new anahtar kelimesini  kullandigimizda yapilandirici calisacaktir. Bir de serilestirme yapisinda calismaktadir fakat bu konuya bir hayli ilerde gelecegiz. Biz basit temeller ile baslayalim ;

Basit Temeller

  • Abstract/soyut siniflar dahil tum siniflarin yapilandiricisi/constructor olmak zorundadir.
  • Yapilandiri/constructor olmasi zorunlulugu tanimlanmak zorunda oldugu anlamina gemez.
  • Eger bir sinif icin yapilandirici/constructor tanimlamazsak otomatik olarak varsayilan yapilandirici gizli olarak tanimlanir.
  • Varsayilan yapilandirici herhangi bir parametre almaz. Varsayilan yapilandiriciyi biz kendimiz de tanimlayabiliriz.
class A {
   // A(){} A sinifina ait varsayilan yapilandirici

}
  • Eger kendimiz bir yapilandirici tanimlarsak , varsayilan yapilandirici otomatik olarak tanimlanmaz.
public class A {

	int x;
	int y;

	public A(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public static void main(String[] args) {
		A a = new A(10,20);
		//A a2 = new A(); derleme hatasi
	}

}

Continue reading 18 Constructor – 01

17 Return Type

Merhaba Arkadaslar,
Bu Java yazimda metotlarin donus tipi ile ilgili durumlari inceleyecegiz. Daha once bahsi gecen covariant return type ile baslayalim.

Overrided metotlarda donus tipi degismeyecegegini, fakat covariant /esdeger donus tipi olursa degisebilecegini belirtmistik. Ornek uzerinde inceleyelim ;

public class Car {
	Car speedUp() {
		return new Car();
	}
}

class Ford extends Car {

	@Override
	Ford speedUp() {
		return new Ford();
	}
}

Continue reading 17 Return Type

JSF (Java Server Faces) Nedir?

jsf

Java Server Faces bir çatıdır. JSP’den farklı olarak kullanıcı arayüzü sağlanmaktadır. Hazır bileşenler/etiketler ile (tag) yapmak istediğimiz işlemleri basitçe yapabilmekteyiz. Üst seviyede programlar yapmayı kolay hale getirmektedir. İleriki derslerde göreceğimiz JAVA EE teknolojilerine kolayca entegre etmemizde mümkündür. JSF’de farklı kütüphanler ile farklı arayüzler bulabilmekteyiz. Bu kütüphaneleri ekledikçe kodlama tekniğide geliştirene göre değişebilmektedir.

Java Server Facesin geneli olaylara dayanmaktadır. Tıklandığında/yapıldığında gibi eylemlere tepki verebilmektedir. Java Server Pages’e göre en büyük artısı ajax’a kolayca hükmedebilmemiz.  Java Server Faces öğrenmek ileriye dönük bir yatırımdır. Çok katmanlı mimariler için JSF bizim avantajımıza olduğunu düşünmekteyim. Continue reading JSF (Java Server Faces) Nedir?

16 Implementing an Interface

Daha once degindigim gibi Java ‘da interface/arabirim bir kontrattir ve uygulayan siniflar (abstract olmadigi surece) bu kontrata uymak zorundadir yani metotlari uygulamak zorundadir.

interface ile abstract siniflarin en onemli farki sudur ; bir arabirim kalitim hiyerarsi onemli olmaksizin herhangi bir sinifta  uygulanabilir . Ornegin Runnable arabirimini birbiriyle hic alakasi olmayan siniflar ihtiyaci dogrultusunda uygulayip kullanabilir.
Bu arabirimin en onemli ve en guclu noktasidir.

Simdi bir arabirim/interface tanimlayalim ve incelemeye devam edelim ;

Speed.java

interface Speedy {
 void speedUp();
 void beCool();
}

Yukarida linkini verdigim yazida belirtigim gibi , interface/arabirimlerde sadece govdesiz metot yani abstract metot tanimlanabilir ve bu metotlar mutlaka publictir. Ee hani nerede abstract anahtar kelimesi Java bizim icin bunu halleder. Continue reading 16 Implementing an Interface

15 Reference Variable Casting

Merhaba Arkadaslar,
Bu yazimda Reference Variable  Casting / referans degisken donusumu konusundan bahsedecegim.

Daha once de belirttigim gibi , Java ‘da 2 tip degisken vardir

  • primitive / ilkel( char,boolean,byte,short, int,long,double ve float)
  • reference/referans

Bir reference variable/referans degisken bir objeye erismek/access icin kullanilir. Reference Variable belirli bir tipte tanimlanir ve tanimlanan bu tip degistirilemez.
Bir reference variable/referans degisken , tanimlandigi tipteki objeye veya tanimlandigi tipin alttipi/subtype turundeki objelere ulasmak icin kullanilabilir. Fakat ust tipteki bir objeye erismek icin kullanilamazlar. Continue reading 15 Reference Variable Casting

OOP Prensipleri

kpmakaleler.png

1 – Encapsulation (Kapsülleme) : Bir nesnenin değişkenlerini, metodlarını ve değerlerini diğer nesnelerden koruyarak yanlış kullanımlardan koruyan programlama kavramıdır. Nesnelerin içindeki değişken ve metodların korunması işlemi için erişim belirleyiciler(access modifier) ön plana ıkıyor.

public : Her nesneden, tanımlı nesnemizin metod, değişkenlerine erişilebileceğini belirtir.
private : Sadece tanımlı nesne içinde metod, değişkenlere erişilebileceğini belirtir.
protected : Sadece tanımlı nesne içinde ve bu nesneden türetilmiş diğer nesnelerden metod, değişkenlere erişilebileceğini belirtir.

2 – Inheritance(Kalıtım) : Bir üst sınıfın varolan yapısının o sınıftan türetilmiş alt sınıflara aktarılmasına denir. Java yazılım içinde ambiguity(karışıklık) yarattığı için bu bir nesnenin sadece bir kalıtım almasına izin verir. Fakat C++ ve C# bir sınıfın birden çok kalıtım almasına izin verir.

3 – Polymorphism(Çok şekillik) : Bir sınıfın farklı bir sınıf gibi davranabilme ve özelliklerini kullanabilmesidir. Nesne yönelimli programlama dillerinde çok biçimlilik özelliği ise aynı temel sınıfdan türetilmiş olan sınıflarda paylaşılan aynı metodun bu sınıflarda farklı şekillerde uyarlanabilmesidir. Nesnenin davranışı calışma anında belirlendiği için programcılar çok biçimlilik özelliği sayesinde nesnelerin türünü önceden bilmek zorunda kalmazlar.

 

14 Java Tricks – Overloaded vs Overridden

Merhaba Arkadaslar,
Bu yazimda Overloaded ve Overridden kavramlari arasindaki farklardan ve triklerden bahsedecegim. Son 2 yazida Overriden ve Overloaded konusunu incelemistik, henuz incelememiz gereken bir kac detay durum daha var bunlara sirasi gelince deginecegiz.

Arguman tipi 

  • Overloaded metotlarda mutlaka degismek zorundadir.
  • Overridden metotlarda mutlaka ayni olmalidir.

Donus tipi

  • Overloaded metotlarda degisebilir, sorun cikartmaz.
  • Overridden metotlarda , covariant return ( ilerleyen yazilarda deginecegim) haric , degisemez.

Exceptions(Istisnalar)

  • Overloaded metotlarda degisebilir, eklenebilir sorun cikartmaz.
  • Overridden metotlarda checked exception eklenemez fakat cikartilabilir.
  • Unchecked exception eklenebilir/cikartilabilir. (Exception konusuna ilerleyen zamanlarda gelecegiz )

Erisim belirteci 

  • Overloaded metotlarda degisebilir.
  • Overridden metotlarda daha az kisitlamali olacak sekilde degisebilir. public metodu private/protected/varsayilan  erisim belirteci olacak sekilde override edemeyiz.

Continue reading 14 Java Tricks – Overloaded vs Overridden

13 Object Orientation – 04 Overloaded

Merhaba Arkadaslar,
Bu yazimda Java’da Overloaded(asiri yukleme) kavramindan bahsedecegim. Bir onceki  yazimda Overridding kavramindan bahsetmistim.

Java’da , metot parametre deklarasyonu/ifadesi/tanimlamasi farkli olmasi kosuluyla , ayni sinif veya altsinifta ayni isimde birden fazla metot tanimlanabilir. Bu metotlara Java’ da asiri yuklenmis/ Overloaded metot denir.

Asiri yuklenmis/overloaded metot cagrildiginda hangi metodun cagrilacagina karar vermek icin,  arguman tipi ve/veya sayisi kullanilir. Bu nedenle asiri yuklenmis/overloaded metotlarin parametreleri sayisi ve/veya turu farkli olmak zorundadir.

Basit bir ornek ile baslayalim ;

Sum.java

public class Sum {

	public static void main(String[] args) {
		Sum s= new Sum();
		System.out.println(s.getSum(10, 20));    // int
		System.out.println(s.getSum(5.5, 20));  //double 
		System.out.println(s.getSum(10, 2.7));  //double
		System.out.println(s.getSum(1.4, 2.2)); //double
	}
	public int getSum(int a, int b) {
		return a + b;
	}

	public double getSum(double a, double b) {
		return a + b;
	}
}

Continue reading 13 Object Orientation – 04 Overloaded

Apache Ant Nedir ve Nasıl Kurulur?

Apache-Ant-logo.svg_

Ant ile ilgili bundan sonraki yazılarda aktaracağım konuların ilkinde kısaca Ant nedir? sorusunun cevabına birlikte bakalım.
En kısa tanıtımı ile Ant , Java projelerinde sıklıkla kullanılan, XML tabanlı ve Java ile geliştirilmiş açık kaynaklı bir yazılımdır. Yazılımın adı İngilizce “Another Neat Tool” (Bir Başka Harika Araç)’ın kısaltılmasıdır.

Peki bu aracı bu kadar harika yapan ne?

Özellikle büyk projelerdeki farklı sunucu sistemleri, yayınlama, geliştime ya da test bölümleri için gerekli build ve deploy işlemlerini büyük oranda kolaylaştırmaktadır. Bu yönüyle geliştirme sırasında sıklıkla yaptığınız kod derleme, war dosyası hazırlama, sunucuya deploy etme gibi hammalık ve bir süre sonra bıkkınlık veren tüm bu işlemleri sadece tek bir tıklama ile yapabiliyor. Continue reading Apache Ant Nedir ve Nasıl Kurulur?