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?

08 Request – 01

Merhaba Arkadaslar,
Bu yazimda javax.servlet.http.HttpServletRequest ve javax.servlet.ServletRequest arabirimlerinin bizim icin sagladigi metotlari inceleyecegiz. Bu metotlarin sayisi bir hayli fazla olmakla beraber burada bazilarini listeleyecegim ve bunlarin da bir kismini bu yazida inceleyecegiz.

ServletRequest

ServletRequest arabirimi javax.servlet paketi altinda bulunmaktadir.
ServletRequest arabiriminde tanimlanmis bazi metotlar sunlardir

public Object getAttribute(String name);
public Enumeration<String> getAttributeNames();
public int getContentLength();
public ServletInputStream getInputStream() throws IOException;
public String getParameter(String name);
public Enumeration<String> getParameterNames();
public String[] getParameterValues(String name);
public Map<String, String[]> getParameterMap();
public int getServerPort();
public int getLocalPort();
public int getRemotePort();

HttpServletRequest

HttpServletRequest arabirimi , ServletRequest arabirimini kalitir. Hatirlayacagimiz gibi Java da bir arabirim diger bir
arabirimi kalitabilir. HttpServletRequest , javax.servlet.http paketi altinda bulunur.
HttpServletRequest arabiriminde tanimlanmis bazi metotlar sunlardir.

public Cookie[] getCookies();
public String getHeader(String name);
public Enumeration<String> getHeaders(String name);
public int getIntHeader(String name);
public Enumeration getHeaderNames();
public String getContextPath();
public String getQueryString();
public HttpSession getSession();

Continue reading 08 Request – 01

12 Object Orientation – 03 Overridden

Merhaba Arkadaslar,
Bu yazimda Java da Overriding kavramindan bahsedecegim .Javada bir sinifi kalittigimizda (extends) ust sinifta bulunan bir metodu alt sinifta ezebiliriz/override. Hatirlayacagimiz gibi final olarak tanimlanan metotlar override edilemezler.

Test sinifimiz uzerinde devam edelim..

TestAnimals.java

class Animal {

        int height=15;
	static int size=10;

	public void eat() {
		System.out.println("Animal-Eat");
	}
	static void breathe() {
		System.out.println("Animal- Breath");
	}
}

class Bird extends Animal {

        int height=3;
	static int size=5;

	@Override
	public void eat() {
		System.out.println("Bird-Eat");
	}

	static void breathe() {
		System.out.println("Bird- Breath");
	}

	public void fly() {
		System.out.println("Bird-fly");
	}
}

public class TestAnimals {
	public static void main(String[] args) {
		Animal a = new Animal();
		Animal b = new Bird();
		Bird c = new Bird();
               //Bird d = new Animal();

		a.eat();
		b.eat();
		c.eat();

		a.breathe();
		b.breathe();
		c.breathe();

		//a.fly(); 
		//b.fly();
		c.fly();

		System.out.println(a.height + " "+ a.size);
		System.out.println(b.height + " "+ b.size);
		System.out.println(c.height + " "+ c.size);
	}
}
  • Bird sinifi Animal sinifini kalitmaktadir ve eat() metodunu ezmektedir. @Override notasyonunu kullanabiliriz.
  • static metotlar override edilmezler, tekrar tanimlanirlar /redefined.

Continue reading 12 Object Orientation – 03 Overridden

Apache Log4j Nedir ?

severity-levels-logging

Loglama Nedir? Loglama bir sistemin hareketlerini kaydeden bir yapıdır. Özellikle sistem yöneticileri ve hata gideren kullanıcılar ve hatta geliştiriciler için bir vazgeçilmezdir. Bir projede karşılaşılan hataları, akışları, performans sıkıntılarını ve son kullanıcının yaptğı işlemleri izleyerek, bunları anlık olarak yakalayıp düzeltmek için kullanılır. Logların anlamlı ve faydalı olabilmesi için ilk olarak kod içerisinde anlaşılır loglar yazılmalıdır.

