27 Passing Variables into Methods

Merhaba Arkadaslar,
Java da pass-by value ve pass-by-rerefence kavramlarini bol miktarda duymusuzdur. Bir metodun, taniminda aldigi degiskenler(parametreler) hem primitive/ilkel hem de referans tipte olabilir.

Primitive/ilkel tipte degiskenler icin bir degiskeni diger degiskene atamak ; icerigini/content yani bit pattern/bit yapisini bir degiskenden diger bir degiskene kopyalamak anlamina gelmektedir. Obje referans degiskenlerini icin de bu durum gecerlidir ! Referans degiskenin icerigi/content bir bit pattern/yapi/ornek dir. Yani a referans degiskenini b referans degiskenine atamak , a ‘nin bit pattern’ini , b’nin bit pattern’ine kopyalamak anlamina gelmektedir. Continue reading 27 Passing Variables into Methods

26 Initialize Local Variables

Merhaba Arkadaslar,
Bu yazimda Java da Local diger adlariyla Stack veya Automatic Variable olarak adlandirilan degiskenlere deger atanmasi/initialize islemi ile ilgili bilgiler aktaracagim.

Local Primitive
Test sinifimizda main metodumuzda 2 adet degisken tanimlayalim. Asagidaki kod herhangi bir derleme hatasi/compile error icermez.

public class Test {
	public static void main(String[] args) {
		int number1;
		int number2;
	}
}

Peki  bu degiskenlerin degerini ekrana yazdirmaya calisalim ;

public class Test {
	public static void main(String[] args) {
		int number1;
		int number2;

		System.out.println(number1);  //derleme hatasi
		System.out.println(number2);  //derleme hatasi
		System.out.println(number1+number2); //derleme hatasi
	}
}

Gordugunuz gibi derleme hatasi ile karsilastik. Peki neden ? Bir onceki yazidan hatirlayacagimiz gibi “int” turunde bir instance variable/degisken icin varsayilan deger 0 di, fakat number1 ve number2 instance variable degil, local/yerel degiskendir.

Local/yerel degiskenleri kullanmadan once MUTLAKA deger atamak/initialize gerekmektedir.

public class Test {
	public static void main(String[] args) {
		int number1=5;
		int number2=10;
		int number3;

		System.out.println(number1);
		System.out.println(number2);
		System.out.println(number1+number2);
	}
}

number1 ve number2 local/yerel degiskenlerini kullandik bu nedele deger atamasinda bulunduk. number3 degiskenini kullanmadik bu nedenle deger atamak zorunda degiliz. Tabi kullanmadigimiz degiskeni tanimlamak gereksiz bir hareket olacaktir  Continue reading 26 Initialize Local Variables

AWS Platformu ve Servisleri

Bir önceki yazımımda AWS Global Altyapısı yani Infrastructure anlatmıştık. Özetle bu kısımda Region, Availability Zone ve Edge’lerden bahsetmiştik. Bu yazıda Infrastucture üzerinde bulunan Compute, Storage, Network ve Administration&Security servislerden bahsedeceğim.

aws_platform

AWS’nin ana konsoluna girdiğimizde karşımıza birçok servis hizmeti çıkacak ben bunlardan en çok kullandığımız temel servislerden bahsediyor olacağım.

EC2 instance’ları AWS üzerindeki sanal sunuculardır. Değişik işlem gücü ve bellek alanındaki bu sunucuları alıp sistemimizi oluşturabiliriz. Buna istediğimiz büyüklükteki disk alanlarını ESB ekleyerek kullandıkları disk alanlarını büyütebiliriz. AWS’de kullandığımız kaynakların güvenliği ve monitor için IAM(Idendity And Access Management) ve CloudWatch servislerini kullanırız. Tekil bir network ağı oluşturmak için Amazon VPC kullanırız. Tüm bu servisler bizim sanal bir data center oluşturmamızı sağlar. Continue reading AWS Platformu ve Servisleri

25 Initialize Instance Variables

Merhaba Arkadaslar,  bu yazimiz Java’da instance variable ‘a initialize islemi/deger atamasi uzerine olacaktir.

Java , bir degisken(instance variable) tanimladigimizda 2 secenek sunar ya oldugu gibi birakiriz/unitialized ya da deger atamasinda bulunuruz.

