24_Agustos 2004
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
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