7 Temmuz 2009 Salı

Java Programımızı Derleme ve Çalıştırma

Derleme

Öncelikle yazdığımız programı derleyebilmemiz için bilgisayarımızda Java SE Development Kit’i (JDK)
http://java.sun.com/javase/downloads/index.jsp
adresinden yüklememiz gerekmektedir. Bunu yüklediyseniz kodunuzda hazırsa şimdi Command Prompt ekranını açabiliriz. Bunu yapabilmek için Run’a cmd yazıp Enter’a basın.

java, java ders, java konular, java öğren, java geliştir,java tutorial

Açılan ekranda kodumuzun olduğu dizine gitmek için ‘cd’ komutunu kullanabiliriz. Ardından

javac sourcecode_filename

örneğin;

javac SimpleProgram.java

Ayni anda birden fazla programı derlemek istiyorsak

javac Foo.java Bar.java Another.java

gibi aralarına boşluk bırakarak yan yana yazılarak ayni anda compile edilebilir.

javac *.java

ile o dizindeki tüm kodlar compile edilir.

Önemli! “javac' is not recognized as an internal or external command” bu hatayla karşılaşabilirsiz. Bunu şöyle çözebilirsiniz:

C:\foo\bar\> C:\j2sdk1.4.2_01\bin\javac Filename.java


Çalıştırma

java SimpleProgram

ile derlediğiz kodu caliştirabiliriz.

Eğer farklı dizinlerdeki programları caliştirmak gerekiyorsa

java –cp dizin1;dizin2 SimpleProgram

kullanılır.
Önemli! Main Class’ın ismiyle dosyanın ismi ayni olmalıdır. Mesela Main Class’ımız SimpleProgram ise notpad’te ‘Farklı Kaydet’ yaparken SimpleProgram.java diye kaydetmeliyiz.

Bunu Unutma! \' Print içinde tek tırnağı ekrana yazdırabilmek için kullanılır
\" Print içinde çift tırnağı ekrana yazdırabilmek için kullanılır

Java Platform Bağımsızdır

Bu gerçekten Java’nın çok önemli bir özelliği çünkü C,C# gibi diller derlendiğinde her makinada çalışabilmesi için 0 ve 1 lerden oluşan makine diline çevrilirler ve bu işlem işletim sistemi üzerinde olur. Burada bir sorun yok her makinada çalışmayı sağlıyor çok güzel gibi görünsede ayni kod Windows’ta derlenmişse farklı, Solaris’te derslenmişse farklı yada Linux’te derlenmişse oluyor. Buda yazdığımız kodun başka bir platformda çalışmaması anlamina geliyor. Yani Windows’ta yazmışsan sadece Windows’ta kullanabiliyorsun.

java, java öğren, java geliştir, java yaz, java ders, java tutorial


Java’nın Platform Bağımsız olması şu anlama geliyor. Bir kere yaz her yerde çalışsın mantığı var. Çünkü C,C# gibi diller makinenin işletim sisteminde derlendiği için platform bağımlıdır. Fakat Java JVM(Java Virtual Machine) üzerinden çalışır. Bu yüzden ayni program nerde derlenirse derlensin ayni bytecode’u üretir bu yüzden bir kere yazıldıktan sonra istenilen ortamlarda çalıştırmak mümkündür. Burdaki tek sorun hız sorunudur. Çünkü işletim sistemiyle birlikte Virtual Machine’de bilgisayarın bilgisayarın kaynaklarını kullandığı için daha yavaş calişmaktadır.

java, java öğren, java geliştir, java yaz, java ders, java tutorial

Not : Resimler Jacquie Barker’ın ‘Beginning Java Objects’ adlı kitabından alınmıştır.

Proje Özeti

java,java ders,java öğren,java geliştir,java tutorial,OOP Bir projenin sistemin modellemesini yaparken önce derinlere inmeden projenin amacını, son kullanıcının neler yapabileceğini ve teknik gereksinimleri içeren bir özet çıkarırsak modelleme yaparken sistemi daha basitleştirmiş oluruz. Örneğin USİS gibi öğrenci ders kayıt sistemi modellediğimizi düşünelim.


AMAÇ : Öğrencilerin derslerini alıp, ders programlarının görebileceği bir sistem tasarlamak

İŞLEVSEL GEREKSİNİMLER : Öğrenci ders seçebilecek, sonra bu dersi silebilecek, ders programını görebilecek

TEKNİK GEREKSİNİMLER : SQL Server, Windows NT ve üstü

Bu şekilde derinlemesine özet çıkarmasamda böyle bir özet çıkarırsak model kafamızda daha iyi oturur ve bu sayede sistemi daha kolay modelleyebiliriz. İşinize yarayacaktır deneyin.

6 Temmuz 2009 Pazartesi

Sınıflandırma

