13 Aralık 2014 Cumartesi

Overload

       S.a. Arkadaşlar,            
       Bugün overload konusunu ele almaya çalışacağız. Overload aynı sınıf veya bir alt sınıftaki metodların farklı sayıdaki değişken ve/veya türünü alarak hangi metodun çağırılacağına derleyici tarafında cevap verilmesidir. Dediğimiz gibi burada değişken sayısı veya değişken türü farklı olmak zorundadır. Fakat kalıtım içermeyen sınıflarda geçerlidir. Buna dikkat etmemiz lazım. Burada daha fazla söyleyecek bir şey yok gibi fakat örnek üzerinden daha güzel anlaşılır. Şimdi örneğimize geçelim.
public class Toplam {

 public class Toplam {

public static void main(String[] args) {
Toplam toplam= new Toplam();
System.out.println(toplam.topla(10, 20));    // int 2 parametre
                System.out.println(toplam.topla(10, 20,30));  // int 3 parametre
System.out.println(toplam.topla(5.5, 20));  //double 
System.out.println(toplam.topla("overload"," java"));  //String
//System.out.println(toplam.topla()); //yanlış tanımlama !!
                toplam.topla(); // void tanımla yaptığımız için böyle çağırmalıyız
                
}
        // int döndürecek 2 parametre tanımladık
public int topla(int a, int b) { 
return a + b;
}
        //burada int tanımlayacak 2den farklı parametre sayısı girmeliyiz
        public int topla(int a, int b,int c) {
return a + b + c;
}
        //Overloaded metotlarin donus tipleri degisebilir. 
        //Burada örneğin int değil de String döndürüyoruz
        public String topla(String s1, String s2){
                 return s1+s2;
        }
        //Overloaded metotlarin access modifier /erisim belirtecleri degisebilir. (public private..)
        //burada public yerine default tanımlanmış
        //Ayrıca exception da tanımlanabiliri
double topla(double a, double b) throws IllegalArgumentException{
return a + b;
}
        //burada ise diğerlerinden farklı olarak void tanımladık
        //main içinde ise tanımlamasına dikkat ediniz
        public void topla(){
            System.out.println("Void Method");
        }    
}

Çıktı ise aşağıdaki gibi olacaktır:
30
60
25.5
overload java
Void Method


Kaynak
http://www.injavawetrust.com/pure-java-13-object-orientation-04-overloaded/

11 Aralık 2014 Perşembe

IS-A ve HAS-A Kavramları

S.a. Arkadaşlar,
Bugün IS-A ve HAS-A konularını işlemeye çalışacağız. Öncelikle kalıtımın java için vazgeçilmez bir iş olduğunu kabullenmek gerekir. Peki nedir bu kalıtım ne işe yarar diye sorarsak , kısaca;
-          Kod tekrarından kurtuluruz
-          Kalıtım sayesinde bir sınıftan birden fazla sınıf türetebiliriz.

Peki IS-A ve HAS-A kalıtımın neresinde kalıyor diye sorarsanız biraz da onu açıklayalım.
Bilindiği gibi java’da sınıflar birbirinden türer demiştik. Bunu da kodla açıklamaya çalışalım öyle daha kalıcı/anlaşılır olabiliriz.

public class Car {
  gasaBas(){}
}
public class Ferrari extends Car {
  turbo(){}
}

        Arabalar diye bir sınıfımız var. Ve burada birden çok markası olduğunu varsayalım ve her birinin de gaza bas() özelliği olsun. Bu özellik her arabada bulunan bir şeydir. Bu nedenle Car sınıfı altına koyup her defasında tekrar tekrar tanımlamaya gerek yoktur. Fakat turbo() her arabada değil Ferrari’den olan bir özellik olduğu için Ferrari Classına tanımlamış olduk ve Ferrari is a Car olmuş oldu. Yani Ferrari bir arabadır. Kısaca is-a böyledir.

