21_Mayis 2004
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
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