21_Mayis 2004

download 21_Mayis 2004

of 13

Transcript of 21_Mayis 2004

  • 8/14/2019 21_Mayis 2004

    1/13

  • 8/14/2019 21_Mayis 2004

    2/13

    Web Programcl

    116 CHIP Workshop >>

    Veritabanndan faydalanacak web uygulamalarnz iin see-

    bileceiniz farkl veritaban programlar olsa da en genifl

    kullanml profesyonel programn MySQL olduu aflikar.

    zellikle Windows sunucularnda kullanm basit olduu iin ama-

    tr programclar tarafndan tercih edilen MS Access temelde bir ma-sast veritaban program olup ayn anda ifllem yapma konusunda

    ciddi skntlar bulunmakta. Bu bakmdan ticari ve profesyonel web

    sitelerinizde MS Access yerine daha iyi performansa sahip daha g-

    venilir bir veritaban programna ihtiyacnz olacaktr. Sahip olduu

    performansa gre dflk lisans creti ve ak-kaynak olmas

    MySQLi bu alanda oktan bir web standart yapt bile.

    Websitemde MySQL kullanmak iin ne yapmalym?Web sitenizde MySQL veritabanndan faydalanmak iin hosting hiz-

    meti veren sunucuya MySQLin ykl olmas gerekir. Mesela bir hos-

    ting hizmetinden faydalanmay dflnyorsanz alacanz pakette

    MySQL yer almaldr.Eer web aplikasyonlarnz kendi makinenizde yazp test etmek

    istiyorsanz bu durumda kendi makinenize de MySQLi yklemeniz

    gerekir.

    MySQLi makineme nasl yklerim?MySQLin kurulumu ve ynetimi, yazlmn versiyonuna ve alflt-

    nz iflletim sistemine gre deifliklik gsterebilir. MySQLin kullan-

    m biraz kompleks olsa da performans iin buna deecektir. Burada

    3.23 srmnn Windowsa kurulumunu rnek olarak vereceiz.

    Dileyenler www.mysql.com/downloads/index.html adresinden

  • 8/14/2019 21_Mayis 2004

    3/13

    MySQLin sistemlerine uygun di-

    ledikleri bir srmn indirebilir-

    ler.

    3MySQLin ZIPli kurulum dosya-

    sn bir ZUP programyla an ve

    ieriini bilgisayarnzda herhan-

    gi geici bir klasre yerlefltirin.

    3 Bu klasrde oluflan Setup.exe

    dosyasn alfltrn. MySQLi kur-

    mak istediiniz klasr sein

    (Mesela C:\mysql dizinine).

    3 Kurulum sihirbaz tercihleriniz dorultusunda MySQLi bilgisaya-

    rnza kuracaktr.

    3 C:\mysql\bin klasr iindeki winmysqladmin.exe dosyasn a-

    lfltrdnzda MySQLin grafiksel arayzl yneticisi alacaktr.

    MySQL yneticisi (WinMySQLadmin) bir kereye mahsus olmak ze-

    re kullanc ad ve flifre girmenizi isteyecek. Bundan sonra MySQL su-

    nucunuz hem alflacak hem de sisteminize servis olarak eklenecek

    ve ekrannzn sa alt kflesine trafik lambas simgesi gelecek.

    3 Bu simgenin zerine sa tklanp Show me seildiinde WinMySQ-

    Ladmin penceresi grnecektir.

    3 Sa alt kfledeki trafik lambas yeflil yand srece sisteminizdeki

    MySQL veritaban sunucusu hizmette demektir. Eer deilse simge-

    nin zerine sa tklayn, Win NTzerine gelin ve Start Servicei sein.

    Artk MySQLi sisteminize kurmufl oldunuz demektir. Bundansonra MySQL ile baz denemeler yapmaya bafllayabiliriz.

    MySQLadmini veya MySQL-Front ya da phpMyAdmin gibi harici

    yazlmlar kullanarak veritabannzda temel ifllemleri gereklefltire-

    bilirsiniz. Biz bu ay ncelikle direkt olarak komut konsolu yardmyla

    veritaban oluflturmay greceiz. Komut satryla mesela (katalog

    isimli) yeni bir veritaban ve bu veritaban iinde (urunler isimli) ye-

    ni bir tablo oluflturmak iin afladaki kodlar kullanabiliriz. Tablo

    iinde tamsay cimsinden urunNo adyla ve metin cinsinden urun-Tanim adyla birer alan (stun) oluflturacaz.

    C:\>cd mysql\bin

    C:\mysql\bin>mysqladmin create katalog

    C:\mysql\bin>mysql

    fiu an MySQL promptu iindeyiz. Artk MySQL sunucumuza di-

    rekt komutlar gnderebiliriz.

    mysql> show databases;

    Sistemdeki veritabanlarn gster. Bunlardan mysql isimli olan

    kurulum aflamasnda oluflan programmzn kendi veritaban olup

    bu ismi kendi oluflturacamz veritabanlarnda kullanamayz.

    mysql>use katalog

    Sistemdeki veritabanlarndan katalog isimli olann kullan.

    mysql>create table urunler(urunNo int, urunTanim text);Query OK, 0 rows affected (0.12 sec)

    Katalog iine urunler isimli bir tablo olufltur. Tablomuzun iki ala-

    n olsun: tamsay veri cinsinden urunNo ve tekst veri cinsinden

    urunTanim.

    Web Programcl

    >>>>

  • 8/14/2019 21_Mayis 2004

    4/13

    Web Programcl

    118 CHIP Workshop >>

    create database katalog2;

    Dilerseniz show tables ile var olan tablolar grebilir, explain urunler ile

    tablonuzun ayrntlarn grntleyebilirsiniz

    exit ile MySQL promptuntdan kabilirsiniz

  • 8/14/2019 21_Mayis 2004

    5/13 mysql katalog2 < katalog.sql

    Dilerseniz yeni veritabanmz katalog2nin ilk veritabanmz ka-

    talogun ayns olduunu inceleyebilirsiniz. Bir aplikasyonun en

    nemli parasnn sahip olduu bilgi olduunu dflnrsek, sanrm

    veritaban yedekleme ve yedeklenmifl dosyadan yeni veritaban

    oluflturmann ne derece hayati nem tafldn tahmin edersiniz.

    Apache Web Server

    Bilgisayarnzdaki dosyalar bir web sunucu ile paylaflma amak iin

    1 numaral web sunucusu ile alflmaya hazr msnz?

    1996dan bu yana internetin en popler web sunucusu olan

    Apache oumuzun kulana yabanc deil aslnda. Farkl platform-

    larda, ar ifllem trafii altnda sorunsuzca alflabilmesi, 3.parti uy-

    gulamalarla uygun hale getirilebilmesi gibi zellikler bir tarafa

    Apachenin en ok tercih edilen web sunucu olmasnda flphesiz be-

    dava ve ak kaynak olmasnn ok byk etkisi var. Gerekte Apache

    bir firmann rn olmayp farkl ortamlardaki yazlm gelifltiriciler

    tarafndan canl tutulan bir cemiyet projesi.

    Bir yazlmn ak kaynak olmas bir avantaj m?fiphesiz evet. Ak kaynak yazlmlar, kaynak kodlar yani program

    oluflturan ve nasl alfltn gsteren kodlarn herkesin paylaflmna

    ve/veya katlmna sunulan yazlmlardr. Dilenirse yazlmn kendi-

    sine programclar ilaveler (patch - yama) katabilir. Bundan daha

    nemlisi ise gvenlik ile ilgili husustur. Ak kaynak yazlmlarn kod-

    lar ortada olduundan programn alflt anda ne gibi ifllerle mefl-

    gul olduu da yazlm gelifltiriciler iin aflikardr. Bu yzden Alman

    Savunma Bakanl nternet zerinden grflme yapt iflletim sis-temini gvenli olmad gerekesiyle Microsoft Windowstan Unixe

    almflt hatrlarsanz.

    Apache web sunucusunun gvenlik asndan bir baflka avantaj

    ise Microsoft sunucularna gre daha az saldrya maruz kalmas

    olarak gsterilebilir. Bir aralar hatta web Microsoft sunucularn biz-

    zat Microsoft iin ak bir arka kapsnn bulunduu, bu sunucularn

    daha fazla saldrya maruz kalmasndan dolay sigorta flirketlerinin

    daha fazla prim istedii gndeme gelmiflti. yle ya da byle zellik-

    le Unix zerinde alflan Apache sunucular daha fazla tercih edil-

    mekte olduunu syleyebiliriz. Ekim 2003te yaplan bir arafltrma

    nternet zerindeki sunucularn % 64nn Apache olduunu ortaya

    kard.

    Neden Apache?Bafllangta Apache isminin A patchy server yani sabit bir kod ze-

    rine eklenen yamalardan oluflan bir sunucu olduundan bu flekilde

    adlandrld syleniyordu ama Apache.org, programn dayankll-

    n ne kararak Apache yerlileri kabilesine atfen bir sayg ifadesi

    olarak bu ismi tercih ettiini sylyor. Ne diyelim? Bizim iin sakn-

    cas yok.

    Bilgisayarnz bir web sunucuya dnfltrnApache web sunucunun kurulumu

    Sadece HTML ve JavaScript, DHTML veya Flash gibi istemci tarafl

    uygulamalar kullandnz web sayfalarnz kendi bilgisayarnzda

    gelifltirip kontrol etmenizde, hazr olduklarnda ise sunucunuza

    transfer etmenizde hi bir zorluk yok. Fakat eer ASP, JSP veya PHP

    gibi sunucu tarafl programlama yapyorsanz bilgisayarnzda bir

    sunucu ortam oluflturmak gerekecektir. Bylelikle yazacanz apli-

    kasyonlar transfer etmeden nce test edebilirsiniz. Bu saymzda

    Apache web sunucusunu bilgisayarmza nasl kurup ayarlarn nasl

    yapacamz greceiz.

    3ncelikle yine programn sisteminize uygun bir versiyonunu indir-

    mekle ifle bafllamak gerekiyor. Apache web sunucunun dosyalarna

    http://httpd.apache.org/download.cgi adresinden ulaflabilirsiniz.

    3 Apache kurulum dosyasna ift tklayarak kuruluma bafllayabilirsi-

    niz.

    Web Programcl

    >>>>

  • 8/14/2019 21_Mayis 2004

    6/13120 CHIP Workshop >>

    3Apache kurulum srasnda program dosyalarn nereye amak iste-

    diini soracak. Dilediiniz bir yeri belirleyebilirsiniz. (Mesela

    C:\Program Files\Apache )

    3 Typical sein ve ilerleyin

    3 Kurulum sihirbaz seimlerinize uygun olarak Apacheyi bilgisaya-

    rnza kuracaktr.

    Apachenin ayarlarApache belli bir grafiksel kullanc arayzne sahip olmadndan

    ayarlarn yapmak son kullanc iin biraz gri gelebilir. Apache ile ilgi-

    li ayarlar [Kurulum dizini]..\Apache\conf klasrnde bulunan

    httpd.conf dosyasndan yaplr.

    3 httpd.conf dosyasn Notepad gibi bir metin editrnde an

    Web Programcl

  • 8/14/2019 21_Mayis 2004

    7/13>>>

    Artk Apache web sunucunuz alflmaya hazr.

    Apache Web Sunucunun alfltrlmasWindows platformunda Apache web sunucunuzu diler service ola-

    rak dilerseniz manual olarak alfltrabilirsiniz.

    Sunucunuzu service olarak alfltrmak iin, yani bilgisayarnz

    aldnda sunucunuz da alflmaya bafllasn istiyorsanz:

    Baflla mensnden Apache men seimlerinden Install Apache as

    a servicei sein.

    Sunucunuzu manual yani kendi isteinize bal olarak alfltr-

    mak istiyorsanz:

    Baflla mensnden Apache men seimlerinden Start Apacheyi

    sein.

    Bu durumda Apache sunucunuz bir pencere iinde alflmaya

    bafllayacaktr.

    Bu pencere ak olduu mddete sunucunuz alflyor demektir.

    Bu pencereyi grmek istemiyorsanz kapatmayn, sadece kltn.

    Apachede ilk sayfanzApache sunucunuz alflr durumdayken bir tarayc penceresi an

    ve adres ubuuna

    http://localhost

    yazn ve [Enter]a basn. Afladaki gibi bir grntyle karfllafl-

    yorsanz Apache ile ilk sayfanz sunmufl oluyorsunuz demektir. (Lo-

    calhost sisteminizde lokal olarak alflan sunucuya ulaflmak iin kul-

    landmz alan addr) fiimdi yapmanz gereken bu ntanml (defa-

    ult) sayfay kendi sayfanzla deifltirmek.

    Apache web sunucunun sayfalar gstermek iin kulland kla-

    sr

    [Kurulum klasr] . . . \Apache\htdocs

    mesela,

    C:\Program Files\Apache\htdocs

    klasrdr. Bu klasrn iine konacak her dosya sunucunuz tara-

    fndan ulafllabilir olacaktr. ncelikle ifle bu klasrde bulunan nta-

    nml index.... sayfalarn silmekle ya da baflka bir yere kaldrmakla

    bafllayabilirsiniz.

    Bir web sayfas oluflturun ve buna dilediiniz ismi vererek . . .

    \Apache\htdocs klasrne yerlefltirin. Web taraycnzla http://lo-

    calhosta gittiinizde bu sefer klasrn ieriini grebilirsiniz. Bunakendi sayfanzn linki de dahil. Sayfanz grntlemek iin zerine

    tklayabilirsiniz. Dilerseniz sunucu klasr iine yeni klasrler de

    oluflturup bunlar sunucunuzla ulafllabilir hale getirebilirsiniz.

    Localhosta gidildiinde sayfanzn balant olarak deil de nta-

    nml olarak dorudan grnmesini istiyorsanz sayfanzn adn in-

    dex.html olarak deifltirin.

    Apache web sunucunun kapatlmasApache web sunucusunu kapatmak iin Apachenin alflt siyah

    pencereyi kapatmayn. Bafllatmensnden Apache men seimle-

    rinden Stop Apacheyi sein. Apachenin alflt siyah pencere ken-

    diliinden kapanacaktr.Sunucunuz hayrl olsun. Gelecek ay Apache web sunucumuza

    PHPyi kuracaz.

    Numan Pekgz

    [email protected]

    Bu flekilde deifltirin

  • 8/14/2019 21_Mayis 2004

    8/13

    Merhabalar! Yeni Java dersimizde

    tekrar birlikteyiz. nceki dersimiz-

    de hatrlarsanz Java'da metotla-rn nasl kullanldn ve yaratldn ayrn-

    tl olarak inceleyerek, devamnda da dizile-

    rin metotlara parametre olarak gnderil-

    mesine iliflkin birtakm rnekler zerinde

    alflmfltk. Bu rneklere iliflkin hazr prog-

    ram dosyalarn da http://cs.bil-

    gi.edu.tr/~erman/kodlar/ adresinde bula-

    bileceinizi sylemifltim.

    Bundan sonraki dersler iin de yine ayn

    flekilde kodlar bu adreste bulundurmaya

    alflacam. nceki derslerimizi iyice tekrar

    ettiinizi ve verilmifl rnekleri de teker te-

    ker yazarak denediinizi umuyorum. Bili-

    nen rnekleri bile sabrla yazmak inann

    ok fley retecektir.

    Bugnk dersimizde artk nesne yne-

    limli programcln en nemli kavram

    olan snflar inceleyeceiz. nmzdeki

    derlerin birou artk bu snflar kullanmak

    ve gelifltirmek zerine olacak. Bu yzden

    burada basitlefltirerek anlatmaya alflt-

    m bu temel kavramlar iyice anlamaya ve

    irdelemeye alflmanz neririm.

    Snf kavram:Biliyoruz ki genel anlamda program yaza-

    bilmek iin eflitli deiflkenler yaratp kulla-

    nyoruz. Yaratlan her deiflkenin bir tr

    olduunu ve yaratldktan sonra bu deifl-

    kenlerin de artk birer nesne olduunu gr-

    mekteyiz. rnein "int a;" dediimizde a

    isimli deiflkeni ierisinde tamsaylar tuta-

    cak biimde, "double b; " dediimizde bisimli deiflkeni ierisinde virgll saylar

    tutabilecek flekilde ya da "String c[]; " dedi-

    imizde c isimli deiflkeni ierisinde String

    trnde deerler tutan bir dizi fleklinde ya-

    ratmfl oluyoruz. Yani deiflkenleri bilinen

    nesne trlerinden bir tanesi cinsinden yara-

    tyoruz.

    flte bugn reneceimiz flekilde, snf-

    lar yazarak nce yeni bir nesne tr yarat-

    yor ve daha sonra da yaratmfl olduumuz

    bu "nesne tr cinsinden" snf deiflkenleri yaratarak bu snflar kullanabiliyoruz. Ya

    da bir baflkasnn yaratmfl olduu bir snf

    trnden yeni bir deiflken yaratabiliyor ve

    yine bu deiflkeni kullanabiliyoruz.

    Aslnda bundan nceki derslerde, nce-

    den yaratlmfl baz snflar baz zaten kul-

    lanmfltk. rnein "JOptionPane" isimli s-

    nfa ait "showMessageDialog" ya da "sho-

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

    etraflca ele alacak ve rneklerle inceleyeceiz.

    29 CHIP Workshop >>

  • 8/14/2019 21_Mayis 2004

    9/13

    duk. flimdi yine rnek bir snf yaratalm. Busnf kendi ierisinde sadece bir deiflken

    tutsun ve bu deiflkenin deerini elde ede-

    bilecek ya da deifltirebilecek baz metodla-

    r olsun:

    DegiskenTutan.java dosyasndaki r-

    nekte, bahsettiimiz bu snf yine snf ile

    ayn isimde olan "DegiskenTutan.java" dos-

    yas ierisinde yarattk ve kaydettik. Biz as-

    lnda burada "DegiskenTutan" isimli yeni

    bir nesne tr yaratmfl oluyoruz.

    DegiskenTutan snfnn 2. satrnda ya-

    ratlan "x" isimli bir global deiflkeni bulun-maktadr. Bu deiflkenin global olmasnn

    nedeni yaratld yerin herhangi bir meto-

    dun iinde deil de en dfl faliyet alannda

    wInputDialog" gibi metotlar kullanrken

    aslnda bu snf kullanmfl olduk.

    Snf Nedir?

    flimdi biraz daha genel olarak snflarn ne

    olduundan bahsetmekte fayda var. Snf

    denilen fley aslnda birden fazla metot ve

    deiflkeni bir arada tutan bir yapdr. Ancak

    bu deiflken ve metotlarn da ayn greve

    iliflkin olmas beklenir. rnein ICQ benzeri

    bir uygulamada en kaba flekilde grsel k-

    sm ve a balantlar olmak zere iki ksm

    olduunu kabul edelim. Bu uygulamann

    pencere flekli, rengi, dmelerin yeri v.b. ifl-

    leri stlenecek birok metot ve deiflkeni

    olsa da hepsinin amac aslnda grsellii

    salamaktr. Yine benzer flekilde arka plan-da balantlar ayarlayan, kontrol eden bir-

    ok metot ve deiflken de a ayarlar iin

    kullanlr.

    Bu durumda ayn projeye iliflkin ama ay-

    r grevleri stlenen tm metot ve deifl-

    kenleri bu iki ana snf altnda toplamak

    hem organizasyonda hem de tasarmda ko-

    laylk salar. Bu iki ksm birbirinden bam-

    sz tasarlanarak bir araya getirilebilir. Bu da

    projeye esneklik salar.

    Snflarn YaratlmasBundan nce yazdmz rneklerde aslnda

    biz hep bir snf ve bu snfn ierisinde de

    birtakm metod ve deiflkenler yaratyor-

    olmasdr. Bu nedenle snf ierisinde ta-nml dier tm metodlar bu deiflkene eri-

    flebilir ve deiflkeni kullanabilirler.

    this Anahtar Szc

    Snf ierisinde yazlmfl olan "getX" isimli

    metod, bu "x" deiflkeninin ierisindeki de-

    eri geri dndrmektedir. Yalnz dikkat edi-

    lirse 9. satrda gerekleflen bu geri dndr-

    me ifllemi srasnda sadece deiflkenin ad

    deil, onun yerine "this.x" fleklinde bir kul-

    lanm grmekteyiz. "this" anahtar szc

    zel bir anahtar szck olup noktadan son-ra gelen deiflken isimlerinin snfa ait ol-

    duunu ifade etmektedir. Yani 9. satrda

    yazlan

    return this.x;

    ile kastedilen fley, ilgili snfa ait olan "x"

    isimli deiflkeninin geri dndrleceidir.

    Yine snf ierisinde yazlmfl olan "setX"

    isimli metod da kendisine parametre olarak

    gelen ve c deiflkeninde tutlan deeri

    "this.x" deikenine, yani snfa ait olan "x"

    deiflkenine atamaktadr.

    Grdmz gibi yazmfl olduumuz bu

    yeni snf ierisinde baflka deiflken ya da

    metod bulunmamaktadr. Peki ya madem

    artk bu snf yazld ve kullanma hazr, sn-

    f nasl kullanabiliriz? fiimdi bu sorunun ce-

    vabn verelim:

    Yazlmfl Snflarn Kullanlmas

    Baz zel durumlarn dflnda, en genel bii-

    miyle bir snf nesnesi ya da bildiimiz flek-

    liyle bir snf trnden deiflken, flu flekilde

    yaratlr:

    SinifAdi degisken = new SinifAdi();

    Mesela, az nce yazmfl olduumuz "De-

    giskenTutan" isimli snf trnden bir de-

    iflken de:

    Java Serisi

    >>>>

  • 8/14/2019 21_Mayis 2004

    10/13

    Java Serisi

    31 CHIP Workshop >>

    DegiskenTutan a = new DegiskenTutan();

    fieklinde yaratlmaktadr. Bu yaratma ifl-

    lemini baflka bir snf ierisinden yapabilir-

    siniz. Burada vurgulanmas gereken en

    nemli nokta, yaratlan her snf deiflkeni-

    nin aslnda gerek snfn bir kopyas oldu-

    udur. Yani biz yukardaki gibi a isimli ve

    DegiskenTutan trnde bir snf nesnesi ve

    yine ayn flekilde

    DegiskenTutan b = new DegiskenTutan();

    b isimli baflka bir DegiskenTutan isimli

    snf nesnesi yarattmzda, bu iki nesne de

    artk kendilerine ait birer "setX" ve "getX"metodlar ile bir "x" deiflkeni barndrmak-

    tadr. A nesnesinin "x" deiflkeni ile b nes-

    nesinin "x" deiflkeni artk farkldr. Ama iki-

    sinin de bir "x" deiflkeni vardr. Yine ayn

    flekilde "a" nesnesi ile "b" nesnesinin "setX"

    ve "getX" metodlar vardr ama her metod

    kendi nesnesine ait olan "x" deiflkeni ze-

    rinde ifllem yapabilir.

    flimdi "DegiskenTutan.java" dosyas ile

    ayn klasr ierisinde yer alan "GenelSinif"

    isimli yeni bir snf daha yaratalm ve bu ye-

    ni snf ierisinde de "DegiskenTutan" isimlisnf kullanalm:

    flimdi yazmfl olduumuz bu snflar

    kaydettikten sonra alfltrabilmek iin flu

    ifllemleri yapmamz gerekmektedir.:

    1) ncelikle komut satrnda bu snf dos-

    yalarn yazmfl olduunuz dizin ierisine cd

    komutu yardmyla giriniz. rnein bu di-

    zin linux kullanclar iin "/home/er-

    man/kodlar" ya da windows kullanclar

    iin "C:\kodlar" ise, dizin ierisine girmek

    iin:

    $cd /home/erman/kodlar

    ya da

    C:\> cd kodlar

    yazmanz gerekmektedir.

    2) flimdi srasyla "DegiskenTutan.java"

    dosyasn ve "GenelSinif.java" dosyasn

    derleyelim:

    javac DegiskenTutan.java

    javac GenelSinif.java

    3) Son olarak da GenelSinif.java dosyasn

    alfltralm:

    java GenelSinif

    Not: Burada gryoruz ki "DegiskenTu-

    tan.java" dosyas sadece derleniyor ancak

    GenelSinif.java gibi sonra da alfltrlmyor.

    Bunun nedeni asl alflan programn "Ge-

    nelSinif" olmas, "DegiskenTutan" snfnn

    ise sadece kullanlyor olmasdr. nk

    "GenelSinif" snf ierisinde "main" metodu

    vardr. Bununla ilgili ayrntl aklamay ya-

    znn ilerleyen ksmlarnda zaten bulabile-

    ceksiniz.

    rneimizde 7. ve 8. satrlarda Degis-

    kenTutan snf trnden "a" ve "b" isimli 2

  • 8/14/2019 21_Mayis 2004

    11/13

    Java Serisi

    >>>>

    Yanlfl. Snf ismi Degis-

    kenTutan o halde bafllang metodunun is-

    mi bu olamaz

    Degiskentutan -> Yanlfl. Snf isminde T

    harfi de byk. sim, byk kk harf ba-

    znda da ayn olmak zorundadr.

    2) Bafllang metodlar geri dnfl deerine

    sahip deildir. Yalnz burada geri dnfl de-

    eri void demek istemiyorum. Bafllang

    metodlarnn geri dnfl deeri gibi bir kav-

    ramlar yoktur. void ile yok baflka anlamlara

    gelir.

    3) Bir snfn birden fazla bafllang metodu

    olabilir. Btn bafllang metodlar da snf

    ismiyle ayn olmak zorundadr ancak her bi-rinin parametreleri birbirlerinden farkl ol-

    mak zorundadr.

    Biz bafllang metodlarn genelde bir s-

    nf trnden bir nesne yaratrken, bu nes-

    nenin deiflkenlerine birtakm ilk deerler

    vermek amacyla yazarz. Aslnda tasarlad-

    mz bir snfa bafllang metodu yazmak

    zorunda deiliz. Ancak bafllang metodu

    yazmamflsak, nesne yaratlrken Java oto-

    matik olarak bizim yerimize bofl bir hayali

    bafllang metodu yazar ve onu arr. Eer

    yazmflsak bizim yazdmz bafllang me-

    todunu armaktadr.

    flimdi tm bu anlattklarmz "Degis-

    kenTutan" snfmza bafllang metodlar

    ekleyerek irdeleyelim. Ama bu sefer "Degis-

    kenTutan" ve "GenelSinif" isimli snflar

    "DegiskenTutan2" ve "GenelSinif2" olarak

    deifltirelim. Tabi ayn deifliklii dosya

    isimlerinde de yapmay unutmayalm:

    Bu rnekte gryoruz ki; "GenelSinif2"

    dosyasnn 7. satrnda, "a" isimli "Degis-kenTutan2" trnden snf deiflkeni, "De-

    giskenYutan2" snfnn 5. satrnda tanm-

    lanan bofl olan bafllang metodu ile yarat-

    lyor ve bu metodun ierisinde de "a" nes-

    nesinin "x" deiflkenine 0 deeri veriliyor.

    Ancak "GenelSinif2" erisinde 8. satrda ya-

    ratlan "b" isimli ve "DegiskenTutan2" t-

    rndeki nesne, "DegiskenTutan2" isimli s-

    nfn 9. satrda tanmlanmfl ve int para-

    metre alan bafllang metoduyla yaratld

    iin bu "b" nesnesine ait olan "x" deiflkeni

    nesne yaratlrken verilen 2 deerini alyor.Bu rnekte, bir snf trnden nesne yarat-

    lrken yaplmasn istediimiz birtakm ilk

    ifllemleri bafllang metodlar yardmyla

    yaptrabildiimizi gryoruz.

    NOT: Bafllang metodlar sadece nesne

    yaratlrken arlr. Baflka bir zamanda bu

    metodlarn arlmasna izin verilmez.

    main Metodu

    fiu ana kadar dikkat ederseniz "main" me-

    todu ile ilgili ok az ayrntdan bahsettim.

    Aslnda bu metod da birtakm zelliklere

    sahip zel bir metoddur. flimdi yukarda

    yapmfl olduumuz rneklere bir gz atma-

    nz istiyorum. Bu rnekler de "GenelSinif"

    isimli snf ierisinde "main" metodu varken

    "DegiskenTutan" isimli snfn ierisinde

    byle bir metod yok. Ama her iki rnek de

    dzgn bir flekilde alflabiliyor. Bunun ne-

    denini flyle aklayalm:

    Bu ana kadar grdk ki bir snf nesnesi

    ilk nce yazlmakta ve daha sonra da kulla-

    nlmaktadr. Ancak kullanlmadan nce

    tm nesneler ncelikle "javac" komutu ile

    derlenmelidir. flte bir java dosyasnn "ja-vac" ile derlenmesi iflleminden sonra bir de

    "java" komutu ile alfltrlabilmesi iin, o ja-

    va dosyas (ya da snf) ierisinde "main"

    metodu olmas gerekir. Yani alfltrlabilir

    snflarn main metodunu sahip olmalar

    MainParametreleri.java dosyas

  • 8/14/2019 21_Mayis 2004

    12/13

    Java Serisi

    33 CHIP Workshop >>

    gerekir. Aksi takdirde

    java

    komutundan sonra ekranda afladaki

    gibi "main" metodunun bulunamadna

    dair bir mesaj ile karfllaflrsnz:

    "java.lang.NoSuchMethodError: main"

    Ancak "DegiskenTutan" gibi sadece bafl-

    ka bir snf ierisinde kullanlmak zere ta-

    sarlanmfl snflar dorudan alfltrlmaya-

    ca iin, onlarn ierisinde main metodu ol-

    masna gerek yoktur. Bu tr snflarn yuka-

    rdaki rnekte de grld gibi sadece

    derlenmesi, kullanlabilmeleri iin yeterliolacaktr.

    zetle; yazdmz programlarda birbi-

    rinden farkl grevleri stlenmifl birok sn-

    f barndran java dosyalar ve hepsini en

    son olarak tek at altnda toplayacak ve

    asl programn alflmasn salayacak ge-

    nel bir snfmz olacaktr. Ve tm bu snflar

    ierisinde sadece ana program alfltracak

    olan bu genel snf ierisinde "main" meto-

    du olmaldr. Dier snflar kullanabilmeniz

    iin, genel snf da dahil olmak zere hepsi-

    ni java ile derlemelisiniz. Ancak programalfltrmak iin sadece genel snf java ko-

    mutu ile alfltrmanz yeterlidir.

    Sonu olarak; bir snf java ile alfltrld-

    zaman, otomatik olarak ierisindeki ma-

    in metodu arlacaktr. Eer snf ierisin-

    de main metodu yoksa, byle bir snf "ja-

    vac" ile derlenebilir ancak "java" ile alfltr-

    lamaz!

    main Metodu parametreleri:

    "main" metodunun flu ana kadar hi de-

    inmediimiz bir zellii de ald paramet-

    relerdir. Bu metod yazlrken grmekteyiz ki

    public static void main(String arg[])

    fieklinde bir String dizisini parametre

    olarak almaktadr. "yi de bu parametre ne

    ifle yaryor?" diye merak ettiinizi tahmin

    ediyorum. Artk bunu renme zamanmz

    geldi. ncelikle aflada verilen "MainPara-

    metreleri.java" isimli snf yazp kaydedi-

    niz:

    flimdi aflada gsterildii gibi bu snf

    nce javac komutu ile derleyip daha sonrajava komutunun bu zel kullanm ile alfl-

    trnz:

    javac MainParametreleri.java

    java MainParametreleri bir iki

    Bu flekilde snf alfltrdnzda ekran-

    da flyle bir kfl greceksiniz.

    1. parametre:bir

    2. parametre: iki

    flte burada, java komutu ile "MainPara-

    metreleri" snfn alfltrrken srasyla ver-

    diiniz "bir" ve "iki" isimli bu iki String dee-

    ri, main metodunun pototipinde tanmlan-

    mfl olan "arg" isimli String dizisine atlmfl-

    tr. "main" metodunun paramtresi olan bu

    "String arg[]" dizisi bu rnekte olduu gibi

    bir snf alfltrlrken kullancnn vermek

    istedii parametreleri alr ve daha sonra

    program ierisinde kullanlabilmesi iinsaklar.

    rnek programmzn 5. ve 6. satrlarn-

    da "arg[0]" ve "arg[1]" ile bu girilen para-

    metreleri kullanabildiimzi grmekteyiz.

    Buradaki kullanma fleklimiz bu parametre-

    leri sadece ekrana yazmak gibi anlamsz bir

    ifllem gibi grnse de daha sonra ifle yarar

    flekillerde kullanabileceimizi dflnebili-

    riz.

    1. parametre: bir

    2. parametre: iki

    Snflarn public ve private Metod ve De-

    iflkenleri

    fiu ana kadar belirli iflleri yapabilmek

    amacyla metod ve deiflkenleri birarada

    tutan nesneleri yaratmay ve kullanmay,

    yani snflarn genel olarak kullanmn gr-

    mfl olduk. Bir snf ierisinde eflitli metod

    ve deiflkenler tutuyor ve daha sonra biz de

    bu snf trnden nesneler yaratarak bu

    metod deiflkenleri kullanabiliyoruz.

    Bazen bir snf ierisinde yazlan metod

    ya da deiflkenleri sadece snfn ierisinde

    kullanmak isteyebiliriz. Yani baflka bir yer-

    de bu snf trnden yaratlan bir deiflken

    ile kullanmayacamz ancak snfn kendi

    iinde kullanlmas gereken metod ve de-

    iflkenler olabilir. Bunu anlamak iin "De-

    giskenTutan" snfna tekrar dnelim. Biz

    "DegiskenTutan" snf trnden bir "a"

    nesnesi yarattmzda "a" nesnesi kendisi-

    ne ait olan "x" deiflkenini:

    a.x = 10;

    fieklinde deifltirebilir. Ancak biz bu fle-

    kilde bir mdaheleye izin vermek istemiyor

    olabiliriz. Eer "a" nesnesinin "x" deiflkeni

    deifltirilecekse, byle bir ifllemin "setX" gi-

    bi bir metodla yaplmasn, deiflkene "a.x"

    diyerek dorudan eriflilememesini istiyor

    olabiliriz. flte bu durumlarda snf ierisine

    "x" deiflkeninin baflna bir "private" anah-

    tar szc eklememiz gerekir. Yani "De-

    giskenTutan" snfnda "x" deiflkeninin bil-

    dirimi:

    class DegiskenTutan {

    private int x;

    public Degiskentutan() {

    ...

    fieklinde olursa, artk "DegiskenTutan"

  • 8/14/2019 21_Mayis 2004

    13/13

    Java Serisi

    >>>>

    trnden "a" gibi bir nesne yaratlsa bile,

    "a.x" gibi bir eriflim yasaklanmfl olur. An-

    cak snf ierisindeki bir metod "x" deiflke-

    nine yine de ulaflabilir.

    Eer genel olarak zetlemek gerekirse;

    snflar ierisinde bildirilen "private" trn-

    deki deiflkenlere dflardan eriflilemez, an-

    cak snfn dier metodlar ile eriflilebilir.

    Bu durum snfn private metodlar iin

    de geerlidir. Eer snf yazlrken bir meto-

    dun baflna "private" anahtar szc ekle-

    nirse, bu metod da artk dflardan eriflile-

    mez, sadece snf ierisindeki dier metod-

    lar tarafndan kullanlabilir bir hale gelir.

    Mesela "DegiskenTutan" isimli snfa afla-

    daki gibi bir "private" metod ekleyelim:

    class DegiskenTutan {

    private int x;

    ...

    private void resetX() {

    this.x = 0;

    }

    ...

    public setX(int c) {

    this.resetX();

    this.x = c;

    }

    }

    Bu flekilde "private" olarak bildirilmifl

    "resetX" metodu artk bu snf trnden ya-

    ratlmfl nesneler ile dflardan kullanlamaz.

    Yani afladaki gibi bir kullanm geersizdir:

    class BaskaSinif {

    public static void main(String arg[]) {

    DegiskenTutan a = new

    p

    DegiskenTutan(2);

    a.resetX();

    /* YANLIfi! resetX private bir metoddurBu flekilde dflardan kullanlamaz.*/

    ...

    }

    }

    En son rnekte grdnz gibi "a.re-

    setX()" gibi bir arm geerli deildir. n-

    k "DegiskenTutan" snfnn "resetX" isimli

    metodu "private" bir metoddur. Bu neden-

    le, bu snf trnden yaratlmfl olan "a"

    nesnesi araclyla bu metoda dflardan

    eriflilemez. Ancak nceki rnekteki gibi "re-

    setX" metodunu snfn dier bir metoduolan "setX" metodu kullanabilmektedir.

    Deiflken ya da metodlarn "private" ya da

    "public" olmas, bu metod ya da deiflkenle-

    rin sadece dflardan kullanm etkileyen bir

    durumdur. Snf ierisindeki dier metodlar

    bu "private" deiflken ya da metodlara eri-

    flebilirler.

    Tm bunlarn bir sonucu olarak da, snf-

    lar yazlrken yaratlan "public" metod ve

    deiflkenler, snf nesneleri araclyla dfla-

    rdan eriflilebilirler.

    Statik Metod ve Deiflkenler

    fiu ana kadar rendiklerimizi ele ald-

    mzda neden JOptionPane snfnn show-

    Message isimli metodunu kullanmak iin

    JOptionPane snf trnden bir nesne ya-

    ratmyoruz? diye sormamz gerekir.

    Baz metodlar yazldklar snflar ieri-

    sinde statik olarak yazlrlar. Bu trden sta-

    tik olarak yazlmfl metodlar kullanmak iin

    snf nesnesi yaratmak gerekmez. Bu me-

    todlar kullanmak iin yazldklar snf is-minden sonra "." iflareti koyarak dorudan

    metodu arabilirsiniz. Ancak tahmin

    edersiniz ki bir metod statik olarak yazl-

    mflsa genel amal bir metod olmaldr.

    Mesela JOptionPane isimli snfn show-

    MessageDialog ya da showInputDialog

    isimli metodlar genel amal olup her za-

    man kullanlabilmektedir. Ekrana bir mesaj

    penceresi karmak ya da kullancdan bir

    girifl deeri almak iin bir nesne yaratmaya

    gerek yoktur.

    Siz de kendi tasarladnz snflar ieri-

    sinde bu flekilde genel amal metodlar yaz-

    mak isterseniz bunlar statik olarak yarata-

    bilirsiniz.

    Bir metodun statik olarak yaratlabilme-

    si iin, metodun prototipinin baflna "static"

    anahtar szc eklenir. Afladaki iki rne-

    i yazp kaydediniz:

    Daha sonra da afladaki sra ile derleyip

    program alfltrnz:

    javac StatikTest.java

    javac GenelSinif3.java

    java GenelSinif3

    Bu rnei alfltrdnzda ekrana iki ta-

    ne mesajn geldiini greceksiniz. Bu me-

    sajlardan ilki, "GenelSinif3" isimli snfn 5.

    satrnda, "StatikTest" snfnn statik meto-

    du dorudan arlarak ekrana gelmifltir.

    Grdmz gibi, bir snfn statik metodu-

    nu kullanmak iin ilk nce o snf trnden

    bir nesne yaratmaya gerek yoktur. nk

    statik metodlar snf ismi ve sonra ". " iflare-

    ti yazldktan sonra dorudan arlabilir-ler. Ancak ikinci mesaj "StatikTest" snfnn

    "kayitliMesaj" isimli ve statik olmayan me-

    todu sayesinde ekrana geldiinden, bu me-

    todu kullanabilmek iin ilk nce "Statik-

    Test" snf trnden bir nesne yaratlmas

    ve metodun da bu nesne araclyla arl-

    mas gerekir.

    Uygulama Sorusu: erisinde tarih tutan

    ve tarihlerle ilgili ifllemler yapabilen metot-

    lar barndran bir snf tasarlaynz. Yapl-

    mas gereken ifllemler iki tarihin birbiriyle

    kyaslanmas, tarih zerine belirli bir gnsays eklenebilmesi, tutulan tarihin gste-

    rilmesi, tutulan tarihin deifltirilmesi flek-

    linde olmaldr.

    Bu ifllemlerin her biri iin snf ierisinde

    bir metot tasarlamanz gerekmektedir.

    Byle bir snfn gn, ay ve yl tutan de-

    iflkenleri olmaldr. Snf tasarladktan

    sonra, bu snf kullanan ve bu snf trn-

    den rnek nesneler yaratarak bunlar kulla-

    nan baflka bir genel snf yaznz ve tasar-

    mnz bu nesneler zerinde test ediniz. Uy-

    gulamann cevabn bir sonraki dersimizde

    bulabilirsiniz.

    Nihayet bu dersimizin de sonuna gelmifl

    bulunuyoruz. Nesne ynelimli programla-

    ma tekniinin zn oluflturan snflar ve

    snflarn kullanmn rendiimiz bu der-

    simizi iyice sindirmenizi ve rnekleri de tek-

    rar yazarak kendi baflnza denemenizi s-

    rarla neririm.

    Daha nce de sylediim gibi derslerde

    kullandmz tm rneklerin yazlmfl dos-

    yalarn http://cs.bilgi.edu.tr/~erman/ kod

    lar adresinde bulabilirsiniz. Konuyla ilgili

    soru, grfl ve nerileriniz iin postalarnzbekliyorum. yi alflmalar..

    Sevgi ve sayglarmla,

    Erman Ayka

    stanbul Bilgi niversitesi

    Bilgisayar Bilimleri Blm

    GenelSinif3.java dosyas