                Şimdi de has-a kavramına bakalım. Has-a kavramı da bir sınıfın farklı bir sınıftaki objesini kullanmasını ifader. Yani yukarıdaki örnekte Ferrari’nin bir motoru olsun ve biz bunu Car adı altında kullanalım. Fakat Ferrari olmadan motorunun da bir önemi yoktur. Onlar birlikte ya vardırlar ya yoktur. Buradaki kavrama da has-a diyoruz. Onu da kodlarsak dediğimiz havada kalmaz diye umuyorum.

public class Motor extends Ferrari {
                 //kodlar
}

                public class Motor {
   Private Motor motor;
   public void Motor(){
         this.motor= new Motor();
}
}

Elimizden geldiğince dilimiz döndüğünce konuyu anlatmaya çalıştık. Bir eksiğimiz olduysa affola . Kolay Gelsin.
Kaynak

10 Aralık 2014 Çarşamba

VARiabla ARGuments

                Bugünkü yazımızda VARiable ARGumentslerden bahsedeceğiz. Fakat bu konuya geçmeden önce parametre ve argüman konualarından bahsedip daha sonnra varargsa geçmeyi düşünüyoruz.
Argüman: bir metodu çağırırken içindeki değişkenlerdir
Örn; topla(a,b) gibi a ve b burada birer argümandır
Parametre : metod tanımlarken kullanılan değişkenlerdir
Örn; topla(int a, int b){} burada ise a ve b birer parametredir

                Şimdi konumuza daha ayrıntılı bakalım. Yukarıda bahsetmiş olduğumuz topla isimli metod 2 değişken değil de daha fazla değişken alabilir.

Örn; topla(int a, int b, int c , int d ) ve bu değişkenler daha artarsa ne olur. Her defasında yeni bir değişken mi ekleyeceğiz peki tabi ki hayır. Bunun için varargs var.

Örn; topla(int … args ) yapmamız yeterlidir. Burada 0 veya daha fazla değişken kullanabiliriz. Peki bize bunun dışında bir de String değişkeni lazım olursa ne yapmamız lazım. Onu da şöyle tanımlayabiliriz
topla(String s,int… args) olmalı. Burada dikkat edilmesi gereken kısım arg kısmını yani sonsuz sayıda değer alacağımız kısmı en son eklememiz gerektiği ve bir metodda en fazla 1 argüman olacağını unutmamalıyız. Kuralları kısaca şöyle tanımlayabiliriz bunla ilgili ve bu kurallardan bugünkü yazımızı tamamlıyoruz.

•   Sadece bir tek var-arg parametresi kullanilabilir.
     topla(int...x,String ...s) hatalıdır

•  Var-arg yapisinda olmayan diger parametrelerle birlikte kullanilabilir.
    topla(String s, int ...x) doğrudur

•   Var-arg yapisi metotda tanimlanirken en sonda olmalidir.
     topla(int ...  x, String s) hatalıdır

•   Var-arg yapisini tanimlarken 3 nokta parametre isminden once gelmelidir
      topla(int x...) hatalıdır

Kaynakça

http://www.injavawetrust.com/pure-java-08-declare-var-args/

9 Aralık 2014 Salı

Synchronized

