JAVA İLE PROGRAMLAMA (eski konularım)

29 Tem 2017
82
0
32
GİZLİ
Bu Eğitim Kimler İçin?

Teknik detaylara girmeden önce şunu belirtmek gerekir ki bu çalışma daha önce hiç bilgisayar programcılığı ile ilgili çalışmayanlar için çok iyi bir başlangıç ve az çok bu işi bilenler için de iyi bir arşiv olacak şekilde hazırlanmıştır. Eğitim içerisinde en temel kavramları anlatırken hem mevcut bilgilerinizi ilerletecek hem de önceden öğrendiğimizi sandığımız temel bilgilerinizi tekrarlamış olacaksınız. Ayrıca arasıra değineceğimiz pratik ipuçları sayesinde de, uzun zaman harcayarak elde edeceğimiz bazı bilgilere, hemen erişme şansına sahip olacağız.


Java Platform Bağımsızdır

Doğasında platform bağımsız olarak çalışan Java uygulamalarımızı ve uygulamaları oluşturmak için kullanacağımız araçları hem Windows hem de Linux işletim sistemlerine yönelik hazırladığımızdan herhangi bir kısıtlama içerisine de girmeyeceksiniz.


Bu dersimizde Java programcılığına giriş yapacak ve aşağıda listelenen başlıkları öğrenmiş olacağız:


* Java nedir? Nerelerde kullanılır?

* Nesne yönelimli programcılık nasıl olur?

* Java paketleri

* Kurulum ve ilk ayarlar

* Java ile bir uygulamanın çalıştırılması

* Nesne kavramı ve sınıf tasarımı

* Temel yazım kuralları


Eğitim boyunca öğreneceğimiz tüm bilgileri dikkatlice okumanızı ve sıklıkla tekrar etmenizi öneririm. Ayrıca anlatım sırasında ve pratik amaçlı verilecek örnekleri de mutlaka kendiniz de yazıp denemelisiniz. Unutmayınız ki iyi bir bilgisayar programcısı olmak, bir müzik aletini iyi çalabilmeye benzer. Bunu başarmanın en kolay yolu da sayısız pratik yapmaktır. İlk başlarda anlamsız ve kolay gibi görünen uygulamaları sabırla yazıp denediğinizde ne kadar çok yere takıldığınızı farkedeceksiniz. Ayrıca bu pratiklerin ilerleyen haftalarda nasıl bir yetenek kazandırdığına inanamayacaksınız :)


Nedir Bu Java?

İlk olarak Java programlama dili ve nesne yönelimli programlama tekniği hakkında kısaca bilgi edinmek iyi bir başlangıç olacaktır.


Adı “Green Project” olarak bilinen bir projenin içerisinde yer alan James Gosling, proje için en uygun dilin belirlenmesi işini üstlenmişti. 1984'de Sun Microsystems'de göreve başlayan Gosling, çalışmalarına C++ ile başlamış ancak bu dilin proje için yeterli olmayacağı düşüncesiyle, yine bu dilin bir türevi olan ve ilk adı “Oak” olan yeni bir dili geliştirmeye başlamıştı. Daha sonra yerel bir kafeden çağrışım yaparak bu dilin adını Java olarak değiştirmiştir. O günlerden bu güne Java halen geliştirilmekte olan ve günümüzde pöpülaritesi tartışılmaz olan bir dil olarak kullanılmaktadır.


Java nesne yönelimli bir dildir

Java nesne yönelimli bir programlama dilidir. Bir programlama dilinin nesne yönelimli olması, dilin kendi özelliği itibariyle aynı amaca yönelik görevlerin sınıf (class) denilen yapılar içerisinde toplanmasına ve bu prensibe göre kullanımına izin vermesidir. Nesne yönelimli programcılığın bir çok avantajı vardır. Bunlardan en önemlisi, bir projede birbirinden bağımsız olarak tasarlanan sınıf nesneleri kullanılmasıdır. Böylece projeye belli görevlerin eklenmesi veya çıkarılması projenin bütününe dokunmadan mümkün hale gelebilmektedir.


Bunu bir örnekle daha kolay kavrayabiliriz: Mesela icq benzeri bir program yazdığımızı düşünelim. Böyle bir projede kullanıcının karşısına gelecek uygulamanın görüntüsü ayrı bir mödül, sisteme kaydolan kullanıcıların kayıt işlerinin yürütülmesi ve veri tabanında saklanması işi ayrı bir mödül, ağ bağlantıları ve ağa giriş çıkış kontrollerinin yürütülmesi de ayrı bir mödül olarak tasarlanmakta ve daha sonra birleştirilmektedir. Bu tasarım sırasında herhangi bir modülde meydana gelen aksama diğer mödülleri etkilemeyecektir.


Bundan başka, belli bir görevi üstlenen bir sınıf nesnesi temel alınarak bu göreve yeni eklemeler yapmak (türetme) Java gibi bir nesne yönelimli programlama dili ile oldukça kolaydır. Örneğin; ileriki konularda bahsedeceğimiz şekilde, siz bir pencere uygulaması tasarlamış olabilirsiniz. Daha sonra bir başkası sizin tasarladığınız bu pencereyi hiç bozmadan kullanarak ve üzerine eklemeler yaparak internet explorer'a çok benzeyen başka bir pencere uygulaması haline getirebilir. Eğitimimiz devam ettikçe zaten bu tekniğin aslında ne kadar vazgeçilmez olduğunu daha iyi kavrayacaksınız.


Java Multithread Programlamayı Destekler

Aynı anda birden fazla işi yürütebilecek fonksiyonların çalışması ancak mutlithread desteği sayesinde mümkün olacaktır. Java halihazırda buı yeteneğe sahiptir.


Güvenli ve Sağlamdır

Java'da, C ya C++ da olduğu gibi pointer kullanımı kullanıcıya o kadar açık değildir. Bu nedenle pointer gibi kritik kullanımlar neticesinde doğacak güvenlik problemlerine java da rastlanmaz.


Ayrıca Java'da built-in olarak bulunan birtakım araçlar sayesinde hafıza yönetimi dinamik olarak ele alınmaktadır. Böylece hafızanın bir süre sonra dolması gibi problemler de Java dili içerisinde engel teşkil etmez. Bu araçlardan en önemlisi Garbage Collector denilen araçtır. Bu araç hafızada tutulan ve artık kullanılmayan nesneleri otomatik olarak temizler.


Java'nın güvenli olmasının bir diğer nedeni de içerisinde sağladığı çalışma mekanizmasıdır. Bu mekanizmayı şöyle özetleyebiliriz:


Classloader ile gelen güvenlik

Yazılan ve derlenen programlar içerisinde gerekli sınıflar class loader denilen bir araçla programa dahil edilirler. Ancak Class Loader ağ üzerinden gelen sınıflarla lokal makinede yer alan sınıfları ayrı yerlerde tutar. Böylece daha önceden güvenilen lokal sınıfların üzerine yazılma ihtimali ortadan kalakacaktır.


Ayrıca JVM tarafından yorumlanan byte-code ların da güvenilirliği test edilmektedir. Bu testi byte-code verifier denilen bir araç üstlenir. Bu işlem çalışma zamanı sırasında (run-time) gerçekleştirilmektedir.



Enterprise Uygulamalar İçin Geliştirlmiştir.

Java sağladığı platformlar sayesinde dağıtık (distrubited uygulamaları geliştirmek için oldukça uygundur. Dağıtık uyuglamardan kasıt, sunucu-istemci etkileşimli, veri tabanı kullanan çok katmanlı yapılardır. Bunun için Java Teknolojilerini incelemek gerekmetedir.


Java Paketleri

Paket denilen şeyi aslında daha önce başkalarının yazıp dil içerisinde kullanılacak şekilde hazırladığı program parçaları olarak düşünebilirsiniz. Bu parçalar içerisinde ana programınızı yazmak için bazı özel işleri yapabileceğiniz (dosya işlemleri, ağ işlemleri, ekran işlemleri v.b.) araçlar yer almaktadır. Bu araçlar aslında tüm önemli işlerini temelini oluşturacak görevleri yapabilmektedir. Daha özel uygulamalar bu temel araçların üzerine geliştirilir. Bu nedenle temel araçları en baştan tekrar yazmak yerine paket içerisinden kullanırız. Daha teknik anlamda bu araçlar; sınıflar ve bu sınıflara ait metod ve değişkenlerdir. Bu paketlere aynı zamanda Sınıf Kütüphanleri (Class Libraries) de denilir.


JDK (Java Development Kit)

Bu kütüphanelerden, Pencere Yönetimi (Window Management), Giriş/Çıkış (I/O) ve Ağ İletişimi (Network

Communication) uygulamalrına yönelik olan sınıf kütüphaneleri JDK (Java Development Kit) denilen ortam içerisine yerleştirilmiştir. Bunun dışında Java içerisinde bazı işleri kolaylaştıran araçlar da mevcuttur. Bu araçlar debug, deployment ve dökümantasyonu kolaylaştırmak amacıyla kullanılır.



Java Dökümantasyonu

Java programlama dilinin yapısını oluşturan temel paketler dışında birçok farklı alanda program geliştirebileceğiniz yüzlerce paket mevcuttur. Ayrıca bu paketlerde yer alan genel konuya ilişkin yüzlerce sınıf nesnesi yer almaktadır. Bu sınıf nesnelerinin dökümantasyonunu kullanmadan iyi bir Java uygulaması geliştirmenin neredeyse imkansız olduğunu söyleyebilirim.


Bunun için, yazılmış kitapların yanında Java ile ilgili herşeyi bulabileceğiniz Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle adresini incelemenizi tavsiye ederim. En kısa yoldan bu Java paketlerini incelemek istiyorsanız Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle adresinde aradığınız herhangi bir sınıfa ilişkin tüm method ve değişkenleri bulabilirsiniz.


Java ile geliştirebileceğiniz bir çok alanda uygulama olduğunu söylemiştim. Aslında bu uygulamaları birbirinden kesin bir çizgiyle ayırmak pek doğru olmaz. Ağ üzerinde ortak bir veri tabanını kullanan ve görsel bir kullanıcı grafik arayüzüne sahip olan bir projeyi geliştirmek için veri tabanı, ağ uygulaması ve grafik arayüz tasarımı şeklinde üç ayrı uygulama alanında birden çalışmak gerekir. Ancak güzel olan, Java'nın nesne yönelimli bir programlama dili olması itibariyle, bu uygulamaların ayrı ayrı geliştirilip daha sonra tek bir proje çatısı altında birleştirmenin mümkün olmasıdır.



Java Sanal Makinesi (Java Virtual Machine)

Java'nın platform bağımsız olması demek, herhangi bri makinede yazılmış ve bir işlemci ile derlenmiş bir java uygulamasını, tek bir noktasını bile değiştirmeden başka bir makine ya da işlemci altında çalıştırabilmek anlamına gelmektedir. Java'ya bu özelliği kazandıran mekanizma ise içerisinde barındırdığı JVM (Java Virtual Machine) dir.


Bilgisayarınızda bir java uygulaması çalıştırabilmeniz için, içerisinde java sanal makinası ve kütüphanelerinin de yer aldığı sdk setini yüklemeniz gerekir. Yazdığınız uygulama, makinada yer alan bu SDK ile gelen, JVM içerisinde çalışacağından, program kodunuzda hiç bir değişiklik yapmadan ister windows altında, ister linux altında, ister Intel, SPARC ya da Alpha işlemcili bir makinada çalıştırabilirsiniz.


Java kaynak kodları .java uzantılı dosyalarda yer almaktadır. Her java dosyası çalıştırılmadan önce derlenerek aynı isimle .class dosyasına dönüştürülür. Bu derleme işlemini yapan program ise javac programıdır. Daha sonra derlenmiş olan bu .class dosyası yine jvm içerisinde yer alan java programı tarafından yorumlanır ve böylece yazdığınız uygulama çalıştırılmış olur. Bunu aşağıdaki resimde görmekteyiz:


[​IMG]



Kurulum ve İlk Ayarlar

SDK setinin son versiyonu ve dökümantasyon paketini Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle adresinden indirebilirsiniz. Ancak bu eğitim kapsamında 1.4.2 versiyonu yeterli olacaktır.


Yukarıda seti indirebileceğiniz adresi ziyaret ettiğinizde, indirmek istediğiniz seti belirlediğiniz zaman karşınıza gelen ikinci sayfada yine bu set ile ilgili hangi dilde, hangi platform için ve hangi paketi indireceğiniz konusunda bir seçim yapmanız istenecektir. Ayrıca yine bu sayfada daha önce web adresini verdiğim dökümantasyon paketini de indirebileceğiniz bir bağlantı bulacaksınız.

[​IMG]






Burada “Windows (all languages, including English)” yazılı satırda SDK sütunu altındaki bağlantıda yer alan set Windows kullanıcıları için uygundur. Dilerseniz aynı şekilde Linux işletim sistemi için de uygun setleri indirebilirsiniz. İndirme işlemi tamamlandıktan sonra Windows kullanıcıları için .exe uzantılı gelen seti üzerine tıklayarak kurmaya başlayabilirsiniz.


Linux kullanıcıları isterlerse .rpm uzantılı kurulum paketini, isterlerse de .bin uzantılı kurulum dosyasını aynı yerden indirebilirler. İndireceğiniz dosya j2sdk-1_4_1_04-linux-i586.bin ya da j2sdk-1_4_1_04-linux-i586.rpm gibi bir isme sahip olacaktır. Eğer .bin dosyası ile kurulum yapacaksanız, aşağıdaki gibi önce bu dosyaya çalıştırma izni verip daha sonra da çalıştırarak kurulumu tamamlayabilirsiniz:


$ chmod a+x j2sdk-1_4_1_04-linux-i586.bin

$ ./ j2sdk-1_4_1_04-linux-i586.bin


.rpm uzantılı paketi kurmak için ilk once root kullanıcısı olmanız gerekmekteir. Daha sonar da yine aşağıdaki komutu kullanarak kurulumu tamamlayabilirisiniz:


[​IMG]

$ su

# rpm -ivh j2sdk-1_4_1_04-linux-i586.rpm


Not: Yukarıda bahsettiğim linux ve windows platformları için kurulum işlemlerine ilişkin açıklamaları, kurulum dosyalarını indirdiğiniz sayfada da bulabilirsiniz.



PATH Ayarı

Kurulum işlemi tamamlandıktan sonra PATH ayarını yapmamız gerekmektedir. İşletim sistemlerinde yer alan ve orjinal adıyla “Environment Variables” denilen bir takım anahtar değerler içerisinde çeşitli bilgiler tutulur. Bu değişkenlerden birtanesi de sistem içerisinde yazılan komutların aranacağı dizinlerin hangi dizinler olacağı bilgisini tutan PATH değişkenidir. Java uygulamalarımızı çalıştırırken kullanacağımız komutların işletim sistemi tarafından her yerden tanınması için bu PATH değişkenine java sanal makinasının komutlarının yer aldığı dizinini de ekleyeceğiz. Burada bu işlemi hem Windows 2000 işletim sistemi hem de Linux işletim sistemi için anlatılacağım. Ancak yukarıda verdiğim bilgiyle birlikte siz de aynı işlemi başka sistemlerde de kolaylıkla yapabilirsiniz. Çünkü neticede yapılacak şey sadece bu PATH değişkenine yeni dizini eklemek olacaktır.


Windows kullanıcılar için:


Masaüstünde yer alan Bilgisayarım (My Computer) simgesine sağ tıklayınız ve Özellikler (Properties) seçeneğini seçiniz. Daha sonra karşınıza çıkan pencerede Gelişmiş (Advanced ) sekmesini seçiniz ve burada yer alan Çevresel Değişkenler (Environment Variables) seçeneğini seçiniz:


Bu sefer karşınıza çıkan pencerede Path isimli değişkeni göreceksiniz. Bu değişkeni seçip Düzenle (Edit) düğmesine basarak eklemek istediğiniz yeni dizini karşınıza çıkan söz diziminin en sonuna önce bir noktalı virgül (;) koyarak yazınız ve değişiklikleri kaydederek sisteminizi yeniden başlatınız. Bundan sonra artık java komutlarını rahatlıkla kullanabiliriz. (Buradaki örnekte sanal makinanın yer aldığı dizin C:\jdk1.4\bin olarak kullanılmaktadır. Bu bilgi sizin makinanızda farklı olabilir)


[​IMG]



Linux kullanıcıları için:


Bir terminal içerisinde PATH değişkenine aşağıda gösterildiği gibi java sanal makinasının yer aldığı dizini ekleyiniz ve aşağıdaki gibi export komutu ile bu değişkeni yeni değeri ile tüm kabuklar için kullanıma hazır hale getiriniz (Buradaki örnekte sanal makinanın yer aldığı dizin /usr/local/jdk1.4/bin olarak kullanılmaktadır. Bu bilgi sizin makinanızda farklı olabilir) :


$ PATH=$PATH:/usr/local/jdk1.4/bin

[academytech@localhost academytech]$ export PATH


Şimdi de değişkenin yeni değerini alıp almadığını kontrol edelim:


$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/academytech/bin:/usr/local/jdk1.4/bin/


Gördüğümüz gibi çıktının en sonunda bizim eklediğimiz yeni dizin de yer almaktadır. Bu çıkış bize işlemi düzgün yaptığımızı anlatmaktadır. Ancak şunu da eklemek gerekir ki linux altında yapılan bu ayar sadece o andaki oturum için geçerlidir. Bu bilginin kalıcı olmasını istiyorsanız home dizininizde yer alan “.bash_profile” dosyası içerisine şu satırı ekleyin:


PATH=$PATH:/usr/local/jdk1.4/bin


Bu anlatılanları yaptıysanız artık sistem içerisinde hangi dizinde olursanız olun java sanal makinanıza ait komutları doğrudan kullanabileceksiniz.



Java ile Uygulamaya Giriş

İlk ayarları ve kurulumu tamamladığımıza göre artık en temel java uygulamamızı yazalım ve çalıştıralım. Bu uygulama kullanıcıya aşağıdaki gibi bir mesaj penceresi çıkaracaktır:


[​IMG]


Resim 4: Ornek 1 ile yazılan uygulama sonunda ekrana gelecek olan mesaj penceresi








Herhangi bir editorde aşağıdaki kodu yazarak “Mesaj.java” adıyla kaydediniz:



[​IMG]


import javax.swing.*; import java.awt.*;

public class Mesaj { //1. satır public Mesaj() { //2. satır JOptionPane.showMessageDialog(null, "java ile hayat guzel :)"); }



public static **** main(String[] args) { //3. satır

Mesaj A = new Mesaj();

System.exit(0);

}

}

[​IMG]



Şimdi de komut satırında önce bu dosyayı kaydettiğiniz klasöre gidiniz (bu örnekte bu klasör c:\temp olarak yaratılmıştır) ve aşağıdaki gibi önce “javac Mesaj.java” yazıp enter tuşuna basın. Bunu yaptığınızda bilgisayar kısa bir süre yazdığınız kodu jvm’nin anlayacağı şekilde derleyecektir. Daha sonra da yine komut satırında “java Mesaj.java” yazıp enter tuşuna basın. Bu sefer de jvm derlenmiş dosyayı çalıştıracaktır:


C:\temp> javac Mesaj.java

C:\temp> java Mesaj


Not: Linux altında da bu uygulamayı ve bundan sonra göstereceğimiz uygulamaları aynı şekilde çalıştırabilirsiniz.


Bir java uygulaması en temel şekilde böyle çalıştırılmaktadır. Bu işlem linux işletim sistemi altında da değişmeyecektir. Programımıza kısaca bir göz atalım:


İlk satırlarda yer alan “import javax.swing.*” ve “import java.awt.*” bildirimleri kullanacağım nesnelerin tanımlı olduğu paketleri program içerisinde de erişebilir hale getirmektedir. Eğer bu satırlar yazılmasaydı program, gördüğümüz mesaj penceresinin oluşmasını sağlayan JOptionPane adındaki sınıf nesnesini tanımayacak ve bu nesneyi bulamadığına dair bir hata verecekti. Bu yüzden kullandığınız nesnelerin hangi kütühanelerde olduğunuz bilmeniz ve programın en başında import anahtar sözcüğü ile koda dahil etmeniz gerekmektedir.


Yazdığınız java uygulaması da kendi başına bir sınıf nesnesidir ve bu nesne adı ile (bakınız: Mesaj.java - 1. satır) dosya ismi aynı olmak zorundadır. Aksi takdirde programınız düzgün bir şekilde derlenmeyecek ve dolayısı ile çalışmayacaktır.


İkinci satırda “public Mesaj()” şeklinde bir metod tanımlandığını görüyoruz. Nesne ismi ile aynı isme sahip olan bu özel metodlara “başlangıç metodları” (constructor) denilmektedir. Yazılan her java programı bir sınıf nesnesi olduğuna göre bu nesneyi kullanmak için önce bu nesne türünden bir değişken yaratmak gerekir. İşte bu değişken yaratıldığı anda bu özel metodlar otomatik olarak çağrılırlar. Başlangıç metodlarıyla ilgili ayrıntılı bilgiyi daha sonra öğreneceğiz.


Üçüncü satırda yer alan ve “main” adıyla tanımlanmış metod ise yine özel olarak programın çalıştırıldığı ilk metoddur. Burada yukarıda bahsettiğim nesne yaratma işlemi yapılmaktadır. Daha genel söylemek gerekirse; yazdığınız programın çalışabilmesi için, temel programın main metodu içerisinde yazılması gerekir. Biz burada, “Mesaj” sınıf nesnesini eğer main metodu içerisinde kullanmasaydık program yine derlenecekti ancak hiç bir şey çalışmayacaktı. Fakat bu örnekte yazdığımız nesne main metodu içerisinde yaratıldı ve yaratıldığı anda bu nesnenin başlangıç metodu otomatik olarak çağrıldı. Bu çağrım neticesinde de ekrana bir mesaj penceresi çıkmış oldu. Her ne kadar daha önce java ile çalışmamış olan arkadaşlar için main metodunun nesne içindeki bu kullanımı biraz tuhaf gelse de, alışıldığında ne kadar basit ve anlamlı olduğu anlaşılacaktır .


Amacımız şu an için sadece bir giriş yapmak olduğundan main metoduna aktarılan parametre yapısı ve bundan sonraki örneklerde de göreceğiniz “public”, “private” gibi anahtar sözcüklerin kullanımı hakkında burada hemen bilgi vermeyeceğim. Şimdilik sadece kullandığım nesnelerin nasıl yazıldığı ve ilerki konularda da göreceğimiz şekilde nasıl ele alındığını ve ayrıca nesneler arasındaki hiyerarşinin nasıl sağlandığını incelemenizin daha faydalı olacağını düşünüyorum.


Örnek 1’de adı messageDialog olan sadece bir tane nesne kullandık. Bu nesneyi göstermek için JOptionPane sınıfında yer alan showMessageDialog metodunu, mesaj penceresinde görülmesini istediğimiz yazıyı parametre olarak girerek çağırdık.


İpucu: Bir java uygulamasını tek bir tıklama işlemi ile çalıştırmak da mümkündür. Bunun için windows altında aşağıdaki gibi bir dosyayı “uygulama.bat” adıyla kaydedersiniz dosya üzerine tıkladığınızda uygulamanız direk olarak çalışacaktır:


/*--- uygulama.bat ---*/ javac Mesaj.java java Mesaj

/*--------------------*/


Aynı işlemi linux altında yapmak için uygulama.sh adında bir dosya içerisine yukarıdaki satırların aynısını yazarak dosyayı kaydediniz ve konsol üzerinde bu dosyaya aşağıdaki gibi çalıştırma izni vererek dosyayı çalıştırınız:


$ chmod 700 uygulama.sh

$ ./uygulama.sh



Nesne Kavramı ve Sınıf Nesnelerinin Tasarımı

Java'da her şey bir nesnedir. Nesneler sınıf denilen yapılar ile meydana getirilir. Her nesne kendisine ait bazı bilgileri barındırmaktadır. Bu bilgiler nesneye ilişkin çeşitli değişkenler, nesne ile ilgili bazı işleri yapacak çeşitli fonnksiyonlar ve sabitlerdir. Ayrıca yine bir nesne içerisinde nesnenin kullanacağı başka nesneler de olabilir. Buradan da anlıyoruz ki aslında bir sınıf nesnesi birden fazla veri tipinin bir arada bulunduğu ve belli bir işi yapmaya yönelik hazırlanan birleşik bir yapıdır.

Bir sınıf nesnesi yaratılırken değişmeyen bazı kurallar vardır. Bu kurallar neticesinde siz de kendinize ait sınıflar yaratabilirsiniz. Şimdi temel olarak bir sınıf nesnesinin nasıl yaratıldığına bakalım:



[​IMG]


public class Kitap {


String kitap_adi; String yazar_adi; int sayfa_sayisi; float ucret; ... float ucretiSoyle() {

....

}

**** ucretiDegistir(float yeni_ucret) {

....

}

}

[​IMG]



Bu örnekte de görüldüğü gibi bir sınıf nesnesi yaratırken “class” anahtar sözcüğünü kullanmaktayız. Nesnemizin tamamı, class anahtar sözcüğü ile onu takip eden ve bizim vereceğimiz isimden sonra açılan küme parantezi ile en sonda kapatılan küme parantezi içerisine yazılmaktadır. Nesne yaratılırken ilk kullanılan “public” anahtar sözcüğü nesnenin başka nesneler içerisinde de doğrudan kullanılabileceğini belirtmektedir. Bu anahtar sözcük gibi nesnenin doğrudan kullanılamayacağını belirtebileceğiniz “private” anahtar sözcüğü de mevcuttur. Bunu dışında yeri geldikçe kullanılabilecek başka anahtar sözcüklerin olduğunu da belirtmeliyim. Ancak şu anda yolumuza sadece bu bilgilerle devam etmek daha verimli olacaktır.


Gördüğümüz gibi Kitap isimli sınıf nesnemizin içerisinde “kitap_adi”, “yazar_adi” gibi değişkenler yer almaktadır. Bu değişkenlere sınıf değişkenleri denilir ve nesnenin özelliklerini meydana getirirler. Bu özellikler her Kitap nesnesi için değişecektir ancak her Kitap nesnesi, değerleri farklı olsa bile bu özelliklere sahip olacaktır. Ayrıca yine nesnemiz içerisinde bu değişkenlere ek olarak bazı metodların yazılabileceğini de görmekteyiz. Java'da “metod” olarak isimlendirilen kavramlar C ya da C++ programlama dillerindeki “fonksiyon” kavramı ile aynı şeyi anlatmaktadır. Metodlar sayesinde belirli işlerin tek seferde yapılmasını sağlayabiliriz. Mesela bu örnek sınıf nesnesini kullanırken sınıf değişkenleri içerisine sırasıyla kitap adını, yazar adını ve kitabın ücretini yüklediğimizi kabul edelim. Bundan sonra herhangi bir anda kitabın ücretini öğrenmek istediğimizde önce hangi değişkenler olduğunu, hangi değişkende aslında kitap ücretinin yer aldığını öğrenmek yerine bu işi bizim için yapıp bize sadece sonucu üretecek bir metod yazmak daha akıllıca olacaktır. Bu amaçla yazdığımız “ucretiSoyle” isimli metodu çağırısak işimizi kısa yoldan halletmiş oluruz.


Metodların yazımı ve kullanımına ilişkin daha ayrıntılı teknik bilgileri ilerleyen sayfalarda vereceğim. Burada sadece kavram olarak metodları anlamak konuyu kavramak açısından yeterli olacaktır. Sonuç itibariyle yazılan bu sınıf metodları bu sınıf nesnesi ile yapılabilecek operasyonları tanımlar.


Yazım Kuralları Üzerine Bir Not

Bir uygulama yazarken dikkat edilmesi gereken önemli konulardan birtanesi de yazım kurallarıdır. Aslında burada bahsedeceğim bu kuralların bazılarına uymak bir zorunluluk olmasa da ileride iyi bir programcının sahip olması gereken alışkanlıkları edinmenize yardımcı olur.


Parantezlere Dikkat

Bahsedilebilecek ilk kural parantezlere dikkat etmeniz gerektiğidir. Sınıf nesnesini yaratırken açılan parantezi hemen aynı anda kapatıp daha sonra bu iki parantezin arasına yazmaya başlamanız, açılan bir parantezi kapatmayı hatırlama zorunluluğunu ortadan kaldırır ve hata yapma riskinizi azaltır.


İsimlendirme

İkinci kural olarak isimlendirmeden bahsedilebilir. Java'da sınıf nesneleri genellikle büyük harfle isimlendirilir. Ayrıca aslında yazılan her .java dosyasının bir sınıf nesnesi olduğunu da unutmamalıyız. Bir .java dosyasında başka sınıf nesneleri de olabilir ancak bunlardan bir tanesi asıl nesnedir ve diğer nesneler bu ana sınıf nesnesi tarafından kullanılır. Dosya ismi de bu sınıf nesnesi ile aynı isimde olmak zorundadır. Metodların isimlendirilmesi, ilk harf küçük harf, diğer kelimelerin de ilk kelimeye bitişik ve ilk harflerinin büyük harf şeklinde yazılması kuralına uymakta yarar vardır. Örneğimizde yer alan ucretiSoyle ve ucretiDegistir isimli metodlarda bu kurala uyduğumuzu görmekteyiz. Değişkenlerin isimlendirilmesi küçük harflerle yapılmaktadır.


Kodlamada Girintiler (Indentation)

Son olarak bahsedilebilecek kural ise kod yazımı sırasında kullanılan girintilerdir. Dikkat ederseniz yukarıdaki örnekte ilk satırda açılan parantezden sonra diğer bütün bilgileri bir tab içeriden yazdım. Daha sonra metodlara ilişkin parantezleri de açtıktan hemen sonra yazılı kodları temsil eden üç noktayı da (...) yine bir tab içeriden yazdım. Böylece hangi kodların hangi faliyet alanına ait olduklarını daha net bir şekilde görebiliyorum.


Yukarıda bahsedilen bu kurallara uymak, bize yazdığımız kodu daha sonra kolaylıkla anlama şansı sağlar. Ayrıca yardım almak ya da rapor vermek amacıyla kodu inceleyen başka kişiler de bu işi daha rahat yapabilirler. Bu amaçla bu kurallara özen göstermenizi tavsiye ederim.


Şimdi şu ana kadar edinmiş olduğumuz bilgiler ışığında bir örnek daha yazalım. Bu örneğimizde bir tane Kitap isimli sınıf nesnesi yazıp bu nesne türünden iki farklı değişken yaratacağım. Daha sonra da bu değişkenlerin sahip oldukları özellikleri inceleyeceğim.




[​IMG]


public class Kitap {


String kitap_adi; String yazar_adi; int sayfa_sayisi;


public int sayfaSayisiniVer() { return sayfa_sayisi;

} public **** kitabiGoruntule() { System.out.println("\nRapor");

System.out.println("********");

System.out.println("Kitap Adi: " + kitap_adi);

System.out.println("Yazari: " + yazar_adi);

System.out.println("Sayfa Sayisi: " + sayfa_sayisi);

System.out.println("\n");

}

public static **** main(String[] args) {

Kitap kitap1 = new Kitap();

Kitap kitap2 = new Kitap();


kitap1.kitap_adi = "Puslu Kitalar Atlasi"; kitap1.sayfa_sayisi = 238;

kitap1.yazar_adi = "Ihsan Oktay Anar";


kitap2.kitap_adi = "Vadideki Zambak"; kitap2.sayfa_sayisi = 307; kitap2.yazar_adi = "Balzac";

kitap1.kitabiGoruntule(); kitap2.kitabiGoruntule();

}

}

[​IMG]



Daha öncede anlatıldığı şekilde kodu yazıp çalıştırdığınızda aşağıdaki gibi bir çıkış alacaksınız:


Rapor

********

Kitap Adi: Puslu Kitalar Atlasi

Yazari: Ihsan Oktay Anar

Sayfa Sayisi: 238


Rapor

********

Kitap Adi: Vadideki Zambak

Yazari: Balzac

Sayfa Sayisi: 307


Şimdi gelin neler olduğunu inceleyelim: Örnek programımızda daha önce de dediğimiz gibi Kitap isimli sınıf nesnesini çeşitli değişkenleri ve metodlarıyla yarattık. Aynı zamanda nesne içerisine yazdığımız main metodu sayesinde de programımız derlendi ve çalıştırıldı. Şunu hatırlatmakta fayda var: Bir sınıf nesnesi yazılıp derlendiğinde aslında çalışmaz. Sadece o nesne kullanılabilir durumdadır. Bir java programının çalışması demek aslında sadece main metodunun çalışması demektir. Bu örnekte de Kitap isimli sınıf nesnesini yine Kitap sınıf nesnesi içerisinde yazdığımız main metodu içerisinde kullanıyoruz.


Bu kullanımda Kitap nesnesi türünden iki farklı değişken yaratıyoruz. Bunun anlamı bu iki farklı değişkenin kendine ait olan ama aynı niteliklerde değişken ve metodları olduğudur. Daha farklı bir deyişle; aslında kitap1 değişkeninde de kitap2 değişkeninde de kitap_adi isimli bir String türünden değişken vardır ancak içerdikleri değerler farklı olabilir. Zaten main metodunun son iki satırında da kitap1.kitabiGoruntule() ve kitap2.kitabiGoruntule() metodlarının üretecekleri değerler her iki değişken için farklı olacaktır. Ancak her iki değişken de aslında bir Kitap nesnesi olduğundan kendilerine ait bir kitabiGoruntule() metoduna sahipler demektir.


Buradan çıkaracağımız sonuç sınıf nesneleri aslında birer modeldir ve bu nesneler türünden yaratılan değişkenler de bu modelin birer örneğidir.


Bugünkü çalışmamızı burada noktalıyoruz. Yukarıda anlatılan nesne kavramları, sınıf nesnesi tasarımı ve metodlara ilişkin açıklamaları aslında sadece iyi bir giriş yapabilmeniz amacıyla inceledik. İlerleyen dersler boyunca bu konuları tek tek kendi içlerinde detaylandıracağız.


Değişken Kavramı

Tüm programlama dillerinde olduğu gibi Java'da da değişkenler kullanılmaktadır. Değişken; program yazılması sırasında, içerisinde birtakım değerleri tutan ve kendine ait bir türü olan yapıdır. Bir değişkenin içerisinde tuttuğu değer, program akışı sırasında değiştirilebilir. Ayrıca her değişkenin bir türü vardır ve değişkenlerin içlerinde tuttukları bu değerler de aynı türden olmalıdır.


Kullanılmadan önce değişkenlerin özellikleri hakkında derleyiciye bilgi verilmesi işlemine “bildirim” denir. Bir değişken nesnesi şu özelliklere sahip olur:


değişken ismi değişken türü değişken içerisindeki değer

değişkenin faliyet alanı




Değişken İsimlendirme

Değişken ismi, değişken nesneyi temsil eden karakterlerdir. Bu isim belli kurallar dahilinde verilmektedir. Bu kurallar kısaca şöyle açıklanabilir:


değişken isimlerinde boşluk olmamalıdır,

sayfa sayisi -> yanlis sayfa_sayisi -> dogru

sayfaSayisi -> dogru


değisken isimlendirmede türkçe karakterler kullanılmamalıdır,

ÖzelDeğisken -> yanlis

OzelDegisken -> dogru


Değişkenin türü aslında içerisinde tutacağı değerin özelliğidir. Mesela içerisinde tamsayı değerleri tutan bir değişken ile ondalık sayı değerleri tutan değişken aynı türden değildir.


Bir değişkenin içerisinde değerler saklanarak aktarılır ve kullanılırlar. Değişkenler içerisinde saklanan değerlerin de bir türe ilişkin olduklarını ve içlerinde saklanacak değişkenin türü ile aynı türden olmak zorunda olduklarını unutmayınız. Aşağıdaki örnekte integer türünden bir değişken yaratıp içerisinde de 200 sayisini saklayacağız:



[​IMG]


public class Degisken {

public static **** main(String arg[]) { int a = 200;

System.out.println("a degiskeninin sakladigi deger: " + a + " degeridir"); }

}

[​IMG]



Bu kodu yazdıktan sonra daha önceki derslerimizde gösterdiğimiz gibi çalıştırınız:



Kodun çalışması sonucunda ekranda şu yazıyı göreceksiniz:


a degiskeninin sakladigi deger: 200 degeridir



Java’da “primitive type” denilen değişken türleri vardır. Bu türlere biz ilkel ya da temel türler diyoruz. Daha sonraki derselerimizde göreceğiz ki temel türlerin dışında bir de nesnel türler vardır.


Kullanılan temel veri tiplerini inceleyelim:



Sayısal Veri Tipi

Hafızada kapladıgı alan (byte)

Sınırları

int

4

-2.147.483.648, +2.147.483.647

short

2

-32.768, +32.767

long

8

-9.223.372.036.854.775.808L ,

+8.223.372.036.854.775.807L

byte

1

-128, 127




float

4

-+ 3.40282347E+38F

double

8

-+ 1.79769313486231570E+308



Ön Eklere İlişkin NOT: Yukarıdaki tabloda görüldüğü gibi bazı veri tiplerinin sonuna F ve L gibi ekler getirilmiştir. Bunun nedeni bu veri tiplerinin eklerle birlikte ifade edilmesidir. Bu durum tür bilgilerinin birbirine karışmasını engeller.


Sayısal Olmayan Veri Tipleri

Yukarıdaki tabloda incelemiş olduğumuz veri tipleri sayısal bilgiyi ifade etmek için kullanaılır. Sayısal olmayan bilgiyi ifade etmek için kullanılan veri tipleri de vardır. Şimdi bunları incleyelim:



“char” Veri Tipi:

char veri tipi karakterleri temsil etmek amacıyla kullanılır. Bir karakter klavye ile sisteme tek tuş ya da birkaç tuş kombinasyonu ile ama tek seferde girdiğimiz sembollerdir.


Hafızada 2 byte yer kaplarlar.


Karakter Kümeleri ve Unicode

Aslında tüm dillerdeki sembolleri içine alan en geiş karakter kümesi Unicode karakter kümesidir. Bu küme içerisinde kullanılabilecek tüm karakterler yer alır ve her karakter hexadecimal olarak ifade edilir. 65536 tane karakteri içerecek genişliğe sahiptir. Ancak halihazırda 35000 karakter kullanır.


\u0008 (backspace), \u0009 (tab) gibi...


ASCII karakter kümesi aslında Unicode karakter kümesinin bir alt kümesidir ve ASCII karakterleri 128 tanedir. Hafızada 1 byte yer kaplarlar.


Bunun dışında bildiğimiz ISO8859-9 (latin-5) gibi karakter kümeleri ASCII nin uzantıları olup aslında yine unicode karakter kümesinin bir alt kümesidir.


“boolean Veri Tipi:

Bu veri tipi mantıksal bilgiyi ifade eder ve alacağı değer true ya da false olabilir. Bu değerler ileride göreceğimiz mantıksal operatörler içerisinde ve if, while, for gibi deyim ve döngüler içerisinde kullanılabilir.


Değişken Bildirimi:

Değişken bildiriminde, ilk önce bu değişkenin içerisinde tutacağı değerlerin hangi türden olacağı ve değişkenin hangi isimle anılacağı bildirilir.


Örneğin:


int a;

double benim_degiskenim;

String isim;


System.out.println() metodu üzerine bir not:

Bu metod java tarafından tanınan ve daha önce yazılmış bir metoddur. Bu metodu kullanırken parantezler içerisine yazılan (parametre olarak yazılan) değişken ve sabitler ekranda görüntülenir. Eğer parantez içerisine bir değişken yazılmış ise bu değişkenin içerisindeki değer ekrana yazılacaktır. Ayrıca + operatörü yardımıyla parantez içerisine birden fazla tür yanyana yazilabilir. Örneğin:


Degiskenler.java

[​IMG]


public class Degiskenler {


public static **** main(String arg[]) { int a; //satır 1 a = 200; //satır 2 int b, c; //satır 3 b = 100; //satır 4 c = 400; //satır 5 int d = 0; //satır 6

System.out.println("a nin degeri: " + a);

System.out.println("a nin degeri: " + a + " b nin degeri: " + b); d = a + b + c;

System.out.println("Toplam deger: " + d); }

}

[​IMG]



Program çalıştığında şunu göreceksiniz:


a nin degeri: 200 a nin degeri: 200 b nin degeri: 100

Toplam deger: 700


Bu örnekte aslında değişken bildirimine ilişkin farklı yöntemleri görmekteyiz. Bir değişken satır 1'de olduğu gibi ilk önce yaratılıp daha sonra satır 2'de olduğu gibi içerisine değer verilebilir. Ya da satır 6'da olduğu gibi aynı anda yaratılıp ilk değer verilir. Bunun yanı sıra virgül kullanılarak aynı türe ilişkin olmak üzere satır 3'de olduğu gibi tek satırda birden fazla değişken yaratılabilir. Bu örnekte aynı zamanda System.out.println metodunun kullanımını görmekteyiz.


Özel Karakterler İlişkin Bir Not:

C ve C++ programla dillerinde de olduğu gibi Java'da klavyeden girilen bir takım özel karakterlerin karşılığı vardır. Bu özel karakterler bip sesi, enter tuşu, alt satır başı, tab tuşu gibi karakterlerdir. Bu karakterler kullanılırken başlarına \ işareti koyulur ve uygun sembol yerleştirilir. Buna göre:


\n : alt satır başına

\t : tab tuşu

\\ : \ işareti

\” : “ işareti

\b : backspace (bir önceki karakteri silme)

\r : kendisinden önce gelen tüm karakterleri satır başına kadar silme


anlamına gelmektedir.


Şimdi kullanıcıdan bir takım bilgileri alan ve daha sonra bu bilgileri ekranda gösteren bir program yazalım. Bu program çalıştığında Resim 6'daki gibi JOptionPane sınıfının showInputDialog isimli metodu yardımıyla meydana gelen bir pencere aracılığıyla bilgiler kullanıcıdan istenecek ve sonra bundan önceki dersimizde de gördüğümüz JOptionPane sınıfının showMessageDialog isimli metodunun meydana getirdiği mesaj penceresi aracılığıyla girilen bilgiler ekranda tekrar gösterilecektir.



Programımızı yazalım:


İsimGir.java

[​IMG]

import javax.swing.*; //s1


public class IsimGir {

public static **** main(String arg[]) {

String isim, yas; //s2

isim = JOptionPane.showInputDialog(null, "Lutfen isminizi giriniz: "); //s3 yas = JOptionPane.showInputDialog(null, "Simdi de yasiniz giriniz: "); //s4

String rapor = "Adiniz: "+isim+"\nYasiniz: "+yas; //s5

JOptionPane.showMessageDialog(null, rapor); //s6

//JOptionPane.showMessageDialog(null, "Adiniz:\t"+isim+"\nYasiniz:\t"+yas);s7

System.exit(0);

}

}

[​IMG]



Bu örnekte görüldüğü gibi ilk olarak kullanıcının gireceği bilgilerin tutulacağı değişkenler s2'de yaratılmaktadır. Eğer bu değişkenler olmazsa kullanıcının gireceği bilgiler bir yerde saklanamayacağı için kullanılamazdı. Daha sonra s3 ve s4'de JOptionPane.showInputDialog() metodu yardımıyla ekranda giriş yapılacak olan input dialog penceresi çıkartılmaktadır. Ancak bu metodun özelliği, çağrıldıktan sonra geriye, kendisine girilen yazıyı değer olarak üretir ve bu değer s3 ve s4'de sırasıyla isim ve yas değişkenlerine aktarılmıştır. s5'de ekranda en son bilgilerin gösterileceği pencereye yazılacak olan yazı hazırlanmış ve rapor isimli değişkene aktarılmıştır. Daha sonra String türündeki bu rapor değişkeni JOptionPane.showMessageDialog() metoduna parametre olarak gönderilerek mesaj penceresi hazırlanmıştır. Aynı şekilde ekranda belirecek mesaj, s5'de olduğu gibi önceden hazırlanabileceği gibi hemen o anda s7'deki gibi parametre olarak da hazırlanabilir. Bu örnekte s5 ve s6 yerine sadece s7'de kullanılabilir.


Not: Başında “//” olan satırların Java derleyicisi tarafından es geçildiğini ve programın sanki bu satırlar yokmuş gibi çalışacağını hatırlayınız.



Sabitler:

Değişken nesnelerin içlerindeki değerlerin değişebileceğinden bahsetmiştik. Bazı durumlarda tüm program boyunca yanlışlıkla da olsa değerinin değiştirilmemesi gereken nesnelere ihtiyaç duyabiliriz. Bu talebi karşılamak için sabitler kullanılmaktadır. Sabitlerin bildirimi aynen değişken bildiriminde olduğu gibidir ancak tek fark sabitlerin bildiriminin başına final anahtar sözcüğü getirilmesidir:


Sabitler.java

[​IMG]


public class Sabitler {

public static **** main(String arg[]) {


final double BIRIM_UCRET = 200.5;


double sure = 2.3;

//BIRIM_UCRET = 200.8; //s1

System.out.println(“Bu ay odeme bedeli: ” + BIRIM_UCRET * sure + “ liradir.”);

}

}

[​IMG]



Bu örnekte gördüğümüz gibi BIRIM_UCRET adında ve türü double olan bir sabit ile sure adında ve türü double olan bir değişken tanımladık. Bu durumda siz isteseniz bile bu sabiti s1'de olduğu gibi değiştiremezsiniz. Eğer s1'in başındaki // ifadesini kaldırırsanız programın hata verdiğini göreceksiniz. Sonuç itibariyle sabitleri program içerisinde bir değerle yaratıp, içerisinde hep bu değeri tutmasını garanti edebilirsiniz. Sabitin içerisinde tutacağı değer ancak bilinçli olarak ve ilk defa verildiği yerde değiştirilebilir.


Operator Kavramı ve Operatörlerin İncelenmesi:

Operatörler sayısal ya da mantıksal ifadelerin birbirleri ile işleme sokulmasını sağlayan araçlardır. Program yazarken bir çok defa hesap yapmak gerekecektir. Bu sayısal hesapların yapılabilmesi için çeşitli sayısal operatörler kullanılmaktadır. Ayrıca yine operatörler yardımıyla bazen de sayısal olmayan ve kelimelerin karşılaştırılması, eşitliklerin sağlanması ve bunun gibi birbirinden farklı mantıksal işlemler de yapmak gerekmektedir.


Not: Şunu kesinlikle unutmayınız ki; az sonra bazılarını öğreneceğimiz operatörler, kullanıldıkları zaman geriye mutlaka bir değer üretirler. Üretecekleri bu değerler bir sayı, true ya da false gibi boolean bir değer veya bunun gibi operatöre göre değişen değerler olabilir. Ama sonuçta operatörün bir değer ürettiğini ve işlem sonucunda ortada sadece bu değerin kaldığını anlamaya çalışınız. Şimdi bu operatörleri inceleyelim:


= operatoru

Bilinen en genel operatörlerden olan eşitlik operatörü çift taraflı kullanılır. Sağ tarafında yer alan değeri sol taraftaki değişkene atamaya yaramaktadır. Daha önce yaptığımız IsimGir isimli örnekte s3 ve s4'de de olduğu gibi, bazen metodlardan gelen değerleri de değişkenlere aktarmaya yarar. Aslında mantık hep aynıdır. Sağdaki değer soldaki değişkene aktarılır. Bu operatör kullanıldıgında, ilk once sağ taraf hesaplanmaktadır.


+, -, *, / operatorleri:

Bu operatörler klasik matematik işlemlerinin hesabında kullanılmaktadır. Ancak istisna olarak + operatorünün daha önce de gördüğümüz IsimGir örneğindeki s5'de olduğu gibi Stringleri birbirleri ile ya da String ve değişkenleri birbirleri ile bağlamak gibi işlemlerde de kullanılması mümkündür.



+=, -= /= ve *= operatörleri:

Bu operatörler birleşik operatörlerdir. Genellikle bir değişkenin değerini eski değeri ve yeni bir sabit artımının toplamı, farkı, bölümü veya çarpımı şeklinde değiştirmek için kullanılır. Örnegin:


int x = 10;

x = x + 4;



işleminde x değişkeninin son değeri 14 olacaktır. Bu işlem aynı şekilde += operatoru kullanılarak da yapılabilir. Şöyle ki:


int x = 10, sayi = 6; x += 4; //x = x + 4 ile aynı anlamdadır.

sayi = sayi – 6; //sayi -= 6;


++ ve –- operatorleri:

Bu operatorlerin her ikisi de tamamen aynı mantıkta olup verinin değerini 1 artırmak ya da1 eksiltmek amacıyla kullanılır. Ornegin x = x +1; yazmak yerine x++; yazabilirsiniz. Aynı şekilde x = x -1; yazmak yerine x--; yazabilirsiniz.


boolean Operatörleri :

Daha önce de belirttiğimiz gibi eğer bir değişken boolean türünde ise alabileceği sadece iki tane değer vardır. Bu değerler “true” ya da “false” değerleridir. Bu iki değeri bilgisayar mantığında 1 ya da 0 a benzetebiliriz.


Bu iki değeri içerisinde saklamak amacıyla kullanılan değişkenler de boolean türünden olacaktır. Bazı operatörler kullanıldıkları zaman sonuç olarak bu iki değerden birtanesini üretirler. Bu operatörlere mantıksal operatörler denilir.


== ve != operatorleri:

Bu operatör aslında “eşit mi? ” sorusunun cevabını üreten mantıksal bir operatördür. Çift taraflı olarak kullanıldığında sağdaki ve soldaki değerlerin eşit olması durumunda “true” sonucunu üretir. Eşitlik yok ise “false” sonucu üretilecektir. Mesela 3 == 5 işlemi false değerini üretir.


== operatorune benzer olan, ancak tam tersini yapan diğer bir operatör de != operatörudur. Bu operatör de yine çift taraflı olarak çalışır ve her iki tarafın birbirine eşit olmaması durumunda “true”, eşit olmaları durumunda da “false” değerini üretir. Örneğin 3 != 5 işlemi true değerini üretir.


&& ve || (and ve or) Operatorleri:

Bu iki operator mantık işlemlerinde kullandığımız and ve or operatörleridir. Bunlar da çift taraflı kullanılır.


&& operatoru her iki tarafındaki değer true ise true sonucunu üretecek ama sağ ya da sol taraftan bir tanesi false olması durumunda false değerini üretecektir.


|| operatoru de iki tarafındaki değerlerden en az bir tanesi true olması durumunda true değerini üretecek, her iki tarafın da false olması durumunda false değerini üretecektir.
:RpS_unsure:



BEĞENDİYSENİZ BEGEN BUTONUNA VE MESAJ YAZMAYI UNUTMAYIN
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.