Degisken kapsam alaninina gore (instance variable , local variable … ) farkli durumlar ortaya cikmaktadir. Bir onceki yazida Degisken kapsam alani ( Variable Scope) konusunu incelemistik.

Primitive && Object Type Instance Variable
Instance Variable(member variables) , hatirlayacagimiz gibi sinif seviyesindeki degiskenlerdi. Yani bu instance variable’lar bir metot, yapilandirici, kod blogu icerisinde tanimlanamaz.
Instance Variable’lara varsayilan olarak deger atamasi yapilir. Asagidaki tabloda varsayilan olarak atanan bu degerleri gorebiliriz.

default-var

Primitive Instance Variable
Yukarida primitive tiplerin listesi yer almaktadir. Daha oncesinde de primitive/ilkel tipler nelerde incelemistik.Burada ornek uzerinde deger atamayan primitive instance variable/degiskenleri gorelim. Continue reading 25 Initialize Instance Variables

24 Variable Scope

Merhaba Arkadaslar,
Bu yazimizda Java’da degiskenlerin kapsam alanlarindan(variable scope) yani bir degisken Java kodumuz icerisinde nerede biliniyor nerede gecerli ya da nerede bilinmiyor ve gecersiz(compile error/derleme hatasi) olur bunu inceleyecegiz. Bir onceki yazida Variable/degisken nedir sorusuna da cevap aramistik.

Ornek sinifimiz uzerinde inceleyelim ;

CoolClass.java

public class CoolClass {

	static int count = 20; // static variable
	String s; // instance variable
	int i; // instance variable

	{
		s = "Initialization block";
		int block = 250;
	}

	public CoolClass() { // constructor // yapilandirici
		i += 10;
		int j = 100;
	}

	void coolMethod() {
		int k = 25; // local variable

		for (int t = 0; t < 10; t++)
			k += k + t;

	}

}

Continue reading 24 Variable Scope

23 Assignment Operators

Merhaba Arkadaslar,
Bu yazimda Java da Assignment/atama operatorunu (= yani esittir) ve dogal olarak da degiskenler uzerinde incelemelerde bulunacagiz.

Oncelikle degisken nedir ? Degiskenler Java da birer bit tutuculardir/ bit holders.
int , double, String, Button, String[] turunde degisken yani bit tutucular tanimlayabiliriz.

primitive degiskenleri inceleyecek olursak. Ornegin ; byte bir degisken dusunelim ve degeri 6 olsun , Java da 1 byte 8 bittir. Bu durumda 6 degeri ,bit pattern/yapi 00000110 olarak temsil edilir.

Button b = new Button();

b hakkinda ne diyebiliriz peki ?
b bir reference variable / referans degiskendir ve Button objesine referansta bulunmaktadir. Bir referans degisken de bit holder/tutucudur.Yani tuttugu bu bitler ilgili objeye nasil ulasacaginin bilgisini tasir. Bit formatini bilememekteyiz

Button b = null;

b, hic bir objeye referansta bulunmuyor ,anlamina gelmektedir.

Incelemeye devam edelim ve bir kac ornek verelim, bunlara zaten yabanci degiliz.

int x=10;  //literal assignment
int y=x+2; //assignment with an expression
int z=x*y; //assignment with an expression

Burada dikkat cekmek istedigim konu tamsayi literallerinde varsayilan tur int tir. Bir onceki konuda literal konusuna deginmistik.

byte b = 10; //automatically narrows literal value to a byte
byte b = (byte) 10; // explicitly cast the int literal to a byte

Ilk satirdaki atama islemi gecerlidir. Burada Compiler/derleyici otomatik olarak literal int degeri byte degere cevirir. Ikinci satirda oldugu gibi explicity/acik bir sekilde byte degere  cast islemi yapilmaktadir. Bu ornegimiz short degisken icin de gecerlidir. Simdi de su ornegimizi inceleyelim;

byte a = 5;
byte b = 10;
byte c = b+c;  //compiler error

Continue reading 23 Assignment Operators

AWS Global Altyapısı

Regions

Amazon fiziksel makinalarının tutulduğu bölgelerdir. Yapacağınız uygulamanın ihtiyaçları doğrultusunda bu bölgelerden birisini seçerek uygulamanızı bunlar üzerine deploy edebilirsiniz.

  • Son kullanıcıya yakınlık (Türkiye’deki kullanıcılar için EU Frankfurt seçimi en iyi çözüm olacaktır.)
  • Verilerin tutulması ile ilgili yasal gereklilikler
  • Genişleme stratejisi
  • Fiyat
  • Sağlanan Servisler (Her AWS servisi , her bölgede sağlanmıyor)

