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?

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)