Mesela gerçek hayattan bir örnekle yaşayan canlıları düşünelim: bitkiler ve hayvanlar. Gördüğünüz gibi yaşayan canlıları ikiye böldük eğer bizim işimiz hayvanlar ise artık elimizde sadece hayvanlar var. Daha sonra daha derine inersek hayvanlar içinde: balıklar, memeliler, böcekler diye daha da bölebiliriz. Mesela burada da işimiz memelilerle ise elimizde sadece memeliler kalıyor. Yani bir önce ki yazımda bahsettiğim soyutlamayı sınıflandırma hiyerarşisi ile yapmış oluyoruz. İstediğimiz topluluğa ulaşmak için bütün topluluğu sınıflara ayırıyoruz ve istediğimiz kesime ulaşıyoruz.


Bu yapı OOP’ de çok önemli bir kavram olan kalıtımın mantığı diyebiliriz. O yüzden bunun mantığını öğrenmek çok önemli.

siniflandirma, java, object oriented,nesneye yönelik,java öğren, java geliştir, java tutorial,java ders

Soyutlama ve Modelleme

java,OOP, object oriented,nesneye yönelik,java öğren, java yaz, java tutorialBloğumu okuduğunuz bilgisayarınızdan başınızı kaldırıp birkaç dakika odanıza veya her nerdeyseniz bulunduğunuz ortama şöyle bir bakmanızı istiyorum. Muhtemelen bir lamba, bir masa, bir koltuk gibi şeyler göreceksiniz. Bunlar sizin için yeni değil hatta her gün odanıza girdiğinizde gördüğünüz olağan ezberlediğiniz şeyler. Ama şimdi herhangi bir tanesine çok daha dikkatli bakmanızı istiyorum mesela masanızda duran o kalemliğe bakın. Rengine, şekline, neyden yapılmış olabileceğine. Böyle daha dikkatli baktıkça daha önce farkına varmadığınız birçok özelliğinin olduğunu göreceksiniz. Çünkü insan beyni algıladıklarının önemsiz kısımlarını soyutlar sadece önemli olan kısmını algılar. Bunun böyle olması gayet normal çünkü insan duyuları gün içinde milyonlarca kez uyarılır. Ama beynimiz önemsiz görülen kısmını soyutladığı için bu milyonlarca uyarı bizim için bir sorun olmaz. Kalemlik örneğindeki olayda bundan ibaret mesela şu an odanıza baktığınızda oda da bulunan her nesnenin tüm özelliklerini algıladığınızı düşünürseniz bu sizin için çok büyük bir yük olacaktır ama beynimiz bunları soyutlar ve biz sadece bize gerekli olan algılarız.

Yine Jacquie Barker kitabında soyutlama ile ilgili şöyle bir örnek veriyor. Biyoloji kitaplarındaki hücre şekillerini düşünün. Aslinda içinde milyonlarca yapı olmasına rağmen sadece mitokondri, çekirdek hücre zarı gibi önemli kısımlarını gösterirler. Çünkü küçük küçük milyonlarcasını açıklamaya gerek yoktur; çekirdek, mitokondri gibi önemli yapılar hücre nesnesini genellerler.

Bunların OO ile ne alakası var peki? Bir OO modellemesi yaparken elimizdeki her şey bir nesnedir. Yani sistemi kurarken ele alacağımız her nesneyi ilk örneğimizde nasıl kalemliğimize baktığımızda daha birçok özelliğini keşfetmişsek kuracağımız sistemde kullanacağımız nesnelerinde karakteristik özelliklerini bu şekilde bulmalıyız. Fakat bir nesnenin yüzlerce özelliği çıkabilir. Bu durumda da ikinci örnekte olduğu gibi hücrenin milyonlarca yapısı olduğu halde kitaplarda bizim işimize yarayacakları alıp hücre genellemesi yapıyorlarsa bizde kuracağımız sistemdeki nesnelerin özelliklerini bulduktan sonra işimize yarayacak özelliklerini özenle seçip genelleme yapmalıyız. Çünkü gereksiz seçilen özellikler sistemi karmaşık içinden çıkılamaz hala getirirken ayni şekilde gerekli olduğu halde seçilmeyen özellikler ise sistemde sorunlara neden olur. Mesela bir sistem kurulurken yazılım yapacak kullanıcıların göz renklerinin sisteme alınması sadece sistemi karmaşık bir hale getirecektir çünkü böyle bir bilgiye ihtiyaç duyulmayacaktır. Yani kısaca nesnelerin özelliklerinin isteklerimizi karşılayacak bir şekilde bulunup, gereksizlerin soyutlanması OO bir sistem modellerken bizim en önemli uğraşımız olacaktır.

