24_Agustos 2004

download 24_Agustos 2004

of 15

Transcript of 24_Agustos 2004

  • 8/14/2019 24_Agustos 2004

    1/15

  • 8/14/2019 24_Agustos 2004

    2/15

    Web Programcl

    134 CHIP Workshop >>

    StudioWebin daha ilk saylarndan beri ounun sandnn ak-

    sine JavaScript ile Javann iki farkl teknoloji ve dil olduunun,

    benzerliklerinin sadece isimlerinden kaynaklandnn altn

    her frsatta iziyoruz. JavaScript bugn tm web tarayclar tarafn-

    dan desteklenen tek standart istemci tarafl script dili olup web sayfa-

    snn tm elementleriyle iletiflim kurabilen ok nemli bir teknoloji-

    dir. JavaSciptin web tarayc zerindeki hakimiyetine karfllk baz s-

    nrlamalar sz konusudur. Mesela JavaScriptin grafik izdirme des-tei yoktur, kullanc tarafl olmasndan dolay da veritaban uygula-

    malar gibi sunucu-tarafna zgn ifllemleri yapamaz. Alternatifi ol-

    mayan JavaScriptin sahip olduu yetenekleri karflsnda ou tekno-

    loji retici firma rnlerinin JavaScript ile konuflabilmesinin yollarn

    aramfllardr.

    JavaScript ile konuflabilen bir teknoloji bizzat zerinde yer ald

    web sayfasyla ya da web taraycyla konuflabilir hale gelir. Bu da say-

    fann ziyaretisiyle etkileflim ve isteine uygun ierii dinamik olarak

    oluflturma anlamna gelir. Bu adan baklacak olursa JavaScriptin

    web sayfalar zerinde sayfann kullanmas muhtemel tm teknoloji-

    ler iin bir imento vazifesi grd sonucunu karabiliriz. Studi-

    oWebin nceki saylarnda Flashin JavaScript ile iletiflimini konu alan

    bir iki sayya yer vermifltik. JavaScriptin dier web teknolojileriyle ile-

    tiflimini gz nnde bulundurarak flu sonuca varabiliriz: Eer JavaSc-

    ript hem bir applet ile hem de bir Flash animasyonu ile konuflabiliyor-

    sa, bir applet dolayl yoldan Flash animasyonuyla konuflabilir. Bunun

    tersi de geerlidir. Java appletlerin eflitli harici cihazlarla iletiflim ku-

    rabildiini dflnrsek ne derece eflitli imkanlarn olabileceini g-

    znzde canlandrabilirsiniz.

    Javann ve JavaScriptin birbirinden farkl zellikleri olmas, birbi-

    rinden farkl avantajlar ve dezavantajlar bulunduu anlamna gelir.

    Bu ikisini birbiriyle dayanflma ve etkileflim iinde kullanmak birbirle-

    rinin dezavantajlarn bertaraf edecei gibi, web uygulamalar asn-

    dan yeni imkanlar da beraberinde getirir.

    Java ile JavaScript arasndaki bilgi aktarmnn nasl gereklefltirile-

    bileceine rnek olacak bir iki uygulamay ele alalm.

    JavaScriptten Javaya bilgi aktarm

    Java appletlerinize web sayfasndan bilgi aktarmn HTML kodlarn-daki parametrelerin dflnda sayfa alflr durumda iken dinamik ola-

    rak da gereklefltirebilirsiniz. JavaScript sayesinde ziyareti bizzat say-

    fa zerinden Java appletine bilgi aktarlabilir. Bu zellii kullanarak

    eflitli uygulamalar gelifltirmek mmkn. Hayal gcnze kalmfl. Biz

    rneimizde applet ierisinde grnecek bir yazy HTML sayfasnda

    yer alan bir link yardmyla bizzat ziyaretinin belirlemesini isteyece-

    iz.

    Sayfamzda kullanlacak appletin kaynak kodu afladaki gibi ola-

    bilir. Sayfamzda kullanlacak applet bu kodlarn JSDK yazlm paketi

    ile derlenmesi sonucu oluflacak. Bilgisayarnzda JSDK ykl deilse

    CDdeki rnekleri alp aynen kullanabilirsiniz ama appletinizde dei-

    fliklik yapamazsnz.

    Selamla.java

    import java.awt.*;

    import java.applet.Applet;

    public class Selamla extends Applet

    {

    String isim = "";

    public void init() {

    setBackground(Color.orange);

    }

    Font f = new Font("Arial",Font.BOLD,14);

    public void paint(Graphics g)

    {

    g.setFont(f);

    g.drawString("Merhaba " + isim + "!", 10 , 30);

    }

    public void yeniIsim(String ad) {

    isim = ad;

    repaint();

    }

    }

    Appletimizde temelde sadece HTML sayfasndan JavaScript ile te-

    tiklenecek bir metot yer almakta. htiyacmz olan bilgi web sayfasn-

    dan, metotun parantezleri arasnda yeralacak parametre ile gelecek.

  • 8/14/2019 24_Agustos 2004

    3/15

    public void yeniIsim(String ad) {

    isim = ad;

    repaint();

    }

    Elde edilen parametre deeri isim deiflkenine aktarlyor ve repa-

    int() metodu arlyor. Bu da appletin kendini isim deiflkeninin yeni

    deeriyle birlikte yeniden grntlemesi anlamna geliyor.

    Bu sayede

    g.drawString("Merhaba " + isim + "!", 10 , 30);

    ifadesiyle applet zerinde Merhaba Zafer! gibi bir metnin olufl-

    masn salayacak. Gelelim HTML sayfasndan Java metodunun nasl

    arlacana.

    SelamlaJS.html

    JavaScript Java Kombinasyonu

    function isimSor() {

    var isim;

    isim = prompt("Isminizi girin ltfen","isim")

    document.Appletimiz.yeniIsim(isim);

    }



    Buraya tklayn ltfen

    Web sayfamzda bir script, scriptimizde de bir adet fonksiyon var.

    isimSor(). Sayfaya ekli link tkland anda fonksiyonumuz tetikleni-

    yor.

    Buraya tklayn ltfen

    Fonksiyonumuz tetiklendiinde ilk olarak JavaScript promptu sa-

    yesinde kullancdan bir bilgi girilmesini istiyor. Bu bilgiyi form ele-

    manlaryla da sormanz mmkn.

    isim = prompt("Isminizi girin ltfen","isim")

    Web Programcl

    >>>>

  • 8/14/2019 24_Agustos 2004

    4/15

    Web Programcl

    136 CHIP Workshop >>

  • 8/14/2019 24_Agustos 2004

    5/15>>>

  • 8/14/2019 24_Agustos 2004

    6/15

    Appletimizdeki jenerik dizeyiRengeCevir(String c) metodu adn-

    dan da anlafllaca gibi dize cinsinden c deerini karfll olan Color

    yani renk nesnesi haline getiriyor ve arld yere geri gnderiliyor.

    Bu bakmdan metodumuzun ilk satrnda geri dnfl tipi Color olarak

    verili.

    private Color dizeyiRengeCevir(String c) {

    Bu bakmdan mesela dizeyiRengeCevir(Pink) ifadesi color nesne-

    si olarak pembe rengini geri dndrecektir.

    JavaScript tarafndan arlan renkYeniden() metoduna gelince,

    metodun ilk parametresi eer bir deere sahipse

    if (yeniFonRengi.equals("") || yeniFonRengi.equals(null)) {}

    else {fonRengi = dizeyiRengeCevir(yeniFonRengi);}

    satr gelen parametreyi renk cinsinden deere sahip olan fonRen-gi deiflkenine atayacak. Ayn flekilde dier satr

    if (yeniTekstRengi.equals("") || yeniTekstRengi.equals(null)) {} elsep

    {tekstRengi = dizeyiRengeCevir(yeniTekstRengi);}

    ise gelen ikinci parametre deerini tekstRengi deiflkenine ataya-

    cak. Bunlardan sonra arlan repaint() metodundan sonra appletimiz

    grntleyecei ierii gncelleyecek, bu sefer elde ettii renk deer-

    lerini

    g.setColor(fonRengi);

    g.setColor(tekstRengi);

    satrlarnda kullanarak appletimizin fon rengini ve yaz rengini de-

    ifltirecek.

    Java appleti ile flifre kontrol

    StudioWebin daha nceki saylarnda kullanc tarafl JavaScript gibi

    bir script diliyle flifre gibi gvenlik asndan hassas uygulamalar

    yapmann uygun olmayacandan bahsetmifltik. Bunun sebebini de

    JavaScript kodlarnn ziyareti tarafndan alp okunabilmesinin

    mmkn olmas olarak gstermifltik. Java appletleri de kullanc ta-

    rafl bir teknoloji olmalarna karfllk taraycdaki JVM tarafndan yo-

    rumlanan derlenmifl bytecode formunda class dosyalar olmalarn-dan dolay basit flifre gibi uygulamalarda kullanlabilirler. fiifre ile

    saklanacak bilginizi bizzat appletin iine yerlefltirip iinde gstere-

    bileceiniz gibi, bir web sayfasna koyup appletlerden sadece flifre

    geerliliini kontrol etmede faydalanabilirsiniz. Bu seferki JavaSc-

    ript-Java kombinasyonu rneimiz ziyaretiye flifre soracak, elde et-

    tii flifre geerliyse uygun sayfa ieriine ynlendirecek. Ziyareti

    web sayfasnn kodlarna baksa bile flifrenin ya da gidilecek sayfann

    ne olduunu bulamayacak.

    Sifre.html

    JavaScript Java Kombinasyonu

    function kontrolEt() {

    if (document.Formumuz.Sifremiz.value != "") {

    var girilenDeger = document.Formumuz.Sifremiz.p

    value ;

    document.Appletimiz.sifreKontrol(girilenDeger)

    }

    else {

    alert("Bir deger girmediniz ki!");

    }

    }


    Scriptimiz olduka basit bir fonksiyondan olufluyor. Fonksiyon ise,

    ziyareti, flifre alanna girifl bilgisini yazp butona tkladnda devreye

    giriyor. ncelikle flifre alanna bir deer girilip girilmediini kontrol

    ediyoruz. Eer bir deer girilmediyse scriptimiz bunu bir mesaj

    kutusuyla ziyaretiye iletecektir.

    if (document.Formumuz.Sifremiz.value != "") {

    . . .

    }

    else {

    alert("Bir deer girmediniz ki!");}

    Web Programcl

  • 8/14/2019 24_Agustos 2004

    7/15>>>

    Eer bir deer girildiyse bu nce bir deiflkene kaydediliyor.

    var girilenDeger = document.Formumuz.Sifremiz.value ;

    Sonra bu deer dorudan appletimize gnderiliyor. Bundan son-

    ras ise tamamen appletimizin kontrolnde

    Sifre.java

    import java.awt.*;

    import java.applet.Applet;

    import java.net.*;

    public class Sifre extends Applet {

    String mesaj = "Ltfen sifrenizi giriniz..";

    public void init() {

    setBackground(Color.white);}

    public void paint(Graphics g)

    {

    Font f = new Font("Arial",Font.BOLD,14);

    g.setFont(f);

    g.setColor(Color.red);

    g.drawString("" + mesaj, 10 , 23);

    }

    public void sifreKontrol(String sifre) {

    if (sifre.equals("jsp")){

    git("http://www.pusula.com/jsp");

    }

    else if (sifre.equals("dhtml")){

    git("http://www.pusula.com/dhtml");

    }

    else

    {

    mesaj="Geersiz sifre! Tekrar deneyiniz..";

    }

    repaint();

    }

    public void git(String adres)

    {

    try

    {

    URL linkAdresi = new URL(adres);

    getAppletContext().showDocument(linkAdresi, p

    "_top");

    }

    catch (MalformedURLException e)

    {

    System.err.println("Geersiz URL:" + adres);

    }}

    }

    Appletimiz gidilecek web sayfasn girilen flifre deerine gre

    belirleyen ifllevsellie sahip. Appletimize bu ifllevsellii katan sif-

    reKontrol() metodu.

    public void sifreKontrol(String sifre) {

    if (sifre.equals("jsp")){

    git("http://www.pusula.com/jsp");

    }

    else if (sifre.equals("dhtml")){

    git("http://www.pusula.com/dhtml");

    }

    else

    {

    mesaj="Geersiz sifre! Tekrar deneyiniz..";

    }

    repaint();

    }

    Grld zere kontrol gereklefltiren metodumuz ok ok ba-

    sit. Gayet sade bir if else kurgusuyla flifremiz jsp ise applet web say-

    fasn http://www.pusula.com/jsp adresine, dhtml ise

    http://www.pusula.com/dhtml adresine ynlendiriyor. Bu iki flifre

    dflnda bir deer geersiz olup bu durumda applet ziyaretiye uygun

    bir mesaj grntlyor.

    Numan Pekgz

    [email protected]

    fiifre olarak jsp yazldnda appletimiz karfllk gelen sayfaya

    ynlendiriyor.

  • 8/14/2019 24_Agustos 2004

    8/15

    Uzun bir aradan sonra tekrar merha-

    ba. Bugne kadarki derslerimizde

    artk nesne ynelimli programlamatekniinin merkezinin oluflturan snflarn

    ne anlama geldiklerini ve nasl tasarlandk-

    larn renmifltik. Eer gemifl olan dersle-

    rimizde eksikleriniz olduunu dflnyor-

    sanz ya da ilk defa bu ders ile Java prog-

    ramlama diline girifl yapyorsanz, size tav-

    siyem hemen nceki dersleri eksiksiz olarak

    alflmanz olacaktr. nceki saylarda yer

    alan derslere sahip olmayan arkadafllar da

    CHIP dergisinin 100. saysn alarak tm

    dersleri de ellerinde bulundurma flansna

    sahip olabilirler.

    Bu yazda, tasarmn ayrntl olarak -

    rendiimiz snflarn kullanmna iliflkin ba-

    z rnekler zerinde duracaz. Ayrca Ja-

    va'da ntanml olarak bulunan ve kendi

    zeli ifllerimiz iin kullanabileceimiz snf-

    larn bazlarn da grmfl olacaz. Size

    tavsiyem burada anlatlan ekleri mutlaka

    kendi baflnza da yazp denemenizdir. Ayr-

    ca verilen rneklere iliflkin hazr kodlar da

    http://cs.bilgi.edu.tr/~erman/index.html

    adresine gittiinizde buradaki Eitimler

    balantsna tklayarak elde edebilirsiniz.

    fiimdi kollar svayalm ve Java renmeyedevam edelim.

    Son Derste VerilenUygulamann Cevab:Her fleyden nce son derste verdiimiz de-

    vin zm ile ifle bafllayalm. Hatrlarsanz

    uygulama sorumuz; ierisinde tarih tutan ve

    tarihle ilgili ifllemleri yapabilecek metotlarbarndran bir snf tasarlamakt. Bu snfa

    iliflkin zm ve ayrntl aklamasn yine

    yukarda verdiim adreste bulabilirsiniz.

    Snflarn Kendi KendileriniKullanmalar:Bundan nceki rneklerimizde bir snfn

    yazldktan sonra, baflka bir snf ierisinde

    ya da rneklerde yaptmz gibi main me-

    todu ierisinde kullanlabildiini grmfl-

    tk. Baz snflar otomatik olarak alfltrla-

    bilmek amacyla da yazlabilirler. Bir snfn

    otomatik olarak alflabilmesi iin ierisinde

    main metodu olmas gerektiini zaten bili-

    yoruz. flte bu flekilde main metodu ieri-

    sinde bir snf, kendisi trnden nesne ya-

    ratp bunu kullanabilir. flin z aslnda flu-

    dur: Bir snf yazldktan sonra, bu snf t-

    rnden nesneleri istediimiz her metod ya

    da her snf ierisinde artk yaratp kullana-

    biliriz. Bu genel kural bilirsek, zaten snf

    nesnelerinin ne zaman ve nerede yaratla-

    cana dair bir problemimiz de kalmaz.

    Arka sayfadaki rneimizde, matema-

    tikte kullanlan karmaflk saylara iliflkin de-er ve metotlar barndran bir snf yazaca-

    z. Bu snf ayn zamanda main metodu

    ierecek ve kendisi trnden nesneler yara-

    tarak bu nesneler zerinde ifllemler yapa-

    cak:

    fiimdi bu rneimizi biraz inceleyelim.

    Snfmzn iki adet bafllang metodu oldu-

    unu grmekteyiz. Bu metotlardan bir ta-nesi, 6. satrda tanmlanmakta ve hibir pa-

    rametre almadan yaratlan KarmasikSayi

    nesnesinin gercel ve imajinel isimli de-

    iflkenlerini 0.0 deerine eflitlemektedir. Di-

    er bafllang metodu ise 11. satrda tanm-

    lanmaktadr ve nesne yaratlrken kendisi-

    ne verilen parametreleri kullanarak ger-

    cel ve imajinel deiflkenlerinin deerleri-

    ni atamaktadr.

    NOT: Snfn kendisine ait olan deiflken

    ve metotlarn snf ierisinde kullanrken,

    bu deiflken ve metotlarn baflna this. ek-

    lemifl olduuma dikkat ediniz. Daha nce

    de sylediim gibi this anahtar szc s-

    nfn kendisini temsil eder. rnein 12. sa-

    trda this.gercel ifadesi, o anda ierisin-

    de bulunduumuz snfa ait olan gercel

    isimli deiflkeni temsil etmektedir.

    16. satrda tanmlanan topla isimli

    metod parametre olarak baflka bir Karma-

    sikSayi nesnesi alarak, bu saynn gercel

    ve imajinel deiflkenleri ile snfn kendi

    gercel ve imajinel deerleri toplamn

    elde eder ve bu deerlerle, sonuc adnda

    yeni bir KarmasikSayi nesnesi yaratarakbu deiflkeni 19. satrda geri dndrr. Bu-

    na benzer flekilde 22. satrda yazlmfl olan

    cikart metodu da ayn ifllemi kartma

    iin yapar. Ancak bu metot biraz daha ilgin

    bir yntemle deer dndrmektedir. Bu se-

    JAVA ile ProgramlamaBu ayki Java yazmzda nesne ynelimli programcln temel tafllarndan olan snflar konusunu

    etraflca ele alacak ve rneklerle inceleyeceiz.

    35 CHIP Workshop >>

  • 8/14/2019 24_Agustos 2004

    9/15

    arlmamfltr. Ancak ilgintir ki, 47. satr-

    daki sayi1 isimli snf deiflkeni ekrana

    yazlmak istendii zaman sanki bu metod

    arlmaktadr. nk ekranda toString

    metodunun dndrd String ifadesi ya-

    zlmaktadr. Aslnda gerekten de 47. satr-

    da sayi1 deiflkeninin ekrana basld nok-

    tada otomatik olarak bu metot arlr.

    Yazlan tm snflara aslnda toStringmetodu da eklenebilir. Eer String toSt-

    ring() prototipini bozmadan snfnz ieri-

    sinde bir toString metodu yazarsanz, bu s-

    nfa iliflkin bir snf deiflkenini ekrana bas-

    mak istediinizde bu metot otomatik ola-

    fer sonucu tutacak ayr bir deiflken yarat-

    mak yerine, 23. satrda olduu gibi return

    anahtar szcnn nnde yeni bir Kar-

    masikSayi nesnesi yaratlarak hemen o an-

    da dndrlr. Bu yntemde arada sonuc

    gibi baflka bir deiflken ierisinde Karma-

    sikSayi nesnesi yaratma ihtiyac ortadan

    kalkmaktadr.

    Yazdmz SnflarntoString metodu:Dikkat ederseniz 35. satrda toString

    adnda ilgin bir metod yer almaktadr. Bu

    metod aslnda main metodu ierisinde hi

    rak arlmaktadr. Ancak metodun iini is-

    tediiniz gibi yazabilirsiniz. Eer yazdnz

    snf ierisinde bu metodu eklemez ve bu s-

    nf trnden bir deiflkeni ekrana basmak

    isterseniz, o zaman Java otomatik olarak

    bir toString metodunu kendisi yazacak ve

    buna iliflkin bir String deeri de dndre-

    cektir. Ancak bu deer olduka anlafllmaz

    bilgiler iermektedir. zetle snfnz nasl

    ifade etmek istiyorsanz, buna iliflkin String

    toString() prototipli bir metod yazabilirsi-

    niz.

    ntanml Java Snflarnn Kullanm:Dersimizin bundan sonraki ksmnda yeni

    bir konuya gemeden nce, Java'da nta-

    nml baz snflara iliflkin rnekler yapmak-ta yarar gryorum. Greceimiz bu snf-

    lar, yazacamz programlarda birok yk

    zerimizden almakta ve bize baz yararl

    hazr metotlar sunmaktadr. Bu nedenle ifli-

    mizi grecek ve daha nceden yazlmfl bu

    hazr snf ve metotlar kullanarak zaman

    kayb ve zahmetten kurtulabiliriz.

    Bir konuda sizleri uyarmak isterim: Bu-

    rada bu ntanml Java snflarnn tm me-

    totlarn detayl bir flekilde gstermek yeri-

    ne, bu snflar hakknda bilgi sahibi olman-

    z ve sadece birka metot kullanmyla snfsizlere tantmay hedefledim. Kendi uygu-

    lamalarnz iin burada genel olarak ren-

    mifl olduunuz bu snflarn size uygun me-

    totlarn ve burada gsterilmeyen baflka

    ntanml snflar Java dokmantasyonu

    ve internette yapacan aramalar ile bula-

    bilirsiniz. Java dokmantasyonunun online

    h a l i n i : h t t p : / / j a v a . s u n . c o m / j 2 s e

    /1.4.2/docs/api/index.html adresinde bu-

    labilirsiniz.

    zetle buradaki rnekleri sizlere sadece

    neyi nerede arayacanz bilmeniz asn-

    dan veriyorum. fiimdi bu snflar inceleme-

    ye bafllayalm.

    Math Snf:Bu snf eflitli matematiksel ifllemleri yapa-

    bileceimiz metotlar sunmaktadr. Bu me-

    totlar ierisinde sin, cos, tan, kuvvet alma,

    kk alma v.b. metotlar bulunmaktadr. Bu

    snf kullanabilmeniz iin uygulamalarn-

    zn baflnda herhangi bir ktphaneyi im-

    port etmenize gerek yoktur. Aflada Math

    snfnn baz metotlarnn kullanmna ilifl-

    kin bir rnek verilmektedir. Bu rnek, dahance yapmfl olduumuz karmaflk say sn-

    fnn biraz daha gelifltirilmifl hali ve Math

    snfnn fonksiyonlarnn kullanld bir r-

    nektir. Ayrca bu snfa aciHesapla adnda

    yeni bir metot daha eklenmifl ve snfn ie-

    Java Serisi

    >>>>

  • 8/14/2019 24_Agustos 2004

    10/15

    Java Serisi

    37 CHIP Workshop >>

    risinde saklanan karmaflk saynn a de-

    erleri bu metot yardmyla hesaplanmfltr.

    fiimdi rneimizi daha detayl inceleye-

    lim. Her fleyden nce genel bir noktay vur-

    gulamak istiyorum. Dikkat ederseniz Kar-

    masikSayi2 snfnn 23, 24, 27 satrlarn-

    da, gercel ve imajinel deerlerini

    this.gercel diyerek dorudan almak yeri-

    ne bu deerleri 13 ve 16. satrlarda yazlmfl

    olan gerceliVer ve imajineliVer metot-

    lar yardmyla alyoruz. Bunun nedeni sn-

    fn veri elemanlarn korumak ve bylece s-

    nf hiyerarflisini dzgn bir flekilde kurmak

    iindir. Bu teknik bizlere olduka nemli ve

    salam bir mekanizma sunar. Zaten dikkat

    ederseniz gercel ve imajinel isimli veri

    elemanlar da dflardan dorudan erifliminengellenmesi amac ile 7. satrda private

    olarak tanmlanmfltr. Veri elemanlarna

    eriflimin bu flekilde kontroll olarak yapl-

    mas gerekir. Eer bu elemanlara eriflilmek

    gerekiyorsa, bu ifli dorudan deil de set ve

    get metotlar gibi metotlar yardmyla yap-

    mak gerekir. Kullancya sadece bu metot-

    lar sunulmal, snfn veri elemanlarna eri-

    flim ise metodlar ierisinde ve gerektii gibi

    yaplmaldr.

    23. satrda kullanlan Math.pow isimli

    metot 1. parametre ile ald saynn, 2. pa-rametre ile ald say kadar kuvvetini he-

    saplar ve sonucu geri dndrr. Bu metodu

    gercel ve imajinel ksmlarn karelerini

    hesaplamak iin kullandk. Bu karelerin

    toplamnn da karekkn, tahmin ettii-

    niz gibi Math.sqrt metodu ile elde ettik. Ya-

    ni zetle; Math.pow deerleri ile elde edi-

    len gercel ve imajinel ksmlarn karele-

    rinin toplamn, Math.sqrt metoduna para-

    metre olarak dorudan gndererek sonucu

    da dorudan geri dndrdk. Sizler de bol

    bol program yazdka bu tip hzl yazm tek-

    niklerinizi gelifltireceinizden emin olabilir-

    siniz. Ancak pratik olmas amacyla ksa

    kodlar yazarken bile kodunuzun okunabilir

    olmasna dikkat ediniz.

    rneimizin 27. satrnda kullandmz

    Math.atan2 isimli metod kendisine para-

    metre olarak verilen y ve x gibi iki say-

    nn polar koordinatlarda sahip olduu a

    deerini hesaplayan bir metottur. Yani as-

    lnda yapt ifllem y/x deerinin arktanjant

    deerini hesaplamaktr. Fakat geri dnen

    bu deer radyan cinsindendir. Bu nedenle,

    radyan olarak elde edilen a deeri 29. sa-trda yazlan aciyiDereceVer metodu ile

    derece olarak da elde edilebilir.

    Hzl bir flekilde listelemek gerekirse

    Math snfnn baz dier metotlar flunlar-

    dr:

    int Math.abs(int a) a saysnn mutlak dee-

    rini geri dndrr. Ayn metodun float, do-

    uble ve long trler iin de versiyonlar var-dr.

    double Math.acos(double a) a saysnn ters

    kosins deerini dndrr. Benzer flekilde

    asin ve atan metotlar da vardr.

    double Math.cos(double a) a saysnn cosi-

    nz deerini geri dndrr. Benzer flekilde

    sin metodu da vardr.

    double Math.exp(double a) a saysnn e sa-ysn kuvveti olarak hesaplar ve bu deeri

    dndrr.

    int Math.max(int a, int b) a ve b saylarn-

    dan byk olann deerini geri dndrr.

    Benzer flekilde bu metodun double, int, flo-

  • 8/14/2019 24_Agustos 2004

    11/15

    Java Serisi

    >>>>

  • 8/14/2019 24_Agustos 2004

    12/15

    Java Serisi

    39 CHIP Workshop >>

    elemann geri dndrr. rnek kullanm:

    String str = dinamikDizi.get(0);

    int indexOf(Object o) o ile temsil edilen

    nesnenin dizi ierisindeki indeks nuaarasn

    geri dndrr. Eer eleman dizide yoksa -1

    geri dndrr.

    Afladaki KayitListesi.java uygulama-

    mzda hem byle bir dinamik dizi kullan-

    mn, hem de bugne kadar rendikleri-

    mizle geree olduka yakn bir Java uygu-

    lamasnn yazmn grmekteyiz. Bu uygu-

    lama alfltnda, ekrana resimdeki gibi bir

    men sunulmakta ve kullancnn yapt

    seimlerle kayt ekleme, silme, kaytlar lis-

    teleme gibi ifllemler yapldktan sonra tek-

    rar ayn men ekrana gelmektedir. Kullan-

    cya istedii zaman programdan kabilece-i bir seenek de sunulmaktadr.

    Uygulamamzn daha detayl incelemesini

    http://cs.bilgi.edu.tr/~erman/index.html

    adresinde yer alan Eitimler blmnde

    bulabilirsiniz.

    Uygulama Sorusu:Pratik yapmak asndan, ArrayList snf gi-

    bi elemanCikart, elemanEkle, elemanBul,

    metodlar olan ve ierisinde bir String dizisi

    tutan genel amal StringDizi isimli bir s-

    nf yaznz. Bylece ArrayList snfnn dina-

    mik alflma mekanizmasnn getirdii ko-

    layl daha iyi kavrayacanz tahmin edi-

    yorum. Bu metodlarn parametre yaplar

    ve geri dnfl deerlerini de siz belirleyiniz.

    Uygulamann cevabn her zaman olduu

    gibi bir sonraki dersimizde bulabilirsiniz.

    KayitListesi.java UygulamasndakiNesne Ynelimli Programclk zleriUygulamamz ierisinde , her seime iliflkin

    bir metot uygun ifli stlenmektedir. Ayrca

    tm alt grevleriyle ve deiflkenleriyle bir-

    likte bu uygulama tek bir snf altnda ve

    tek bir ama iin oluflturulmufltur. Prog-

    ramlarnzda bu flekilde ifl blm yapma

    ifllemi nesne ynelimli programcln bafll-

    ca prensiplerinden birisidir.Yazmfl olduumuz bu uygulama tek bir

    snf nesnesi olarak tasarlanmfl ve 106. sa-

    trdaki main metodu ierisinde de bir deifl-

    ken araclyla alfltrlmfltr. Ayrca dikkat

    ederseniz uygulamamzn baz metotlar

    private olarak tasarlanmfltr. Bunun ne-

    deni; bu metotlarn i mekanizma iflleyifli

    iin kullanlyor olmasdr. Yani 109. satrda

    olduu gibi kullanc, bu snfn uygulama-

    Baslat metodunu arabilmeli ancak di-

    er metotlarn aramamaldr. Bu me-

    totlarn hangi srada ve ne zaman arla-

    ca program ierisinde snfn kendisi tara-

    fndan ve uygun bir hiyerarfli ile belirlen-

    mektedir. Bu nedenle, bir deiflken zerin-

    den eriflilmemesi istenen metodlar private

    olarak tasarlanmfltr. Bylece bu metotla-

    ra, sadece snfn dier metotlarnn erifle-

    bilmesine izin verilmektedir. Kullancnn

    hizmetine ise sadece public metodlar su-

    nulmaktadr.

    StringBuffer Snf:Daha nceki derslerimizde rendiimiz

    zere String snf baz yararl metotlara sa-

    hiptir. Hatta bu metotlardan equals ve

    matches isimli olanlarn da, KayitListe-

    si.java uygulamamzda 19.satrda ve to-

    UpperCase isimli olan da 37. satrda kul-lanmaktayz.

    Bu metotlar sayesinde eflitli kolaylklar

    olan String trnde deiflkenlerin ierikleri

    sabit uzunluktadr. Bu nedenle ierii de di-

    namik olarak deifltirilebilen bir snf tr-

    ne ihtiya duyulmaktadr. Bu amala

    StringBuffer isimli snf kullanlabilir.

    StringBuffer snf kullanlmadan nce

    bu snf trnden bir nesne yaratlmaldr:

    StringBuffer strbuffer = new StringBuffer();

    Bu flekilde, ierisinde hi karakter tut-

    mayan ve 16 karakter kapasiteli bir String-

    Buffer nesnesi yaratlabilir. Bu snfn baflka

    bafllang metotlar da vardr. Mesela 20

    karakter kapasiteli bir nesne yaratmak iin:

    StringBuffer strBuf = new StringBuffer(20);

    Ya da hazr bir String deiflkenini String-

    Buffer halinde yaratmak iin:

    StringBuffer str = new StringBuffer(Merhaba);

    yazmak gerekir. Bu snf ierisinde tutu-

    lan String deerinin String olarak kullanla-

    bilmesi iin, snfa ait olan toString metodu

    kullanlabilir. Mesela az nce Merhaba

    String deeri ile yaratmfl olduumuz str

    isimli StringBuffer nesnesinin String deeri:

    String a = str.toString();

    fleklinde elde edilebilir.

    Bu snfn sahip olduu baz metodlarflunlardr:

    StringBuffer append(String) StringBuffer

    nesnesi ierisinde tutulan String sonuna

    parametre ile verilen String deerini ekler

    ve bu yeni hali StringBuffer nesnesi olarak

  • 8/14/2019 24_Agustos 2004

    13/15

    Java Serisi

    >>>>

  • 8/14/2019 24_Agustos 2004

    14/15

    Herkes iin PhotoshopPhotoshopun farkl alanlardaki kullanm flekillerini daha iyi anlayabilmek iin bu sayfalarda yer alan

    Photoshop derslerinde her ay; fotoraf dzenleme, izim ve efektler fleklinde 3 ayr blm altnda

    eflitli rnekler yer alacak.

    35 CHIP Workshop >>

  • 8/14/2019 24_Agustos 2004

    15/15

    Photoshop Serisi

    >>>>

    nce arka plan beyaz 300x300 piksel boyutunda

    bir dosya yaratn. [M] tuflu ile eliptik seim aracn

    sein ve oval bir seim oluflturun. Ardndan poli-

    gon seim aracna gein ve bir nceki seime ekleme yap-

    mak iin [Shift] tufluna basl tutarak konuflma balonu-

    nun hemen alt ksmna yakn bir yere flekildekine benzer

    bir gen daha izin. fiimdi seim hala geerli iken

    [Shift]+[F5] tufllar yardmyla bu seimin iini siyah renk

    ile doldurun.

    Bu flekilde konuflma balonunun tam flekli karflnza

    kacaktr. Eer sonutan memnunsanz artk iini

    tekrar beyaz renk ile doldurup alflmaya devam

    edebilirsiniz. Bu noktadan sonra ilk olarak Layer / LayerStyle / Stroke seeneini 1 numaral resimdeki gibi uygu-

    layn. Bunun hemen ardndan Bevel ve Emboss, Drop

    Shadowve Gradient Overlayseeneklerini de srasyla 2.,

    3. ve 4. resimdeki ayarlar rnek alarak uyguladnzda

    sonu ortaya kacaktr.

    Konuflma balonu yaratmak

    Bu ay mini mini dnyalar yaratabileceiniz piksel

    sanat tekniine ilk adm atacaz. nce ilk temel

    rneimiz iin 100x100 boyutunda beyaz arka

    planl bir dosya oluflturarak bafllayalm. Kalem aracn

    setikten sonra izim boyutunu da 1 piksel olarak ayarla-

    yalm. Burada unutmamanz gereken ilk kural her zaman

    yukar 1 kenara doru 2 piksel izmek olmaldr. fiimdi

    oluflturacamz bloun dfl izgilerini izelim. Yardmc

    olmas iin [Ctrl]+['] ile gridi aabilirsiniz.

    Artk bloumuzu glgelendirmenin zaman geldi.

    3 boyutlu grnm iin st blm en ak renk

    ile (#A28D69) boyayalm. Alt sol blm biraz daha

    koyu (#917F5D) ve alt sa blm ise en koyu renk-te olmal (#78684B). Burada boyamay fill arac yerine ka-

    lem ile yapmaya da zen gstermeniz gerekecektir. Son

    olarak size yakn kalan kenarlarn zerinden daha ak bir

    renk ile geerek (#CFC0A6) daha gereki bir 3 boyutlu

    grnm elde edebilirsiniz.

    Bloun tulalardan olufltuu izlenimi yaratmak

    iin ise sol blme (#5C503A) rengi ile yukardan

    afla 3 piksel aralk brakarak paralel izgiler ize-

    rek bafllayabiliriz. Dikine izgileri daha rahat izmek iin

    zum katsaysn %600'e getirebilirsiniz. Aralk olarak 5

    piksel yeterli gelecektir. 3 boyutlu bir grnm yaratmakiin flekildeki gibi bu izgilerin sol ve st taraflarna

    (#B3A17F) rengini kullanarak ek paralel izgiler izmeniz

    ifle yarayacaktr. Ayn ifllemi sa blme de uygulayn ve

    iflte ilk bloumuz hazr.

    Piksel sanatna girifl