aws1 Continue reading AWS Global Altyapısı

22 Literals

Merhaba Arkadaslar,
Bu yazimda Java da Literal konusuna deginecegiz. Java da literaller ;

  • Integer Literals
  • Floating-Point Literals
  • Boolean Literals
  • Character Literals
  • Literal Values For Strings

Integer Literals
Java da integer/tamsayi degerlerinin 3 farkli gosterimi vardir. decimal, octal ve hexadecimal literaller.Sirasiyla inceleyelim.

Decimal Literal
Decimal Literal her zaman kullandigimiz varsayilan gosterimdir,

int size=100;
int length=50;

Octal Literal
Octal (Sekizli) Literallerde 0 ve 7ye kadar olan rakamlar kullanilabilir.Octal literalleri gosterirken basina 0 eklemeyi unutmayalim. Ornegimizi inceleyelim

OctalTest.java

public class OctalTest {
	public static void main(String[] args) {

		int zero = 0;
		int one = 01;
		int six = 06;
		int seven = 07;
		int eight = 010;
		int nine = 011;
		//int compileError = 08;

		System.out.println(zero + "  " + one + "  " + six + " " + seven + " " + eight + " " + nine);
	}
}

Continue reading 22 Literals

AWS Sertifikaları

AWSCertified

AWS sertifikalarını incelediğimizde 3 tip rol için sertifikaların olduğunu görürüz.

Solution Architect : Mevcut işi AWS Teknolojileri ve Mimarileri kullanılarak nasıl geliştirilebileceğini tasarlar.

Developer: AWS SDK’ları kullanarak AWS üzerinde uygulama geliştiren yazılımcılardır.

SysOps Administrator: AWS üzerine kurulan bir uygulamanın veya çalışan bir sistemin ayakta kalması, yönetilmesi ve yeni sürümlerin deploy’unun yönetiminden sorumludur.

aws Continue reading AWS Sertifikaları

21 Coupling & Cohesion

Merhaba Arkadaslar,
Bu yazimda Java’ da Coupling / baglasim/baglanti yani “nesnelerin birbirine baglanmasi” ve Cohesion/baglilik/yapisiklik kavramlarindan bahsedecegim. Ilk bakista Turkce kelime karsiliklari benzer gozukebilir fakat yazi sonunda kavramlari anlamis olacagimizi umuyorum

Oncelikle sunu belirtmem gerekir ki Coupling ve Cohesion kavramlari Object Oriented yaklasiminda olmazsa olmazlardandir , Object Oriented yaklasiminin kalitesiyle dogrudan ilgilidir.

Iyi bir Object Oriented dizayninda loose coupling / gevsek baglanti ve high cohesion istenen bir durumdur.

Bir programda cesitli gorevleri yerine getirecek bir cok sinif bulunur. Bu siniflar birbirleriyle etkilesim haline girerek ortak bir sekilde calisirlar. Bu durumda nesneler arasinda bagimliliklar olusur. Bir sinif diger bir sinif hakkinda ne kadar fazla bilgiye sahipse o sinifa olan bagimliligi o derece artar Dusunuldugunde bu bagimliliklari ortadan kaldirmak mumkun degildir cunku mutlaka siniflar birbirleriyle ortak calismak zorundadir. Bu durumda yapacagimiz sey esnek bagimliliklar olusturmaktir yani loose coupling.

Coupling
Bir sinifin diger siniflari ne kadar bildigi ve sinif uyelerine nasil eristigi ile ilgilidir.
A sinifi B sinifinin degiskenlerine direkt olarak ulasmamalidir, getter/setter metotlari uzerinden ulasmalidir. B sinifina ait instance degiskenler public tanimlanmamalidir.
Louse Coupling , A ve B sinifi orneginde oldugu gibi siniflarin iyi bir encapsulation kuralina uygun olarak tanimlanmasi , siniflarin birbirlerine olan referans degiskenlerini minimize etme yaklasimidir. Tight Coupling bu kurallara uymamak , Object Oriented in dibine dinamit koymaktir Continue reading 21 Coupling & Cohesion