       S.a. Arkadaşlar,
Synchronized: Bir thread kodu çalıştırırken önce nesneyi kilitler (yani "nesne benimdir, başkası kullanamaz" der.). Eger nesne başkası tarafından zaten kilitlenmişse thread'imiz kilit açılana kadar beklemek zorundadır. Nesneye sahip olduktan sonra kod çalışır. Kod sona erdikten sonra nesnenin kilidini kaldırır. Şimdi aşağıdaki kod sayesinde ne demek istediğimizi daha iyi anlayacağınızı umarız. Şunu da söylemekte fayda görüyorum. Bu komut sadece methodlarla birlikte kullanılır. Sınıf veya değişkenlerle kullanılamaz.
package malik;
class SynchronizedKullanimi implements Runnable {
    private int i;
   public synchronized void run() {
      if (i%5 != 0) { i++; }
      for(int x=0; x<5; x++, i++)
               { if (x > 1) Thread.yield(); }
   System.out.print(i + " ");
 }
 public static void main(String[] args) {
   SynchronizedKullanimi n = new SynchronizedKullanimi();
   for(int x=50; x>0; --x) { new Thread(n).start();
       } //main
    } //run
}  //synchronized

Synchronized komutu varken gösterilen çıktı ile Synchronized varken çıkan komuda dikkat edelim. Burada threadlerin kafalarına göre araya girmesiyle her defasında farklı bir çıktı elde edilir. Tekrar çalıştırdığınızda farklı birsonuç üretecektir.



8 Aralık 2014 Pazartesi

Generics

S.a. Arkadaşlar,
Generics kavramı Türkçeye jenerik olarak geçmiştir ve jenerik olarak kullanmayı tercih edeceğim. Çünkü İngilizce kelimeler ek getirildiği zaman saçma şeyler ortaya çıkıyor ama tabi zorunda kaldığımız zamanlar kullanmaya devam ediyoruz. Peki jenerikler javada ne iş yapar. Önce onu açıklayalım. Javada farklı veri tipleri var bildiğiniz gibi. Bu veri tiplerinin hepsinin aynı çatı altına alınması niyetiyle java 5.0 ile jenerik kavramı ortaya çıkmıştır. Peki tam olarak ne işe yarar. Şöyle açıklayalım daha önce her tip için ayrı ayrı objeler tanımlanırken , jenerikler ile tek tanımlama ile veri tipin ne ise ona göre kullanabiliyoruz.
public static void main(String[] args) {
    ArrayList<Integer> tcNo = new ArrayList<Integer>();
    ArrayList<String> isim = new ArrayList<String>();
}
Java 5.0’dan önce her tip için böyle bir tanımla yapıyorduk. Peki bunun ne gibi dezavantıjı vardı. Bir de ona bakalım. Kod tekrarını önler mesele. Her defasında sizi yukarıdaki gibi tanımlamalardan kurtarır. Çalışma anında sizi dönüşümlerden (cast) kurtarır. Kodun bakımın kolaylaştırır.

Dilimiz döndüğünce jeneric nedir , ne avantajları var , neden kullanılmalıdır sorularına cevap vermeye çalıştık. Şimdi nasıl kullanıldığını küçük bir örnekle gösterip , makalemizi tamamlayalım.

package jenerikler;
import java.util.ArrayList;
public class Belge<T> {            // T harfi dğeişkendir .
                                                // İsterseniz farklı birşey kullanabilir
    private ArrayList<T> belge = new ArrayList<>();
                                               //yukarıdaki ile aynı olmalı
    
    public void ekle(T eleman){ //buradaki de aynı olmalı
        this.belge.add(eleman);
    }
    
    public ArrayList<T> getirArrayList(){
        return this.belge;
    }

    public static void main(String[] args) {
       Belge<String> isim = new Belge<String>();    
       isim.ekle("Malik Masis");
   
        Belge<Long> tcNo = new Belge<Long>();
        tcNo.ekle(12345678998L);
   
        ArrayList<String> isimListe = isim.getirArrayList();
        ArrayList<Long> tcListe = tcNo.getirArrayList();
    
        for(int i = 0; i < isimListe.size(); i++){
            System.out.println(isimListe.get(i) + " -> " + tcListe.get(i));//ekranda göster
    } //for
  }  //main
} //class

Kaynakça

7 Aralık 2014 Pazar

Collections

S.a. Arkadaşlar,
Bu makalemizde sizlerle birlikte hem collections topluluğunu hem tanıyıp hem de tanıtmaya çalışacağımız. Varsa eksiklerimiz şimdiden affola.
Öncelikle collections nedir , ne işe yarar , neden kullanılır onun üzerinde biraz konuşacağız daha sonra ayrıntılı olarak üzerinde durmaya gayret edeceğiz. Biz bazı işlemlerimizi yaparken önce for kullanırız , for kullanımından daha güzel şekilde değerlendirerek dizilerle işlem yapmaya başladık fakat dizilerden daha gelişmiş olan collections ile işlem yapmak hem daha kolay hem daha fazla özellikler barındırır. Bunlardan bazıları ise veri eklerken static durumdan kurtulmak , araya eleman eklemek , aradan eleman silmek vb özelliklerini dizilerle yapmak çok zor ve karışık iken collections ile çok rahat olabiliyor.

