Java`ya giriş

17 Nisan 2006 – 14:23

Bu yazı dizisi boyunca Java’da
programlamanın nasıl yapıldığını anlatmaya çalışacağım. Öncelikle Java’daki
programlama mantığından, yani Java’nın programlamaya bakışından, başlayacağız.
Ardından 2. dersle birlikte yavaş yavaş teoriden pratiğe geçmeye başlayacağız.
Bir programlama dilinde bize her zaman lazım olacak değişken tanımlarından
döngülere, fonksiyonların yazımından kullanımına kadar basit ama gerekli
detaylara değineceğiz. (Basit uygulamalar yazmayı ve sitede yayınlanmasını
sağlamayı düşünüyorum.) İlerleyen derslerde görsel uygulamalarla da uğraşacağız.
Şimdi ilk dersimize başlayalım…

 

Her şeyden önce kısaca “sınıf
(class) ” kavramından, kodların neden farklı dosyalar içinde yer alması
gerektiğinden bahsetmek istiyorum. Çoğumuz programlama hayatımıza öncelikle
programlamanın nasıl yapıldığını öğrenerek başladık. Ekrana hangi komutla bir
şeyler yazılır, ekrandan nasıl değer okunur gibi… Sonra zamanla fonksiyonlar
girdi işin içine. Alışması zor oldu ama onu da atlattık. Ama sınıf kavramı
diğerlerinden daha kafa karıştırıcı bir kavram olarak çıktı karşımıza. Niye
fonksiyonların bir dosyada, programın çalıştırıldığı “main” fonksiyonun başka
bir dosyada kullanıldığını anlayamadık. Şahsen ben pek bir anlam veremedim ilk
başta J

 

Java nesne tabanlı bir
programlama dilidir. Nesne kavramının temeli de sınıf kavramından gelmektedir.
Bir sınıfın nesnesi yaratılır, ardından yapılmak istenen işlemler nesne
üzerinden gerçekleştirilir. Dolayısıyla nesne kavramını
öğrenmek istiyorsak öncelikle sınıfın ne olduğunu iyice özümsemeli, ondan sonra
derinlere inmeliyiz.
Sınıf denilen yapı sonuç olarak kodlardan oluşan bir
dosyadır. (İlerde kod örnekleri vermeye çalışacağım) Örnek üstünden ilerleyelim.
Mesela “araba” sınıfımız olduğunu düşünelim. Bir araba basitçe nasıl
tanımlanabilir? “Markası, maksimum hızı, kapı sayısı (2 ya da 4)” gibi
özellikleri olduğunu düşünelim kısaca. Oluşturduğumuz dosya içerisinde bu
bilgileri tutacağız. Bu bilgiler tanım olarak “araba sınıfımızın alt alanları”
diye geçmektedir. Gene aynı dosya içerisinde çeşitli işlevleri yerine getiren
fonksiyonlar yazabiliriz. Tamam, sınıfımızı teoride de olsa yarattık
J Peki ama bu sınıfı nasıl
kullanacağız? Bu amaçla bir başka dosyada bulunan “main” fonksiyonu içerisinden,
ya da kısaca çalıştırılabilir bir sınıf içerisinden diyelim, bu yazdığımız
sınıfın nesnesini yaratacağız. Böylelikle yarattığımız nesne vasıtasıyla
sınıfımız içerisindeki fonksiyonları kullanabiliriz.

 

Ayrı dosyaların kullanımı
sayesinde nesne yaratabilme imkânımız oldu. Peki, ama sadece bu işe mi yarıyor
ayrı dosyaların olması? Tabii ki bununla sınırlı değil her şey. Ödevlerimiz
küçük programlar üzerinden verildiği için program kodlarının ne kadar uzunlukta
olabileceği hakkında pek bir fikrimiz olmuyor açıkçası başlangıçta. Bir yerde
okumuştum: Visual Studio Dot Net 2005 ‘i yapmak için 25000 programcı
çalışmaktaymış!!! Bu 25000 programcı bir bilgisayarın karşısında oturup aynı işi
yapmıyorlar tabii ki J Gruplar
halinde aynı programın farklı işlevlerini yerine getirmek için kod yazıyorlar.
Sonra bu kodlar birleştiriliyor. İşte sınıf kavramının gerekliliği burada ortaya
çıkıyor. Asla kopyala-yapıştır mantığıyla yürümüyor işler. Birinin yaptığı iş,
diğerinin yaptığı kısmın girdisi oluyor örneğin.

 

Küçük bir program üstünden
konuşalım. Bir programcı belirli sayıda kaydı 3 özelliğiyle birlikte tutabilecek
bir program yazıyor. Size diyor ki “ Programıma ne kadar kayıt tutacağını
söyleyeceksin ve ardından kayıtlarını 3 özelliğiyle birlikte yazacaksın.
Programım sana bu kayıtları dosyaya yazma, dosyadan okuma, sıralama <burası
biraz karışık ama şimdilik yapılabilir diyelim> gibi işlemlere tabii tutmana
izin veriyor yapıda olacak.” Siz de bu programın dosyasını alıyorsunuz; Java’da
başka bir sınıf oluşturup bu sınıfınıza adamın kodunu çağırıyorsunuz ve programa
görsellik ekliyorsunuz. İşin zor ve gerekli bölümünü adam yaptı tamam; ama siz
de onun programının çıktılarını (ürettiği sonuçları) görmek istediğiniz şekilde
dizayn ettiniz. Böylece adam görsellikle uğraşmadan programını satabilmiş oldu.
Burada bir noktaya daha değineyim. Programcı bize kaynak kodunu teslim etmiyor.
Bize verdiği dosya binary, yani biz insanların okuyup anlamasının mümkün
olmadığı bir dosya. Böylece adam yazdığı kodu başkalarıyla paylaşmamış oluyor.
<Bir oyunun bulunduğu klasördeki anlamsız “.dat” veya daha farklı uzantılı
dosyaları düşünün.> Bununla birlikte az önce saydığım işlevleri yapan <kayıtları
dosyaya yazma-dosyadan okuma-sıralama vs.> bir kod hali hazırda bulunduğu ve siz
onu kullanabildiğiniz için gereksiz zamandan kurtulmuş oluyorsunuz. Ne kadar
küçük bir uygulama geliştirirseniz geliştirin kodunuzun başında bulanan “import
java.io.*;” veya “#include <stdio.h>” gibi satırlar zaten yapılmış işlemlerle
uğraşmamanızı sağlıyor ve sizi zamandan kurtarıyor. <ilki Java’da input-output
ikincisi C’deki input-output işlemleri için gerekli>

 

Herkese iyi çalışmalar….

Celal Çağın ELGÜN

Bookmark and Share

Post a Comment

Subscribe without commenting