Doğru bir şekilde modellenen sistem aynı zamanda esnek bir yapıya sahip olmalıdır. Çünkü herhangi bir şey yanlış ise veya bir şey değiştirilmek istenirse eğer sistem esnek bir şekilde tasarlanmışsa ufak birkaç ekleme ile istenilen gerçekleşebilir. Fakat esnek bir yapısı yoksa sistemin yeniden modellemesi gerekir, kodların yeniden yazılması gerekir yani zaman ve para kaybıdır. Bu yüzden esnek yapı doğru modellenen sitemin en önemli özelliklerindendir.

Ama her ne kadar modelleme yaparken soyutlama beynimizin gereksiz uyarıları algılamamasına benzese de durumun bu kadar kolay olmayacağı kesin gibi. İlerleyen yazılarımda bunun ne kadar kolay ne kadar zor olduğunu birlikte göreceğiz.

İyi Bir Programcı Olmak için Nesne Neden Bu Kadar Önemli?

object oriented,nesneye yönelik programlama,OOP,java Öncelikle şunu kabul etmek lazım bir programlama dilinin tüm syntax’ını bilmek kimseyi çok iyi programcı yapmaz. Sen istediğin kadar java bil, c# bil hatta o dili tüm özelliklerine kadar bil LINQ’sü olsun, Servlet’i olsun ama bir problemle karşılaştığında onun modellemesini yapamıyorsan o bildiğin anlamsız söz dizimlerini bilmek hiçbir işimize yaramaz. Onlara ihtiyaca uygun anlam kazandıramıyorsan yazdıklarının hiçbir değeri yoktur. Tabi syntax’ını bilmiyorsan program yazman mümkün değil orası tartışılmaz ama benim anlatmak istediğim her iki satır kod yazabilen gerçek programcı değildir.


Bu konu hakkında Apress yayıncılıktan çıkan Jacquie Barker’ın ‘Beginning Java Objects’ adlı kitabından edindiğim bilgilere dayanarak yazıyorum. Zaten OOP hakkındaki çoğu yazımda bu kitaptan edindiğim bilgilere yer vereceğim. Ve kitap hakkında şunu söyleyebilirim gayet güzel bir kaynak ve tavsiye ederim.

Düşününce yazılım projelerini bir evin yapılışına benzetebiliriz. Öncelikle elimizdeki malzemeyi iyi tanıyıp onunla neler yapabileceğini bilmeliyiz. Yani kullanacağımız dile hakim olup, onunla neyi iyi yapıp neyi yapamayacağımızı bilmeliyiz. Ve bunu bilerek yazdığımız program esnek olmalı nasıl mı şöyle ki : evin penceresini beğenmediğimizde tüm evi yıkmak yerine nasıl çıkarıp yenisini takabiliyorsak, yazdığımız programın bir yerinin değişmesi gerekiyorsa sadece o kısmı değiştirmenin mümkün olması gerekir. Tüm bunlar gerekli çünkü böyle olmuyorsa kullandığınız dilin birçok güzel özelliği vardır ve onları kullanmıyorsunuzdur. Müşteri sizden yazdığınız programın bir bölümünü değiştirmenizi istediğinde programı baştan yazmaya kalkarsanız para ve zaman kaybınız çok olacaktır. Bunun gibi birçok nedenden ötürü bu OO yapıyı oluşturmak çok önemlidir. Yani kod yazmanın ötesinde bu OO yapıyı oluşturabilmek gerçek programcı olmanızı sağlayacaktır.

Tavsiyem bu yüzden java veya c# gibi nesneye yönelik programlama dili öğrenirken en azından elinize ‘Object Oriented’ la ilgili bir kitapta alın faydasını göreceksiniz.

3 Temmuz 2009 Cuma

Hello Java!

java,java öğren,java tutorial,online java,java kod,java code Bu benim bu bloğumda ki ilk yazım. Bu bloğu açmamda ki amacım bildiklerimi, öğrendiklerimi java teknolojilerini merak edenlerle paylaşmak umarım bunu gerçekleştirebilirim. Bu bloğu açma nedenimi kişisel sayfamda yazdığım şu yazıdan daha detaylı öğrenebilirsiniz : http://safakunel.blogspot.com/2009/07/javagelistir-netgelistir.html

Her ne kadar Java desem de öncelikle ‘Object Oriented’ üzerine yazılar yazacağım. Bunun nedenini ileriki yazılarımda açıklayacağım için şimdi bir açıklamaya gerek yok sanırım.

‘Java’ ve ‘Object Oriented’ üzerine aldığım ders ve kurslar :

- YTÜ Matematik Mühendisliği Nesneye Yönelik Programlama Nilgün Güler, Yrd. Doç. Dr.

- YTÜ Matematik ‘Java ile Programlamaya Giriş’

- EDUTIME ‘Java Eğitimi’ (50 saat)

Bende çok iyi bildiğimi iddaa etmiyorum ve bu blogla uzmanlaşmayı hedefliyorum. Takip edecek herkese şimdiden çok teşekkürler ve kolay gelsin!

Hoşçakalın!