                                   Resim-1 Java Collections [1]
Set: Birden fazla aynı kayıt içeremez. Tekildir. Belirli bir sıralaması yoktur.
                Sorted Set: Eğer sıralı bir set oluşturacaksak bu yöntem kullanırız.
                HashSet: Burada ise düzensiz ama hızlı bir erişim vardır.
List: Birden fazla aynı kayıt içerebilir. Belirli bir sıralaması vardır.
                Array List: Sıralı listelerde hızlı erişim sağlar.
                Linked List:  Farklı bir liste yöntemi kullanır.
Map: Her öğresine anahtar atanan topluluktur. Tekildir.
                Hash Map: Sıralaması yoktur, sorted  map’e göre daha hızlıdır.
                Sorted Map: Anahtarına göre sıralanmış kümedir(map).
Kaynakça
[1] Timur Karaçay, Veri Yapıları


5 Aralık 2014 Cuma

Anti Virüs Programlarının Karşılaştırılması



Test yapılırken %40 Koruma + %30 Performans + %30 Editor görüşleri (!) baz alınmış.[1]
NOT: burada symantic hiç yer bile almamaktadır. Zaten başkan yardımcısının yaptığı son açıklama da kendilerinin artık nerdeyse pes etme aşmasına geldiğini belirmekte.
Bu tabloyu şöyle bir gözden geçirdim de avast ücretsiz olmasına diğer ücretli rakipleriyle baş edebilecek korumayı sağlamaktadır, fakat iş performansa geldiğinde bu konuda orta bir performans gösterdiğini görüyoruz. Eğer önceliğimiz tam koruma ise GDATA bu konuda en iyi görünüyor ama performansı oldukça düşük gözüküyor. Editörlerin performansını ihmal edersek eset hem korumasıyla hem performansıyla en iyilerden gözüküyor. Şuan için ideal bile sayılabilir. Fakat araştırmalarımıza devam ediyoruz. Bu sonuçlar 2013 yılına aittir. Ve son olarak şöyle küçük bir not da ekleyecek olursak

En güçlü anti virüs : G-Data
En hızlı (performans) anti virüs : ESET
En kapsamlı ücretsiz Anti virüs : Avast!
Geleceği en parlak anti virüs : Baidu

Yılın hayal kırıklığı: Microsoft SE[1]



       İnternetten şöyle bir de araştırma yaptım, burada sitenin kendince kullanmış olduğu bir puanlama sistemi ile smart rating demişler bu puanlama sistemi ile kasper açık ara önde olduğu gözüküyor ama bu 2015 sürümü, ardından eset geliyor, fakat kullanıcı memnuniyetine baktığımızda 5.0 ile avast ve eset ilk sırayı alıyor, burada kasper ise 4.1 ile biraz soru işaretlerine yol açıyor açıkçası. Dediğim gibi sadece kasper 2015 diğerleri 2014.

            Ücretlerini karşılaştıracak olursak fiyatlar arasında çok bir fark ama en ucuzu eset bu sayede yine öne geçmeyi başarıyor eset. Esetin çok çok avantajlı olduğu bir kısım her sisteme kurulabilmesi ve burada çalışan birçok çalışanımız ben biliyorum k mac Linux kullanıyor ve tüm işletim sistemlerine uyum sağlayan eset var. Eset yazılımdaki Java bu konuda J