Log4j nedir ?

Log4j Apache Software Foundation ın geliştirmiş olduğu bir loglama kütüphanesidir. (logging framework). Log4j kullanmak için log4j.jar dosyasında ve log4j tanımlarının yapıldığı properties dosyasına ihtiyaç bulunmaktadır. Bu properties dosyası standart olarak log4j.properties  yada log4j.xml dosyaları olabilir. Log4j java uygulamalarında kullanabileceğimiz java kütüphanesi iken log4php (PHP loglama), log4net (.NET loglama ), log4cxx (C++ loglama) versiyon ları bulunmaktadır.

Continue reading Apache Log4j Nedir ?

Maven Nedir, Nasıl Kullanılır?

mjanf

Merhaba arkadaşlar, bu yazımda size yakın zamanda kullanmaya başladığım oldukça faydalı ve kullanımı basit bir aracı anlatacağım. Maven, Ant ‘a bir alternatif olarak gösterilen aynı Ant gibi bir JDT(Java Development Tool) ‘dur. Ant ‘ın projeyle ilgili üst düzey bilgileri içermemesi ve kullanımı için oldukça uzun kodlar yazmayı gerektirmesi gibi nedenlerden dolayı Maven geliştirildi. Kısacası Maven ile Ant ‘ın yapabileceği her şey yapılabilir.

Ne işe yarar bu Maven?

Maven, proje geliştirirken proje içerisinde bir standart oluşturmamızı, geliştirme sürecini basitleştirmemizi, dokümantasyonumuzu etkili bir şekilde oluşturmamızı, projemizdeki kütüphane bağımlılığını ve IDE bağımlılığını ortadan kaldırmamızı sağlayan bir araçtır.

Apcahe Maven ile neler yapılabilir?

  • Proje yönetimini kolaylaştırabiliriz.
  • Belirli standartlar belirleyebiliriz.
  • Kütüphane bağımlılığı ortadan kalkar
  • Farklı IDE’ler içinde projenizi taşıyabilirsiniz.
  • Proje temelini başka bir projede kullanabiliriz.

Continue reading Maven Nedir, Nasıl Kullanılır?

11 Object Orientation – 02 Polymorphism (Polimorfizm)

Merhaba Arkadaslar,
Bu yazimda Java’nin can alici konusu olan Polymorphism /polimorfizm yani cok bicimlilik kavramindan bahsedecegim. Bir onceki yazimda bahsettigim uzere bir Java objesi birden fazla IS-A testini gecebilir.
Bir referans degiskeni sadece bir tek tipte olabilir ve tipi asla degismez.
Bir referans degiskeni, bir baska objeye atanabilir.
Bir referans degiskeni, class veya interface turunde olabilir.

Javada hatirlayacagimiz gibi bir sinif sadece tek bir sinifi kalitabilir (extends) , birden fazla arabirimi (interface) uygulayabilir (implements).

class B {
}

interface C {
}

public class A extends B implements C {
	void method1() {
		A a = new A();
		Object o = a;
		B b = a;
		C c = a;
	}
}

Continue reading 11 Object Orientation – 02 Polymorphism (Polimorfizm)

10 Object Orientation – 01 Encapsulation IS-A HAS-A

Merhaba Arkadaslar,
Bu yazimda Java da Encapsulation ,Inheritance , IS-A ve HAS-A kavramlarindan bahsedecegim.

Encapsulation
Encapsulation , sarmalama demektir, yani koruma demektir. Bu korumayi saglamak icin;

  • instance variable larimizi private olarak tanimlayalim.
  • public getter/setter metotlar ile ulasimi saglayalim.
  • getter/setter metotlar icin Java Standartlarinda isim kullanalim.

Bu uc maddeye dikkat edersek kodumuz esnek (flexibility) , bakimi kolay (maintainability) ve genislemeye acik (extensibiliyt) olacaktir.

Encapsulation olmayan durum;

class B {
	public int var1;
}

