Yeni başlayanlar için öncelikle yapılması gereken nesne yönelimli programlama hakkında detaylı bir araştırma yapmak. Nesneler nedir ne işe yarar sınıflar nasıl kullanılır bunları anlamak önemli.Java programları tamamen sınıf dediğimiz yapılardan oluşur. Bu sınıf dediğimiz yapılar aslında Nesneye Dayalı Programlama Konseptinde yer alır. Daha önce nesneye dayalı programlama ile uğraşmadıysanız , bu konsepte ait terminolojiye biraz bakmak gerekiyor.
Nesne: Günlük yaşamda karşılaştığımız şeyleri modellemek için kullandığımız şeylere nesne diyoruz. Örneğin bir okul otomasyonu yazıyor olsak , burada öğrenci, ders , öğretim görevlisi birer nesne olacaktır. Burada önemli bir nokta da bu nesnelerin hepsinde mevcut iki şey vardır : durumları ve davranışları. Örneğin öğrenci not durumu ve öğrencinin ders seçmesini örnek verebiliriz. Burada not durumu öğrencinin durumu, ders seçmesi de öğrencinin bir davranışıdır.
Mesaj: Geliştirdiğimiz programlarda elbetteki sadece tek bir nesne olması çok ender bir durumdur. Sistem modellenirken bir çok nesneler de modelde oluşur. Bu nesneler birbirleriyle mesajlarla anlaşılır. Örneğin kayıt otomasyonunda ders seçen öğrenci , sisteme kendine o derse kaydetmesi mesajını verir. Burada sisteme kayıt yapan nesne ile öğrenci nesnesi haberleşmek için mesajları kullanırlar.
Sınıf: Sistemi modelleme aşamasında, daha sonda programımızda nesneleri oluşturmak için öncelikle ilgili sınıfları tanımlamamız gerekir. Yani başka bir deyişle , nesneler mevcut sınıfların birer örneğidir. Biz okul otomasyonunda ogrenci sınıfını tanımladıktan sonra , okulda derse kayıt yaptıran her bir öğrenci ogrenci sınıfında bir nesnedir, daha doğrusu öğrenci sınıfının bir örneğidir.
Kalıtım: Buraya kadar nesnelerin , sınıflar aracılığı ile ifade edildiğini söyledik. Sınıfına bakarak bir nesne hakkında çok şey söyleyebiliriz. Örneğin size bir bisiklet nesnesinden bahsetsem , 2 tekerleği, tutacakları ve pedalların olduğunu söylersiniz. Nesneye Dayalı Sistemler işi bir adım daha öteye götürüyor ve başka sınıfları kullanarak ta sınıf tanımlamamıza olanak sağlıyor. Örneğin dağ bisikleti , yarış bisikleti ve iki kişilik bisiklette bisiklet tipinde nesnelerdir. Dolayısıyla tüm bu bisiklet tipleri aslında bisiklet sınıfının alt sınıflarıdır(subclasses) . Diğer bir ifadeyle bisiklet sınıfı bu sınıfların üst sınıfıdır. Bu ilişki aşağıdaki gösterilmiştir:
Bunlara ek olarak kodlar içerisinde // ile başlayan satırlar yorum satırlarıdır. Bu aynen C++'da olduğu gibidir. Bu satırlar sadece geliştiricilere daha sonra kodu anlamak için yardım amaçlı yazılırlar. Derlenmezler, direkt olarak derleyici bunları es geçer.
Burada da gösterildiği üzere bir kalıtım mevcuttur. Alt sınıflar , üst sınıfın durumları alır (değişkenlerin tanımlandığı şekilde). Tabi burada değişkenlerin üst sınıfta tanımlanma şeklide önemlidir , bu konu üzerinde daha sonra duracağım. Aynı zamanda üst sınıftan bazı methodları da alırlar. Bu metodların bazıları hepsinde vardır örneğin hızArtır, yavasla, vitesDegistir, vs. Tabi burada şuna da değinmek gerekiyor , alt sınıflar sadece üst sınıfın metod ve değişkenleri ile sınırlı değillerdir , kendilerine ait durum ve metodları da olabilir , ya da üst sınıfta bulunan metodları ve değişkenleri kendilerine uyarlayabilirler. Bu durumda metod ve değişkenler üst sınıftaki haliyle değilde , alt sınıftaki yeni haliyle kullanılırlar.
Arayüz: Aslında metod ve sabit tanımlamalar biçiminde bir form için yapılan kontrattır. Diğer bir deyişle , bir sınıf, bir arayüzü yürüttüğünde , o arayüzün içerisinde bulunan tüm metodları yürütmek için söz vermiş olur. Bu bize şunları sağlar:
* Birbiriyle akalı olmayan sınıflar arasında benzerlikleri , bir sınıf ilişkisi oluşturmak zorunda kalmadan yakalamaya yarar.
* Bir ya da daha fazla sınıf tarafından yürütüleceğini bildiğimiz metodları tanımlamaya yarar.
Bir nesnenin sınıfını göstermeden , onun programlama arayüzünü açığa çıkarmaya yarar. Peki bütün bunları tanımladıkta , bunları nasıl koda dönüştürecez , şimdi de bunu biraz inceleyelim.
Örnek olarak yazacağımız kod bir applet örneğidir. Appletler Java platformu desteği olan tarayıcılarda ( Hot Java, Netscape, vs ) çalışan Java programlarıdır. Program çalışmak için 3 adet dosyaya ihtiyaç duymaktadır. Bunlardan birisi appletimizin üzerinde çalışacağı html dosyası , diğerleri de ihtiyaç duyduğumuz 2 adet Java dosyasıdır. Program üzerine tıklandığında ekrana kırmızı bir spot basan applet örneğidir.
şeklinde html tagları arasına gömülmüş halidir. Yazdığımız programların nasıl derleneceğine bir sonraki yazıda gireceğim için burada derlemenin nasıl yapılacağı ve neler gerektiğini atlıyorum. Sadece kodları açıklayacağım.
Burada da görüldüğü üzere ClikMe.java dosyası Spot.java dosyasına ihtiyaç duymaktadır. Dolayısıyla bu dosyaları aynı klasör içine koymaya dikkat edin.
Applet için gereken dosyalar :
public class Spot {
//instance variables
public int size;
public int x, y;
//constructor
public Spot(int intSize) {
size = intSize;
x = -1;
y = -1;
}
}
Burada Spot nesnesi ekrana çıkarılacak olan kırmızı spotu temsil etmektedir. Dolayısıyla spotun ekrandaki koordinatları bu sınıfın üye değişkinleri olarak belirlenmiştir. Aynı zamanda spotun boyutunu temsilen size ( yani çap olarak ) kullanılmıştır. Bu arada sınıf içerisinde bir de kurucu metodu (Constructor) bulunmaktadır. Üyesi olduğu sınıfın adını aldığı için diğer metodlardan ayırt edilir. Farklı parametrelerle değişik tiplerde kurucu tanımlamaları yapılabilir. Bu kurucular o sınıftan oluşturulan nesnelerin otomatik olarak ilklendirilmelerine (initialize) olanak sağlar. Yani çapı 10 olan bir Spot oluşturmak istiyorsanız , bunu kurucuya parametre olarak aktarmanız yeterli olacaktır.
public Spot(int intSize) {
size = intSize;
x = -1;
y = -1;
}
İfadesinde nesne oluşturulurken int bir parametre beklemektedir. Bu parametre aracılığı ile çap belirlenecektir. Bu Spot sınıfı için eğer parametre geçirmezseniz program hata verir. Peki bir sınıftan nasıl nesne oluşturulur ona bakalım şimdi:
Spot mySpot= new Spot (10);
Şeklinde programımızda yazdığımız zaman, adı mySpot ve çapı 10 olan bir Spot nesnesi yaratmış oluruz.
ClickMe appleti, ClickMe sınıfının bir örneğidir. Burada ClickMe sınıfı aşağıdaki gibi tanımlanmıştır:
public class ClickMe extends Applet implements MouseListener
{
...
}
Burada extends anahtar kelimesi ClickMe sınıfımızın , Applet sınıfından türetildiğini göstermektedir, implements anahtar kelimesi ise daha önce anlattığımız gibi MouseListener arayüzünü yürüttünü göstermektedir. Yani diğer bir deyişle , applet üzerinde mouse'a tıkladığımızda bir şeyler olacak demektir. Tabi ki , mouse ile neler yapması gerektiğini applet 'e kodlayacak olan biziz. Bu örnek için appletten mouse 'a tıklandığında ekranda kliklediğimiz yere kırmızı bir spot koymasını istiyoruz.
ClickMe Applet'i için tüm kod aşağıdadır:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class ClickMe extends Applet implements MouseListener {
private Spot spot = null;
private static final int RADIUS = 7;
public void init() {
addMouseListener(this);
//Applet'e bir mouse dinleyici //ekledik.
}
public void paint(Graphics g) {
// draw a black border and a white //background
g.setColor(Color.white);
g.fillRect(0, 0, getSize().width - 1, getSize().height - 1);
g.setColor(Color.black);
g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
// draw the spot
g.setColor(Color.red);
if (spot != null) {
g.fillOval(spot.x - RADIUS,
spot.y - RADIUS,
RADIUS * 2, RADIUS * 2);
}
}
public void mousePressed(MouseEvent event) {
if (spot == null) {
spot = new Spot(RADIUS);
}
spot.x = event.getX();
spot.y = event.getY();
repaint();
}
public void mouseClicked(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
//söz verdik , kullanmasakta yazalım
}
Burada Graphics g değişkeni ( Graphics sınıfında bir nesne ) ekran üzerinde işlemler yapabilmemizi sağlıyor. Arka planın rengini , kenarların rengini vs değiştirmemize olanak sağlıyor.
public void mousePressed(MouseEvent event) {
if (spot == null) {
spot = new Spot(RADIUS);
}
spot.x = event.getX();
spot.y = event.getY();
repaint();
}
Burada mouse 'a tıklandığında , eğer bu ilk tıklama ise applet bir Spot nesnesi oluşturuyor ve ona ilk değerini veriyor. Daha sonra oluşturduğu spot nesnesinin değişkenleri güncelleniyor.
event.getX(); event.getX();
metodları ile de mouse'u tıkladığımız yerin koordinatlarına ulaşıyoruz ve applet oraya kırmızı bir spot koyarak bize cevap veriyor. Ardından repaint(); metodu ile de ekranda yeni Spot gösterilir.
if (spot != null) {
g.fillOval(spot.x - RADIUS,
spot.y - RADIUS,
RADIUS * 2, RADIUS *2);
}
Kodu da eğer mouse'a tıklanmışsa ( Bunu da spot != null ifadesinden kontrol ediyoruz, eğer null olsaydı , başlangıçta tanımlandığı durumu koruduğunu gösterirdi. Bu da bize mouse'a hiç tıklanmadığını bildirecekti) nerde tıklandıysa tam orayı merkez kabul ederek oraya bir Spot'un nasıl koyulduğunu gösteriyor.
Buraya kadar nesneye dayalı programlama terminolojisini ve bir uygulama gördük. Bir dahaki yazımda yazdığımız Java programlarımızı nasıl derleyeceğimizden , hangi ortamların gerektiğinden vs bahsedeceğim.
4 Mayıs 2011 Çarşamba
Java İle Programlama
Etiketler:
java,
java programı,
java programlama,
javaya giriş,
nesne,
programlama,
sınıf
31 Mart 2011 Perşembe
Sağlık Bilgi Paylaşım Sistemi
Bu günlerde yeni bir site dikkatimi çekti diyerek başlamak istiyorum aslında söze çünkü çok beğendiğim bir yapıya sahip olan hastanevitrini.com çok güzel bir içeriğe ve çok güzel bir tasarıma site. Şu ana kadar insanların sağlık konusunda ihtiyaç duyduğu bazı önemli bilgileri paylaşıyorlar. Aslında site benim bana ait olan bir site arkadaşım ile birlikte sürekli içerik giriyoruz. Kendi reklamımı yaptım biraz ama :). Bu arada siteye sağlık konusunda içerik eklemek isteyen olursa huseyinokumuss@gmail.com adresine ileti göndersinler. Ama özgün olacak gerçekten yoksa kopya içerikleri yayınlamıyorum. Hepinizin desteğini bekliyorum...
Saygılar...
Saygılar...
12 Mart 2011 Cumartesi
Sağlık Hakkında
Stres insanı en fazla yıpratan yaşlandıran hastalandıran en kötü alışkanlığımızdır. Gerekli gereksiz bir sürü olay ve durum karşısında strese gireriz. Stres iş hayatının sıkıntıları, trafiğin sıkışması, aile baskısı, fiziksel rahatsızlıklar, ruhsal depresyonlar gibi dış uyaramlara verilen içsel tepkidir. Stresli insanların rahat bir yapıya sahip insanlara göre daha fazla yıprandığı ve erken yaşlandığı kanıtlanmıştır. Stressiz günler dilerim.
26 Şubat 2011 Cumartesi
Düşünmek İçin ‘’Vakit Yok’’ Demeyin!
Düşünmek İçin ‘’Vakit Yok’’ Demeyin! |
Çoğu insanımız gerek iş konumu gerekse aile hayatını öne sürerek düşünmeye vaktinin olmadığını sık sık dile getirmekte ve zaman kısıtlığını bahane ederek tembelliğe
|
19 Şubat 2011 Cumartesi
Java Mobil Programlama(Android Map Application Development)
JAVA'da android için google map apisini kullanarak harita üzerinden işlem yapan bir android aplication nasıl oluşturulur onu anlatacağım. Android application da haritayı göstermek için kendinizi tanıtmanız gerekmektedir. Yani size haritayı çekebileceğiniz unique bir id verilecek ve siz bu id yi kullanarak haritayı çekebileceksiniz.
Öncelikle bilgisayarınızda eclipse ve android sdk kurulu olmalıdır.
Eclipse için link : http://www.mediafire.com/?wqhxezjd52j
Android sdk için link : http://www.mediafire.com/?jdmglg43okd
Eclipsi rar dosyasından çıkartıp çalıştırmak yeterli. Sdknın kurulumunu yapıyoruz.
Daha sonra New android project yaratıyoruz. Bu aşamadan sonra gerekli dosyalar yaratılacaktır. Burada önemli olan google map api için key almak.
Google Maps API Key Almak için;
Öncelikle bilgisayarınızda eclipse ve android sdk kurulu olmalıdır.
Eclipse için link : http://www.mediafire.com/?wqhxezjd52j
Android sdk için link : http://www.mediafire.com/?jdmglg43okd
Eclipsi rar dosyasından çıkartıp çalıştırmak yeterli. Sdknın kurulumunu yapıyoruz.
Daha sonra New android project yaratıyoruz. Bu aşamadan sonra gerekli dosyalar yaratılacaktır. Burada önemli olan google map api için key almak.
Google Maps API Key Almak için;
Google Maps API’lerini programlarımız içerisinde kullanabilmemiz için, yapmamız gereken bazı işlemler vardır.Belglerim altında yer alan android dosyasının içindeki SDK’nin sertifasını görebiriz. debug.keystore ismindeki dosyayı mesela, C:\ ‘nin altında C:\Android‘e taşıyalım. Şimdi, "C:\Program Files\Java\\bin" dosyasının altındaki keytools.exe yi kullanarak, bir tane MD5 fingerprint oluşturmalıyız. Ve bu oluşturduğumuz parmak izini kullanarak Google Maps API’lerini kullanacağız. Aşağıdaki komutu dos ekranında yazalım.
keytool.exe -list -alias androiddebugkey -keystore "C:\android\debug.keystore" -storepass android -keypass android
Resimde de görüldüğü üzere, MD5 Fingerprint’imizi aldık. Şimdi sıra geldi, bu kodu Google amcaya söylemeye. http://code.google.com/intl/tr-TR/android/maps-api-signup.html Adresine gidip, MD5′imizi yazıyoruz. Ve artık Google tarafından üretilen anahtarımızı alıp, programımıza girdikten sonra, haritamız kullanıma hazır hale gelmek üzere…Aşağıda yazana kodu main.xml dosyasına ekliyoruz.<com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="xxxxxxxxxxxxxxxxxxxxxxxxxx"/>
Yukarıdaki kod kendi programımımda kullandığım örnek bir XML uygulaması. android:apiKey=”xxxxxxxxxxxxxxxxxxxxxxxxxx” yazan yere elde ettiğimiz api keyimizi ekleyelim. Ve artık programımızda Google Haritası Kullanabiliriz!
Source kodları linktedir;
http://www.upload.gen.tr/d.php/www/ooijssaj/GoogleMap.rar.html
17 Şubat 2011 Perşembe
Merhaba Dünya
Klasiktir yeni bir deneyime başlarken "merhaba" denir. Java'ya da böyle başlamıştım. Önce Console "Hello World" yazdırarak başladım. Bu blogada böyle bir başlangıç yapmak gerekiyor.
Böyle bir blog oluşturmayı uzun zamandan beri planlıyordum. Java konusunda ve genel itibariyle bilişim dünyasında edindiğim deneyimleri paylaşmak istiyordum. Çalışma arkadaşlarımdan K. Taylan Gerdan arkadaşımında böyle birşey yapmamın faydalı olacağı konusunda teşvikleri sonrası blogu açmaya karar verdim.
Bu bloga Bilişim dünyasın da önem arzeden yeniklikleri ve yazılım konusun da kazandığım deneyimleri yazacağım. Genel olarak Java programlama dilini ve belki zamanımı alan ama başkalarına yardımcı olacağını düşündüğüm yazıları yayınlayağım. Bunun dışında güncel bilinmesi gereken kültür hazinemizde yer alması gereken yazılarda paylaşmaya özen göstereceğim.
Tüm ziyaretçilere hoş geldiniz diyor bol Java'lı günler diliyorum.
Kaydol:
Kayıtlar (Atom)