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

08 Declare Var-Args

Merhaba Arkadaslar,
Bu yazimda Java da var-arg yapisindan bahsedecegim, bu yapi pek de bilinen bir yapi degildir ama kullanisli olabilecegi durumlar olabilir.

Oncelikle arguman ve parametre kavramindan bahsetmek istiyorum.

arguman (argument) ; Bir metodu cagirirken parantezler arasinda yazdigimiz ifadelerdir.

method1(''volkan'',23);

Burada volkan ve 23 ifadeleri birer argumandir.

parametre(parameter) ; Bir metodu tanimlarken , nasil cagirilacagini belirttigimiz tanimladigimiz ifadeler ise parametredir.

void method1(String name, int age)  { }

Bu metot String ve int turunde 2 adet parametre beklemektedir.

Continue reading 08 Declare Var-Args

06 – ServletConfig

ServletConfig

ServletConfig arabirimi/interface,  javax.servlet paketi/package altinda tanimlanmistir ve su metotlara sahiptir.

public String getServletName();
public ServletContext getServletContext();
public String getInitParameter(String name);
public Enumeration<String> getInitParameterNames();

Container, bir servleti ilk kullanima hazirladiginda(initialized) bu servlet icin bir ServletConfig olusturur. Yani her Servlet objesi icin birtane de ServletConfig objesi olusturulur.

ServletConfig objesi, deployment descriptor(web.xml )dosyasinda ilgili servlet icin tanimlanmis bilgilere ulasmak icin kullanilir. Bu bilgiler veritabanina baglanmak icin gereken bilgiler olabilir.

Bu tanimlanmis bilgilere Servlet Init Parameter adi verilir. Bu parametreler Servlet Container tarafindan , servlet lifecycle/yasam dongusunde sadece bir kez okunur.

Servlet Container bir daha bu init parametrelerini bir sonraki deploy islemine kadar okumaz.

Onceki yazida Servlet lifecycle(yasam dongusu) konusundan bahsetmistik. Simdi bu yasam dongusunde ServletConfig icin detaya inelim ;

Adim-1
Container , deployment descriptor(web.xml) dosyasini okur.

Adim-2
Container yeni bir ServletConfig instance/ornegi/objesi olusturur.

01-02

Continue reading 06 – ServletConfig

07 Declare Enums

Enum yapisini anlayabilmek icin su ornegi vermek istiyorum, bir kahve dukkaninda short, tall, grande ,venti boyutlarinda secenekler mevcuttur yani bizim ihtiyacimiz olan degisken sadece bu degerleri almalidir. Boyle bir yapiyi Java bize enum aracigiliyla saglayabilir.

enum CoffeeSize { SHORT , TALL , GRANDE ,VENTI };

enum Javada bir anahtar kelimedir. Burada verdigim SHORT, TALL gibi isimler buyuk harf olmak zorunda degil fakat bir Code Convention dir.
Enumlar kendilerine ozel sinif yapisinda tanimlanabildigi gibi bir sinifin uyeside olabilirler. Fakat bir metot icerisinde tanimlanamazlar.

Oncelikle bir sinif disarisinda tanimlayalim. enumlar sinif uyesi olarak tanimlanmadiginda, private veya protected olarak tanimlanamazlar.

JavaCoffeeTest.java

enum CoffeeSize {
	SHORT, TALL, GRANDE, VENTI
};

class JavaCoffee {
	CoffeeSize size;
}

public class JavaCoffeeTest {
	public static void main(String[] args) {
		JavaCoffee coffee = new JavaCoffee();
		coffee.size = CoffeeSize.VENTI;
		System.out.println(coffee.size);
	}
}

Ornegimizi inceleyecek olursak bir enum tanimladik, JavaCofee isimli sinifimizin bu enum turunde bir uyesi(member) var (size).
main metodumuz icerisinde bir JavaCoffee nesnesi olusturuyoruz ve size degiskenine VENTI degerini atiyoruz.

Continue reading 07 Declare Enums

Java Persistance API – JPA Nedir?

jpa

JPA, Java’nın derinliklerine indiyseniz adını muhakkak duymuşsunudur. Java Persistance API önceden açıkladığım Object Relational Mapping API’lerinden bir tanesidir.

jp

 

Java Persistence API, JPA nesnelerin ilişkilendirilmesini sağlayan, bu ilişkileri unutmayan sonradan da kullanmaya devam edebileceğimiz bir teknolojidir.

Continue reading Java Persistance API – JPA Nedir?

05 Servlet Lifecycle

Merhaba Arkadaslar,
Bu yazimda Servlet lifecycle(yasam dongusu) konusundan bahsedecegim ve sonunda da kucuk bir uygulama yapacagiz. Hatirlayacagimiz gibi Servletlerin tum kontrolu Container’in sorumlulugu altindaydi. Dolayisiyla Servletlerin yasam dongusunden de Container sorumludur.

Handle Request

ervlet Container , gelen istegi su adimlari gerceklestirerek karsilar. ( handle request)
Bu vesileyle Servlet Lifecycle’a da goz atmis olacagiz , sonrasinda Servlet Lifecycle’i daha detayli olarak incelemeye calisacagiz.
Ornek bir senaryo uzerinde adim adim incelemelerde bulunalim;

Adim-1
Kullanici Servlet’i cagiran URL linkine tiklar.

01-click-url

Continue reading 05 Servlet Lifecycle

06 Declare Class Members – 03

Merhaba Arkadaslar,
Bu dersimizde Java’da , variable (degisken) konusunu isleyecegiz.

Javada 2 tip degisken vardir.

primitive
reference variable (referans degiskeni)

primitive Degiskenler  (primitive variables)
primitive degiskenler su 8 tipden biri olabilir ;
char, boolean, byte , short , int , long , double , float
primitive bir degisken tanimlandiginda turu degistirilemez yani int a ,bir alt satirda short a olarak degismez. Java ciddi bir dildir bu tarz kontrollere onem verir

primitive degiskenler su durumlarda tanimlanabilir ,

  • bir class variable (yani static degisken)
  • instance variable (objeye ait degisken)
  • method parametresi

Burada bir dip not vermek istiyorum bir cok insan bu kavrami karistirmakta veya ayni sanmaktadir.
metot tanimlamasinda kullanilan degiskenler parametredir, methodu cagirirken gonderilen degiskenler ise argumandir .

Bu 8 primitive degiskenden 6 tanesi ( char ve boolean haric ) signed (isaretli) yani negatif ve pozitif degerler alabilir.

Continue reading 06 Declare Class Members – 03

9 Madde’de Bir Developer’ın Proje Süreci

developers-team-786x305

Her proje önemlidir bir developer için. Sonuçta CV’si dolacaktır, yeni iş imkanları doğuracaktır, ufkunu genişletecektir. Ama proje süreci oldukça zordur, patronuyla uğraşması ayrı, müşteri ile uğraşması ayrı, kodla uğraşması ayrıdır.

Gelin, bir developer’ın Proje sürecini inceleyelim:

1- Patron’un Developer’ı Odaya Çağırması

tumblr_mfhulhXnOG1rr1202o1_500

İlk evredir. ‘Elinde iş var mı?‘, ‘bu proje senin dalında mı?‘ gibi soruların yer almadığı odadır orası. ‘Developer değil mi? Her dili yazmalıdır!‘ dur patron için. Patron, kabaca projeden bahseder, deadline’ı söyler ve teşekkür edip Developer’ı masasına yollar. Developer’ın sadece kafa salladığı evredir.

Continue reading 9 Madde’de Bir Developer’ın Proje Süreci