public class A {
	public static void main(String[] args) {
		B b = new B();
		b.var1 = -1;
	}
}

Continue reading 10 Object Orientation – 01 Encapsulation IS-A HAS-A

07 ServletContext

Merhaba Arkadaslar,
Bir onceki yazida ServletConfig ve metotlarini inceleik. Bu bolumde ise ServletContext arabiriminden ve metotlarindan bahsedecegiz.

ServletContext

Onceki yazida ServletConfig yardimi ile servletin init parametrelerine ulasmistik. Peki bu init parametreler sadece bir servlet icin degil tum uygulamamiz icin olamaz mi ? Tabi ki olabilir, bu init parametrelere de context init parameter denilir.

Context init parametreleri ayni servlet init parametreleri gibidir sadece tum servlet ve jsp dosyalari bu parametrelere ulasabilir.

Context init parametlerine ulasabilecegimiz metotlarla birlikte ServletContext icerisinde bir cok metot yer almaktadir. Bu bolumde bu metotlarin bir kismini inceleyecegiz.

public String getInitParameter(String name);
public Enumeration<String> getInitParameterNames();
public Object getAttribute(String name);
public Enumeration<String> getAttributeNames();
public void setAttribute(String name, Object object);
public void removeAttribute(String name);
public int getMajorVersion();
public String getServerInfo();
public String getRealPath(String path);
public String getServletContextName();
public String getContextPath();
public InputStream getResourceAsStream(String path);
public RequestDispatcher getRequestDispatcher(String path);

Her servlet icin bir ServletConfig objesi vardir.
Tum proje/wepapp icin sadece bir ServletContext objesi vardir.

Eger dagitik/distributed bir uygulamamiz varsa bu durumda her JVM icin bir ServletContext ve her JVMdeki ilgili Servlet objesi icin de bir ServletConfig objesi olacaktir.

Eger dagitik/distributed bir uygulamamiz varsa bu durumda her JVM icin bir ServletContext ve her JVMdeki ilgili Servlet objesi icin de bir ServletConfig objesi olacaktir.

Continue reading 07 ServletContext

09 Java Tricks

Merhaba Arkadaslar,
Bu yazimda onceki 8 yazimin ozeti seklinde olacaktir. Akilda tutulmasi gereken trickleri maddeler halinde paylasacagim.

Identifier(Belirtec)

  • Javada belirtecler harf, underscore (_) ve $ isareti ile baslayabilir. Rakam ile baslayamaz.
  • Ilk karakterden sonra rakam da kullanilabilir.
  • Isimlendirmede uzunluk sinirlamasi yoktur.
  • Java da camelCase yapisina uygun olarak isimlendirme kullanilir.

Deklarasyon Kurallari

  • Bir kaynak dosya (source file) sadece bir tek public class icerebilir.
  • public class ile kaynak dosyanin adi ayni olmak zorundadir.
  • Bir sinif sadece tek bir package ifadesine sahip olabilir , bir den fazla import kullanilabilir.
  • Bir kaynak dosya bir den fazla public olmayan sinif icerebilir.

Class Access Modifiers ( Sinif Erisim Duzenleyicileri)

  • Java da 3 adet access modifier vardir ; public , protected, private
  • Java da 4 adet access level vardir. public, protected, private ve default
  • Siniflar public veya default access e sahip olabilir.
  • Default access e sahip sinifa ayni paket altindaki tum siniflardan erisim saglanabilir.
  • public sinifa diger paketlerde bulunan siniflardan da ulasim saglanabilir.

Class NonAccess Modifier

  • Siniflar sunlari da alabilir ; final , abstract , strictfp
  • Bir sinif final ve abstract olamaz. Bu iki anahtar kelime hic bir sekilde yan yana gelemez.
  • final sinif kalitilamaz
  • abstract siniftan obje olusturulamaz.
  • abstract sinif hem abstract hem normal (concrete) metota sahip olabilir.

Continue reading 09 Java Tricks