        Burada barındırdıkları/barındırmadıkları özellikler listelenmiştir. Yine kendimizce ayrıntılı bir göz geçirmek istersek;
1. kasper                 2.avg free           3.eset              4.norton          5.avast Premier
Şimdi kendi incelememize geçebiliriz. Burada da gördüğümüz üzere eset rakiplerinden daha fazla özellik barındırıyor. Ör kasperde dosya şifrelememe ve dosya parçalama özelliği bulunmamaktadır. Norton ve avast bu konuda diğer rakiplerinden çok geride kalırken avg kasper ve eset birbirine yakın özellikler barındırmaktadır.


Şimdi bizim için en önemli konuya geliyoruz . Korumaya:
Burada eset çok geride kalıyor. Güvenlik duvarı, mail koruması , keylogerler , spam gibi özelliklerinin çoğunu barındırmamaktadır. Burada kasper mükemmel bir performans sağlıyor 2015 sürümüyle . Bir anda ibre kasper’e yöneldi sanki . Bizim için en önemli şey koruma olduğunu göz önüne alırsak kasper gerçekten bu konuda çok iyi görünüyor
Şimdi gelirsek telefon korumasına zaten yukarıda söylemiştik burada avg ve avast ön plana çıkıyor.
Şimdi ise kullanıcıya sağladığı destekleri karşılaştıralım. Kasper ve eset tutorial özellikleriyle öne çıkıyorlar
Malware engelleme konusunda kasper %95 avg %97 eset %89 performans gösteriyor ama kasper blokladıklarını silme özelliği barındırmıyor
Burada son cümle Eset ile Kasper baş başa görünse de güvenlik açısından kasper daha önde fakat barındırdığı özellikler ile eset daha önde . Burada önemli olan başta dediğimiz gibi kullanıcının ne beklediği .



Şimdi ise başka bir araştırma olan http://www.volkankey.com/2014-un-en-iyi-antivirus-programlari/ sitesinden bir makale , kendi tecrübe ve düşüncelerini aldığı güzel bir çalışma bir de ona yer verelim. Kendi denemiş olduğu anti virüs 2014leri karşılaştırmış , böylesine güzel bir çalışma için biz de kendisine teşekkür ederiz.
Siyah yazılı kısımlar ise benim fikrim, yeşil renkli yerler siteden alıntı
8. Avast! Anti Virüs : Oldum olası zor durumlar dışında kullanmaktan hiç haz almadığım bir anti virüs yazılımı. USB bellek virüslerine karşı kendisi oldukça ilgisiz. Tarama hızı bana göre iyi değil ve kimi zaman virüs içermese de kötü yazılım gibi davranabiliyor. Yıllık ücretsiz olarak bir form doldurmanız karşılığında (mailinize sürekli reklam mailleri gelebilir bu nedenle) programı ücretsiz olarak sunabiliyor.[3]
Ben de çok önceleri kullanıyordum avast, yukarıda yazılanlara katılmakla birlikte son yıllarda çıtasını yükselttiğini ve beğenen insanlar olduğu gördüm.

7.G Data Anti Virüs : Bilişim fuarında ücretsiz olarak dağıtılmıştı. Ben de merak ettiğimden denemek istedim. İşin açıkçası anti virüs program ara yüzü insana güven vermiyor. Oldukça hafif yani sisteme pek yük bindirmeyen bir yazılım olarak görünse de işini iyi yapan bir yazılım görüntüsü vermedi bana. Ara yüzün aşırı basit olması, önemli bölümlerin dikkat çekecek ölçüde kullanıcıya gösterilmemesi gibi nedenler böyle düşünmeme sebep oldu. .[3]
Biz de yukarıda bu programın en iyi güvenlik sağlayıcı fakat performans olarak  orta seviyeli olduğunu söylemiştik.
6.AVG Anti Virüs : Avast ın bir başka versiyonu diyebiliriz. Ara yüzü farklı olsa da virüs tespit etmede ve temizlemede çok başarılı sayılmaz. Zaten daha sonra kurduğum anti virüsler bu yazılımın yakalayamadığı onlarca zararlı yazılım tespit etti. Dolayısıyla çok da güvenilemeyecek bir yazılım kendisi. .[3]
5.F-Secure Anti Virüs : En eski dostlarımdan F-Prot tan sonra kullanmak için tereddüt ettiğim anti virüs yazılımı. Çünkü F-Prot bazı virüslü dosyaları temizlerken kullanılamaz hale getiriyordu. Neyse aklımda soru işaretleriyle programı kurdum ama korktuğum başıma gelmedi. F-Secure programı kendini günümüze adapte etmiş. Sahte web sitelerine karşı korumada yetersiz ama sistemi çok fazla yormadan çalışıyor. .[3]
4.Norton Anti Virüs : Anti virüs dünyasının babasıdır kendisi. Ama daha önceki yıllarda çıkardığı sürümlerindeki bilgisayarı kağnı haline getirmesi sebebiyle kullanıcılar uzaklaşmıştı. 2 ay önce yeniden test etme şansım oldu. Artık sistemi sömürmüyor eskisi gibi ama disk taraması yıllar sürecek gibi hissettiriyor. .[3]
Benim söyleyeceğimi de söylemiş arkadaş , norton iyi ama çok çok hantal gibi yorumlara sık rastlamıştım farklı ortamda , o nedenle çok tercih edilmiyordu.
3.Kaspersky Anti Virüs : Geçtiğimiz son 2-3 yıla kadar favorimdi. Ama ücretleme konusunda biraz abarttı. Yani anti virüsler içinde en fazla ücret talep eden yazılım firması oldu. oldukça başarılı bir anti virüs olmasına rağmen fiyatı kullanıcıları kendisinden uzaklaştırdı. .[3]
Yaptığımız araştırmalarda performanstan memnun olduğumuz , özellikle 2015 yılındaki sürümünde kendini daha da geliştirmiş olan yazılımıdır Ücretle ilgili bir sıkıntımız olmayacağını düşünerekten üzerinde iyi düşünmemiz gerek bir anti virüs olduğunu düşünüyorum.

2.Eset Smart Security Anti Virüs: Sistemi yormadan çalışan, oldukça hafif ve hızlı aynı zamanda da her zaman tetikte bir anti virüs yazılımı kendisi. Yıllarca bilgisayarımı korudu sağ olsun. Anti virüs programları arasında en çok tercih edilen yazılımlardan. Oldukça başarılı ancak az sonra okuyacağınız anti virüs yazılımına göre virüs yakalama ve temizleme skorlarında biraz geride. .[3]
Açıkçasını söylemek gerekirse benim de favorim eset’tir. Eset özellikle 5 ile çok iyi bir çıkış yakalayıp daha sonra 6-7 ve en son 8 ile kendini geliştirmeye devam ediyor.

1.Bit Defender Anti Virüs : Bit defender programı için ise söylenenler azmış diyorum. Çünkü yüklemeden önce 2014 ün en iyi anti virüslerinden şeklinde lanse ediliyordu. Nedense reklamı yapılan şeylere karşı antipatim var ama deneyince gördüm ki gerçekten 1.liği hak ediyormuş. Kullanıcı ara yüzünün basit olması, ücretinin diğerlerine göre makul olması ve sistemi kasmaması en iyi artılarından. Ancak benim web siteme giriş yaparken Bit defender ın neden sitemle ilgili uyarı verdiğini çözemedim. Kara listeye almış beni, olsun yiğidi öldür hakkını ver.  [3]

Sonuç: Her bir anti virüsün iyi olduğu alanlar vardır. Önemli olan önceliğimizin ne olduğudur. Genel itibariyle bu konuda eset ve kasper öne çıkıyor diye düşünüyorum. Umarım yararlı bir yazı olmuştur




KANKAKÇA