100% found this document useful (7 votes)
154 views1,535 pages

Java Kitap

java, kitap, program, javakitap, ekitap harbi güzel bir kitap, yine internetten bulmuştum. umarım yararlı olur.

Uploaded by

duranigne
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (7 votes)
154 views1,535 pages

Java Kitap

java, kitap, program, javakitap, ekitap harbi güzel bir kitap, yine internetten bulmuştum. umarım yararlı olur.

Uploaded by

duranigne
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

JAVA PROGRAMLAMA DÝLÝ

Java Programlama dili ºu anda dünyadaki en popüler programlama dillerinden biri haline
gelmiºtir. Java SUN bilgisayar ºirketince orijinal olarak elektrikli ev araçlarýnýn (mikrodalga
fýrýnlarý, buzdolaplarý , televizyonlar, uzaktan kumanda cihazlarý vs.) birbiriyle haberleºmesini
saðlamayý amaçlayan bir proje içerisinde 1991 yýlýnda geliºtirilmeye baºlandý. Orijinal adý bu
dilin yaratýcýlarý James Gosling, Patrick Naughton, Chis Wartdh, Ed Frank ve Mike Sheridan
tarafýndan Oak olarak konulan programlama dili daha sonra bu isimde baºka bir
programlama dili olduðu keºfedilince o anda bir kahvehanede kahve içen programlama
gurubu tarafýndan kahve markasýndan esinlenerek Java olarak deðiºtirildi. Akýllý elektronik ev
araçlarý pazarý SUN gurubunun tahminlerinden çok daha yavaº bir geliºme gösteriyordu. Bu
yüzden Java dili projesi ticari bir geliºtirme projesi olarak büyük olasýlýkla iptal edilecekti.
1993 Yýlýnda "World Wide Web" büyük bir atýlým göstererek bütün dünyaya yayýlmaya
baºladý. Javanýn Dinamik Web sayfalarý hazýrlamadaki büyük potansiyelini gören SUN ºirketi
projeyi bu tarafa yönlendirdi ve bu javaya yeni bir canlýlýk ve yaºama umudu saðladý.

Mayýs 1995 de SUN javayý büyük bir konferansta tanýttý. Program iº dünyasý tarafýndan
derhal büyük bir ilgiyle karºýlandý. Java Modern bilgisayar dünyasýnýn ses, grafik iºlem,
haberleºme gibi ihtiyaçlarýna cevap verebilen ve Ticari gayeler için hazýrlanan bir Program
dili olarak daha önceki bilgisayar dillerinin hiç birinin kapsayamadýðý özellikleri içermekteydi.
Bunun yaný sýra dil komut yapýsý olarak C++ diline çok yakýn olmasý da öðrenilmesini
kolaylaºtýrýyordu. SUN Javayý "World Wide Web" de kullanmak isteyen herkese ücretsiz
olarak sundu. Java internette yayýnlanmasýnýn ardýndan çok büyük bir patlama yaºadý. 1997
ye gelindiðinde dünyadaki bütün bilgisayar okullarýnda temel bilgisayar dili olarak
gösterilmeye baºlandý. Dünyada ºu anda hala en çok kullanýlan bilgisayar dili olan C++ dilinin
yapýlan hatalarý tam olarak denetlememesi programýn çalýºma hýzýný arttýrma yönünden iyi bir
özellik olsa da profesyonel programcýlar dýºýnda kullanýlmasýný sýnýrlandýrýcý bir etki
yapýyordu. Java ise bütün hatalarý bildiren yapýsý ve modern bilgisayarýn bütün
fonksiyonlarýna ulaºabilen kütüphaneleriyle programcýlarýn çok daha kolaylýkla
öðrenebileceði bir dildir. Burada hemen ºunu da belirtelim. C dili hýzlý çalýºma amacý birinci
planda tutularak yaratýlmýº bir dildir. Javada ise emniyet ilk planda yer almýºtýr. Hýz açýsýndan
düºünüldüðünde java C (ve C++) diliyle rekabet edemez. zaten program derleyicisi de C++
dilinde yazýlmýºtýr.

Javanýn diðer önemli bir temel özelliði Nesne kökenli (object oriented) bir dil olmasýdýr.
Nesne kökenli diller, nesneleri gerçek dünyadakine daha benzer bir yapýda tanýmlayarak
anlaºýlmalarýný kolaylaºtýrýrlar. Nesneleri gerçek dünyadaki gibi masa, sandalye, bilgisayar,
gerçek gaz, ýsý eºanjörü gibi tanýmlayarak programlamak insan beyninin anlamasý açýsýndan
çok daha kolaydýr. Bundan önceki tam nesnel kökenli programlama dillerinden hiçbiri çok
yaygýnlýk kazanmamýºtý. Bu tür dillere Smalltalk,u Örnek verebiliriz. C++ nesnel kökenli
programlama yapabilen bir dildir. Fakat yapýsal (structural) birprogramlama dili olan C dilinin
bir uzantýsý olarak geliºtirildiðinden tam anlamýyla nesnel kökenli bir dil olduðu söylenemez.

Java dilini geleceðin dili yapan diðer bir özelliði de çok kullanýmlý (multi-tasking) ve paralel
kullanýmlý(multi-treading) bir dil olmasýdýr. Çok kullanýmlýlýk birden fazla iºlemin ayný anda
yapýlabilmesinin tanýmýdýr. Paralel kullanýmlýlýk ise birden fazla programýn ayný anda hafýzayý
beraber kullanarak kullanýlabilmesidir. Örnek olarak World ve Excel programlarýnýn Windows

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
NT ortamýnda ayný anda kullanýlmasýdýr. ADA gibi bazý eski Program dillerinde çok
kullanýmlýlýk programlanabiliyordu. Paralel kullaným olanaklarýný sunan ilk bilgisayar dili ise
javadýr. Paralel kullaným paralel programlama kavramýndan ayrýdýr ve karýºtýrýlmamalýdýr.
Paralel programlanmada birden fazla Bilgi iºlem Ünitesine (CPU ) ayrý programlar veya bir
programýn ayrý parçalarý gönderilir. Paralel kullanýmda ise bir CPU nun kullaným zamaný
küçük parçalara ayrýlarak deðiºik Program veya Program parçacýklarý bu zaman
paketçiklerini paylaºarak kullanýrlar.

Javayý önemli bir Program dili haline getiren en önemli özelliði ise kullanýlan bilgisayardan
baðýmsýz olmasýdýr. Javada yazýlan bir Program Unix, Machintosh, Windows 95 veya
Windows NT veya herhangi bir 32 bit makinada hiç deðiºtirilmeden kullanýlabilir. Java
programlarýnýn grafikleri "Wold Wide Web" sayfalarýnýn programlama dili olan html (hypertext
markup language) ile aktarýlýr. Bu yüzden html ve java programlarýný birlikte kullanmak ve
java programlarýný gerçek zamanda www sayfalarýnda göstermek mümkündür. Kendi web
sayfanýzý veya webde yazýlmýº kitabýnýzý bütün dünyaya aktarýrken yaptýðýnýz analizleri de bu
kitabýn dinamik bir parçasý olarak sunabilirsiniz. Bu Türkiye gibi ülkelerin dünyaya kapýlarýný
daha kolay açmalarý açýsýndan oldukça önemli bir özelliktir.

Javanýn HTML diliyle kullanýlabilmesi, bazý kiºilerde htmlin bir parçasý olduðu gibi bir kavram
geliºmesine yol açmiºtir. Programlamaya yeni baºlayanlar sýk sýk html ile javayý birbirine
karýºtýrýrlar. veya javanýn HTML'nin bir uzantýsý olduðunu düºünürler. Bu temelde oldukça
yanlýº bir varsayýmdýr. HTML internet belgelerini birbirine baðlamak amacýyla geliºtirilmiº bir
belge iºlem sistemidir ve bir programlama dili deðildir. HTML ile javanýn tek gerçek ilgisi
HTML deki applet komutudur. bu komut yardýmýyla java dilinde yazýlmýº programlarýn
sonuçlarý HTML ortamýna dinamik olarak aktarýlabilir.

1.2 JAVA PROGRAMINI YAZMA VE ÇALIªTIRMA


Her programda olduðu gibi java programlarýnda da ilk evre programý yazmaktýr. Java
programlarý her editör programýyla yazýlabilirler. Örneðin Unix sistemlerinde vi veya
emacs,windows 95 ve windows NT de DOS Edit, veya Windows Notedefteri (notepad)
veya WordPad programlarý kullanýlabilir. Bildiðiniz ve kullanmakta rahat olduðunuz herhangi
bir editör programý varsa rahatlýkla kullanabilirsiniz. Windows Notedefteri (notepad)
editörüyle ilgili karºýlaºacabileceðiniz bir programý burada hemen belirtmekte yarar var. Bu
program tüm dosyalarýn arkasýný txt eki getirmeye çalýºýr. Programý direk içinde yazýp
çalýºtýrabilen Microsoft Visual J++, Symantec Visual Café, Jpad, Borland JBuilder gibi Java
geliºtirme paketleri de mevcuttur. Bu kitapta bu paketler yardýmýyla program yapýlmasýna
direk olarak hiç deðinilmemiºtir. Kiºisel olarak bu tür paketler java dilini öðrenme açýsýndan
bilhassa yeni programlama öðrenenlere çok fazla yardýmý olacaðýný sanmýyorum, üstelik
sadece o paketi kullanmayý öðreneceðiniz için bir tür baðýmlýlýða sebep olabilirler. Fakat bu
paketler uzman hale geldikten sonra iºinizi kolaylaºtýrmak açýsýndan çok yararlý olabilir.

ªüphesiz programý yazmadan önce Java compilerýnýn bir kopyasýný edinmeniz de gerekir.
Java geliºtirme seti (Java Developers kit - JDK) SUN bilgisayar ºirketinin

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

veya

[Link]

internet adreslerinden bedava çekilebilir. Çekme zahmeti istemiyorsanýz SUN bu


programlarý CD formatýnda da satmaktadýr. Sun programýn kitaplar ve üçüncü el kaynaklarda
verilmesine müsade etmemektedir. Ayrýca derleyici sürekli olarak yenilendiðinden orijinal
kaynaðýndan her zaman en yeni versiyonunu elde edebilirsiniz. Java ile yaptýðýnýz lisans
anlaºmasýna göre program dilini bedava olarak kullanabilirsiniz, ancak satacaðýnýz
profesyonel bir program geliºtirdiðinizde sun ºirketine kazancýnýz üzerinden belirli bir yüzde
ödemeniz gerekecektir.

Java programý [Link] seklinde editörle yazýlýr. Java programýnýz yazýldýktan sonra ilk step
java derleyici (compiler) programýyla [Link] ara bilgisayar kodunu oluºturmaktýr.

Java programýný yazarken dikkat etmeniz gereken diðer bir özellik de javanýn nesne sýnýfýnýn
ismiyle dosyadaki isminin ayný olmasýdýr. Bilgisayar konsol ekranýnda (DOS veya UNIX
Console)

javac [Link]

Komutunu bilgisayara gönderdiðinizde programýnýzda hata yoksa java derleyicisi [Link]


dosyasýný yaratýr. Eðer programýnýzda hata varsa hatalarýn listesini verir. Programlamanýn dili
ingilizce olduðundan bu hata açýklamalarý da ingilizcedir. Editör programýna geri dönüp
hatalarý düzeltmeniz, programý tekrar kaydetmeniz ve sonra bu komutu tekrar denemeniz
gerekecektir. Java programlarý iki ortam için yaratýlabilir. Birincisi Konsol ortamýdýr (DOS,
Unix console gibi). Konsol ortamýný kullanýrken java dilinin konsol komutu java kullanýlarak
[Link] dosyasý yerel bilgisayarýn makine diline program çalýºýrken dönüºtürülür. Bu
temelde bir tercüme (interpretation) iºlemidir. Sonuç olarak java dilinde iki kademeli bir
proses kullanýlýr, birinci iºlemde java dosyasý class dosyasýna çevirilir (derlenir), ikinci
iºlemde ise class dosyasý yerel bilgisayarýn makine diline dönüºtürülür. konsol ortamýnda
çalýºtýrýlan program sonuçlarý yine konsol ortamýnda alýnacaðý gibi pop-up pencere grafik
ortamýnda da alýnabilir. Ýkincisi ise internet browser penceresi (Applet) ortamýdýr. Eðer
Program konsol ortamýnda yazýlmýºsa

java isim

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
komutu kullanýlarak sonuçlar ekranda veya açýlan bir pencerede görülebilir. Eðer Program
applet ortamýnda yazýlmýºsa java programýna ilave olarak html dilinde [Link] dosyasý
açýlýr. En basit ºekilde html dosyasý ºu ºekilde tanýmlanabilir :

<html >

<applet code="[Link]" width=200 height=50 >

</applet >

</html>

Buradaki width pencerenin enini pixel olarak, height’da yüksekliðini yine pixel(görüntü
noktasý) olarak vermektedir. daha sonra bu dosya konsoldan

appletviewer [Link]

komutuyla çalýstýrýlabilir. Buradaki appletviewer komutu java program paketindeki


basitleºtirilmiº bir browser programýdýr. Bu komut yerine [Link] dosyasý herhangi bir
browser programýna yüklenerek görülebilir. Burada hemen ºunu not etmeliyiz: braowser
program yazýcýlarý genelde java versiyonlarýný kendi programlarýna aktarmakta biraz yavaº
kalmaktadýrlar bu yüzden en yeni java derleyicisiyle derlediðiniz bir programý browser’inýz
göstermeyebilir. Buna karºýlýk java “plug-in” denilen küçük programlar geliºtirmiºtir. Diðer bir
olasýlýkta elbette eski java derleyicinizi hemen atmayýp bir süre daha (yeni versiyonu browser
programlarý tarafýndan tam olarak tanýnýncaya kadar) profesyonel applet programlarý
geliºtirirken kullanmanýzdýr.

Programcýlýkta adeta adet haline gelen ilk uygulama daima o dilde ekrana Hosgeldiniz çiktisi
almaktýr. Bizde bu kuralýn dýºýna çýkmayalým. Aºaðýdaki listede ilk konsol programýmýz
[Link] görülmektedir.

Program 1.1 Hoº[Link] konsol programý

import [Link].*; //java girdi cikti sinifini cagir


class Hosgeldiniz
{
public static void main(String args[])
{
[Link]("Java Sinifina Hos Geldiniz!");
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bu programý çalýºtýrmak için

javac [Link]

java Hosgeldiniz

komutlarýný konsolda vermemiz yeterlidir


konsol çýktýsý olarak:

Java Sinifina Hos Geldiniz!

Yazýsýný alýrýz.

ªimdi bu programdaki satýrlara tek göz atalým.

import [Link].*; Bu deyim java konsol girdi çýktý kütüphanesindeki metotlarý programýmýza
aktarýr.

//java girdi cikti sinifini cagir


// iºaretiyle baºlayan yazýlar bilgisayar tarafýndan kullanýlamaz sadece programý okuyaný
bilgilendirmek amacý taºýr /* ..... */ iºaretleriyle de verilebilir. Örneðin :

/* Bu kýsýmda yazýlanlarla bilgisayar ilgilenmez


Sadece insanlarýn programý anlamasý içindir
*/

class Hosgeldiniz Class (sýnýf) nesne kökenli programlama yapýsýnýn temel taºýdýr. Her
Class'ýn kendine özgü bir ismi olmasý gerekir. Daha önce yazýlmýº Class'lar import
deyimiyle programa çaðýrýlabilirler. Yeniden yazýlmalarý gerekmez. Class yapýsý ve
tanýmlamalarý üzerinde daha sonraki bölümlerde çok daha detaylý bilgi verilecektir.

{ } baºlatma ve bitirme : Sýnýf tanýmlamasý da dahil olmak üzere Tüm Program parçacýklarý {
iºaretiyle baºlar ve } iºaretiyle son bulur. {} iºaretleri arasýnda yazýlan program
parçacýklarýný normal metin yazýlmasýndaki paragraf kavramýna benzetebiliriz. Ayrýca
program koduna baktýðýmýzda "; " iºaretine sýk sýk rastlýyoruz. Bu iºaret java komutunun
bittiðini belirtir. Cümle yaðýsýnda kullanýlan nokta ". " iºareti gibi iºlev görür. Java
programlarýný istersek " ;" ve "{} " ayraçlarýný kullanarak tek bir satýr olarak yazabiliriz. Fakat
bu programýn bizim tarafýmýzdan okunurluðunu zorlaºtýrýr. Program kodunu yazarken boºluk
ve satýr aralýklarý býrakarak insanlar tarafýndan programýn okumasýný kolaylaºtýrabiliriz.
Modern programcýlýktaki en büyük sorunlardan biri bigisayar kodlarýnýn bakým ve onarýmý
sorunudur. Ticari olarak yazýlan her programýn belli bir ömrü olduðunu ve daha sonra

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
baºka bir programcý tarafýndan üzerinde tekrar çalýºýlacaðýný sürekli olarak hatýrlamak
zorundayýz.

public static void main(String args[]) diðer dillerde fonksiyon (function), subroutine,
procedure gibi adlarla anýlan Program alt parçacýðýnýn baºlýðý. Bu Program parçacýklarý
javada Metot (Method) adýyla anýlýr. Metotlarýn girdileri ve çýktýlarý olabilir. Bu metotun adý
main (ana Program) dýr. String deðiºken türü args[] deðiºkeni girdi olarak girebilir. Bu
metotta void çýktý türü kullanýlmýºtýr. Void kelimesi bu metotdan hiçbir çýktý alýnmayacaðýný
belirtir. public metota dýºarýdan ulaºýlabilme izni verir.

[Link] ("Java Sinifina Hos Geldiniz!"); Bu satýr [Link] sýnýfýndan println


metotunu çalýºtýrýr. Bu metot method giriºinde gönderilen String tipi deðiºkeni konsol
çýktýsýna aktarýr. Fortran dilindeki write(*,*) veya print*, c dilindeki printf, c++ dilindeki cout<<
terimlerinin javadaki tam karºýlýðýdýr.

"Java Sinifina Hos Geldiniz!" stringi aynen aktarýlýrken içinde c dilinde kullanýlan temel
kontrol terimleri yer alabilir ve aynen c dilindeki anlamlarýyla kullanýlabilir. Bu kontrol
terimlerinden en yaygýn olarak kullanýlan bazýlarý:

\n alt satýra geç

\t bir sonraki tab’a atla

\r gir tuºu bas

\\ \ iºaretini yaz

\” “ iºaretini yaz

ºeklinde gösterilebilir.

Ýkinci konsol programýmýz [Link] Program 1.2 de verilmiºtir. Bu program


SWING kütüphanesinin alt kütüphanesi olan JoptionPane kütüphanesi kullanýlarak
yaratýlmýºtýr. Çýktý yazýsý ekranda grafik pencere olarak belirir ve Java sýnýfýna Hos geldiniz!
mesajýný verir. Tüm bu kütüphanelerin detaylarý ilerideki bölümlerde verilecektir. ªimdilik
nasýl kullanýldýklarýný öðrenmekle ve programlarýmýzý örnek programlara benzeterek yazmaya
çalýºacaðýz. Uzman programcýlar isterlerse ilgili bölümlerden komut detaylarýna derhal
girebilirler.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.2 [Link] programý

import [Link] ;

class HosgeldinizSW {

public static void main (String args[])

[Link] (null,"Java sýnýfýna hoº geldiniz!",

"HosgeldinizSW programý",JOptionPane.INFORMATION_MESSAGE);

[Link](0) ;

Bu programý

javac [Link]

ve

java HosgeldinizSW

komutlarýný kullanarak çalýºtýrdýðýmýzda

[Link]

ªekil 1.1 HosgeldinizSW dosyasýnýn konsol SWING pop-up grafik çýktýsý kullanarak
görülmesi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu çýktýyý alabilmek için java SWING kütüphanesi içerisinde yer alan
[Link](....) metodunu kullandýk. Bu metodun görevi
[Link] metoduyla aynýdýr. Farký ise grafik ortamda çýktý vermesidir. Metot içindeki
ikinci sýrada verilen String tipi sabit , "Java sýnýfýna hoº geldiniz!" grafik çýktýya aktarýlmýºtýr.
Üçüncü sýrada verilen string tipi "HosgeldinizSW programi" sabiti de grafik kutusunun adýný
belirtmiºtir. JoptionPane.INFORMATION_MESSAGE komutu ise bilgi (information) mesajý
penceresi açýlacaðýný belirtmiºtir. (grafikteki i harfi – information – bilgi kelimesinin baº
harfidir). Bu alanda kullanabileceðimiz diðer alternatifler ºunlardýr :

JOptionPane.ERROR_MESSAGE : hata mesajý

JOptionPane.WARNING_MESSAGE : uyarý mesajý

JOptionPane.QUESTION_MESSAGE : soru mesajý

JOptionPane.PLAIN_MESSAGE : sade (ikonsuz) mesaj

[Link](0); metodu çýktý penceresinde görülen OK düðmesine basýldýðýnda pencerenin


kapanmasýný saðlar. import [Link]; deyimi swing kütüphanesinde yer
alan JoptionPane sýnýfýný çaðýrýr. Programdan da görüleceði gibi sýnýfýmýzýn (class) adý
HosgeldinizSW dir. Bir önceki programdaki gibi bu programda kullandýðýmýz komutlar public
static void main(String args[]) komutuyla tanýmlanan ana metodun içinde yazýlmýºtýr.

Üçüncü konsol program örneðimizde iki java programýný birleºtireceðiz Ýlk programýmýz
[Link] Program 1.3 de verilmiºtir. Program 1.4 ise [Link]
programýný kapsamaktadýr. BasicWindowMonitor programýný bundan sonraki
programlarýmýzda sýk sýk kullanacaðýz.

Program 1.3 [Link] programý

import [Link].*;

import [Link];

public class BasicWindowMonitor extends WindowAdapter

public void windowClosing(WindowEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

Window w=[Link]();

[Link](false);

[Link]();

[Link](0);

Program 1.4 [Link] programý

import [Link].*;

import BasicWindowMonitor;

public class HosgeldinizSWF

public static void main(String[] args)

JLabel etiket=new JLabel("Java Programýna Hoº geldiniz!");

JFrame cerceve=new JFrame("HosgeldinizSWF");

[Link](new BasicWindowMonitor());

[Link]().add(etiket);

[Link]();

[Link](true);

Burada iki ayrý program bulunmaktadýr. Bu iki programlýk seti çalýºtýrmak için önce iki
programý da derlemek gerekir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
javac [Link]

javac [Link]

sonra ikinci prgramý

java HosgeldinizSWF

komutunu kullanarak çalýºtýrabiliriz. Burada birinci programýn görevi hosgeldinizSWF


penceresini köºedeki X iºaretine basdýðýmýzda pencereyi kapatmaktýr. Bu programý bundan
sonraki birçok uygulamamýzda kullanacaðýz. Programýmýz JFrame denilen grafik pencere
ortamýnda yazýlmýºtýr. Çýktý penceresi :

[Link]

ªekil 1.2 HosgeldinizSWF dosyasýnýn konsol SWING JFrame pop-up grafik çýktýsý
kullanarak görülmesi

Görüldüðü gibi burada yazma iºlemini yaptýrmak için tek bir komut yerine bir komutlar ve
metotlar zinciri kullanýldý. Bu program swing grafik kütüphanesiyle grafik formatýnda çýktý
almanýn çok daha standart bir yoludur. Temel olarak SWING grafik penceresine JLabel sýnýf
tipi etiket eklenerek yazý grafik ekrana aktarýlmýºtýr.

Program 1.5 de yine swing metodu kullanýlmýºtýr. Buradaki küçük farklýlýk bir önceki
HosgeldinizSWF programýnda kullanýlan Jlabel nesnesi üzerinden yazdýrma yerine paint
metodunun kullanýlmýº olmasýdýr. Burada da BasicWindowMonitor programý kullanýlmýºtýr.
fakat bu programý daha önce derlemiº olduðumuzdan tekrar derlememiz gerekmez. Sadece

javac [Link]

komutuyla bu programý derlememiz ve

java Hosgeldiniz1SWF

komutuyla çalýºtýrmamýz kafidir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.5 [Link] programý

import [Link].*;

import [Link].*;

import BasicWindowMonitor;

public class Hosgeldiniz1SWF extends Jframe

public void paint(Graphics g)

[Link]("Java sýnýfýna hoºgeldiniz!",10,40);

public static void main(String[] args)

Hosgeldiniz1SWF cerceve=new Hosgeldiniz1SWF();

[Link](new BasicWindowMonitor());

[Link](160,50);

[Link](true);

Program çýktýsý :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.3 [Link] dosyasýnýn konsol SWING pop-up grafik çýktýsý
kullanarak görülmesi

Burada yazýyý temel olarak bir grafik metodu olan

[Link]("Java sinifina hosgeldiniz!",10,40);

metodunu kullanarak pencere ortamýna aktardýk. bu metodda kullanýlan 10,40 deyimi yazýnýn
grafik ortamýndaki x ve y koordinatlarýný göstermektedir. y koordinatý yukardan aºaðý doðru
tanýmlanmýºtýr.

[Link](160,50);

deyimi açýlan pencerenin boyutunun 160 geniºliðinde ve 50 yüksekliðinde olacaðýný


belirtmektedir.

[Link](true);

terimi ise pencerenin görünmesini (çizilmesini) saðlamaktadýr.

Buraya kadar kullandýðýmýz programlar konsol programlarýydý. Bu programlarda da


gördüðünüz gibi grafik ortamýný yoðun olarak kullanabiliyoruz. Yalnýz programlarýn
çalýºtýrýlmasý konsoldan verilen java isim komutuyla gerçekleºtirilmektedir.

ªimdi de applet grafik ortamýnda çýktý almaya örnek verelim. Ýlk applet programýmýz
[Link] listesi Program 1.6 da verilmiºtir

Program 1.6 [Link] programý

import [Link];
import [Link].*;
public class HosgeldinizApplet extends Applet
{
public void paint(Graphics g)
{
[Link]("Java sýnýfýna hoº geldiniz!",25,35);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bu programý çalýºtýrmak için önce [Link] HTML dili programýný yazmamýz
gerekir

Program 1.7 [Link] HTML kodu

<html >

<applet code="[Link]" width=200 height=50 >

</applet >

</html>

bu html kodunda

<applet code="[Link]" width=200 height=50 >

komutu html'e compile edilmiº olan [Link] dosyasýnýn gösterilmesini


istemektedir. ªüphesiz ayný komut çok daha kompleks bir html dosyasýnýn içinde de ayný
görevi görmek amacýyla kullanýlabilirdi. Programý çalýºtýrmak için

javac [Link]
appletviewer [Link]

komutlarýný konsolda vermemiz yeterlidir. Elbette [Link] dosyasýnýn


yukarýda belirtildiði gibi hazýrlanmýº olmasý da gerekir. Fakat Konsol programlarýndan farklý
olarak sonucu konsol yerine Applette (browser programýnda) görürüz. Ayný sonucu
appletviewer deyimini kullanmadan herhangi bir browser programý çaðýrarak da elde
edebiliriz. Browser programýnda sonucu görebilmek için önce programý açmamýz sonra da
[Link] dosyasýný bularak açmamýz gerekir. Çýktý görüntüsü aºaðýdaki gibi
olacaktýr.

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.4 [Link] dosyasýnýn appletviewer programý kullanarak
görülmesi

Bu programýnda temel olarak bazý farklýlýklar dýºýnda bir önceki programlara benzediðini
gözlemleyebiliriz. Bu programýn temel farký internet ortamýndan herhangi bir bilgisayardan da
(gerekli ayarlama ve kopyelemelerden sonra) görülebilir olmasýdýr.

import [Link];
import [Link].*;

deyimleri java kütüphanesindeki Applet ve pencere(awt) sýnýf grafik programlarýný


programýmýza aktarýr.

public class HosgeldinizApplet extends Applet deyimi HosgeldinizApplet isimli sýnýfý


(class) yaratýr. Bu sýnýf tüm Applet sýnýfýnýn bir devamý olarak tanýmlanmaktadýr ( extends
Applet ) diðer bir deyimle Applet sýnýfýnýn bütün metotlarý extends deyimiyle
HosgeldinizApplet sýnýfýmýzýn içine kopyalanmýºtýr.

public void paint(Graphics g) deyimi appletin grafik olarak çizilmesini saðlar. Bu Metot
Graphics sýnýfý g nesnesini girdi olarak kullanýr. Metotun çýktýsý yoktur.

[Link]( "Java sinifina hos geldiniz!",25,35); Bu terim Appletin x = 25, y=35


noktasýna Java sinifina hos geldiniz! Yazýsýný çizer. DrawString Grafik sýnýfý g nesnesine ait
bir metotdur.

Bu programda temel grafik kütüphanesi olarak abstract window toolkit (awt) kullanýlmýºtýr.
ayrýca konsol programlarýndan farklý olarak bu programda main metodunun kullanýlmadýðýna
da dikkat ediniz. bir program hem applet hem de konsol olarak da oluºturulabilir, yani hem
main metodu olabilir hem de applet (html) ortamýnda çalýºabilir.

Ayný appleti oldukça benzer bir ºekilde SWING kütüphanesini kullanarak da oluºturabilirdik.

Program 1.8 [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];

import [Link];

public class HosgeldinizSWA extends JApplet

public void paint(Graphics g)

[Link]("Java sýnýfýna Hoºgeldiniz",25,25);

[Link]

ªekil 1.5 [Link] dosyasýnýn applet SWING pop-up grafik çýktýsý


kullanarak görülmesi

Bu programdaki

import [Link];

import [Link];

deyimleri java swing kütüphanesindeki JApplet ve pencere(awt) sýnýfýndaki Graphics alt


programlarýný (sýnýflarýný) programýmýza aktarýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class HosgeldinizSWA extends JApplet

deyimi HosgeldinizAppletSWA isimli sýnýfý (class) yaratýr. Bu sýnýf swing sýnýfýndaki JApplet
sýnýfýnýn bir devamý olarak tanýmlanmaktadýr ( extends JApplet). Diðer bir deyimle JApplet
sýnýfýnýn bütün metotlarý extends deyimiyle HosgeldinizAppletSWA sýnýfýmýzýn içine
kopyalanmýºtýr.

Ayný iºi yapmak için bir çok deðiºik program yazdýk. Bazýlarýmýz buna ne gerek vardý, tek bir
ºekilde bu iºi halledemezmi idik diyebilirler. Haklýdýrlarda. Fakat modern bilgisayar dillerinde
kullanýcýlarý da göz önüne almak durumundayýz. Ayný iºi daha renkli ve çeºitli ºekillerde
yapmamýz temel olarak program kullanýcýlarýna daha çeºitli alternatifler sunabilir. Ayný
zamanda diðer programlama alternatiflerine göre daha üstün bir çalýºma ortamý yaratabilir.

ªimdi de programýmýza bir basamak daha ekleyelim ve program kullanýcýlara isimlerini


sorsun, yani ekrandan bir veri girelim. Bunu yapmak için ilk tanýmlayacaðýmýz program
konsol ortamýnda çalýºan [Link] programý olacaktýr. Bu programýn çýktýsý dos
konsol ortamýnda ºekil 1.6 da görülmektedir. Program ekranda isminizi giriniz yazacak, ve
ekranda isim girildikten sonra

java sýnýfýna hosgeldiniz! isim

çýktýsýný verecektir.

Program 1.9 [Link] programý

import [Link].*;

class Hosgeldiniz2 {

public static void main (String args[]) throws IOException

BufferedReader cin=new BufferedReader(new InputStreamReader([Link]));

[Link]("isminizi giriniz : ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String isim=new String([Link]());

[Link]("Java Sinifina Hos Geldiniz! "+isim);

[Link]();

=============================

C:\co\java\prog>java Hosgeldiniz2

isminizi giriniz :

Turhan

Java Sinifina Hos Geldiniz! Turhan

C:\co\java\prog>

=============================

ªekil 1.6 [Link] dosyasýnýn sonuçlarýnýn dos çýktýsý kullanarak görülmesi

Bu programda okuma iºlemini yapmakiçin önce

BufferedReader cin=new BufferedReader(new InputStreamReader([Link]));

Deyimini kullanarak bir okuma kanalý açtýk, sonra

[Link]("isminizi giriniz : ");

String isim=new String([Link]());

Deyimindeki [Link]() komutuyla ismi cin kanalýndan okuyarak isim deðiºkenine


aktardýk.

Ayný iºlemi yapan fakat girdi çýktý sýnýf tanýmlarýnda Ek 1 de verilen Text sýnýfýný kullanan
[Link] programý ºekil 1.10 da verilmiºtir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.10 [Link] programý

import [Link].*;

import Text;

class Hosgeldiniz3 {

public static void main (String args[]) throws IOException

Text cin=new Text();

[Link]("isminizi giriniz : ");

String isim=[Link]();

[Link]("Java Sinifina Hos Geldiniz! "+isim);

[Link] programýnýn çýktýsý da [Link] programýyla ayný olacaktýr.

ªimdi de swing kütüphanesindeki [Link]() kullanarak girdi penceresi


açan ve çýktý penceresine [Link]() kullanarak mesajý yazan
[Link] programýný göreceðiz.

Program 1.11 [Link] programý

import [Link];

class Hosgeldiniz1SW {

public static void main (String args[])

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String isim=[Link]("Lutfen isminizi giriniz :");

[Link](null,"Java Sinifina Hos Geldiniz! "+isim,

"Hosgeldiniz1SW programi",JOptionPane.INFORMATION_MESSAGE);

[Link](0);

Bu programý çalýºtýrmak içinde

javac [Link]

komutuyla bu programý derlememiz ve

java Hosgeldiniz1SW

komutuyla çalýºtýrmamýz gerekecektir. Program girdi ve çýktý pencereleri ºekil 1.7 ve ªekil 1.8
de verilmiºtir.

[Link]

ªekil 1.7 [Link] dosyasýnýn pencere popup girdi penceresi

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.8 [Link] dosyasýnýn pencere popup çýktý penceresi

ªimdi ayný girdi ve çýktý programlamasýný JApplet sýnýfýný kullanarak yapalým. Input (girdi) için
yine JoptionPane sýnýfýndan yararlanacaðýz.

Program 1.12 [Link] programý

import [Link].*;

import [Link];

public class Hosgeldiniz1SWA extends JApplet

String isim;

public void init()

isim=[Link]("isminizi giriniz : ");

public void paint(Graphics g)

[Link]("Java sinifina Hosgeldiniz "+isim,25,25);

Bu programý çalýºtýrmak için compile prosesinde yine

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
javac [Link] komutunu kullanacaðýz. sonra [Link]
dosyasýný oluºturacaðýz.

Program 1.13 Hosgeldiniz1SWA. html programý

<applet code="[Link]" width=300 height=30></applet> <html>

<applet code="[Link]" width=300 height=30>

</applet>

</html>

[Link] dosyasýný herhangi bir browser programýnda görebileceðimiz gibi


javanýn kendi basit browser programý appletviewer da da

appletviewer [Link]

deyimiyle gösterebiliriz. Program girdi ve çýktýsý :

Resim [Link]

ªekil 1.9 [Link] dosyasýnýn applet popup girdi penceresi

Program çýktýsý appletviewer browserinda görüleceði ºekliyle :

Resim [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.10 [Link] dosyasýnýn applet çýktý penceresi

olacaktýr. Son olarak girdi ve çýktý iºlemlerini ayný pencerede yapýldýðý biraz daha kompleks
olan [Link] programýna göz atalým.

Program 1.13 [Link] programý

import [Link].*; // java JApplet sýnýfýný çaðýr

import [Link].*; // java pencere kullanma sýnýflarýný (awt kütüphanesi) çaðýr

import [Link].*; // java pencereyi dinleme sýnýflarýný (awt kütüphanesi) çaðýr

public class Hosgeldiniz5SWA extends JApplet implements ActionListener

//sýnýf deðiºkenleri

JTextArea ciktiAlani; //JTextArea sýnýfý çýktý alaný deðiºkeni

JLabel kutubasligi; //JLabel sýnýfý deðiºkeni (nesnesi) kutubasligi

JTextField kutugirdisi;//JTextfield sinifi degiskeni (nesnesi) kutugirdisi

String isim;

public void init()

//girdi çýktý programlarýnýn içine yazýlacaðý ana pencereyi tanýmla

Container c=getContentPane();

[Link](new FlowLayout());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
isim="Mürºide Gökaðaç";

kutubasligi=new JLabel("isminizi giriniz :");

[Link](kutubasligi);//kutubasligini pencereye yaz

kutugirdisi=new JTextField(10);

[Link](kutugirdisi);//kutuyu pencereye yerlestir

ciktiAlani=new JTextArea();

Color co=[Link]();

[Link](co);

[Link](ciktiAlani);

[Link]("Java sýnýfýna Hoºgeldiniz ! "+ isim);

// kutuya yeni ilave edilecek komutlari bekle

// her yeni komutta actionPerformed metodunu calistir.

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

//pencereden ismi oku

isim=[Link]();

[Link]("Java sýnýfýna hoºgeldiniz ! "+ isim);

repaint();

bu programý da yine

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
javac [Link] deyimiyle compile edip,

appletviewer [Link] komutuyla çalýºtýrýrýz. [Link]


dosyasýnýn yukarýda anlatýldýðý gibi hazýrlanmasý gerekir. Program çýktýsý ºekil 1.11 de
gösterilmiºtir.

Resim [Link]

ªekil 1.11 [Link] dosyasýnýn applet çýktý penceresi

Bu programda verilen komut detaylarýný ºu anda bilmek zorunda deðilsiniz. Benzer iºlemleri
yapmak için ayný formattan yararlanabilirsiniz. Ýlerki bölümlerde grafik programlarýnýn alt
metodlarý detaylý olarak incelenecektir.

1.3 JAVA PROGRAMLAMA DÝLÝ TEMEL DEÐݪKEN TÜRLERÝ

Programlama dillerinde rakamlar bilgisayar belleðinin temel depolama birimlerine yazýlýrlar.


Temel bilgisayar bellek birimi bit olarak adlandýrýlýr. Bir bilgisayar belleðindeki tek bir
transistörden oluºmuºtur. Bu transistörden akým geçiyorsa tansistörün veya bitin bellek
deðeri 1 (bir) veya true (doðru) olarak alýnýr. Eðer akým geçmiyor veya düºük düzeyde bir
akým geçiyorsa transistörün bellek deðeri 0 (sýfýr) veya false(yanlýº) olarak alýnýr. Bilgisayar
bit birimleri bir araya gelerek bilgisayar temel deðiºken türlerini yazabileceðimiz bir sistem
oluºtururlar. Deðiºken türü bilgisayar tarafýndan bilinmelidir, çünkü ayný bit topluluðu bir harfi
simgeleyebileceði gibi bir rakamý da simgeleyebilir. Java dilinde Tablo 1.1 de görülen temel
deðiºken türleri mevcuttur.

Tablo 1.1 Java Temel Deðiºken türleri

Deðiºken Türü Türkçe karºýlýðý Bit Sýnýr Deðerleri


büyüklüðü
boolean Mantýk deðiºkeni 1 true(doðru) , false(yanlýº)
char harf deðiºkeni 16 '\u0000' den '\uFFFF'
byte tam sayý deðiºkeni 8 -128 den 127 e
short tam sayý deðiºkeni 16 -32768 den 32767 e
int tam sayý deðiºkeni 32 -2157483648 den 2147483647
e
long tam sayý deðiºkeni 64 -9223372036854775808 den

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
9223372036854775808 e
float Gerçek sayý 32 -3.40292347e+38 den
deðiºkeni 3.40292347e+38 e
double Gerçek sayý 64 -1.7976931348623157e+308
deðiºkeni den
1.7976931348623157e+308 e

ªimdi bu temel deðiºken türlerinin bazýlarýný daha detaylý inceleyelim:

1.3.1 boolean deðiºken türü

boolean deðiºken türü mantýk iºlemlerinde kullanýlýr. Sadece true veya false deðerleri alýr.
true doðru false yanlýº anlamý taºýr. Mantýk deðiºkenleri ne doðrudan true veya false
deðerleri yüklenebileceði gibi diðer deðiºkenleri mantýk iºlemlerini kullanarak
karºýlaºtýrarakta deðerleri programlarýn içinde hesaplanabilir.

Aºaðýdaki küçük program parçasý mantýk deðiºkeni ilk mantýk deðiskenini tanýmlamakta ve
doðru deðerini bu deðiºkene yüklemektedir.

boolean ilkmantýkdegiskeni ;
ilkmantikdegiskeni=true;

1.3.2 char (harf) deðiºken türü

char deðiºken türü harflerin tanýmlanmasýnda kullanýlýr. Harfler java dilinde ISO Unicode
kodu ile bilgisayara aktarýlýr. Unicode 4 hekzagonal (16 tabanlý) sayýnýn bir araya gelmesiyle
oluºur. Hekzagonal sayý sisteminin onlu ve ikili sayý sistemiyle eºitliði ºöyledir :

Tablo 1.2 Haksagonal(onaltýlý), onlu ve ikili sayý sistemleri eºitlikleri

Heksagonal Onlu Ýkili


0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
A 10 1010
B 11 1011
C 12 1100
D 13 1101
E 14 1110
F 15 1111

ISO Unicode da tanýmlanan '\u0041' kodu 'A' harfi anlamýna gelir. Veya '\u03E1' kodu ''
harfini tanýmlar. ISO Unicode karakter setinin ilk iki rakamý sýfýr olduðunda ASCII karakter
kodunu tanýmlar. Unicode hakkýnda daha ayrýntýlý bilgi için

http:\\[Link]

internet adresini ziyaret edebilirsiniz. Aºaðýdaki küçük program parçacýðý char tipi A1, A2 ve
alpha1,alpha2 deðiºkenlerine A ve  harflerini yüklemektedir.

char A1,A2;
char alpha1,alpha2;
A1='\u0041';
A2='A';
alpha1='\u03E1';
alpha2='a ';

Burada ºunu kaydedelim alpha1 deðiºkenini her ortamda doðru olarak görebiliriz, fakat
alpha2 deðiºkeni bazý ortamlarda doðru olarak görülmeyebilir.

1.3.3 Tam sayý deðiºken türleri (byte, short,int,long)

Tam sayý deðiºkenler hafýzada iºgal ettikleri yere göre byte(8 bit), short(16 bit), int(32 bit) ve
long(64 bit) adýný alýrlar. Bir bitlik hafýzaya sadece iki rakamýn (0 veya 1) yazýlabileceði göz
önüne alýnýrsa örneðin sekiz bitlik byte türü tamsayý deðiºkenine 256 sayý (ikili sayý eºiti
11111111) yazýlabileceði ortaya çýkar. Bitlerden biri + veya - iºareti için kullanýldýðýndan byte
deðiºkeninin sýnýr deðerleri -128den 127 e kadardýr (toplam 256 sayý). Eðer bir tamsayý
deðiºkenin sadece artý deðerlerini kullanmak istersek unsigned terimini kullanýrýz. Örneðin
unsigned byte tipi tamsayý deðiºkenin sýnýr deðerleri 0 dan 256 ya kadardýr. Tamsayý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
deðiºken türleri içinde en fazla kullanýlan int türüdür. Aºaðýdaki küçük program parçacýðýnda
int türü ilktamsayi deðiºkenine 32 rakamý yüklenecektir.

int ilktamsayi;
ilktamsayi=32;

bu iki satýrlýk program parçacýðý tek bir satýr olarak

int ilktamsayi=32;

ºeklinde de yazýlabilirdi.

Javadaki tamsayý deðiºken türleri + ve – deðeri alabilen türlerdir. Örneðin byte deðiºken türü
–128 den +127 e kadar toplam 256 sayý kullanabilir. Eðer – bölgeyi kullanmayacaksak
tamsayý deðiºkenlerin kullaným bölgesini unsigned deyimini kullanarak tamamen artý
bölgeye çekebiliriz. Örneðin

unsigned byte artýbolgetamsayisi;

iºlemiyle tanýmlanan artýbolgetamsayisi deðiºkeni 0 ile 256 arasýnda deðerler alabilir.

1.3.4 Gerçek sayý deðiºken türleri (float, double,long double)

Gerçek sayý sistemleri de 0 ve 1 bitleri kullanýlarak oluºturulabilir. Gerçek sayýlarýn


tamsayýdan küçük kýsýmlarý 2 li tabanda eksi üstler kabul edilerek oluºturulur. Örnek olarak
16 bitlik gerçek bir sayýyý ikili sistemdeki bilgisayar belleðinde ºu ºekilde gösterebiliriz :

Tablo 1.3 gerçek sayý 22.625e-17 yazýlmasýnda kullanýlan onlu ve ikili sayýlarýn bellekte
gerçek sayý organizasyonu örneði

+/- 24 23 22 21 20 2-1 2-2 2-3 2-4 +\- 24 23 22 21 20


+ 16 8 4 2 1 0.5 0.25 0.125 0.0625 - 16 8 4 2 1
0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Yukarýda 16 bitle temsil edilen sayý : +16+4+2+0.5+0.125)*10-(16+1) = 22.625e-17 rakamýdýr.
Gerçek sayý deðiºkende yeterli hassasiyeti saðlayabilmek için genelde 64 bit uzunluðundaki
double deðiºken türü kullanýlýr. Javadaki Matematik kütüphaneleri de double deðiºken türü
için tanýmlanmýºtýr. Aºaðýdaki küçük program parçacýðýnda double türü ilkgercekdegisken
deðiºkenine 22.625e-7 sayýsýný yüklüyoruz.

double ilkgerçekdegisken;
ilkgerceldegisken=22.625e-17;

eðer 64 bit double sayý hassaslýðý yetmezse long double kullanýlabilir. Bu deðiºken türü 128
bit boyutundadýr.

1.4 JAVA NESNESÝ OLARAK TANIMLANMIª TEMEL DEÐݪKENLER

Java nesne temelli bir dildir. Javadaki tüm deðiºken türlerinin nesne kökenli eºdeðerleri
mevcuttur. Bunun yanýnda temel deðiºken türleri arasýnda yer almýyan String gibi sadece
nesne kökenli olarak tanýmlanmýº deðiºken türleri de mevcuttur. ªimdi bunlarýn bir kýsmýný
biraz daha detaylý inceleyelim.

1.4.1 String nesne tipi deðiºkeni

String deðiºkeni yazý yazdýrma iºleri için kullanýlýr. Nesne türü deðiºkendir. Java dilinde char
deðiºken türü kullanýlarak tanýmlanmýº bir nesne tipi deðiºkendir. Aºaðýdaki küçük program
parçacýðýnda bu deðiºken türünün kullanýlmasýný görüyoruz.
String a="ali";
String c="veli";
String d;
d=a+b; // d nin deðeri "ali veli"

[Link](d); // bu satýr ali veli çýktýsý verir

String türü sabitler her zaman " iºaretleri arasýna yazýlýrlar ve + iºaretiyle bir araya
getirilebilirler.

String türü deðiºkenleri tanýmlamak için ayný zamanda

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String a=new String("ali");
String c=new String("veli");
String d=new String();
d=a+b; // d nin deðeri "ali veli"
[Link](d); // bu satýr ali veli çýktýsý verir

Formunu da kullanabiliriz. Ýkinci verdiðimiz form iºlem olarak ilk verilenin tamamen aynýdýr.

String türü bir deðiºkenin toplam boyutu length() alt metoduyla belirlenebilir. Örneðin

String a=new String("ali");

int x=[Link]();

x deðiºkenine 3 deðerini yükleyecektir.

Stringin alt metodu equals() karºýlaºtýrma yapar. Örneðin

String a=new String("ali");

boolean y=[Link](“ali”);

boolean z=[Link](“veli”);

y boolean deðiºkenine true deðerini, z boolean deðiºkenine false deðerini yükleyecektir.

1.4.2 Integer nesne tipi deðiºkeni

Integer deðiºkeni, string deðiºkeni gibi

Integer i;

i=new Integer(3);

veya

Integer i=new Integer(3);

ªeklinde tanýmlanabilir. Integer tanýmý String deðiºkeni üzerinden de tanýmlanabilir. Örneðin

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String s=”15”;

Integer i=new Integer(s);

Tanýmý 15 deðerini yükler. Integer deðerini int deðerine (temel deðiºken) çevirebiliriz.

int x;

Integer y=new Integer(3);

x=[Link](y);

String deðerini int deðerine direkt olarak çevirmek içinse

String s=”15”;

Ýnt x=[Link](s);

kullanýlýr.

int tipi (temel) deðiºkeni String deðiºkenine deðiºtirmek için

int x=3;

String s=[Link](x);

kullanýlýr.

1.4.3 Double nesne tipi deðiºkeni

Double deðiºkeni kullaným olarak Integer deðiºkeninden bir farký yoktur. Ayný tanýmlamalar
Integer yerine Double kullanýlarak yapýlabilir. Deðiºkenler

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double x;

X=new Double(3.66e5);

veya

Double x=new Double(3.66e5);

ªeklinde tanýmlanabilir. Double tanýmý String deðiºkeni üzerinden de tanýmlanabilir. Örneðin

String s=”15.66e-3”;

Double x=new Double(s);

Tanýmý 15.66*10 -3 deðerini yükler. Double deðerini double deðerine (temel deðiºken)
çevirebiliriz.

double x;

Double y=new Double(15.66e-3);

X=[Link](y);

int x;

Double y=new Double(15.66e3);

x=[Link](y);

String deðerini double (temel deðiºken) deðerine direkt olarak çevirmek içinse

String s=”15.25”;

double x=[Link](s);

ݺlemi kullanýlabilir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double tipi (temel) deðiºkeni String deðiºkenine deðiºtirmek için

double x=3.75;

String s=[Link](x);

kullanýlýr.

1.4.4 diðer nesne temelli deðiºken türleri

Object, Long, Float, Boolean, Character, Vector gibi diðer nesne tipi deðiºken türleri de
mevcuttur. Object nesne tipi tüm bu deðiºken nesne tiplerini içinde barýndýran genel bir tiptir.
Tüm nesne tipi deðiºkenlerin bizim için temel avantajý alt metodlarýný kullanarak iºlemler
gerçekleºtime olasýlýklarýdýr. Fakat bu tür deðiºkenler temel deðiºken türlerine göre daha çok
hafýza yeri iºgal ettiklerinden mecbur kalýnmadýkça da kullanýlmamalýdýrlar. Ayrýca Yine
nesne tipi BigDecimal ve BigInteger türleri de hassasiyeti kullanýcý tarafýndan belirlenen
nesne tipi deðiºkenler olarak kullanýlabilirler.

1.5 FÝNAL TERÝMÝ VE SABÝTLER

Java dilinde deðiºken yerine sabit kullanmak istersek tanýmýn baºýna final sözcüðünü
getiririz. Final olarak tanýmlanan sabitlerin bir kere deðerleri verildikten sonra deðiºtirilemez.

Örneðin

final double pi=3.14159;

pi sabitini tanýmlar.

1.6 ARÝTMETÝK ݪLEMLER

Javadaki temel aritmetik iºlemler ºunlardýr :

+ toplama
- çýkarma

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* çarpma
/ bölme
% tamsayýlar için bölmede kalan (modül )

Program 1.15 deki program örneði int tamsayý kullanarak bu aritmetik iºlemlerin yapýlmasýný
göstermektedir.

Program 1.15 : [Link] konsol programý

import [Link].*; //java girdi cikti sinifini cagir


class Aritmetik
{
public static void main(String args[])
{
int sayi1,sayi2;
int toplama,cikarma,carpma,bolme,kalan;
sayi1=2;
sayi2=3;
toplama = sayi1+sayi12;
cikarma = sayi1-sayi2;
carpma = sayi1*sayi2;
bolme=sayi1/sayi2;
kalan=sayi1%sayi2;
[Link]("sayi1 + sayi2 ="+toplama);
[Link]("sayi1 - sayi2 ="+cikarma);
[Link]("sayi1 * sayi2 ="+carpma);
[Link]("sayi1 / sayi2 ="+bolme);
[Link]("sayi1 % sayi2 ="+kalan);
}
}

[Link] konsol programý çýktýsý :

sayi1 + sayi2 =5
sayi1 - sayi2 =-1
sayi1 * sayi2 =6
sayi1 / sayi2 =0
sayi1 % sayi2 =2

ºeklinde olacaktýr. Swing grafik kütüphanesi çýktýsý pratiði yapmak amacýyla ayný programý
swing JoptionPane çýktýsý ile yazarsak :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.16 : [Link] konsol programý

import [Link]; //java swing cikti sinifini cagir

class AritmetikSW

public static void main(String args[])

String s;

int sayi1,sayi2;

int toplama,cikarma,carpma,bolme,kalan;

sayi1=[Link](

[Link]("birinci sayýyý giriniz : ")

);

sayi2=[Link](

[Link]("ikinci sayýyý giriniz : ")

);

toplama = sayi1+sayi2;

cikarma = sayi1-sayi2;

carpma = sayi1*sayi2;

bolme = sayi1/sayi2;

kalan = sayi1%sayi2;

s="";

s=s+sayi1+" + "+sayi2+" = "+toplama+"\n";

s=s+sayi1+" - "+sayi2+" = "+cikarma+"\n";

s=s+sayi1+" / "+sayi2+" = "+carpma +"\n";

s=s+sayi1+" * "+sayi2+" = "+bolme +"\n";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s=s+sayi1+" % "+sayi2+" = "+kalan +"\n";

[Link](null,s,

"Aritmetik islemleri",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Bu programýn çýktýsý :

[Link]

ªekil 1.12 [Link] dosyasýnýn JOptionPane çýktý penceresinde görünümü

Java ve C dillerinde temel aritmetik iºlemlerinin yaný sýra bu iºlemlerin kýsaltýlmýº sembolleri
de oldukça sýk kullanýlýr. Bu iºlemler :

++ bir ilave et
-- bir çýkar
+= sað taraftaki rakamý ilave et
-= sað taraftaki rakamý çýkar
*= sað taraftaki rakamla çarp
/= sað taraftaki rakama böl
%= sað taraftaki rakama bölüp kalanýný al iºlemleridir.

++ ve -- iºlemleri deðiºkenden önce veya sonra gelebilir. Bu iki ºeklin deðiºken tek
baºlarýna kullanýldýðýnda bir farklýlýklarý yoktur, fakat ikinci bir deðiºkenle birlikte tek bir
deyimde kullanýldýklarýnda ikinci deðiºkenin deðeri deðiºir. Aºaðýdaki iki program parçacýðýna
göz atalým.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
++ iºlemcisinin deðiºkenden sonra kullanýlmasý

int a=2;
int c;
c=a++; // a nýn deðeri 3 c nin deðeri 2

++ iºlemcisinin deðiºkenden önce kullanýlmasý

int a=2;
int c;
c=++a; // a nýn deðeri 3 c nin deðeri 3

a deðiºkeninin deðeri baºlangýçta 2 ise görüldüðü gibi hem ++a iºleminde hem de a++
iºleminde deðeri 3 e çýkmaktadýr. Ancak c deðiºkeninin deðeri c=a++ iºleminde 2 olarak
kalýrken (önce deðeri yükle sonra arttýr), c=++a iºleminde 3 olmaktadýr(önce arttýr, sonra
deðeri yükle). ++ ve -- iºlemleri genelde tam sayý deðiºkenler için kullanýlýr.

Program 1.17 da aritmetik iºlemleri gösteren bir program verilmiºtir. Bu programýn sonuçlarý
da altta verilmektedir. Programý basamak basamak takip ederek sonuçlarýn doðruluðunu
elde hesaplayarak kontrol edebilirsiniz.

Program 1.17 : [Link] aritmetik iºlem örneði

import [Link].*;
public class Aritmetik1
{ public static void main(String[] args)
{
int sayi1=1;
int sayi2=2;
sayi1+=sayi2;
[Link]("sayi1+= : "+ sayi1);
sayi1-=sayi2;
[Link]("sayi1-= : "+ sayi1);
sayi1*=sayi2;
[Link]("sayi1*= : "+ sayi1);
sayi1/=sayi2;
[Link]("sayi1/= : "+ sayi1);
}
}

Aritmetik1 sýnýfýnýn sonuçlarý

sayi1+= : 3
sayi1-= : 1
sayi1*= : 2
sayi1/= : 1

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1.7 JAVADA MANTIKSAL ݪLEMLER

Javadaki temel deðiºken türlerine bakarken boolean türü deðiºkenleri tanýmlamýºtýk. Tam
sayý ve gerçek deðiºkenlerin aritmetik iºlemlerde kullanýlabildiði gibi boolean deðiºkenler de
mantýksal iºlemlerde kullanýlabilirler. Mantýksal iºlem iºlemcileri ºunlardýr :

Tablo 1.3 Java dilindeki mantýksal iºlemler ve anlamlarý

Mantýksal ݺlemci Anlamý


&& ve
|| veya
> büyüktür
< küçüktür
== eºittir
>= büyük ve eºittir
<= küçük ve eºittir
! deðildir
!= eºit deðildir

Mantýksal iºlemleri pekiºtirmek amacýyla Program 1.18 de bir örnek verilmiºtir.

Program 1.18 : Java mantýksal iºlemleri örnek problemi [Link]

import [Link].*;

public class booleanvar

{ public static void main(String[] args)

boolean b1,b2;

b1=true;

b2=false;

[Link]("b1 : "+ b1+" b2 : "+b2);

[Link]("b1 && b2 "+ (b1&&b2) );

[Link]("b1 || b2 "+ (b1||b2) );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int sayi1,sayi2;

sayi1=1;

sayi2=2;

[Link]("sayi 1 : "+sayi1);

[Link]("sayi 2 : "+sayi2);

b1=(sayi1 > sayi2);

[Link](sayi1+" > "+sayi2+" "+ b1 );

b1=(sayi1 < sayi2);

[Link](sayi1+" < "+sayi2+" "+ b1 );

b1=(sayi1 == sayi2);

[Link](sayi1+" == "+sayi2+" "+ b1 );

b1=(sayi1 >= sayi2);

[Link](sayi1+" >= "+sayi2+" "+ b1 );

b1=(sayi1 <= sayi2);

[Link](sayi1+" <= "+sayi2+" "+ b1 );

b1=(sayi1 != sayi2);

[Link](sayi1+" != "+sayi2+" "+ b1 );

Aºaðýda bu örnek problemin (Program 1.5) sonucunu verilmektedir. Satýr satýr proðramý takip
ederek sonucularý kontrol ediniz.

b1 : true b2 : false

b1 && b2 false

b1 || b2 true

sayi 1 : 1

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi 2 : 2

1 > 2 false

1 < 2 true

1 == 2 false

1 >= 2 false

1 <= 2 true

1 != 2 true

1.8 JAVA DÝLÝNDE BÝT KOMUTLARI VE ݪLEMLERÝ

Bit iºlemi doðrudan doðruya bitler üzerinde yapýlan iºlemlerdir. Bit iºlemleri genellikle veri
trasferi (bilgisayardan bilgisayara veya çeºitli kontrol sistemlerinde) iºlemlerinde kullanýlýr.
Javadaki bit iºlemleri Tablo 1.4 de verilmiºtir.

Tablo 1.4 Java dilindeki bit iºlemleri ve anlamlarý

Bit ݺlemci Anlamý


& AND ve
| OR veya
^ XOR
~ Ters bit (NOT)
>> Bir bit saða kay
<< Bir bit sola kay

Bit iºleminde ne olduðuna bir örnekle bakalým.

int x=7;

x=x<<1;

bit iºleminde x deðiºkeninin bit yapýsý sola doðru bir bit kaydýrýlmýºtýr. 7 deðerinin bit
eºdeðeri

00000000000000000000000000000111

ºeklindedir. Sola doðru bir bit kaydýðýmýzda

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
00000000000000000000000000001110

bit yapýsý oluºacaktýr. Bu yapýnýn int karºýlýðý 14 dür.

int x=7;

x=x<<1;

x=~x;

iºlemi

11111111111111111111111111110001

deðerini verecektir.

Küçük bir programda bit iºlemlerinin bazýlarýný kullanalým.

Program 1.19 : Java bit iºlemleri örnek problemi [Link]

class bitislemi{

public static void main (String args[])

int x=7;

[Link]("x = "+x);

x= x<<1;

[Link]("x = "+x);

x= x<<1;

[Link]("x = "+x);

x= x>>2;

[Link]("x = "+x);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x= ~x;

[Link]("x = "+x);

bu programýn sonucu

x=7

x = 14

x = 28

x=7

x = -8

ºeklinde olacaktýr. Çýkan sonuçlarýn bit eºdeðerlerini kontrol ediniz. Bit iºlemleri aslýnda
bilgisayarýn ve digital elektronik devrelerin temel iºlemleridir. Bu iºlemler assembler dillerinin
de temel iºlemlerini teºkil ederler.

1.9 JAVA DÝLÝNÝN TEMEL KOMUTLARI

Bilgisayar dillerinde deðiºkenlerden ve iºlemlerden sonraki en temel yapý temel dil


komutlarýdýr. ªimdi bu komut yapýlarýna tek tek göz atalým.

1.9.1 if - elseif - else mantýksal karºýlaºtýrma yapýsý

Bu yapý programda karar mekanizmalarýný oluºturmak için kullanýlýr. Temel yapýsý :

if( boolean deðiºken yada sabit)


{ boolean degiºken veya sabitin deðeri true olduðunda yapýlan iºlemler}

else if( boolean deðiºken yada sabit)


{ boolean degiºken veya sabitin deðeri true olduðunda yapýlan iºlemler}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else
{ yukardaki boolean deðiºken vede sabitlerin hiçbiri true deðerine eºit deðilse
yapýlacak olan iºlemler}

else if yapýsý probleme göre istenilen sayýda olabilir, if ve else yapýsý sadece bir tane olarak
kullanýlýr.

if yapýsý java ve C dillerinde kýsaltýlmýº bir ºekilde de yazýlabilir bu form

deðiºken adý = ( boolean deðiºken yada sabit ? boolean true ise deðiºken deðeri :
boolean false ise deðiºken deðeri );

ºeklindedir. Küçük bir örnek programla if-elseif-else yapýsýnýn çalýºmasýný inceleyebiliriz.

Program 1.20 : if yapýsýný gösteren [Link] programý

import [Link].*; // giris çikis


import Text; // okuma sinifi

class ifyapisi
{
public static void main (String args[]) throws IOException
{
double not;
//
Text cin=new Text();
not=[Link]();
if( not ==90)
{ [Link]("A"); }
else if(not ==75)
{ [Link]("B"); }
else if(not ==60)
{ [Link]("C"); }
else if(not ==50)
{ [Link]("D"); }
else if(not ==40)
{ [Link]("E"); }
else
{ [Link]("F"); }
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Ýf yapýsý programýnýn çýktýsý :

Ogrencinin notunu giriniz :


53
D

Bu programda öðrenci notu ekrandan girdi olarak girilmektedir. Bunu saðlayabilmek için önce

Text cin=new Text();


komutunu kullanarak ekrandan girdi girme kanalý olan cin deðiºkeni tanýmlanmakta, sonra bu
kanal üzerinden not=[Link]() ;
deyimiyle ekrandan girilen deðer not deðiºkenine aktarýlmaktadýr. Okuma iºlemi normalde
daha detaylý tanýmlar gerektirir. Bu tanýmlar ºimdilik Text sýnýfýnýn arkasýnda verilmiºtir. Text
sýnýfýnýn detaylý Yeri geldiðinde okuma iºlemi daha detaylý olarak incelenecektir.

not deðiºkeni bir ekran girdisi olduðundan girilen nota göre bilgisayar A,B,C,D,E veya F
notlarýndan birini verecektir. Bu ilk programýmýzda if ve else if parantezlerinin içinde direk
olarak boolean sabit kullanýlmýºtýr. Parantez içi boolean deðiºken de olabilir.

Ayný program kodunu java swing kütüphanesi JoptionPane alt sýnýfýný kullanarak yazacak
olursak :

Program 1.21 : if yapýsýný gösteren [Link] programý

import [Link];

class ifyapisiSW

public static void main (String args[])

double not;

//JOptionPane her zaman String turu çýktý verir. Bunu [Link]()

//kullanarak double deðerine çevirebiliriz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
not=[Link]([Link]("Ogrencinin notunu giriniz (0-
100) : "));

if( not >= 90)

{ [Link](null,"A","Ogrenci
notu",JOptionPane.PLAIN_MESSAGE);}

else if(not >=75)

{ [Link](null,"B","Ogrenci
notu",JOptionPane.PLAIN_MESSAGE);}

else if(not >=60)

{ [Link](null,"C","Ogrenci
notu",JOptionPane.PLAIN_MESSAGE);}

else if(not >=50)

{ [Link](null,"D","Ogrenci
notu",JOptionPane.PLAIN_MESSAGE);}

else if(not >=40)

{ [Link](null,"E","Ogrenci
notu",JOptionPane.PLAIN_MESSAGE);}

else

{ [Link](null,"F","Ogrenci
notu",JOptionPane.PLAIN_MESSAGE);}

[Link](0);

Program çýktýsý :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

Aºaðýdaki program parçasýnda a degiskeninin degeri : true yazýsýný yazdýracaktýr.

boolean a=true;
if(a)
{[Link]("a degiºkeninin deðeri : true");}
else
{[Link]("a degiºkeninin deðeri : false");}

if - elseif - else yapýlarý iç içe girmiº yapýlar veya basit mantýklarýn && (ve) , || (veya)
iºlemleriyle baðlanmasýyla daha kompleks mantýksal ºartlar oluºturulabilir.

Ýç içe geçmiº if yapýsý kullanýlarak mantýksal kontrol prosesi alttaki program parçasýnda
açýklanmýºtýr :

Ýç içe geçmiº if yapýsý

double x = 7.0;
double y = 3.0;
if(x > 5)
{
if(y > 5) { [Link]("x ve y besten buyuktur.");}
elseif(y==5) { [Link]("x besten buyuktur ve y bese esittir.");}
else { [Link]("x besten buyuktur ve y besten kucuktur.");}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else
{
if(y > 5) { [Link]("x besten kucuktur veya esittir ve y 5 den buyuktur.");}
elseif(y==5) { [Link]("x besten kucuktur veya esittir ve y bese esittir.");}
else { [Link]("x besten kucuktur veya esýttýr ve y besten kucuktur.");
}
}

Burada ise && terimiyle baðlanmýº bir program parçacýðý görüyorsunuz.

&& (ve) deyimiyle baðlanmýº if yapýsý

double x = 7.0;

double y = 3.0;

if(x 5 && y 5) { [Link]("x ve y besten buyuktur.");}


else if(x>5 && y==5) { [Link]("x besten buyuktur ve y bese esittir.");}
else if(x>5 && y<5) { [Link]("x besten buyuktur ve y besten kucuktur.");}
else if(x<5 && y>5) { [Link]("x besten kucuktur ve y 5 den buyuktur.");}
else if(x < 5 && y==5) { [Link]("x besten kucuktur ve y bese esittir.");}
}
}

Yukarýdaki program parçacýklarýndan da görebildiðimiz gibi her türlü kompleks mantýðý


bilgisayar programlarýna aktarmamýz mümkündür. If - else if - else yapýlarý programlamada
en çok kullanýlan mantýk aktarýmý yapý taºlarýdýr.

1. 9.2 while tekrarlama yapýsý

While en çok kullanýlan tekrarlama yapýlarýndan biridir. ( ) içindeki boolean terim true (doðru)
olduðu sürece yeniden iºlemi döndürür. Eðer programda boolean iºlemini sonuçlandýracak
bir ifade yoksa sonsuza dek veya program baºka bir yöntemle durdurulana dek devam eder.

while( boolean deðiºken yada sabit)


{ boolean degiºken veya sabitin deðeri true olduðunda yapýlan iºlemler}

örneðin :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
while(true)
{ [Link]("Bu yazý surekli olarak tekrar edecektir");}

yapýsý sonsuz bir döngü oluºturur. Aºaðýdaki program yapýsý ise sayý 1000 den büyük veya
1000 e eºit olduðunda durur.

int sayý=2;
while(sayý <= 1000)
{ sayý *= 2; }

While tekrarlama yapýsý bazen biraz daha farklý bir yapý içinde verilebilir. Aºaðýda gösterilen
bu yeni yapý, bir önceki while yapýsýna göre daha ender kullanýlar. do..while yapýsýnýn while
yapýsýndan temel farký, döngünün içine en az bir kere girilme zorunluðunun olmasýdýr.

do
{
boolean degiºken veya sabitin deðeri true olduðunda yapýlan iºlemler.
Bu paranteze boolean deðerinin ne olduðuna bakýlmaksýzýn en az bir kere girilir
}
while( boolean deðiºken yada sabit)

Program 1.22 de dowhile döngüsünün kullanýldýðý [Link] programý


görülmektedir

Program 1.22 : do..while döngüsü örneði [Link] programý

import [Link];
import [Link];

public class dowhileApplet extends Applet


{
public void paint(Graphics g)
{
int saydirici=1;
int x=25;
do {
[Link]([Link](saydirici),x,25);
x += 15;
} while(++saydirici <= 10);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu program calýstýðýnda appletviewer ªekil 1.15 deki sonucu verecektir.

[Link]

ªekil 1.15 [Link] dosyasýnýn appletviewer programý kullanarak


görülmesi

Ayný programý Swing JoptionPane çýktýsý kullanarak yazalým :

Program 1.23 : do..while döngüsü örneði [Link] programý

import [Link].*;

public class dowhileSW

public static void main(String args[])

int saydirici=1;

String s="";

do {

s=s+[Link](saydirici)+" ";

} while(++saydirici <= 10);

[Link](null,s,

"do-while yapisi",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

Program çýktýsý :

[Link]

ªekil 1.16 [Link] dosyasýnýn [Link] metodu


kullanarak görülmesi

1.9.3 for tekrarlama yapýsý

For tekrarlama yapýsý genellikle sayýlarý belli bir düzen içinde arttýrmak için kullanýlýr. Genel
yapýsý aºaðýda gösterilmiº[Link] sayý saydýrmaya dönük uygulamalarda en
fazla kullanýlan yapýdýr.

for tekrarlama yapýsý

for(baslangýç deðerleri ; boolean deðiºken veya sabiti ; tekrarlama deðiºkeni artýºý)


{ boolean deðiºken veya sabiti true (doðru) olduðunda yapýlan iºlemler }

Program 1.23 de 1 den yüze kadar sayýlarýn toplamýný hesaplayan bir konsol programý
verilmiºtir.

Program 1.24 : birden 100 e kadar sayýlarýn toplamýný hesaplayan [Link]


konsol programý

import [Link].*;
class foryapisi
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String args[])
{
int toplam=0;
for(int sayi=1;sayi<=100;sayi++)
{ toplam+=sayi;}
[Link]("1 den 100 e sayilarin toplami : "+toplam);
}
}

[Link] kompile edildiðinde

1 den 100 e sayilarin toplami : 5050

sonucunu verecektir.

Program 1.25 : [Link] applet programý

import [Link]; // java applet sinifi


import [Link]; // Java grafik sinifi

public class faizOraniApplet extends Applet


{
public void paint( Graphics g)
{
double ilkYatanPara=100e6;//yuz milyon lira
double paraMiktari=ilkYatanPara;
double faizOrani=0.85;//yuzde seksenbes
int y=40;
[Link]("Yil",25,25);
[Link]("paraMiktari",100,25);
for(int yil=1; yil<=10 ; yil++)
{
paraMiktari*=(1.0+faizOrani);
[Link](" "+yil,25,y);
[Link](" "+paraMiktari,100,y);
// not: drawString terimi daima String türü
// degiskenle baslamalý veya string e dönüºtürülmelidir.
y+=15;
} // for döngüsünün sonu
} // paint metotunun sonu
} // faizOraniApplet sinifinin son

Program 1.24 de yine for döngüsünün uygulamasý konusunda bir örnek problem verilmiºtir.
Programý nasýl çalýºtýðýný inceleyiniz. Bu programda yýllýk bileºik faizler on yýl için
hesaplanmaktadýr. Ýlk iki faiz oranýný elde hesaplayýnýz. Programý çalýºtýrarak sonuçlarý
kontrol ediniz. Program sonuçlarý ªekil 1.14 de listelenmiºtir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 1.17 [Link] appletinin appletviewer browser programýnda


görünümü

Program 1.26 : [Link] applet programý

import [Link]; //JOptionPane sýnýfýný çaðýr

public class faizOraniSW

public static void main( String args[])

double ilkYatanPara=100e6;//yuz milyon lira

double paraMiktari=ilkYatanPara;

double faizOrani=0.85;//yuzde seksenbes

int y=40;

String s="Yil Para Miktari\n";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int yil=1; yil<=10 ; yil++)

paraMiktari*=(1.0+faizOrani);

s=s+yil+" "+paraMiktari+"\n";

} // for döngüsünün sonu

[Link](null,s,"faiz orani",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

} // main metodunun sonu

} // faizOraniSW sinifinin sonu

[Link]

ªekil 1.18 [Link] program çýktýsýnýn swing JoptionPane .


showMessageDialog metodu kullanýlarak görüntülenmesi

1.9.4 switch - case yapýsý

Switch case yapýsý çeºitli alternatifler içeren bir tablodan seçme yapma türü iºlerde kullanýlýr.
Temel yapý:

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
switch - case yapýsý:

switch( degiºken ismi)


{
case deðiºkenin alacaðý deger :
bu deðer oluºtuðunda yapýlacak iºlemler
break; // bu deyim döngünün bitmesini saðlar.

case deðiºkenin alacaðý baºka bir deðer :


bu deðer oluºtuðunda yapýlacak iºlemler
break; // bu deyim döngünün bitmesini saðlar.

................

default :
eðer yukarýdaki case kutularýndan hiçbirine girilemediyse
yapýlacak iºlemler
break;
}

ºeklindedir. Switch yapýsýndan sonra deðiºken ismi gelir. Her case deyiminden sonra ise
deðiºkenin alacaðý yeni bir deðer alternatifi verilir. Eðer switch yapýsýnda verilen alternatif
hiçbir case bloðunda tanýmlanmamýºsa default bloðuna gider ve buradaki iºlemler
gerçekleºtirilir. Case ve default bloklarý break deyimi ile sona erer. break deyimi herhangi bir
döngü yapýsýndan döngü bitmeden çýkma amacýyla da kullanýlabilir. break yapýsýyla
döngünün dýºýna çýkma amacýyla diðer döngü yapýlarýnda da kullanýlabilir(if, for while gibi),
fakat bu tür break kullanýlarak döngü dýºýna çýkýlmasý yapýsal programlama teknikleri
tarafýndan tavsiye edilmez. Bilgisayar listelerini yapýsallýktan uzaklaºtýrýp, spagetti
programlama dediðimiz karmakarýºýk programlamaya yol açabilir. Döngü yapýlarýndan
standart kontrollarý yoluyla çýkýlmasý tavsiye edilir.

int i=0;

while(true)
{

i++;

if(i==3) break;

[Link]("Bu yazý uc kere tekrar edecektir");}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.27 de verilen [Link] proðramý switch deyiminin nasýl kullanýldýðýný
göstemektedir. Programcýlara göre kullanýlma sýklýðý deðiºebildiði varsayýlsa bile, switch
yapýsý ºu ana kadar bahsedilen yapýlar içinde en az kulanýlanýdýr.

Program 1.27 switch - case yapýsý örneði [Link] applet programý . Bu


program öðrenci notlarýný appletden girer ve her nottan kaç tane girildiðini listeler.

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir

public class switchApplet extends Applet implements ActionListener


{
//sinif degiskenleri
Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi
TextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi
char not;
int Asayisi=0,Bsayisi=0,Csayisi=0,Dsayisi=0,Esayisi=0,Fsayisi=0;
// pencereyi baslatma metotu
public void init()
{
kutubasligi=new Label("Ogrencinin notunu giriniz (A B C.. : ");
add(kutubasligi);//kutubasligini pencereye yaz
kutugirdisi=new TextField(5);
add(kutugirdisi);//kutuyu pencereye yerlestir
// kutuya yeni ilave edilecek komutlari bekle
// her yeni komutta actionPerformed metotunu calistir.
[Link](this);
}
public void paint(Graphics g)
{
[Link]("Her harf notun toplami : ",25,40);
[Link]("A : "+Asayisi,25,55);
[Link]("B : "+Bsayisi,25,70);
[Link]("C : "+Csayisi,25,85);
[Link]("D : "+Dsayisi,25,100);
[Link]("E : "+Esayisi,25,115);
[Link]("F : "+Fsayisi,25,130);
}

// girdi alanindaki olan olaylari dinleme metotu


public void actionPerformed(ActionEvent e)
{
//ogrencinin notunu pencereden oku
String not1=[Link]();
not=[Link](0);
showStatus(""); // sonuç bölgesindeki yazýyý sil
[Link](""); //kutudaki harfi sil
switch(not)
{
case 'A': case 'a':

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
++Asayisi;
break;
case 'B': case 'b':
++Bsayisi;
break;
case 'C': case 'c':
++Csayisi;
break;
case 'D': case 'd':
++Dsayisi;
break;
case 'E': case 'e':
++Esayisi;
break;
case 'F': case 'f':
++Fsayisi;
break;
default:
showStatus("yanlýs not tanýmlandý yani bir not giriniz.");
break;
} // switch deyiminin sonu
repaint();//pencereyi yeniden paint metotuna gore ciz
}

[Link]

ªekil 1.19 switch - case yapýsý örneði [Link] appletinin sonuçlari

Program 1.28 switch - case yapýsý örneði [Link] swing applet programý . Bu
program öðrenci notlarýný appletden girer ve her nottan kaç tane girildiðini listeler.

Ýmport [Link].*; // java swing JApplet sinifini cagir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*; // java pencere awt sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

public class switchSWA extends JApplet implements ActionListener

//sinif degiskenleri

JLabel kutubasligi; // Label sinifi degiskeni (nesnesi) kutubasligi

JTextField kutugirdisi; // Textfield sinifi degiskeni (nesnesi) kutugirdisi

JTextArea ciktiAlani; // çýktýyý tanýmlayacak alaný yaratýr

char not;

int Asayisi=0,Bsayisi=0,Csayisi=0,Dsayisi=0,Esayisi=0,Fsayisi=0;

// pencereyi baslatma metodu

public void init()

Container c=getContentPane();

kutubasligi=new JLabel("Ogrencinin notunu giriniz (A B C.. : ");

[Link](kutubasligi,[Link]);//kutubasligini pencereye yaz

kutugirdisi=new JTextField(5);

[Link](kutugirdisi,[Link]);//kutuyu pencereye yerlestir

ciktiAlani=new JTextArea("\n\n\n ");

[Link](ciktiAlani,[Link]);

[Link](" ");

// kutuya yeni ilave edilecek komutlari bekle

// her yeni komutta actionPerformed metodunu calistir.

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

//ogrencinin notunu pencereden oku

String cikti="\n";

String not1=[Link]();

not=[Link](0);

showStatus(""); // sonu‡ b”lgesindeki yaz�y� sil

[Link](""); //kutudaki harfi sil

switch(not)

case 'A': case 'a':

++Asayisi;

break;

case 'B': case 'b':

++Bsayisi;

break;

case 'C': case 'c':

++Csayisi;

break;

case 'D': case 'd':

++Dsayisi;

break;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
case 'E': case 'e':

++Esayisi;

break;

case 'F': case 'f':

++Fsayisi;

break;

default:

showStatus("yanlis not tanimlandi yani bir not giriniz.");

break;

} // switch deyiminin sonu

cikti=cikti+"Her harf notun toplami : \n";

cikti=cikti+"A : "+Asayisi+"\n";

cikti=cikti+"B : "+Bsayisi+"\n";

cikti=cikti+"C : "+Csayisi+"\n";

cikti=cikti+"D : "+Dsayisi+"\n";

cikti=cikti+"E : "+Esayisi+"\n";

cikti=cikti+"F : "+Fsayisi+"\n";

[Link](cikti);

repaint();//pencereyi yeniden paint metoduna gore ciz

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.20 switch - case yapýsý örneði [Link] swing appletinin sonuçlari

1.10 ARÝTMETÝK ݪLEMLERDE DEÐݪKEN TÜRÜ DEÐݪTÝRME (CASTÝNG)


OPERASYONU

C veya C++ dilinde bir deðiºken türünden deðiºkeni diðer deðiºken türünden deðiºkene direk
olarak atama mümkündür. örneðin

char a='x';

int b=a;

iºlemi c++ da geçerli bir iºlemdir. Javada ise bu iºlem hata verir. fakat ayný islem

char a='x';

int b=(int)a;

ºeklinde gerçekleºtirilebilir (int) deyimi orijinal olarak char olarak tanýmlanan a deðiºkeninin
deðerini int türüne dönüºtürmüº sonra da in türünden b deðiºkenine yüklemiºtir. Bu dönüºüm
iºlemlerini tüm deðiºken türleri için kullanabiliriz, yalnýz burada programcýnýn çok dikkatli
olmasý ve deðiºken türlerini, ve sýnýrlarýný iyi tanýmasý gerekmektedir. Deðiºken türlerini
deðiºtirirken bazý bilgiler kaybolacaðý gibi hiç istemediðimiz bir sonuca ulaºma olasýlýðýmýz da
mevcuttur.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1.11 SAYI DEÐÝL VE SONSUZ SONUÇLARI

Java gerçek sayý deðiºken türleri sayý deðil (NaN ) ve artý sonsuz (Pozitif infinity ) ve eksi
sonsuz(negative infinity ) sonuçlarý verebilirler. sayý deðil (NaN) sonucu sýfýr bölü sýfýr, sýfýr
çarpý sonsuz gibi iºlemlerden çýkar. sonsuz iºlemi ise sayi bölü sýfýr gibi iºlemlerden çýkar. Bu
iºlemler sadece float ve double deðiºkenleri için tanýmlýdýr. Tamsayý deðiºkenler sýfýra
bölünemezler.

1.12 ALIªTIRMALAR

1. Not defteri programýný veya diðer herhangi bir editörü kullanarak [Link]
programýný incele. Konsole (MS DOS veya UNIX console) ortamýnda aºaðýdaki komutlarý
kullanarak çalýºtýr :

javac [Link]
java Hosgeldiniz

Program 1.1 : Hoº[Link] konsol programý

import [Link].*;
class Hosgeldiniz
{
public static void main (String args[])
{
[Link]("Java Sinifina Hos Geldiniz!")
}
}

2. Not defteri programýný kullanarak [Link] proðramýný incele. Yýne not


defteriyle [Link] programýný incele. Konsole (MS Dos) ortamýnda aºaðýdaki
komutlarý kullanarak çalýºtýr:

javac [Link]
appletviewer [Link]

Program 1.2 : [Link]

import [Link];
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class HosgeldinizApplet extends Applet
{
public void paint(Graphics g)
{ [Link]("Java sinifina hos geldiniz!",25,25); }
}

3. Not defteri programýný kullanarak [Link] programýný incele. Konsole (MS Dos)
ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac [Link]
java ikitamsayitopla

Program 1.29 : [Link]

import [Link].*; //giriº çýkýº


import Text;

class ikitamsayitopla
{
public static void main (String args[]) throws IOException
{
int sayi1,sayi2;
int toplam=0;
//
Text m=new Text();
[Link]("Bir tam sayi giriniz : ");
sayi1=[Link]();
[Link]("Ikinci bir tam sayi girermisiniz : ");
sayi2=[Link]();
toplam=sayi1+sayi2;
[Link]("Iki tam sayinin toplami : "+toplam);
}
}

5. [Link]

Not defteri programýný kullanarak [Link] ve [Link] programýný


ve incele. Konsole (MS DOS) ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac [Link]
appletviewer [Link]

Program 1.30 : [Link]

import [Link].*; //giris cikis

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class ikitamsayitoplaSWA extends JApplet

int toplam;

public void init()

int sayi1,sayi2;

toplam=0;

//

sayi1=[Link]([Link](" Bir tam sayi giriniz : "));

sayi2=[Link]([Link](" Ikinci bir tam sayi giriniz : "));

toplam=sayi1+sayi2;

public void paint(Graphics g)

[Link](15,10,270,20);

[Link]("iki sayinin toplami : "+toplam,25,25);

6. Not defteri programýný kullanarak [Link] programýný incele. Yine not


defteriyle [Link] programýný incele. Konsole (MS Dos) ortamýnda aºaðýdaki
komutlarý kullanarak calýºtýr :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
javac tamsayitoplaApplet .java
appletviewer [Link]

Program 1.31 [Link] programý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir

public class tamsayitoplaApplet extends Applet implements ActionListener


{
//sinif degiskenleri

Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi


TextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi
int sayi;
int toplam;
// pencereyi baslatma metotu

public void init()


{
kutubasligi=new Label("Bir tamsayi giriniz : ");
add(kutubasligi);//kutubasligini pencereye yaz
kutugirdisi=new TextField(10);
add(kutugirdisi);//kutuyu pencereye yerlestir
toplam=0;
// kutuya yeni ilave edilecek komutlari bekle
// her yeni komutta actionPerformed metotunu calistir.
[Link](this);
}

// girdi alanindaki olan olaylari dinleme metotu

public void actionPerformed(ActionEvent e)


{
//sayiyi pencereden oku
Integer sayi1=new Integer([Link]() );
sayi=[Link]();
// sayiyi okutma islemini asagidaki deyimle de yapabiliriz
// sayi=[Link]( [Link]() );
toplam+=sayi; // veya toplam=toplam+sayi;
repaint();//pencereyi yeniden paint metotuna göre ciz
}

public void paint(Graphics g)


{ [Link]("Su ana kadarki sayilarin toplami : "+toplam,25,50); }

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.21 [Link] appletinin sonuçlari

7. [Link]

Not defteri programýný kullanarak [Link] ve [Link] programýný


ve incele. Konsole (MS DOS) ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac [Link]
appletviewer [Link]

Program 1.32 [Link] programý :

import [Link].*; //giris cikis

import [Link].*;

public class ikitamsayitoplaSWA extends JApplet

int toplam;

public void init()

int sayi1,sayi2;

toplam=0;

//

sayi1=[Link]([Link](" Bir tam sayi giriniz : "));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi2=[Link]([Link](" Ikinci bir tam sayi giriniz : "));

toplam=sayi1+sayi2;

public void paint(Graphics g)

[Link](15,10,270,20);

[Link]("iki sayinin toplami : "+toplam,25,25);

[Link]

ªekil 1.22 [Link] appletinin sonuçlari

7. [Link]

Not defteri programýný kullanarak [Link] programýný ve incele. Konsole (MS


DOS) ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac [Link]
java tamsayitoplaSWFrame

Program 1.33 [Link] programý

import [Link].*; //java swing sinifini çaðýrýr

import [Link].*; // Java grafik sýnýfýný çaðýrýr

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*; // java pencereyi dinleme sýnýfýný çaðýrýr

public class tamsayitoplaSWFrame extends JFrame implements ActionListener

//Layout container tanýmý

//sinif degiskenleri

JLabel kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi

JTextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi

JTextArea cikti;

int sayi;

int toplam;

// pencereyi baslatma metodu

public tamsayitoplaSWFrame()

super("tam sayilarin toplami");

Container cerceve=getContentPane();

[Link]( new FlowLayout() );

kutubasligi=new JLabel("Bir tamsayi giriniz : ");

[Link](kutubasligi);//kutubasligini pencereye yaz

kutugirdisi=new JTextField(10);

[Link](kutugirdisi);//kutuyu pencereye yerlestir

cikti=new JTextArea(6,30);

[Link](new Font("Times New Roman",[Link],14));

[Link](cikti);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
toplam=0;

// kutuya yeni ilave edilecek komutlari bekle

// her yeni komutta actionPerformed metodunu calistir.

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

//sayiyi pencereden oku

Integer sayi1=new Integer([Link]() );

sayi=[Link]();

// sayiyi okutma islemini asagidaki deyimle de yapabiliriz

// sayi=[Link]( [Link]() );

toplam+=sayi; // veya toplam=toplam+sayi;

[Link]("");

[Link]("Su ana kadarki sayilarin toplami : "+toplam);

public static void main( String[] argv ) {

tamsayitoplaSWFrame frame = new tamsayitoplaSWFrame(); ;

[Link]( new WindowAdapter()

public void windowClosing( WindowEvent e ) { [Link]( 0 );}

});

[Link]( 400, 300 );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

5. Not defteri programýný kullanarak [Link] programýný incele. Konsole (MS Dos)
ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac [Link]
java dortArtýIslem

Program 1.34 [Link] programý

import [Link].*; //giris çikis


import Text;

class dortArtiIslem
{
public static void main (String args[]) throws IOException
{
int sayi1,sayi2;
//
DataInputStream cin=new DataInputStream([Link]);
[Link]("Bir tam sayi giriniz : ");
sayi1=[Link](cin);
[Link]("Ikinci bir tam sayi giriniz : ");
sayi2=[Link](cin);
[Link]("Iki tam sayinin toplami : "+(sayi1+sayi2));
[Link]("Iki tam sayinin farki : " +(sayi1-sayi2));
[Link]("Iki tam sayinin carpimi : "+(sayi1*sayi2));
[Link]("Iki tam sayinin bolumu : "+(sayi1/sayi2));
[Link]("Iki tam sayinin kalani : "+(sayi1%sayi2));
// Matematik tipi degisken islemleri :
// + : topla
// - : cikar
// * : carp
// / : bol
// % : bolumun kalani
// += : kendisi ve sag tarafindaki ile topla
// sayi1+=3 ve sayi1=sayi1+3 ayni islemdir
// -= : kendisinden sag tarafindakini cikar
// sayi1-=3 ve sayi1=sayi1-3 ayni islemdir
// *= : kendisi ve sag tarafindakini carp
// sayi1*=3 ve sayi1=sayi1*3 ayni islemdir
// /= : kendisini sag tarafindakine bol
// sayi1/=3 ve sayi1=sayi1/3 ayni islemdir
// %= : kendisini sag tarafindakine bol kalanini ver
// sayi1%=3 ve sayi1=sayi1%3 ayni islemdir
// ++ : kendisine bir ekle
// sayi1++ ve sayi1=sayi1+1 ayni islemdir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// ++ : kendisine bir ekle
// ++sayi1 ve sayi1=sayi1+1 ayni islemdir
// -- : kendisinden bir cikar
// sayi1-- ve sayi1=sayi1-1 ayni islemdir
// -- : kendisinden bir cikar
// --sayi1 ve sayi1=sayi1-1 ayni islemdir
boolean mantik1,mantik2;
mantik1=true; // dogru
mantik2=false;//yanlis
[Link]("dogru ve yanlis : "+(mantik1 && mantik2));
[Link]("dogru veya yanlis : "+(mantik1 || mantik2));
mantik1=( sayi1 sayi2 );
mantik2=( sayi1 < sayi2 );
// Boolean (mantik) tipi degisken islemleri :
// : buyuktur
// < : kucuktur
// == : esittir
// = : buyuk veya esittir
// <= : kucuk veya esittir
// ! : mantigi tersine cevirme
// != : esit degildir
// && : ve
// || : veya
mantik1=( sayi1 sayi2 );
mantik2=( sayi1 < sayi2 );
[Link]("sayi1 buyuktur sayi2 : "+mantik1);
[Link]("sayi 1 kucuktur sayi2 : "+mantik2);
}
}

Bir tam sayi giriniz : 3


Ikinci bir tam sayi giriniz : 2
Iki tam sayinin toplami : 5
Iki tam sayinin farki : 1
Iki tam sayinin carpimi : 6
Iki tam sayinin bolumu : 1
Iki tam sayinin kalani : 1
dogru ve yanlis : false
dogru veya yanlis : true
sayi1 buyuktur sayi2 : true
sayi 1 kucuktur sayi2 : false

6. Not defteri programýný kullanarak [Link] proðramýný incele. Yine


not defteriyle [Link] programýný incele. Konsole (MS Dos)
ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac gercekSayiOrtalamaApplet .java

appletviewer [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.34 : [Link] programý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir
public class gercekSayiOrtalamaApplet extends Applet implements ActionListener
{
//sinif degiskenleri
Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi
TextField kutugirdisi;// Textfield sinifi degiskeni (nesnesi) kutugirdisi
double sayi; // Gerçel degisken sayi
double toplam; // Gerçel degisken toplam
double carpim; // Gerçel degisken carpim
double aritmetikOrtalama; // Gerçel degisken aritmetik ortalama
double geometrikOrtalama; // Gerçel degisken geometrik ortalama
int sayici; // tam sayi degisken toplam rakam sayisini sayici
// pencereyi baslatma metotu
// pencere ilk basladiginda
// degiskenler buradaki degerleri alirlar
public void init()
{
kutubasligi=new Label("Bir sayi giriniz : ");
add(kutubasligi);
kutugirdisi=new TextField(10);
add(kutugirdisi);
toplam=0;
carpim=1.0;
aritmetikOrtalama=0;
geometrikOrtalama=0;
sayici=0;
[Link](this);
}

// girdi alanindaki olan olaylari dinleme metotu


// Her yeni rakam girildiginde bu metot çagirilir
public void actionPerformed(ActionEvent e)
{
sayici++;
Double sayi1=new Double([Link]() );
sayi=[Link]();
toplam+=sayi; // veya toplam=toplam+sayi;
aritmetikOrtalama=toplam/sayici;
carpim*=sayi; // veya carpim=carpim*sayi;
geometrikOrtalama=[Link](carpim,(1.0/sayici));//carpimin koku
[Link]("");//kutudaki rakami sil
repaint();//pencereyi yeniden paint metotuna göre ciz
}

public void paint(Graphics g)


{
// drawString Metotundaki eksen sistemi
// ----------------------- x ekseni

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// |
// |
// |
// V y ekseni
[Link]("Su ana kadarki sayilarin toplami : "+toplam,25,50);
[Link]("Su ana kadarki sayilarin aritmetik ortalamasi :
"+aritmetikOrtalama,25,65);
[Link]("Su ana kadarki sayilarin geometrik ortalamasi :
"+geometrikOrtalama,25,80);
}
}

[Link]

ªekil 1.23 [Link] çýktýsý

7. Not defteri programýný kullanarak bessayý[Link] proðramýný incele. Konsole (MS Dos)
ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac bessayý[Link]
java bessayýtopla

Program 1.35 : [Link] programý, beº gerçek sayýyý toplar.

import [Link].*; // giris çikis


import Text; // okuma sinifi

class bessayitopla
{
public static void main (String args[]) throws IOException
{
double sayi;
double toplam=0;
int saydirici=0;
//

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Text cin=new Text();
while( saydirici < 5)
{
[Link]("Bir tam sayi giriniz : ");
sayi=[Link]();
toplam+=sayi;
saydirici++;
}
[Link]("sayilarin toplami : "+toplam);
}
}

Bir tam sayi giriniz : 1


Bir tam sayi giriniz : 2
Bir tam sayi giriniz : 3
Bir tam sayi giriniz : 4
Bir tam sayi giriniz : 5
sayilarin toplami : 15.0

8 . Not defteri programýný veya herhangi bir editör programý kullanarak [Link]
programýný incele. Konsole (MS Dos) ortamýnda aºaðýdaki komutlarý kullanarak calýºtýr :

javac [Link]
java StringDegisken

Program 1.36 : [Link] programý, String deðiºkenlerini + operatörüyle


ekleme iºlemi

import [Link].*; //giris çikis sinifini cagir

class StringDegisken
{
public static void main (String args[]) throws IOException
{
String s1,s2,s3,s4;
int i1;
String s;
s1="Ali ";
s2="Veli ";
s3="49";
s4=" Elli";
s=s1+s2+s3+s4;
[Link](s);
i1=49;
s=s1+s2+i1+s4;
[Link](s);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Ali Veli 49 Elli
Ali Veli 49 Elli

9 . alýstýrma 7 deki bessayi [Link] programýný iyice anladýktan sonra birden yüze (100)
kadar sayýlarýn ortalamasini hesaplayan birdenyü[Link] program ve sinifini
(Konsole) yaz ve calistir.

Program 1.37 : Birdenyü[Link] programý, birden yüze kadar sayýlarýn


ortalamasýný hesaplar.

import [Link].*; // giris cikis


import Text; // okuma sinifi
class birdenyuzeortalama
{
public static void main (String args[])
{
double sayi=1;
double toplam=0;
while( sayi <= 100)
{
toplam+=sayi++;
}
[Link]("sayilarin toplami : "+toplam);
[Link]("sayilarin ortalamasi : "+toplam/100.0);
}
}

sayilarin toplami : 5050.0


sayilarin ortalamasi : 50.5

10. If yapýsýný kullanma programý, [Link] , Ýki String türü deðiºkeni Applet
TextField girdi alanýndan girer ve birbiriyle karºýlaºtýrýr. Sonuçlarý Applet ortamýnda yazdýrýr.
Bu program applet olarak dizayn edilmiºtir. programý çalýºtýrýnýz ve sonuçlarýný applet
ortamýnda alýnýz.

Program 1.38 : [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//if deyiminin kullanimi
import [Link]; // java applet sinifini cagir
import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir

public class karsilastirmaApplet extends Applet implements ActionListener


{
Label soru1; //kullaniciya birinci degeri girme sorusu sorar
TextField girdi1; //birinci degeri girme kutusu
Label soru2; //kullaniciya ikinci degeri girme sorusunu sorar
TextField girdi2; //ikinci degeri girme kutusu
int sayi1,sayi2; //girilen iki sayi
//graphic kullanici baglantisindaki ilk degerleri tanimla

public void init()


{
soru1=new Label("Bir sayi giriniz ");
girdi1=new TextField(10);
soru2=new Label("Ikinci bir sayi giriniz");
girdi2=new TextField(10);
add(soru1); //soru1 yazisini applete çizer
add(girdi1);//girdi1 kutusunu applete çizer
add(soru2); //soru2 yazisini applete çizer
[Link](this);
// soru2 den sonra girdi (return) tuºunu bekler
// girdi(return) tuºundan sonra actionPerformed
// metotuna gider
add(girdi2); //girdi2 kutusunu applete çizer
}

// sonuçlari applete yazdýr


public void paint(Graphics g)
{
[Link]("Karsýlaºtýrma sonuçlari : ",70,75);
if(sayi1 == sayi2)
[Link](sayi1+" == "+sayi2,100,90);
if(sayi1 != sayi2)
[Link](sayi1+" != "+sayi2,100,105);
if(sayi1 < sayi2)
[Link](sayi1+" < "+sayi2,100,120);
if(sayi1 sayi2)
[Link](sayi1+" "+sayi2,100,135);
if(sayi1 <= sayi2)
[Link](sayi1+" <= "+sayi2,100,150);
if(sayi1 = sayi2)
[Link](sayi1+" = "+sayi2,100,165);
}

// eðer girdi(return) tuºuna basýldýysa bu


// metotu cagir

public void actionPerformed( ActionEvent e)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// sayi 1 i girdi kutusundan oku
sayi1=[Link]([Link]());
// sayi 2 i girdi kutusundan oku
sayi2=[Link]([Link]());
repaint();
}
}

[Link]

ªekil 1.24 [Link] çýktýsý

11. [Link] programýný incele, çalýºtýr ve sonuçlarýný konsol ortamýnda al.

Program 1.39 : [Link] programý. Bu program while yapýsýný kullanarak


sayýlarýn iki ile çarpýmýný hesaplar.

import [Link].*; //java girdi cikti sinifini cagir


class whileyapisi
{
public static void main(String args[])
{
int sayi=2;
while(sayi<=1000)
{
sayý*=2;
[Link]ýntln("sayý = "+sayi);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi = 4
sayi = 8
sayi = 16
sayi = 32
sayi = 64
sayi = 128
sayi = 256
sayi = 512
sayi = 1024

[Link] programýný incele ve çalýºtýr. Bu program do-while döngü yapýsý


kullanarak bir sayý dizisini applet ortamýnda yazdýrmaktadýr.

Program 1.40 : [Link] programý

import [Link];

import [Link];

public class dowhileApplet extends Applet

public void paint(Graphics g)

int saydirici=1;

int x=25;

do {

[Link]([Link](saydirici),x,25);

x += 15;

} while(++saydirici <= 10);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 1.25 [Link] çýktýsý

13. [Link] programýný incele ve çalýºtýr. Bu program for döngü yapýsý kullanarak bir
sayý dizisini applet ortamýnda yazdýrmaktadýr.

Program 1.41 : [Link] programý

import [Link].*;

class foryapisi

{ public static void main(String args[])

int toplam=0;

for(int sayi=1;sayi<=100;sayi++)

{ toplam+=sayi;}

[Link]("1 den 100 e sayilarin toplami : "+toplam);

[Link] programý çýktýsý :

1 den 100 e sayilarin toplami : 5050

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
14. [Link] programýný incele ve çalýºtýr. Bu program döngü yapýsý kullanarak
faiz oranlarýný hesaplamaktadýr.

15. [Link] programýný incele ve çalýºtýr. Bu program switch yapýsýný


kullanmaktadýr..

16. Bir java konsol programý ( [Link]) yazarak On kiºilik bir sýnýftaki kiºilerin aðýrlýklarýný
girdi olarak giriniz.

 Aðýrlýklarý 40 kg dan az olanlarý zayýf olarak,

 Aðýrlýklarý 40 kilo ile 80 kilo arasýnda olanlarý normal,

 Agýrlýklarý 80 kg in üstünde olanlarý siºman katagorisinde sýnýflarsak

her sýnýfta kaç kiºi olduðunu yazdýrýnýz. Dosyanýzýn adý [Link], sýnýfýnýzýn adý : kilo
olacaktýr. Bilmediðiniz yapýlarý örnek problemleri inceleyerek öðrenebilirsiniz.

Program 1.42 : [Link] programý.

import [Link].*; // giris çikis


import Text; // okuma sinifi

class kilo
{
public static void main (String args[]) throws IOException
{
double kilo; //
Text cin=new Text();
[Link]("kilonuzu giriniz : ");
kilo=[Link]();
if( kilo <= 40)
{ [Link]("zayif"); }
else if( kilo40 && kilo<80 )
{ [Link]("normal"); }
else
{ [Link]("sisman"); }
}
}

program çýktýsý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kilonuzu giriniz : 45
normal

kilonuzu giriniz : 95
sisman

17. [Link] programý altta verilmiºtir. bu programý inceleyiniz ve Applet


çýktýsýný oluºturunuz.

Program 1.21 : [Link] programý

import [Link];

import [Link];

public class yildiz3forApplet extends Applet

public void paint(Graphics g)

int x,y;

for(x=15;x <= 150;x+=15)

y=15;

[Link]("*",x,y);

[Link]("*",x,y+45);

for(y=15;y <= 65;y+=15)

x=15;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("*",x,y);

[Link]("*",x+135,y);

[Link]

ªekil 1.26 [Link] çýktýsý

18. [Link] programý altta verilmiºtir. Bu programý inceleyiniz ve applet


çýktýsýný oluºturunuz.

Program 1.22 : [Link] programý

import [Link];import [Link];


public class yildiz1whileApplet extends Applet
{
public void paint(Graphics g)
{
int i=1;
int x=15;
while(i++ <= 11) //i degeri birden 11 a kadar degisir
{
[Link]("*",x,x);
x += 15; // x degeri her i icin 15 artiyor
}
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 1.27 [Link] program çýktýsý

19. [Link] programý altta verilmiºtir. Bu programý inceleyiniz ve applet


çýktýsýný oluºturunuz.

Program 1.23 : [Link]

import [Link];

import [Link];

public class yildiz2forApplet extends Applet{

public void paint(Graphics g)

{ int i;
int x=0;
for(i=1;i <= 11;i++) //i degeri birden 11 a kadar degisir
{
x += 15; // x degeri her i icin 15 artiyor
[Link]("*",x,x);
[Link]("*",x,(180-x));
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 1.28 [Link] çýktýsý

20. [Link] programý altta verilmiºtir. Bu programý inceleyiniz ve applet


çýktýsýný oluºturunuz.

Program 1.24 : [Link] programý

import [Link];
import [Link];
public class yildiz2whileApplet extends Applet
{
public void paint(Graphics g)
{
int i=1;
int x=0;
while(i++ <= 11) //i degeri birden 11 a kadar degisir
{
x += 15; // x degeri her i icin 15 artiyor
[Link]("*",x,15); // x lineer degisken y 15
[Link]("*",15,x); // x 15 y lineer deðiºken
[Link]("*",x,165); // x lineer deðiºken y 165
[Link]("*",165,x); // x 165 y lineer deðisken
[Link]("*",x,x); // çiz
[Link]("*",x,(180-x)); // çiz
}
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.29 [Link] çýktýsý

21. [Link] programý altta verilmiºtir. Bu programý inceleyiniz ve applet


çýktýsýný oluºturunuz.

Program 1.24 [Link] programý

import [Link];
import [Link];
public class yildiz1forApplet extends Applet
{
public void paint(Graphics g)
{
int i;
int x=25;
for(i=1;i <= 10;i++) //i degeri birden 10 a kadar degisir
{
[Link]("*",x,x);
x += 15; // x degeri her i icin 15 artiyor
}
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.30 [Link] çýktýsý

22. [Link] programý altta verilmiºtir. Bu programý inceleyiniz ve applet çýktýsýný


oluºturunuz. Burada dizi formülü ve for döngüsünden yararlanýlarak  sayýsý
hesaplanmaktadýr. Kullanýlan seri formülünün dönüºme hýzýnýn yüksek olmadýðýndan seri
100000 terim için hesaplanmýºtýr. Bu serinin açýk yazýlýmý :

 = 4 - 4/3 + 4/5 -4/7+4/9-4/11+......

ºeklindedir.

Program 1.25 [Link] programý.

import [Link];
import [Link];

public class piApplet extends Applet


{
public void paint(Graphics g)
{
int i;
double pi=0;
int artieksi=-1;
for(i=1;i < 100000;i++)
{
artieksi*=-1;
pi+=4/(2.0*i-1.0)*artieksi;
}
[Link]("pi : "+pi,25,25);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
23. Pisagor üçlüsü : bir dik üçgende üç kenarýn da tam sayý olmasý mümkündür. Bu tür sayý
setine pisagor üçlüsü adý verilir. Pisagor üçlüsünde ilk iki sayýnýn karelerinin toplamý üçüncü
sayýnýn karesine eºit olmalýdýr. Birincidikkenar, ikincidikkenar ve hipotenüs tam sayý pisagor
üçlülerini üçlü for döngüsü kulanarak bulan bir program yazýnýz.

24. Java applet programý kullanarak aºaðýdaki ºekli applet de çizdiriniz :

**********
*********
********
*******
******
*****
****
***
**
*

Program 1.26 [Link] programý. Bu program üçgen bir yýldýzý alaný çizdirir.

import [Link];

import [Link];
public class H3A1 extends Applet
{
public void paint(Graphics g)
{
int x,y;
for(x=15;x <= 150;x+=15)
{
for(y=15;y <= x;y+=15)
{
[Link]("*",x,y);
}
}
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.31 yýldýz üçgeni çizen [Link] çýktýsý

25. Java applet programý kullanarak aºaðýdaki ºekli appletde çizdiriniz

**********
* *

* *
**********

Program 1.27 : [Link], Yýldýzlardan oluºan dikdörtgen çizer

import [Link];
import [Link];

public class H3A2 extends Applet


{
public void paint(Graphics g)
{
int x,y;
for(x=15;x <= 150;x+=15)
{
[Link]("*",x,15);
[Link]("*",x,60);
}
for(y=15;y <= 60;y+=15)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
[Link]("*",15,y);
[Link]("*",150,y);
}

}
}

26. Java konsol programý kullanarak aºaðýdaki ºekli konsolda çizdiriniz. x ekseni ve y
eksenindeki toplam yýldýz sayýsýný ekrandan giriniz.

**********
* *
* *
**********

27. Java konsol programý [Link] programýný oluºturunuz ve bir sayinin faktoriyelini
hesaplayiniz.

n!=n*(n-1)*(n-2)….[Link] 4!= 4*3*2*1 3!=3*2*1

Program 1.28 faktoriyel .java programý. Sayýnýn faktoriyelini döngü kullanarak


hesaplar.

import [Link].*;
import Text;
class faktoriyel
{
public static void main(String args[]) throws IOException
{
int faktoriyel=1;
Text cin=new Text();
int faktoriyelsayi;
[Link]("Bir tamsayi giriniz:");
faktoriyelsayi=[Link]();
for(int sayi=1;sayi<=faktoriyelsayi;sayi++)
{ faktoriyel*=sayi;}
[Link](faktoriyelsayi+" faktoriyel: "+faktoriyel);
}
}

Bir tamsayi giriniz: 4


4 faktoriyel: 24

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
28. Java konsol programý kullanarak asaðýdaki formulü hesaplayýnýz:

ex = 1 + x /1! + x2 / 2! + x3 / 3! + x 4 / 4! + ..
not : e=2.7182818
Program 1.29 [Link] programý. For döngüsü kullanarak exponent hesaplar.

import [Link].*;
import Text;
class H3A4
{
public static void main(String args[]) throws IOException
{
double faktoriyel=1;
double x;
double us=1;
double exponent=1;
Text cin=new Text();
[Link]("Bir sayi giriniz:");
x=[Link]();
for(double sayi=1;sayi<=200;sayi++)
{
faktoriyel*=sayi;
us*=x;
exponent+=us/faktoriyel;
}
[Link]("exp("+x+") = "+exponent);
[Link]("gercek exp("+x+") = "+[Link](x));
}
}

Bir sayi giriniz: 3


exp(3.0) = 20.08553692318766
gercek exp(3.0) = 20.08553692318767

29. Alýºtýrma 28 deki exponent hesabýný for döngüsü yerine while döngüsü kullanarak
gerçekleºtiriniz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
30. Hata fonksiyonu erf(x) aºaðýdaki formülle tanýmlanabilir.

Bir konsol programý yazýnýz. Text sýnýfý kullanarak dýºarýdan x deðerini okuyunuz. For
döngüsü kullanarak formülü hesaplayýnýz ve sonucunu yazdýrýnýz.

31. gerçek sayý faktoriyel fonksiyonu ?'nýn 1.05 noktasýndaki deðeri  (1.05) in deðeri
0.9735 olarak bilinmektedir. f onksiyonu da faktoriyel gibi

x *x+1 x

ifadesiyle tanýmlanabildiðine göre (13.05) deðerini hesaplayýnýz.

32. [Link]
Program 1.30 [Link]

import [Link].*;
class H1OD1
{
public static void main(String args[])
{
// Bu program konsolda(MS DOS)
// "Java Programlama dili"
// cok zevkli bir ders
// yazdirir
[Link]("\"Java Programlama dili\"\ncok zevkli bir ders");
}
}

· programýný herhangi bir editör kullanarak yazýnýz.


· [Link] adýyla kaydediniz.
· javac [Link] terimiyle compile ediniz
· yanlýºlarýnýzý düzeltiniz
· Java H1OD1 terimiyle iºletiniz

33. [Link]

Program 1.31 [Link]

import [Link];
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H1OD2 extends Applet
{
public void paint(Graphics g)
{
// Bu program apletde(pencere)
// "Java Programlama dili"
// cok zevkli bir ders
// yazdirir
[Link](("\"Java Programlama dili \"",25,25);
[Link]("cok zevkli bir ders");",25,40);
}
}

 programýný herhangi bir editör kullanarak yazýnýz.

 [Link] adýyla kaydediniz.

 javac [Link] terimiyle compile ediniz.

 Yanlýºlarýnýzý düzeltiniz

 Herhangibir editor yardýmýyla [Link] dosyasýný oluºturunuz.

 appletviewer [Link] komutuyla programý çalýºtýrýnýz.

 Bir browser programýnda [Link] dosyasýný açýnýz

34. [Link]
Ýki gerçek sayinin(double) (bu sayilar 2 ve 5 olsun) farklarýný Konsol ortamýnda (MS DOS)
hesaplayacak java programýný yazýp iºletiniz

35. [Link]
Ýki gerçek sayinin(double) bölümlerini Konsol ortamýnda (MS DOS) hesaplayacak java
programýný yazýp iºletiniz. Sayýlar ekrandan Text sýnýfýný kullanarak girilecektir (okunacaktýr)

36. [Link]
Ýki gerçek sayinin(double) çarpýmlarýný Applet(window) ortamýnda hesaplayacak java
programýný yazýp iºletiniz.

37. [Link]
Beº gerçek sayinin(double) çarpýmlarýný Konsol ortamýnda (MS DOS) hesaplayacak java
programýný yazýp iºletiniz. Sayýlar ekrandan Text sýnýfýný kullanarak girilecektir (okunacaktýr)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
38. [Link] : if -elseif -else yapisi ve boolean deðiºken örneði, konsol programý.
Programý incele ve çalýºtýr.

Program 1.32 . [Link] programý boolean double ve String deðiºken karºýlaºtýrma


örneði

import [Link].*;

class H2AL1

public static void main(String args[]) throws IOException

// Bu program konsolda(MS DOS)

// if metotu ve boolean kullanarak

// karsilatirmalar yapar

// ve sonucu yazdirir

boolean b1;

boolean b2;

boolean b3;

double sayi1;

double sayi2;

String s1,s2;

Text cin=new Text();

b1=true;

b2=false;

b3=b1&&b2;

[Link](b1+"&&"+b2+" = "+b3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if(b3)

[Link]("if yapisinin ici b3 = "+b3);

else if(!b3)

[Link]("else if yapisinin ici b3 = "+b3);

// iki gercek sayiyi karsilastir

[Link]("Birinci gercek sayiyi oku : ");

sayi1=[Link]();

[Link]("Ikinci gercek sayiyi oku : ");

sayi2=[Link]();

b3=(sayi1>sayi2);

if(sayi1>sayi2)

[Link](sayi1+">"+sayi2+" = "+b3);

else if(sayi1<sayi2)

[Link](sayi1+"<"+sayi2+" = "+(sayi1<sayi2));

else

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link](sayi1+"=="+sayi2+" = "+(sayi1<sayi2));

// iki String karsilastir

[Link]("Birinci String'i oku : ");

s1=[Link]();

[Link]("Ikinci String'i oku : ");

s2=[Link]();

b3=[Link](s2);

if([Link](s2))

[Link](s1+" esittir "+s2+" b3 = "+b3);

else

[Link](s1+" esit degildir "+s2+" b3= "+b3);

}//main metotunun sonu

} //H2AL1 sinifinin sonu

39. H2AL2 : while döngüsü örneði applet programý, 10 dan 30 a kadar sayýlarý applete
yazdýrýr. Programý incele ve çalýºtýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 1.33 : [Link], while döngüsü örneði applet programý, 10 dan 30 a kadar
sayýlarý applete yazdýrýr.

import [Link];

import [Link].*;

public class H2AL2 extends Applet

public void paint(Graphics g)

// Bu program apletde(pencere)

// 10 dan 30 a kadar sayilari yazdirir

int i=0;

double x=10.0;

while(x<=20.0)

[Link](" "+(x+=1.0),i+=30,25);

40. H2AL3 : do - while döngüsü örneði applet programý. Programý incele ve çalýºtýr.

Problem 1.34 [Link] : do-while döngüsü. Bu problem 10 dan 30 a kadar sayýlarý 2


ºer 2 ºer yazdýrýr.

import [Link];

import [Link].*;

public class H2AL3 extends Applet

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

public void paint(Graphics g)

// Bu program apletde(pencere)

// 10 dan 30 a kadar sayilari ikiºer ikiºer yazdirir

int i=0;

double x=10.0;

do

[Link](" "+(x+=2.0),i+=30,25);

} while(x<=20.0)

41. H2AL4 : for döngüsü örneði, applet programý . Programý incele ve çalýºtýr.

Problem 1.35 [Link] : for döngüsü. Bu problem 10 dan 30 a kadar sayýlarý 3 er 3 er


yazdýrýr.

import [Link];

import [Link].*;

public class H2AL4 extends Applet

public void paint(Graphics g)

// Bu program apletde(pencere) 10 dan 30 a

// kadar sayilari 3 er 3 er yazdirir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int i=0;

for(double x=10.0;x<=20.0;x+=3.0)

[Link](" "+x,i+=30,25);

42. H2AL6 : iç içe iki döngü, applet programý . Programý incele ve çalýºtýr.

Problem 1.36 [Link] : for döngüsü. Bu problem iki applet ortamýnda boyutlu bir
matrix yazdýrýr.

import [Link];

import [Link].*;

public class H2AL6 extends Applet

public void paint(Graphics g)

// Bu program apletde(pencere)

// 11 12 13 14

// 21 22 23 24

// 31 32 33 34

// 41 42 43 44 yazdirir

for(int i=1;i<5;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int j=1;j<5;j++)

[Link](""+i+j,i*25,j*25);

} // for(int j ...dongusunun kapanisi

} //for(int i ..dongusunun kapanisi

} //paint metotunun kapanisi

} //H2AL6 sinifinin kapanisi

[Link]

ªekil 1.32 rakam matrisi çizen [Link] çýktýsý

43. H2AL7 : sayi1 den sayi2 e n er ner sayilarin toplami, applet programi

Problem 1.37 [Link] : for döngüsü. Bu problem sayi1 den sayi2 e n er ner
sayilarin toplamýný hesaplar .

import [Link];

import [Link].*;

import [Link].*;

public class H2AL7 extends Applet implements ActionListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int sayi1,sayi2,sayi3;

int toplam;

Label s1,s2,s3; //yazý alanlari sinifi

TextField t1,t2,t3; //girdi alanlari (kutulari)

//pencereyi baslatma metotu

public void init()

s1=new Label("den ");

s2=new Label("e kadar ");

s3=new Label("er sayilarin toplami : ");

t1=new TextField(5);

t2=new TextField(5);

t3=new TextField(5);

//pencereye ekle

add(t1);

add(s1);

add(t2);

add(s2);

add(t3);

add(s3);

[Link](this);

public void paint(Graphics g)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](""+sayi1+"den "+sayi2+"e kadar sayilarin "+

sayi3+"er "+sayi3+"er toplami :"+toplam,15,100);

} //paint metotunun kapanisi

//girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

public void actionPerformed(ActionEvent e)

toplam=0;

//sayi1, sayi2 ve sayi3 kutulardan oku

Integer Sayi1=new Integer([Link]());

sayi1=[Link]();

Integer Sayi2=new Integer([Link]());

sayi2=[Link]();

Integer Sayi3=new Integer([Link]());

sayi3=[Link]();

for(int i=sayi1;i<=sayi2;i+=sayi3)

toplam+=i;

repaint();

}//ActionPerformed metotunun kapanisi

} //H2AL7 sinifinin kapanisi

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 1.33 deðiºken sýnýrlarla toplama yapan [Link] programýnýn applet çýktýsý

44. H2OD1
while döngüsü ve konsol programý kullanarak 1 den n e kadar olan sayýlarýn aritmetik
ortalamasýný hesaplayiniz. n sayisi konsoldan girilecektir.
Aritmetik ortalama (1+2+3+..+n)/n formülüyle hesaplanýr.

Problem 1.38 [Link] : while döngüsü. Bu problem 1 den n e kadar sayilarin


aritmetik ortalamasýný hesaplar .

import [Link].*;

class H2OD1

public static void main (String args[])

//bu program 1 den n ye kadar olan

//sayilarin aritmatik ortalamasini hesaplar

int n;

int sayi=1;

double ort=0;

Text cin = new Text ();

[Link]("n : ");

n = [Link] ();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
while(sayi<=n)

ort=(ort + sayi)/sayi;

sayi++;

[Link]("aritmatik ortalama : "+ort);

45. H2OD2
For döngüsü ve "*" karekterini kullanarak 5*4 yýldýz dikdortgenini applet olarak çizdiriniz

*****
*****
*****
*****

Problem 1.39 [Link] : for döngüsü. Bu problem 5*4 yýldýz dikdortgenini applet
olarak çizdir

import [Link];

import [Link];

public class H2OD2 extends Applet

public void paint(Graphics g)

int x,y;

for(y=1;y<6;y++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(x=1;x<5;x++)

[Link] ("*",20*x,20*y);}

46. H2OD3

do- while döngüsü kullanarak 1 den n e kadar olan sayýlarýn küplerinin toplamýný ve aritmetik
ortalamasýný applet programý olarak hesaplatýnýz. n sayýsý applet kutu girdisinden girilecektir.

Problem 1.40 [Link] : 1 den n e kadar sayýlarýn küplerinin toplamýný applet olarak
çizdir

import [Link];

import [Link].*;

import [Link].*;

public class H2OD3 extends Applet implements ActionListener

int sayi1;

int toplam;

double ort;

Label s1,s2; //yazý alanlari sinifi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
TextField t1; //girdi alanlari (kutulari)

//pencereyi baslatma metotu

public void init()

s1=new Label("kup ortalamasi 1 den ");

s2=new Label("e kadar ");

t1=new TextField(5);

//pencereye ekle

add(s1);

add(t1);

add(s2);

[Link](this);

public void paint(Graphics g)

[Link](""+"1den "+sayi1+" e kadar kup ortalamasi :"+ort,15,100);

} //paint metotunun kapanisi

//girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

public void actionPerformed(ActionEvent e)

toplam=0;

//sayi1 i kutulardan oku

Integer Sayi1=new Integer([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi1=[Link]();

int i=1;

do

toplam+=i*i*i;

}while(++i<=sayi1);

ort=(double)toplam/(double)sayi1;

repaint();

}//ActionPerformed metotunun kapanýºý

} //H2OD3 sýnýfýnýn kapanýºý

46. H2OD3_2000

do- while döngüsü kullanarak 1 den n e kadar olan sayýlarýn küplerinin toplamýný ve aritmetik
ortalamasýný swing applet (JApplet) programý olarak hesaplatýnýz. n sayýsý JApplet kutu
girdisinden girilecektir.

Problem 1.40 H2OD3a_2000.java : 1 den n e kadar sayýlarýn küplerinin toplamýný swing


applet olarak çizdir

import [Link].*;

import [Link].*;

import [Link].*;

public class H2OD3a_2000 extends Japplet implements ActionListener

{ int sayi1;

int toplam;

double ort;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JLabel s1,s2; //yazý alanlari sinifi

JTextField t1; //girdi alanlari (kutulari)

JTextArea ciktiAlani;

//pencereyi baslatma metotu

public void init()

Container c=getContentPane();

[Link](new FlowLayout());

Color renk=[Link]();

s1=new JLabel("küp ortalamasý 1 den ");

s2=new JLabel("e kadar ");

t1=new JtextField(5); //pencereye ekle

ciktiAlani=new JTextArea();

[Link](renk);

[Link](s1);

[Link](t1);

[Link](s2);

[Link](ciktiAlani);

[Link](this);

//girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

public void actionPerformed(ActionEvent e)

toplam=0; //sayi1 i kutulardan oku

sayi1=[Link]([Link]());

int i=1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
do {

toplam+=i*i*i;

while(++i<=sayi1);

ort=(double)toplam/(double)sayi1;

[Link](""+"1den "+sayi1+" e kadar küp ortalamasý :"+ort);

repaint();

//ActionPerformed metotunun kapanisi

} //H2OD3_2000 sinifinin kapanisi

[Link]

ªekil 1.34 1 den n e kadar sayýlarýn küplerinin ortalamasýný hesaplayan


H2OD3a_2000.java programýnýn JApplet çýktýsý

H2OD3_2000 Ayný problemin ikinci bir çözümü

do- while döngüsü kullanarak 1 den n e kadar olan sayýlarýn küplerinin toplamýný ve aritmetik
ortalamasýný swing applet (JApplet) programý olarak hesaplatýnýz. n sayýsý
[Link]() girdisinden girilecektir.

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H2OD3_2000 extends JApplet

int n, i = 1;

int toplam = 0;

long toplam3 = 0;

double ortalama;

public void init()

n=[Link]([Link](" Bir tam sayi giriniz : "));

while (i <= n){

toplam3 += i*i*i;

toplam += i;

i++;

ortalama = (double)toplam / n;

public void paint(Graphics g)

[Link](15,10,370,20);

[Link](15,50,370,20);

[Link](n + "'ye kadar olan sayilarin kuplerinin toplami : " + toplam3,25,25);

[Link](n + "'ye kadar olan sayilarin aritmetik ortalamasi : " + ortalama,25,65);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
47. H2OD4

herhangi bir döngü yapýsý ve konsol programý kullanarak, n=200 deðeri için

1-x/1!+x 2/2!-x3/3!+x4/4!-x5 /6!+..+x n-1 /(n-1)!-xn/n!


formülünü hesaplayýnýz.

not: ! (faktoriyel) sayýnýn birer eksilerek bire kadar çarpýldýðý diziye denir. Örneðin 4!=4*3*2*1

Problem 1.41 [Link] : 1-x/1!+x2/2!-x3/3!+x 4 /4!-x5/6!+..+xn-1/(n-1)!-x n /n! formülünün


hesabý.

import [Link].*;

import Text;

class H2OD4

public static void main(String args[]) throws IOException

double faktoriyel=1;

double x;

double us=1;

double exponent=1;

Text cin=new Text();

[Link]("Bir sayi giriniz:");

x=[Link]();

for(double sayi=1;sayi<=200;sayi++)

faktoriyel*=sayi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
us*=(-1)*x;

exponent+=us/faktoriyel;

[Link]("exp(-"+x+") = "+exponent);

c:\co\java\prog>Bir sayi giriniz: 1.0

c:\co\java\prog>exp(-1.0) = 0.36787944117144245

48. H2OD5

Bir bilgisayar konsol bilgisayar programý yazýnýz. bu program kullanýcýnýn ismini ve boyunu
sorsun. eðer boyu 1.50 cm nin altýndaysa "o kullanýcýismi siz pek kýsaymýºsýnýz"
yazsýn,eðer kullanýcý boyu 1.90 cm nn üzerindeyse "o kullanýcýismi boyunuzda ne kadar
uzunmuº" yazsýn. kullanýcý boyu bu deðerlerin arasýndaysa "merhaba kullanýcýismi
sistemimize hosgeldiniz" yazsýn.

Problem 1.42 [Link] : if-elseif bloðu

import [Link].*;

import Text;

class H2OD5

public static void main(String args[]) throws IOException

int boy;

String isim;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Text cin=new Text();

[Link]("isminiz nedir : ");

isim=[Link]();

[Link](""+isim+" lutfen boyunuzu giriniz:");

boy=[Link]();

if(boy<=150)

{[Link](isim+" siz de pek kisaymisiniz.");}

else if(boy>=190)

{[Link](isim+" boyunuz da ne kadar uzunmus.");}

else

{[Link]("merhaba "+isim+" sistemimize hos geldiniz.");}

49. H2OD5_2000

Bir bilgisayar konsol bilgisayar programý yazýnýz. bu program kullanýcýnýn ismini ve boyunu
sorsun. eðer boyu 1.50 cm nin altýndaysa "o kullanýcýismi siz pek kýsaymýºsýnýz"
yazsýn,eðer kullanýcý boyu 1.90 cm nn üzerindeyse "o kullanýcýismi boyunuzda ne kadar
uzunmuº" yazsýn. kullanýcý boyu bu deðerlerin arasýndaysa "merhaba kullanýcýismi
sistemimize hosgeldiniz" yazsýn. Çýktý için java swing JOPtionPane kullanýnýz.

Problem 1.42 H2OD5_2000.java : if-elseif bloðu

import [Link];

class H2OD5_2000

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

public static void main(String args[])

int boy;

String isim;

isim=[Link]("isminiz nedir : ");

[Link](""+isim+" lutfen boyunuzu giriniz:");

boy=[Link](

[Link](" lutfen boyunuzu giriniz:"));

if(boy<=150)

[Link](null,"sizde pek kýsaymýºsýnýz",

"boy : "+boy,JOptionPane.PLAIN_MESSAGE);

else if(boy>=190)

[Link](null," boyunuz da ne kadar uzunmus",

"boy : "+boy,JOptionPane.PLAIN_MESSAGE);

else

[Link](null,

"merhaba "+isim+" sistemimize hos geldiniz.",

"boy : "+boy,JOptionPane.PLAIN_MESSAGE);

[Link](0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

[Link]

[Link]

ªekil 1.35,1.36,1.37 if yapýsýný test eden H2OD5_2000.java programýnýn swing


JoptionPane çýktýsý

50 H2AL1_2000 : if -elseif -else yapisi ve boolean deðiºken örneði, JoptionPane konsol


programý

Ýmport [Link];

class H2AL1_2000

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

public static void main(String args[])

// Bu program konsolda(MS DOS)

// if metodu ve boolean kullanarak

// karºýlaºtýrmalar yapar

// ve sonucu yazdirir

boolean b1;

boolean b2;

boolean b3;

double sayi1;

double sayi2;

String s1,s2;

b1=true;

b2=false;

b3=b1&&b2;

[Link](null,""+b1+"&&"+b2+" = "+b3,

"if yapisinin disi",JOptionPane.PLAIN_MESSAGE);

if(b3)

[Link](null,"if yapisinin ici b3 = "+b3,

"if yapisinin ici",JOptionPane.PLAIN_MESSAGE);

else if(!b3)

[Link](null,"else if yapisinin ici b3 = "+b3,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
"if yapisinin ici",JOptionPane.PLAIN_MESSAGE);

// iki gercek sayiyi karsilastir

sayi1=[Link]([Link]("birinci gercek sayiyi oku : "));

sayi2=[Link]([Link]("ikinci gercek sayiyi oku : "));

b3=(sayi1>sayi2);

if(sayi1>sayi2)

[Link](null,""+sayi1+">"+sayi2+" = "+b3,

"iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);

else if(sayi1<sayi2)

[Link](null,

""+sayi1+"<"+sayi2+" = "+(sayi1<sayi2),

"iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);

else

[Link](null,""+sayi1+"=="+sayi2+" = "+(sayi1==sayi2),

"iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);

[Link]();

// iki String karsilastir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s1=[Link]("birinci String'i oku : ");

s2=[Link]("ikinci String'i oku : ");

b3=[Link](s2);

if([Link](s2))

[Link](null,s1+" esittir "+s2+" b3 = "+b3,

"iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);

else

[Link](null,s1+" esit degildir "+s2+" b3= "+b3,

"iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);

[Link](0);

}//main metodunun sonu

} //H2AL1_2000 sýnýfýnýn sonu

51 H2AL2_2000 : while döngüsü örneði JoptionPane konsol programý

import [Link];

public class H2AL2_2000

public static void main(String args[])

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Bu program

// 10 dan 20'ye kadar sayýlarý yazdýrýr

double x=10.0;

String s="";

do

s=s+" "+(x+=1.0);

while(x<=20.0);

[Link](null,s,

"10 dan 30 a sayýlar",JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

52 H2AL4_2000 : for döngüsü örneði, JoptionPane konsol programý

import [Link];

public class H2AL4_2000

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String args[])

// Bu program

// 10 dan 20 ye kadar sayýlarý yazdýrýr

String s="";

for(double x=10.0;x<=30.0;x+=1.0)

s=s+" "+x;

[Link](null,s,

"10 dan 30 a sayýlar",JOptionPane.PLAIN_MESSAGE);

[Link](0);

53 H2AL5_2000 : switch- case yapýsý, JoptionPane konsol programý

import [Link];

class H2AL5_2000

public static void main(String args[])

// Bu program konsolda(MS DOS)

// switch case metodunu kullan�r

char not;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Text cin=new Text();

int A=0;

int B=0;

int C=0;

int D=0;

int E=0;

int F=0;

while(true)

String s="";

not=[Link]("notu oku : (z cikis) ").toCharArray()[0];

if(not=='z') {[Link](0);}

switch(not)

case 'A':case 'a':

++A;

break;

case 'B':case 'b':

++B;

break;

case 'C':case 'c':

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
++C;

break;

case 'D':case 'd':

++D;

break;

case 'E':case 'e':

++E;

break;

case 'F':case 'f':

++A;

break;

default:

[Link](null,"yanlis not tanimlandi yeni bir not giriniz",

"switch - case örneði",JOptionPane.ERROR_MESSAGE);

break;

} // switch deyiminin sonu

s=s+"A larin sayýsý :"+A+"\n";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s=s+"B lerin sayýsý :"+B+"\n";

s=s+"C lerin sayýsý :"+C+"\n";

s=s+"D lerin sayisi :"+D+"\n";

s=s+"E lerin sayisi :"+E+"\n";

s=s+"F lerin sayisi :"+F+"\n";

[Link](null,s,

"switch - case örneði",JOptionPane.PLAIN_MESSAGE);

}//main metodunun sonu

} //H2AL5_2000 sýnýfýnýn sonu

[Link]

[Link]

54 H2AL6_2000: iç içe iki döngü, JoptionPane konsol programý

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H2AL6_2000

public static void main(String args[])

// Bu program

// 11 12 13 14

// 21 22 23 24

// 31 32 33 34

// 41 42 43 44 yazdirir

String s="";

for(int i=1;i<5;i++)

for(int j=1;j<5;j++)

s=s+" "+i+j;

} // for(int j ...dongusunun kapanisi

s=s+"\n";

} //for(int i ..dongusunun kapanisi

[Link](null,s,

"switch - case örneði",JOptionPane.PLAIN_MESSAGE);

[Link](0);

} //main metodunun kapanisi

} //H2AL6_2000 sinifinin kapanisi

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
55 H2AL7_2000: sayi1 den sayi2 e n er ner sayilarin toplami, swing Japplet programi,
JTextArea çýktýsý ile

Ýmport [Link].*;

import [Link].*;

import [Link].*;

public class H2AL7_2000 extends JApplet implements ActionListener

{ int sayi1,sayi2,sayi3;

int toplam;

double ort;

JLabel s1,s2,s3; //yazý alanlari sinifi

JTextField t1,t2,t3; //girdi alanlari (kutulari)

JTextArea ciktiAlani;

//pencereyi baslatma metotu

public void init()

Container c=getContentPane();

[Link](new FlowLayout());

Color renk=[Link]();

s1=new JLabel("den");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s2=new JLabel("e kadar ");

s3=new JLabel("er sayilarin toplami : ");

Font f=[Link]();

Color r1=[Link]();

t1=new JTextField(5); //pencereye ekle

t2=new JTextField(5); //pencereye ekle

t3=new JTextField(5); //pencereye ekle

ciktiAlani=new JTextArea();

[Link](renk);

[Link](r1);

[Link](renk);

[Link](r1);

[Link](renk);

[Link](r1);

[Link](f);

[Link](f);

[Link](f);

[Link](r1);

[Link](renk);

[Link](f);

[Link](t1);

[Link](s1);

[Link](t2);

[Link](s2);

[Link](t3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](s3);

[Link](ciktiAlani);

[Link](this);

//girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

public void actionPerformed(ActionEvent e)

toplam=0; //sayi1 i kutulardan oku

sayi1=[Link]([Link]());

sayi2=[Link]([Link]());

sayi3=[Link]([Link]());

int i;

for(i=sayi1;i<=sayi2;i+=sayi3)

toplam+=i;

[Link](""+sayi1+"den "+sayi2+"e kadar sayilarin "+

sayi3+"er "+sayi3+"er toplami :"+toplam);

repaint();

//ActionPerformed metotunun kapanisi

} //H2OD3 sinifinin kapanisi

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
56 H2AL8_2000: sayýnýn e inci kuvvetinin hesaplanmasý (for döngüsü örneði) JoptionPane
konsol programý

import [Link];

class H2AL8_2000

public static void main(String args[]) throws IOException

double faktoriyel=1;

double x;

double us=1;

double exponent=1;

x=[Link]([Link]("Bir sayi giriniz : "));

for(double sayi=1;sayi<=200;sayi++)

faktoriyel*=sayi;

us*=x;

exponent+=us/faktoriyel;

[Link](null,"exp("+x+") = "+exponent,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
"exp(x) hesap örneði",JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

57 H2AL9_2000: pi sayýsýný hesaplayan bir seri formülü. JoptionPane konsol programý

import [Link];

class H2AL9_2000

public static void main(String args[])

int i;

double pi=0;

int artieksi=-1;

for(i=1;i < 100000;i++)

artieksi*=-1;

pi+=4/(2.0*i-1.0)*artieksi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

String s="pi : "+pi+"\n";

s=s+"pi nin gercek degeri: "+[Link];

[Link](null,s,"pi sayýsý hesabý",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

58 H2OD1_2000

for döngüsü ve konsol programý kullanarak 1 den n e kadar olan sayýlarýn aritmetik
ortalamasýný hesaplayiniz. n sayisi swing JOptionPane olarak girilecektir.

Aritmetik ortalama (1+2+3+..+n)/n formülüyle hesaplanýr.

import [Link].*;

import [Link];

class H2OD1_2000

public static void main (String args[]) throws IOException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n;

int toplam=0;

double ortalama;

n=[Link]([Link]("Aritmetik ortalama kaca kadar


yapilacak?

\nLutfen n sayisini giriniz :"));

for (int i = 1; i <= n; i++){

toplam += i;

ortalama = (double)toplam / n;

[Link](null,n + "'ye kadar olan sayilarin aritmetik ortalamasi


:

" + ortalama + " dir", "Aritmetik Ortalama",JOptionPane.PLAIN_MESSAGE);

[Link](0);

59 H2OD2_2000

while döngüsü ve "*" karekterini kullanarak 7*4 yýldýz dikdortgenini swing JOptionPane veya
swing JApplet kullanarak çizdiriniz

*******

*******

*******

*******

import [Link].*;

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class H2OD2T_2000

public static void main (String args[]) throws IOException

int i = 0,j;

String s = "";

while (i++ < 4)

j=0;

while(j++ < 7)

s += "* ";

s += "\n";

[Link](null,s, "Yýldýz Dikdortgen"

,JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for döngüsü ve "*" karekterini kullanarak grafik ortamýnda swing JApplet ve paint metodunu
kullanarak aºaðýdaki ºekli çizdiriniz

*******

import [Link].*;

import [Link].*;

public class H2OD6_2000 extends JApplet

public void paint(Graphics g)

int yer = 0;

for(int i=0; i < 7; i++)

[Link]("*",80,i*20+20);

for(int j=0; j < 7; j++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link]("*",j*20+20,80);

[Link]

BÖLÜM 2 : METODLAR VE OBJECT KULLANIMI

2.1 JAVA API KÜTÜPHANESÝ

Gerçek problemlerin boyutlarý genelde birinci bölümde gördüðümüz problemlere göre çok
daha büyüktür. Bu yüzden genelde programlar küçük parçalara bölünerek daha kolaylýkla
anlaºýlýr ºekle getirilmeye çalýºýlýr. Buna böl parçala ve yönet tekniði de diyebiliriz. Bu küçük
parçalara javada metot adi verilir. Java programlarý yeni metotlarý içeren java
sýnýflarýyla(class) java sýnýf kütüphanelerinde yer alan metotlarýn birleºmesinden oluºur. Java
kütüphanesinde matematik iºlemlerinden grafik, ses, giriº çýkýº iºlemleri, yanlýº kontrolu gibi
birçok konularda yazýlmýº metotlar mevcuttur. Java metotlar kolleksiyonu Java API Adýný alir.
Java sýnýf kütüphanesi adi da verilir. ªüphesiz bunun dýºýnda java metodlar kolleksiyonlarýnýn
olduðu çeºitli diðer kütüphaneler de mevcutur.

Java API kütüphanelerinin bazýlarý ºunlardýr :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] : (java applet paketi) Java applet paketi applet grafik ortamýný saðlar (grafik
programlarýnýn internet browser programlarý aracýlýðýyla görüntülenebilmesinin temellerini
oluºturur.). Bu sýnýfa paralel olarak Java 1.2 de grafik applet arayüz birimi
[Link] geliºtirilmiºtir.

[Link] : ( java window araçlarý paketi) Bu sýnýf grafik arayüzleri tanýmlamaya yara. Java
1.2 de paralel sýnýf [Link] geliºtirilmiºtir.

[Link]: renk tanýmlar

[Link]: bilgisayarýn geçic hafýzasýyla java programý arasýnda bilgi akýºýný


saðlar.

[Link] : ekle ve çalýºtýr türü programlar arasýnda geçiº yapabilen paketlerden oluºur.

[Link] : grafik programlama ortamýyla kullanýcý arasýndakiiliºkiyi saðlar. Örneðin


grafik penceresinde return tuºuna basýldýðýnda veya farenin düðmesine basýldýðýnda ne
yapýlmasý gerektiðini belirler. [Link] ve [Link] sýnýflarýnýn ikisiyle de kullanýlýr.

[Link] : yazý fontlarý ve bu fontlarýn deðiºtirilmesiyle ilgili programalrý içerir.

[Link] : iki boyutlu geometrik ºekilleri tanýmlar.

[Link] : java programlarýna çince, japonca ve kore dilinde girdi girebilmek için
tanýmlanmýº bir arabirimdir.

[Link] : java görüntü iºleme paketi

[Link] : bir program içindeki resimleri depolama ve deðiºtirme için


gerekli olan programlarý içerir.

[Link] : java programlarýndan yazýcýlara yazým için bilgi aktaran paketleri içerir.

[Link] : java fasulyeleri paketi, bu paketin detaylarý için ilgili bölümü inceleyiniz.

[Link] : tekrar kullanýlabilen ve otomatik olarak birleºtirilebilen program


parçacýklarý tanýmlar.

[Link] : dosya ve ekrandan girdi ve çýktý yapmak için gerekli program paketleri tanýmlanýr.

[Link] : bu paket birçok temel program içerir Bunlardan biri olan Math paketi aºaðýda
açýklanacaktýr. Lang paketi java programlarýnca otomatik olarak kullanýlýr. Ýmport deyimiyle
iave edilmesi gerekmez.

[Link] : bu paket java programýyla garbage collector (çöp toplayýcýsý) denilen otomatik
kullanýlmayan hafýza temizleme programýyla iliºkiyi saðlar.

[Link] : bu paketteki programlar java programýnýn çaðrýldýðýnda içinde bulunan


deðiºken ve metotlarý dinamik olarak tespit etmesinive kullanma izni almasýný saðlar.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] : bu sýnýf deðiºebilir hassasiyette arimetik iºlemler yapmak için gereken tanýmlarý
ve sýnýflarý içerir.

[Link] : að iºlemlerinde kullanýlan çeºitli paketleri tanýmlar

[Link] , [Link], [Link], [Link], [Link]:


programlarýn ve metodlarýn uzaktan çalýºabilmeleri için gerekli tanýmlamalarý içerir.
[Link], [Link], [Link], [Link],
[Link] : güvenlikle ilgili programlar demetini içerir.

[Link] : database programýyla java programlarýný baðlantýsýný saðlar.

[Link] : sayý karekter ve string tarih gibi iºlemlerle ilgili programlar demeti içerir. Örneðin
çok dilli programlar yazmayý saðlayan internalisation paketi bu paket içinde yer alýr.

[Link] : bu sýnýf tarih ve zamanla ilgili fonksiyonlar, tesadüfi sayý üreticileri,


StringTokenizer gibi programlarý barýndýrýr.

[Link] bu paket java programlarýný paketlemeye yarýyan jar yapýlarýný tanýmlamada


gerekli olan programlarý tanýmlar.

[Link] : bu paket programlarý sýkýºtýrmaya yarayan programlarý tanýmlar.

[Link] : bu paket özürlülerin kullanabileceði ara üniteler tanýmlar. Ekran


okuyucular ve ekran büyüteçleri gibi.

[Link] : grafik kullanýcý arabirimi tanýmlar. Bu sýnýftakitanýmlar aracýlýðýyla ekrandan


grafik ortamýnda veri transferi kolaylýkla yapýlabilir.

[Link] : grafik arabirimi sýnýr yaratýmýnda çeºitli sýnýr ºekilleri yaratmakta


kullanýlýr.

[Link] : renk seçimi için tanýmlanmýº grafik kullanýcý arabirimini


tanýmlar.

Java API dosyalarýndaki metotlarin sadece isimlerinin listesi yaklaºýk 200 sayfa boyutunda
bir liste tuttuðundan burada sadece yeri geldiðine programlarý kullanýrken örneklerde gerekli
API isimlerini göreceðiz. ªu ana kadar kullandýðýmýz java programlarýnda [Link],
[Link], [Link] [Link], [Link] ve [Link] API paketlerini
kullandýk. [Link] paketi appletleri oluºturma, appletlere giriº çýkýslarý ve dosyalarý applet
içerisinde çalýºtýrmayý saðlar. [Link] pencere(window) ortamýndaki tüm programlama
sýnýflarýný ve metotlarýný içerir. Java swing ([Link]) paketi yine ayný tür pencere(window)
ortamýnda programlama için gerekli girdi çýktý grafik ortamlarýný içerir. awt grafik ortamýna
göre daha zengin ve geliºmiº bir kolleksiyondur. Bu metotlarý ilerideki bölümlerde daha
detaylý inceleyeceðiz. [Link] paketi javaya dýºarýdan(dosya,ekran v.b) bilgi giriº çýkýºýný
ayarlar.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java metodlarýnýn tamamýnýn listesini (Ýngilizce olarak) Java doküman kütüphanesindeki api
alt gurubunda bulabilirsiniz. Java döküman kütühanesi [Link] adresinden
çekilebilir.

Java dilinde en çok kullanýlan API sýnýflarýndan birisi Math sýnýfýdýr. Bu sýnýf(class) [Link]
paketinde yer alýr. [Link] paketi java programý açýlýrken otomatik olarak çaðýrýlýr. Bütün
diðer paketler import deyimi kullanýlarak programa ilave edilirler. Math sýnýfýnda tanýmlanan
metotlarýn bazýlarý ªekil 2.1 de listelenmiºtir. Tablodaki x veya y deðiºkenleri double
deðiºken türündendir. Math sýnýfýnda(class) iki tane de sabit tanýmlanmýºtýr. Bu sabitlerden
birisi [Link] 3.14159265358979323846 (pi) sayýsýna eºittir. Diðeri Math.E
2.7182818284590452354 (e) sayýsýna eºittir.

Tablo 2.1 Math sýnýfý nda(class) çalýºan metotlardan bazýlarý

Metot Taným Örnek


abs(x) x deðiºekeninin mutlak [Link](9.2) = 9.2
deðeri [Link](-9.2) = 9.2
türkçesi : Mutlak
ceil(x) x degiºkenini bir üst [Link](9.2) = 10
tamsayýya dönüºtürür [Link](-9.8) = -9
(türkçesi : tavan)
floor(x) x deðiºkenini bir alt [Link](9.2) = 9
tamsayýya dönüºtürür. [Link](-9.8) = -10
(türkçesi : taban)
cos(x) x in trigonometrik cosünisü [Link](1.0)=0.54030230568
(x radyan cinsinden
tanýmlanmýºtýr.)
sin(x) x in trigonometrik sinüsü [Link](1.0)=0.8414709840709
(x radyan cinsinden
tanýmlanmýºtýr.)
tan(x) x in trigonometrik tanjantý [Link](1.0)=1.557040724655
(x radyan cinsinden
tanýmlanmýºtýr.)
acos(x) x in trigonometrik [Link](0.54030230568)=1.0
cosünisünün tersi
(sonuç radyan cinsindendir)
asin(x) x in trigonometrik sinüsü [Link](0.8414709840709)=1.0
(x radyan cinsinden
tanýmlanmýºtýr.)
atan(x) x in trigonometrik tanjantý 4.0*[Link](1.0)=3.14159265359
(x radyan cinsinden
tanýmlanmýºtýr.)
atan2(x,y) x,y noktanýn 4.0*Math.atan2(1.0,1.0)=3.14159265359
x,ykoordinatlarýdýr
exp(x) e(2.7182818284590452354) [Link](1.0) =2.718281828459
nin x inci kuvveti
[Link](2.0) =7.389056098931
log(x) e tabanýna göre logaritma [Link](2.718281828459)=1.0
pow(x,y) x in y inci kuvveti [Link](3,2)=9.0
max(x,y) x ve y nin büyük olaný [Link](2.3,12.7)=12.7
min(x,y) x ve y nin küçük olaný [Link](2.3,12.7)=2.3

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
random() Raslantýsal sayý (0 ile 1 [Link]() = 0 ila bir arasýnda her
arasinda) sayý çýkabilir

Program 2.1 de Math sýnýfýndaki metotlarý kullanan Matematik1 sýnýfýný görüyoruz.

Program 2.1 Math sýnýfýnda(class) çalýºan metotlardan bazýlarýný gösteren


[Link] programý

import [Link]; // giriº çýký

class matematik1SW

public static void main (String args[])

double x,y;

String s="";

x=[Link]([Link]

("Bir gerçek sayý giriniz : "));

y=[Link]([Link]

("Ýkinci bir gerçek sayý giriniz : "));

s +="Statik Matematik kütüphanesi Math de \n";

s+="en cok kullanilan metodlar :\n" ;

// [Link](3.2)=3.2 [Link](-3.2)=3.2

s+="[Link]("+x+") = "+[Link](x)+"\n";

// [Link](9.2)=10 [Link](-9.8)=-9

// [Link](x) x den buyuk en kucuk tam say�ya yuvarlar

s+="[Link]("+x+") = "+[Link](x)+"\n";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// [Link](9.2)=9 [Link](-9.8)=-10

// [Link](x) x den kucuk en buyuk tam say�ya yuvarlar

s+="[Link]("+x+") = "+[Link](x)+"\n";

// Trigonometrik fonksiyonlar sin(x) cos(x) tan(x) x:radyan

// [Link] pi sayisi

s += "[Link] = "+[Link]+"\n";

s += "[Link]("+x+") = "+[Link](x)+"\n";

s += "[Link]("+x+") = "+[Link](x)+"\n";

s += "[Link]("+x+") = "+[Link](x)+"\n";

//Trigonometrik fonksiyonlar asin(y) acos(y) atan(y)

// asin,acos,atan : radyan

s += "[Link]("+y+") = "+[Link](y)+"\n";

s += "[Link]("+y+") = "+[Link](y)+"\n";

s += "[Link]("+y+") = "+[Link](y)+"\n";

// [Link](x) dogal logaritma (e) taban�na gore

// Math.E e sayisi = 2.718281828...

s += "Math.E = "+Math.E+"\n";

s += "[Link]("+x+") = "+[Link](x)+"\n";

// [Link](x,y) x in y inci kuvveti

s += "[Link]("+x+","+y+" ) = "+[Link](x,y)+"\n";

// [Link](x) Math.E=e=2.718281828.. in x inci kuvveti

s += "[Link]("+x+" ) = "+[Link](x)+"\n";

// [Link](x) x in kare koku

s += "[Link]("+x+" ) = "+[Link](x)+"\n";

// Maximum - minimum functions

// [Link](x,y) [Link](x,y)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s += "[Link]("+x+","+y+" ) = "+[Link](x,y)+"\n";

s += "[Link]("+x+","+y+" ) = "+[Link](x,y)+"\n";

[Link](null,s,

"Math kütüphanesi iºlemleri",JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 2.1 [Link] programýnýn çýktýsý

2.2 METOTLAR

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Metotlar java programlarýnýn ana parçalarýdýr. Metotlar sýnýflarýn(class) içinde yer alan küçük
program parçacýklarýdýr. Metotlarýn çoðunda deðiºken parametreler metotlar ve sýnýflar
arasýnda iletiºimi saðlarlar. Ayrýca her metotun kendine özgü deðiºkenleri de vardýr. Metot
yapýsýnýn ana sebebi programlarý modüler hale getirmektir. Ayný zamanda ayný program
parçacýðýnýn tekrarlanmasýný önlemeyi de saðlar. Her metot çaðrýldýðý proðram parçacýðýna
belli bir deðiºkeni aktarabilir. Metotlarýn tanýmlarýnda aktardýklarý deðiºken türü tanýmlanýr.
Eðer metot hiçbir deðiºken aktarmýyorsa void sözcüðü yle tanýmlanýr. Metotlarýn genel
tanýmý aºaðýdaki gibidir. Parantez içindeki terimler kullanýlmýyabilir.

Genel Metot tanýmý

(public) (static) sýnýf deðiºken türü sýnýf ismi( sýnýf deðiºken girdi listesi)
{
sýnýf içinde geçerli degiºken tanýmlarý

Metotun ana gövdesi

return metot çýktý deðiºkeni

Örnek olarak aºaðýdaki metotu verebiliriz :

Public static double metotornegi(int x,double y)


{
double z = 3.5;
double f ;
f = z*x*x+y;
return f;
}

Bu metotdaki x ve y gerçek (double) deðiºkenleri metotun girdi deðiºkenleridir. z ve f


deðiºkenleri metotun yerel deðiºkenleridir ve bu metot dýºýnda tanýmlarý yoktur. Metot f
deðiºkeninin deðerini çýktý olarak metotun dýºina aktarmaktadýr. Eðer yukarýdaki metot ayný
sýnýfýn içindeki baºka bir metotda veya main metotunda aºaðýdaki gibi bir örnekte kullanýlýrsa,

double z = 2.5;
double r ;
int i = 3;
r = metotornegi(i,z);
[Link](“r = “+r);

r = 34 sonucuna ulaºýlýr. ªimdi ayný metotun statik metot olarak bir appletin içinde
kullanýlmasýný görelim.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 2.2 : [Link] programýnda kare statik metotunun kullanýlmasý

import [Link].*;

public class metotornegi1


{
// sayinin karesi static metotu

public static double kare(double x)


{
return x*x;
}

public static void main(String[] args) throws IOException


{
double sayi;
Text cin=new Text();
[Link]("Bir tam sayi giriniz : ");
sayi=[Link]();
[Link]("girilen sayinin karesi : "+kare(sayi));
}
}

Program 2.3 : [Link] programýnda kare metotunun kullanýlmasý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir

public class metotornegi2 extends Applet


{
double sayi=5; // Gercek degisken sayi

// sayinin karesi dinamik metotu


public double kare(double x)
{
return x*x;
}

public void paint(Graphics g)


{
[Link](sayi+"nin karesi = "+kare(sayi),25,50);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

[Link]

ªekil 2.2 [Link] programýnda kare metotunun kullanýlmasý

ªekil 2.2.3 de tanýmlanan public double kare(double x) metotu, public void


paint(Graphics g) metotundaki

[Link](sayi+"nin karesi = "+kare(sayi),25,50);

iºleminde çaðýrýlmýºtýr. Bilgisayar kare(sayi) ifadesini gördüðünde metotun içine gider, orada
tanýmlanan tüm iºlemleri yaptýktan sonra return kelimesinin karºýsýndaki iºlemleri çaðýrýldýðý
yere geri iletir. Metotorneði1 java programýnda çaðýrýlan kare(sayi) metotunda sadece
sayýnýn kendisiyle çarpýmý return kelimesinin karºýsýna yazýldýðýndan, kare(sayý ) ifadesi
sayý*sayý ifadesiyle eºdeðerdir. Burada kare metotundandaki deðiºken adýnýn sayý deðil x
olarak verildiðini de burada not edelim. Sayý deðiºkeni metotun giriºinde x degiºkenine
yüklenir. Gerekli iºlemler metotda yapýldýktan sonra sadece metotun sonuçlarý return
deyimiyle metodun deðiºken türü olarak (bu metod için double ) geri döner.

2.3 NESNE (OBJECT) TANIMI VE METOTLARDA KULLANIMI

Birinci bölümde temel deðiºken türlerini (double,int,boolean v.b.) nasýl tanýmladýðýmýzý


görmüºtük. Nesne tipi programlamanýn en önemli özelliði kendi deðiºken türlerimizi
yaratabilmemizdir. Ýlerideki bölümlerde kendi deðiºken türlerimizi sýnýf (class) yapýsýný
kullanarak nasýl yaratacaðýmýzý daha detaylý olarak inceleyeceðiz. Bu bölümde nesnelerin
program içindeki tanýmlanmasýna göz atalým. Daha önce tanýmladýðýmýz bazý applet
programlarýnda nesne tanýmlarý zaten geçmiºti. Örneðin daha önceki programlarýmýzda bilgi
okutmak için kullandýðýmýz

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Text cin=new Text();

Terimi Text sýnýfýndan(class) cin nesnesini tanýmlar. Nesne(object) tanýmý yaparken ayný
metotlarda olduðu gibi deðiºken veya nesneleri girdi olarak tanýmlamamýz mümkündür.

Diðer bir örnek olarak yine daha önceki örnek problemlerde kullandýðýmýz Label
sýnýfýndan(class) kutubasligi nesnesinin tanýmýný ve TextField sýnýfýndan(class) kutugirdisi
nesnesini gösterebiliriz.

Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi

kutubasligi=new Label("Ogrencinin notunu giriniz (A B C.. : ");

TextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi

kutugirdisi=new TextField(5);

Bu örneklerde de görüldüðü gibi Nesne tanýmý ºu ºekilde yapýlmaktadýr:

Sýnýf (class) isminesne(object) ismi ;

nesne(object) ismi = new Sýnýf (class) ismi(deðiºken veya nesne girdi listesi)

Nesne tanýmýný daha iyi anlamak için metotornegi2 sýnýfýný yazdýðýmýz programý biraz
deðiºtirerek metotornegi3 ve metotornegi3a sýnýflarýný olusturalým ve kare metotumuzu
metotornegi3a sýnýfýna yerlestirelim.

Program 2.4 : [Link] programýnda kare metotunun kullanýlmasý

import [Link]; // java applet sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

class metotornegi3a
{
// sayinin karesi dinamik metotu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double kare(double x)
{
return x*x;
}
}

public class metotornegi3 extends Applet


{
double sayi=5; // Gercek degisken sayi
metotornegi3a nesne1=new metotornegi3a();
public void paint(Graphics g)
{
[Link](sayi+"nin karesi = "+[Link](sayi),25,50);
}
}

[Link] programýnda iki tane sýnýf(class) yaratýlmýºtýr. Ýlk sýnýf metotornegi3a da


kare metotu tanýmlanmýºtýr. Ýkinci sýnýf(class) metotornegi3 de ise metotornegi3a sýnýfý
nesne1 nesnesi tanýmlanmýº, ve kare metotu nesne1 nesnesi üzerinden [Link](sayi)
olarak çaðýrýlmýºtýr. Bu metot nesne1 nesnesi için bilgisayar belleðinde bir yer ayýrýr. Kare
metotunu çaðýrýrken bu yerin adresini kullanýr. [Link] programýnda kare(sayý)
dogrudan kullanýlmýºtý. Çunku kare metotu ayný sýnýfýn(class) içinde tanýmlanmýºtý.
[Link] programýnda ise kare metotu ayrý bir sýnýf(class) ta tanýmlandýðýndan
yerinin tanýmlanmasý gerekir. Bu bizim kendi odamýzýn yatak odasýný tanýmlarken sadece
yatak odasý dememizle baska bir evin yatak odasýný tanýmlarken Ahmet beyin evinin yatak
odasý dememiz gibidir. Metotlar statik olarak da tanýmlanabilirler. Statik olarak tanýmlanan
metotlar nesne kullanýlmadan direk olarak sýnýf(class) adlarý kullanýlarak çaðýrýlabilirler.

Program 2.5 : [Link] programýnda static kare metotunun kullanýlmasý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
class metotornegi4a
{
// sayinin karesi dinamik metotu

public static double kare(double x)


{
return x*x;
}
}

public class metotornegi4 extends Applet


{
double sayi=5; // Gercek degisken sayi
public void paint(Graphics g)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
[Link](sayi+"nin karesi = "+ [Link](sayi),25,50);
}
}

Görüldüðü gibi metotornegi4 sýnýfýnda(class) kare metotu [Link](sayi) olarak


tanýmlanmýº ve ek bir nesne adresi kullanýlmamýºtýr. Static olarak tanýmlanan metotlarýn
kendikendine yeterli metotlar olamasý gerekir. Yani içinde bulunduðu sýnýfla veya baska
sýnýflarla direk olarak veri alýºveriºi olamaz. Girdileri sadece girdi parantezleri () arasinda
verilen deðiº[Link] metotlar ise kendi sýnýflarý ve diðer sýnýflarla deðiºik yollardan
bilgi ve deðiºken aktarýmý yapabilirler

[Link] ve [Link] programlarýnda iki sýnýf(class) ayný dosyada yer


almiºtý. Her sinifi ayri bir dosyada da tanýmlamak mumkündür. Bu yapýldýðýnda diðer dosya
import(ithal) terimiyle diðer programa aktarýlýr. ªekil 2.6 ve 2.7 de ªekil 2.5 de verilen
programýn iki ayrý dosyada yazýlýmýný görüyoruz.

Program 2.6 : [Link] programýnda kare metotunun tanýmlanmasý

class metotornegi6
{
// sayinin karesi dinamik metotu

public double kare(double x)


{
return x*x;
}
}

Program 2.7 : [Link] programýnda kare metotunun metotornegi6 sýnýfý x


nesnesi üzerinden kullanýlýºý.

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import metotornegi6; // metotornegi6 sýnýfýný çaðýr

public class metotornegi7 extends Applet


{
double sayi=5; // Gercek degisken sayi
metotornegi6 x=new metotornegi6();
public void paint(Graphics g)
{
[Link](sayi+"nin karesi = "+ [Link](sayi),25,50);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
2.4 METOTLARIN KENDÝ KENDÝNÝ ÇAÐIRMASI (RECURSION)

Bazý problemlerin çözümünde bir metotun kendi kendini çaðýrmasý yararlý olabilir. Java bir
metotun kendi kendini çaðýrmasýna izin verir. Burada dikkatli olunmasý gereken nokta bu
kendi kendine çaðýrýlma döngüsünün sonsuza kadar sürmesinin bir kontrol yapýsý
kullanýlarak engellenmesidir. Kendi kendini çaðýran programlarda mutlaka bir döngü çýkýº
ºartý tanýmlanmalýdýr.

Daha önceki alýºtýrmalarýmýzda faktoriyel sýnýfý tanýmlanmýºtý. Önce bu programdaki


faktoriyel hesabýný ayrý metot haline dönüºtürelim. Program 2.8 de daha önce de
gördüðümüz faktoriyeli ana metotumuz olan main içinde hesaplayan faktoriyel programýný
görmekteyiz. Program 2.9 da faktoriyel hesabý for döngüsü kullanýlarak faktoriyel metotonda
gerçekleºtirilmektedir.

Program 2.8 : Metot kullanýlmadan (main metotunun içinde) faktoriyel hesaplayan


[Link] programý

import [Link].*;
import Text;
class faktoriyel
{
public static void main(String args[]) throws IOException
{
int faktoriyel=1;
Text cin=new Text();
int faktoriyelsayi;
[Link]("Bir tamsayi giriniz : ");
faktoriyelsayi=[Link]();
for(int sayi=1;sayi<=faktoriyelsayi;sayi++)
{ faktoriyel*=sayi;}
[Link](faktoriyelsayi + " faktoriyel: " + faktoriyel);
}
}

deðiºik giriº çýkýº opsiyonlarýný biraz daha anlamak için ayný programýn JOPtionPane
kullanýlarak yazýlmýº eºdeðerini de verelim :

Program 2.9 : Metot kullanýlmadan (main metotunun içinde) faktoriyel hesaplayan


[Link] programý

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class faktoriyelSW

public static void main(String args[])

int faktoriyel=1;

int faktoriyelsayi;

faktoriyelsayi=[Link]([Link]("Bir tam sayý giriniz : "));

for(int sayi=1;sayi<=faktoriyelsayi;sayi++)

{ faktoriyel*=sayi;}

String s=faktoriyelsayi+" faktoriyel: "+faktoriyel;

[Link](null,s, "Metod örneði [Link] ",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

ªimdi ayný programýn faktoriyel metodu ayrý yazýlmýº fakat yine for döngüsü kullanan
ºekillerine göz atalým. Program 2.10 ve 2.11 de birbirinin ayný olu, program 2.10 da çýktý
[Link] deyimiyle alýnýrken 2.11 de çýktý [Link]
metodu kullanýlarak aktarýlmýºtýr.

Program 2.10 : for döngülü faktoriyel metotunu kullarak faktoriyel hesaplayan


[Link] programý

import [Link].*;
import Text;
class faktoriyel1
{
public static long faktoriyel(int x)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
long faktoriyel=1;
for(int sayi=1;sayi<=x;sayi++)
{ faktoriyel*=sayi;}
return faktoriyel;
}
public static void main(String args[]) throws IOException
{
Text cin=new Text();
int faktoriyelsayi;
[Link]("Bir tamsayi giriniz:");
faktoriyelsayi=[Link]();
[Link](faktoriyelsayi+" faktoriyel:" + faktoriyel(faktoriyelsayi));
}

Program 2.11 : for döngülü faktoriyel metotunu kullarak faktoriyel hesaplayan


[Link] programý

(JoptionPane girdi çýktý sistemi kullanarak hesaplýyor)

import [Link];

class faktoriyel1SW

public static long faktoriyel(int x)

{ long faktoriyel=1;

for(int sayi=1;sayi<=x;sayi++)

{ faktoriyel*=sayi;}

return faktoriyel;

public static void main(String args[])

{ int faktoriyelsayi;

faktoriyelsayi=[Link](

[Link]("Bir tam sayý giriniz : "));

String s=faktoriyelsayi+" faktoriyel: "+faktoriyel(faktoriyelsayi);

[Link](null,s,"Metod örneði [Link]


",JOptionPane.PLAIN_MESSAGE);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](0);

Program 2.12 ve 2.13 de faktoriyeli kendi kendini çaðýran(recursive) faktoriyel metotunu


kullanarak hesaplayalým.

Program 2.12 : kendi kendini çaðýran (recursive) faktoriyel metotunu kullarak faktoriyel
hesaplayan [Link] programý

import [Link].*;
import Text;

class faktoriyel2
{
public static long faktoriyel(int x)
{
if( x <= 1 )
return 1;
else
return x * faktoriyel( x – 1);
}

public static void main(String args[]) throws IOException


{
DataInputStream cin=new DataInputStream([Link]);
int faktoriyelsayi;
[Link]("Bir tamsayi giriniz:");
faktoriyelsayi=[Link](cin);
[Link](faktoriyelsayi+" faktoriyel:" + faktoriyel(faktoriyelsayi));
}
}

Bir tamsayi giriniz: 4


4 faktoriyel:24

Program 2.13 : kendi kendini çaðýran (recursive) faktoriyel metotunu kullarak faktoriyel
hesaplayan

[Link] programý (JOPtionPage girdi/çýktý)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];

class faktoriyel2SW

public static long faktoriyel(int x)

if( x <= 1 )

return 1;

else

return x * faktoriyel( x - 1);

public static void main(String args[])

{ int faktoriyelsayi;

faktoriyelsayi=[Link]([Link]("Bir tam sayý giriniz : "));

String s=faktoriyelsayi+" faktoriyel: "+faktoriyel(faktoriyelsayi);

[Link](null,s, "kendi kendini çaðýran (recursive) Metod örneði


[Link] ",

JoptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 2.3 : kendi kendini çaðýran (recursive) faktoriyel metotunu kullarak faktoriyel
hesaplayan

[Link] programýnýn sonuçlarýnýn JOPtionPage çýktýsý olarak görülmesi

Program 2.132veya 2.13’ü çalýºtýrdýðýmýzda faktoriyel hesabý ºu ºekilde yapýlacaktýr :

5! = 5 * 4! = 4 * 3! = 3 * 2! = 2 * 1! = 1

faktoriyel metotu 1 e ulastýðýnda tekrar kendisini çaðýrmýyacaðýndan geriye dogru yaptýðý


hesaplarý göndermeye baºlýyacaktýr.

1 = (2*1!(=1)) = 2 = (3 * 2!(=2)) = 6= (4*3!(=6))=24= (5*4!(24))=120= 5!(=120)

sonuç 120 olarak ana programa gönderilecektir. Kendi kendini çaðýran metodlar mutlak bir
gereksinim olmadýkça tercih edilmez. Bu tür programlamada hem sonsuz döngülerin
görülmesi daha güç olabilir, hemde for, while gibi döngüler kullanýlarak programlamaya göre
programlar daha yavaº çalýºýr. Gerçek uygulamalarda kendi kendini çaðýran programlar
genellikle bir döngü yapýsý kurmadan çok tek kerelik çaðýrmalarý gerçekleºtirmek için
kullanýlýrlar.

2.5 AYNI ADLI METOTLARIN BÝR ARADA KULLANILMASI (OVERLOADÝNG)

Java ayný adlý metotlarýn ayný sýnýf içerisinda kullanýlmasýna izin verir. Ayný sýnýfta(class)
kullanýlan metotlarýn girdi deðiºkenlerinin deðiºken türlerinin veya deðiºken sayýlarýnýn farklý
olmasý gerekir. Java ayný isimli ve ayni degiºken türlü iki metotu birbirinden ayýramaz.
Örneðin

Public double Bmetodu(double Adeðiºkeni)


Ve
Public double Bmetodu(double Bdeðiºkeni)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Veya
Public int Bmetodu(double Cdeðiºkeni)

Java tarafindan ayýrt edilemez , Fakat

Public double Cmetodu(double Adeðiºkeni)


Ve
Public double Cmetotu(int Bdeðiºkeni)
veya
Public double Cmetotu(double Adeðiºkeni, double Bdeðiºkeni)

Java tarafýndan ayýrt edilir ve birlikte ayný sýnýfýn (class) içinde yer alabilir. Eðer birbirinin tam
olarak eºiti metotlar deðiºik sýnýflarda yer alýyorsa bunun herhangi bir sakýncasý yoktur.
Program 2.11'de [Link] programý görülmektedir. Bu programda daha önceki
programlarda da kullandýðýmýz kare metotunu int ve double girdi deðiºkenleriyle iki kere ayný
sýnýfýn içerisinde tanýmlayacaðýz.

Program 2.14 : [Link] programý

import [Link];
import [Link];

public class ayniisimliikimetot extends Applet


{

// void tipi paint metotu

public void paint( Graphics g)


{
[Link](“ 7 nin karesi = “+kare(7),25,25);
[Link]( 7.5 un karesi = “+kare(7.5),25,40);
}

// int tipi kare metotu

int kare(int x)
{
return x*x;
}

// double tipi kare metotu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double kare(double x)
{
return x*x;
}

[Link]

ªekil 2.4 [Link] programýyla [Link] ýn gösterilmesi

Bu programda parantez içerisinde 7 (tamsayý) verildiðinde java tamsayi metotu kare(int x),
7.5(gerçek sayý) verildiðinde gerçeksayi metotu kare(double x) i çaðýrýr.

Benzer bir örneði swing applet olarak verelim :

Program 2.15 : H3AL9_2000 programý

import [Link];

import [Link].*;

public class H3AL9_2000 extends JApplet

JTextArea ciktiAlani;

public void init()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ciktiAlani=new JTextArea();

Container c=getContentPane();

[Link](ciktiAlani);

int x1=7;

double x2=7.0;

[Link](" exp ("+x1+") (int metod girdisi ) = "+exp(x1)+"\n");

[Link](" exp ("+x2+") (double metod girdisi) = "+exp(x2)+"\n");

x1=5;

x2=5.0;

[Link](" exp ("+x1+") (int metod girdisi ) = "+exp(x1)+"\n");

[Link](" exp ("+x2+") (double metod girdisi) = "+exp(x2)+"\n");

// double girisli exp metodu

public double exp(double x)

double faktoriyel=1;

double us=1;

double exponent=1;

for(double i=1;i<=300;i++)

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

// int giriºli exp metodu

public double exp(int x)

double exponent=1.0;

for(int i=1;i<=x;i++)

exponent*=Math.E;

return exponent;

[Link]

ªekil 2.5 Gerçek ve tamsayý deðiºkenleri çaðýran ayný adlý metodlarýn çaðýrýlmasý
örneði

2.6 METOT (METHOD) VE SINIF(CLASS) DEÐݪKENLERÝ

Metotlarýn içinde kullanýlan deðiºkenler sadece metotlara aittir. O metotun dýºýnda tanýmlarý
yoktur. Eðer deðiºkenler metotlarýn dýºýnda sýnýf(class) deðiºkenleri olarak tanýmlanýrsa

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
metota da aynen aktarýlýrlar. Sýnýf deðiºkeniyle ayný isimde bir deðiºken mettotta da
tanýmlanmýºsa bu deðiºken metotun içinde kullanýlan metotun deðiºkenidir

Program 2.16 : [Link] programýnda metot deðiºkenlerinin sýnýfa


aktarýlmasý

import [Link];
import [Link];

public class metotvesinifdeg extends Applet


{
//buradaki deðiºkenler tüm sýnýfa aittir

double x ;
int y ;

void metot1( Graphics g) //metota hiç bir deðiºken girmiyor


{
x=5.5;
y=6;
[Link]("metot1 in ici : x = "+ x+" y = "+ y,25,40);
}
public void paint(Graphics g)
{
x = 2.5;
y = 3;
[Link]("metot1 in disi : x = "+ x+" y = "+ y,25,25);
metot1(g);
[Link]("metot1 in disi : x = "+ x+" y = "+ y,25,55);
}
}

[Link] programýnýn sonuçlarý

Metot1 in disi : x=2.5 y=3


Metot1 in ici : x=5.5 y=6
Metot1 in disi : x=5.5 y=6

Program 2.17 : [Link] programýnda metot deðiºkenlerinin sýnýfa


aktarýlmasý

import [Link];
import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class metotvesinifdeg1 extends Applet
{
//buradaki deðiºkenler tüm sýnýfa aittir

double x ;
int y ;

void metot1( Graphics g) //metota hi‡ bir de§iŸken girmiyor


{
double x;
int y;
x=5.5;
y=6;
[Link]("metot1 in ici : x = "+ x+" y = "+ y,25,40);
}

public void paint(Graphics g)


{
x = 2.5;
y = 3;
[Link]("metot1 in disi : x = "+ x+" y = "+ y,25,25);
metot1(g);
[Link]("metot1 in disi : x = "+ x+" y = "+ y,25,55);
}
}

[Link] programýnýn sonuçlarý

Metot1 in disi : x=2.5 y=3


Metot1 in ici : x=5.5 y=6
Metot1 in disi : x=2.5 y=3

Program 2.16'daki metotvesinifdeg sinýfýndaki metot1 metotunun içinde deðiºtirilen x ve y


deðiºkenleri tüm tüm sýnýfa(class) aittir. Bu yüzden paint metotundaki drawString metotu
tekrar çaðýrýldýðýnda x ve y nin deðerlerinin deðiºtiðini görürüz.

Program 2.17 deki metotvesinifdeg1 sýnýfýndaki metot1 metotunun içinde ise yerel
deðiºkenler x ve y tanýmlanmýºtýr. Bu yüzden metot1 in içindeki x ve y deðiºkenlerinin
deðiºmesi paint metotundaki drawString metotu tekrar çaðýrýldýðýnda x ve y nin deðerlerinin
deðiºmediði görülür.

Nesne tanýmý yapýldýðýnda Bilgisayar bu nesne için bir adres yaratýr. Yeni adres yarat komutu
new komutudur.

Pogram 2.18 : [Link] programda nokta1 ve nokta2 nesnelerinin yaratýlmasý ve


adres paylaºýmý.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// java kutuphanelerinde tanimli bir sinifin cagirilip
// nesne olarak tanimlanmasi ve adres paylasimi

import [Link].*; //java girdi cikti sinifini cagir


import [Link]; //Point sinifini cagir

class Point1
{
public static void main(String args[])

{
//Point sinifi x,y koordinatli bir nokta tanimlar
Point nokta1,nokta2;
nokta1=new Point(100,100);
nokta2=nokta1;
// nokta1 ve nokta2 bilgisayarda ayni
// adres kutusunu paylasiyor
[Link]("nokta1 ve nokta2 ayni degerleri tasiyor");
[Link]("ve ayný bilgisayar adresini paylasiyor");
[Link]("nokta 1 : "+nokta1.x+" , "+nokta1.y);
[Link]("nokta 2 : "+nokta2.x+" , "+nokta2.y);
nokta1.x=200;
nokta1.y=200;
[Link]("nokta1 in degeri degistirildi");
[Link]("nokta 1 : "+nokta1.x+" , "+nokta1.y);
[Link]("nokta 2 : "+nokta2.x+" , "+nokta2.y);
// nokta1 ve nokta2 nin degerleri ayni fakat bilgisayarda
// degisik adreslerde tanimlanmis
nokta1=new Point(100,100);
nokta2=new Point(100,100);
[Link]("nokta1 ve nokta2 ayni degerleri tasiyor");
[Link]("fakat ayni bilgisayar adresini paylasmiyor");
[Link]("nokta 1 : "+nokta1.x+" , "+nokta1.y);
[Link]("nokta 2 : "+nokta2.x+" , "+nokta2.y);
nokta1.x=200;
nokta1.y=200;
[Link]("nokta1 in degeri degistirildi");
[Link]("nokta 1 : "+nokta1.x+" , "+nokta1.y);
[Link]("nokta 2 : "+nokta2.x+" , "+nokta2.y);
}
}

[Link] da verilen

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Point nokta1,nokta2;
nokta1=new Point(100,100);
nokta2=nokta1;

tanýmýnda Point sýnýfýndan(class) nokta1 ve nokta2 deðiºkenleri tanýmlanmýº, nokta1


deðiºkeni için yeni(new) adres tanýmlanmýº, nokta2 deðiºkenine de ayný adresi (nokta1'in
adresini) kullanmasý soylenmiºtir. Bu yüzden programda nokta1 e yeni deger verildiðinde
nokta2 nin deðeri de ayný deðeri alýr.

daha sonra kullanýlan

nokta1=new Point(100,100);
nokta2=new Point(100,100);

deyimi ile ise nokta1 ve nokta2 için iki ayrý adres yaratýlmýºtýr. Bu yüzden nokta1 deðiºtiðinde
nokta2 eski deðerinde kalýr.

Ayný adresin iki deðiºken tarafýndan kullanýlmasý ancak gerektiði zaman ve çok dikkat
sarfederek yapýlmalýdýr. Gereksiz yere kullanýlmasýndan kesin olarak kaçýnýlmalýdýr.
Program güvenlik ve kontrol problemleri yaratabildiði gibi, istemediðimiz deðiºken
deðerlerinin silinmesi sonucunu da verebilir.

2.7 ALISTIRMALAR

1. Math kütüphanesindeki [Link]() metotunu kullanarak static zar metotunu yazýnýz.


Bu metotu H4A1a sýnýfýnda(class) tanýmlayiniz.

Not : 1-den 6 ya kadar tesadüfi (random) sayýlarý 1+(int)([Link]()*6) formülü ile


hesaplayabiliriz.

Program 2.19 [Link] ve static int zar metodu

public class H4A1a

public static int zar()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

return 1+(int)([Link]()*6);

H4A1b sinifinda(class) java konsol ana metotu (public void main) yazarak zar degerini
yazdiriniz.

Program 2.20 [Link]

import [Link].*; // giris cikis


import H4A1a;

class H4A1b
{
public static void main (String args[]) throws IOException
{
[Link]("zar degeri : "+[Link]());
}
}

H4A1c sinifinda java konsol ana metotunda (public void main) metotunda yüz(100) kere zar
attýrarak ortalamasýný hesaplayýnýz.
Not : for veya while döngüsü kullanabilirsiniz.

Program 2.21 [Link]

import [Link].*; // giris cikis


import H4A1a;
class H4A1c
{
//yuz zarin ortalamasi
public static void main (String args[]) throws IOException
{
double ortalama;
double toplam=0;
for(int sayi=0;sayi<100;sayi++)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
toplam+=[Link]();
}
ortalama=toplam/100.0;
[Link]("100 zarin ortalamasi = "+ortalama);
}

H4A1d sinifinda java konsol ana metotunda (public void main) bin(1000) kere zar attýrarak
her rakamýn kac kere geldigini bulunuz ve yazdýrýnýz.
Not : switch – case deyimi bu tür programlar için idealdir

Program 2.22 [Link]

import [Link].*; // giris cikis


import H4A1a;
public class H4A1d
{
//bin zar atiminda her zar kac kere gelir
public static void main (String args[]) throws IOException
{
int zardegeri;
int zar1,zar2,zar3,zar4,zar5,zar6;
int zaratimsayisi=0;
zar1=0;
zar2=0;
zar3=0;
zar4=0;
zar5=0;
zar6=0;
while(zaratimsayisi<1000)
{
zardegeri=[Link]();
switch(zardegeri)
{
case 1:
zar1++;
break;
case 2:
zar2++;
break;
case 3:
zar3++;
break;
case 4:
zar4++;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
break;
case 5:
zar5++;
break;
case 6:
zar6++;
break;
}
zaratimsayisi++;
}

[Link]("toplam zar 1 sayisi : "+zar1);


[Link]("toplam zar 2 sayisi : "+zar2);
[Link]("toplam zar 3 sayisi : "+zar3);
[Link]("toplam zar 4 sayisi : "+zar4);
[Link]("toplam zar 5 sayisi : "+zar5);
[Link]("toplam zar 6 sayisi : "+zar6);
}
}

toplam zar 1 sayisi : 169

toplam zar 2 sayisi : 165

toplam zar 3 sayisi : 165

toplam zar 4 sayisi : 146

toplam zar 5 sayisi : 178

toplam zar 6 sayisi : 177

2. Math kütüphanesindeki [Link]() metotunu kullanarak static zar metotunu


yazýlmýºtýr. Bu metot H4A1a sýnýfýnda(class) Problem 1 de tanýmlanmýºtýr.

H4A1bSW sinifinda(class) java konsol ana metotu (public void main) yazarak zar degerini
yazdiriniz. Yazdýrma iºlemini java swing sýnýfýndan JoptionPane sýnýfýný kullanarak yaptýrýnýz.

Program 2.23 [Link]

import [Link]; // giris cikis

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import H4A1a;

class H4A1bSW

public static void main (String args[])

[Link](null,"atýlan zar = "+[Link]()

,"sýnýf örneði, zar atýmý ",JOptionPane.PLAIN_MESSAGE);

[Link](0);

H4A1cSW sinifinda java konsol ana metotunda (public void main) metotunda yüz(100) kere
zar attýrarak ortalamasýný hesaplayýnýz. Yazdýrma iºlemini java swing sýnýfýndan JoptionPane
sýnýfýný kullanarak yaptýrýnýz.
Not : for veya while döngüsü kullanabilirsiniz.

Program 2.24 [Link]

import [Link]; // giris cikis

import H4A1a;

class H4A1cSW

//yüz zarin ortalamasi

public static void main (String args[])

double ortalama;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double toplam=0;

for(int sayi=0;sayi<100;sayi++)

toplam+=[Link]();

ortalama=toplam/100.0;

[Link](null,"100 zarýn ortalamasý = "+ortalama

,"sýnýf örneði, 100 kez zar atýmý ortalamasý H4A1c",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

H4A1dSW sinifinda java konsol ana metotunda (public void main) bin(1000) kere zar
attýrarak her rakamýn kac kere geldigini bulunuz ve yazdýrýnýz. Yazdýrma iºlemini java swing
sýnýfýndan JoptionPane sýnýfýný kullanarak yaptýrýnýz.
Not : switch – case deyimi bu tür programlar için idealdir

Program 2.25 [Link]

import [Link]; // giris cikis

import H4A1a;

public class H4A1dSW

//bin zar atiminda her zar kac kere gelir

public static void main (String args[])

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

int zardegeri;

int zar1,zar2,zar3,zar4,zar5,zar6;

int zaratimsayisi=0;

zar1=0;

zar2=0;

zar3=0;

zar4=0;

zar5=0;

zar6=0;

while(zaratimsayisi<1000)

zardegeri=[Link]();

switch(zardegeri)

case 1:

zar1++;

break;

case 2:

zar2++;

break;

case 3:

zar3++;

break;

case 4:

zar4++;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
break;

case 5:

zar5++;

break;

case 6:

zar6++;

break;

zaratimsayisi++;

String s="";

s+="toplam zar 1 sayisi : "+zar1+"\n";

s+="toplam zar 2 sayisi : "+zar2+"\n";

s+="toplam zar 3 sayisi : "+zar3+"\n";

s+="toplam zar 4 sayisi : "+zar4+"\n";

s+="toplam zar 5 sayisi : "+zar5+"\n";

s+="toplam zar 6 sayisi : "+zar6+"\n";

[Link](null,s

,"sýnýf örneði, 1000 kez zar atýmý gelen zarlar H4A1cdSW",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
3.

 [Link] programini incele ve calistir.

 [Link] programindaki zar metotunu [Link] sýnýfýna yerlestir.


[Link] programindaki zar metotunu sil ve import H4A2b; deyimini ekle.

 [Link] programýný H4A2c olarak deðiºtir. sinifindan yeni nesne z yi


[Link] programýna ekle ve Paint methodunda çaðýrýlan zar metotunda gerekli
deðiºiklikleri yap. Programi yeni sekliyle calýºtýr.

Program 2.26 : [Link], zar atma metot örneði

import [Link].*;
import [Link];
import [Link].*;
public class zarApplet extends Applet implements ActionListener
{
int toplamzaratisi=0;
int toplam=0;
TextField ilkzar,ikincizar;
Button salla; //zar atma düðmesi
int zar1,zar2;
public static int zar()
{
return 1+(int)([Link]()*6);
}

public void init()


{
//programi baslat
ilkzar=new TextField(10); // Textfield sinifi ilkzar nesnesini yarat
add(ilkzar); // ilk zar nesnesini pencereye ekle
ikincizar=new TextField(10);// Textfield sinifi ikincizar nesnesini yarat
add(ikincizar); // ikinci zar nesnesini pencereye ekle

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
salla=new Button("Zari salla ve at");
add(salla);
[Link](this);
}
public void actionPerformed(ActionEvent e)
{
zar1=zar();
zar2=zar();
[Link]([Link](zar1));
[Link]([Link](zar2));
toplam+=(zar1+zar2);
toplamzaratisi++;
repaint();
}

public void paint( Graphics g)


{
[Link]("toplam = "+toplam+" Atilan zar sayisi = "+toplamzaratisi,25,50);
}
}

public class H4A2b


{
public static int zar()
{
return 1+(int)([Link]()*6);
}
}

import [Link].*;
import [Link];
import [Link].*;
import H4A2b;
public class H4A2c extends Applet implements ActionListener
{
int toplamzaratisi=0;
int toplam=0;
TextField ilkzar,ikincizar;
Button salla; //zar atma d�gmesi
int zar1,zar2;
H4A2b z=new H4A2b();
public void init()
{
//programi baslat
ilkzar=new TextField(10); // Textfield sinifi ilkzar nesnesini yarat
add(ilkzar); // ilk zar nesnesini pencereye ekle
ikincizar=new TextField(10);// Textfield sinifi ikincizar nesnesini yarat
add(ikincizar); // ikinci zar nesnesini pencereye ekle
salla=new Button("Zari salla ve at");
add(salla);
[Link](this);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e)
{
zar1=[Link]();
zar2=[Link]();
[Link]([Link](zar1));
[Link]([Link](zar2));
toplam+=(zar1+zar2);
toplamzaratisi++;
repaint();
}

public void paint( Graphics g)


{
[Link]("toplam = "+toplam+" Atilan zar sayisi = "+toplamzaratisi,25,50);
}
}

[Link]

ªekil 2.7 [Link] çýktýsý

4. [Link] programýný inceleyiniz, ve applet ortamýnda çalýºtýrýnýz.

Program 2.27 FaktoriyelTesti

import [Link];
import [Link];

public class faktoriyeltesti extends Applet


{
public void paint(Graphics g)
{
int y=25;
for(long i=0;i<=10;i++)
{
[Link](i+"! = "+faktoriyel(i),25,y);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
y+=15;
}
}

public long faktoriyel(long sayi)


{
if(sayi <=1) return 1;
else return sayi*faktoriyel(sayi - 1);
}
}

5. [Link] programýný inceleyiniz ve applet ortamýnda çalýºtýrýnýz.

Program 2.28 [Link]

import [Link];
import [Link];

public class fibonachitesti1 extends Applet


{
public void paint(Graphics g)
{
int y=25;
for(long i=0;i<=15;i++)
{
[Link]("Fibonachi("+i+") = "+fibonachi(i),25,y);
y+=15;
}
}

public long fibonachi(long sayi)


{
if(sayi <=0) return 0;
else if(sayi ==1) return 1;
else return fibonachi(sayi - 1)+fibonachi(sayi - 2);
}
}

6. [Link] swing applet programýný inceleyiniz ve appletviewer ile


çalýºtýrýnýz

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 2.29 Fibobachi testi, swing applet programý [Link]

import [Link].*;

import [Link].*;

import [Link].*;

public class fibonnachitesti1SWA extends JApplet

private JTextArea cikti;

public void init()

Container c=getContentPane();

[Link](new FlowLayout());

cikti=new JTextArea(" ");

[Link](cikti);

[Link]([Link]());

String s="";

for(long i=0;i<=15;i++)

s+="Fibonachi("+i+") = "+fibonachi(i)+"\n";

[Link](s);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public long fibonachi(long sayi)

if(sayi <=0) return 0;

else if(sayi ==1) return 1;

else return fibonachi(sayi - 1)+fibonachi(sayi - 2);

[Link]

ªekil 2.8 fibonnachitesti1SWA swing applet çýktýsý

7. [Link] swing Frame programýný inceleyiniz ve java komutu ile çalýº


týrýnýz

Program 2.30 Fibobachi testi, swing applet programý [Link]

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class fibonnachitesti1SWF extends JFrame

private JTextArea cikti;

public fibonnachitesti1SWF()

super("Fibonacchi Testi 1 Swing Frame");

Container c=getContentPane();

[Link](new FlowLayout());

cikti=new JTextArea(" ");

[Link](cikti);

[Link]([Link]());

String s="";

for(long i=0;i<=15;i++)

s+="Fibonachi("+i+") = "+fibonachi(i)+"\n";

[Link](s);

public long fibonachi(long sayi)

if(sayi <=0) return 0;

else if(sayi ==1) return 1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else return fibonachi(sayi - 1)+fibonachi(sayi - 2);

public static void main(String[] args)

fibonnachitesti1SWF pencere= new fibonnachitesti1SWF();

[Link](new BasicWindowMonitor());

[Link](150,350);

[Link](true);

[Link]

ªekil 2.9 fibonnachitesti1SWF çýktýsý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
8. [Link] programýný inceleyiniz ve applet ortamýnda çalýºtýrýnýz.

Problem 2.31 [Link] programý

import [Link].*;
import [Link];
import [Link].*;

public class fibonachitesti2 extends Applet implements ActionListener


{
Label rakametiketi,sonucetiketi;
TextField rakam,sonuc;

public void init()


{
rakametiketi=new Label("Bir tamsayi giriniz : ");
rakam=new TextField(10);
[Link](this);
sonucetiketi=new Label("Fibonachi degeri : ");
sonuc=new TextField(10);
[Link](false);
add(rakametiketi);
add(rakam);
add(sonucetiketi);
add(sonuc);
}

public void actionPerformed( ActionEvent e)


{
long sayi;
long fibonachisayisi;
sayi=[Link]([Link]());
showStatus("Fibonachi hesaplan�yor....");
fibonachisayisi=fibonachi(sayi);
showStatus("Fibonachi hesaplandi....");
[Link]([Link](fibonachisayisi));
}

public long fibonachi(long sayi)


{
if(sayi <=0) return 0;
else if(sayi ==1) return 1;
else return fibonachi(sayi - 1)+fibonachi(sayi - 2);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 2.10 Fibonachi testi 2 çýktýsý (AWT Aplet)

9. [Link] programýnda bir önceki programda yazýlan fibonachi testi


swing appletiortamýnda yazýlmýºtýr. Programý inceleyiniz ve applet ortamýnda çalýºtýrýnýz.

Problem 2.32 [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

public class fibonachitesti2SWA extends JApplet implements ActionListener

JLabel rakametiketi,sonucetiketi;

JTextField rakam,sonuc;

public void init()

Container c=getContentPane();

[Link](new FlowLayout());

rakametiketi=new JLabel("Bir tamsayi giriniz : ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
rakam=new JTextField(10);

[Link](this);

sonucetiketi=new JLabel("Fibonachi degeri : ");

sonuc=new JTextField(10);

[Link](false);

[Link](rakametiketi);

[Link](rakam);

[Link](sonucetiketi);

[Link](sonuc);

public void actionPerformed( ActionEvent e)

long sayi;

long fibonachisayisi;

sayi=[Link]([Link]());

showStatus("Fibonachi hesaplanýyor....");

fibonachisayisi=fibonachi(sayi);

showStatus("Fibonachi hesaplandi....");

[Link]([Link](fibonachisayisi));

public long fibonachi(long sayi)

if(sayi <=0) return 0;

else if(sayi ==1) return 1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else return fibonachi(sayi - 1)+fibonachi(sayi - 2);

[Link]

ªekil 2.11Fibonachi testi 2 çýktýsý (swing applet)

10. Bir kürenin hacmini hesaplayacak bir applet programý yazýnýz. Kürenin hacmi
küreHacmi isimli metot tarafýndan hesaplansýn. Applet bir girdi alanýna kürenin yariçapýný
sorsun ve yarýçap girildiðinde yeni küre hacmi ekranda gösterilsin.

Not : Kürenin hacmi : (4.0/3.0)*[Link]*[Link](r,3);

Problem 2.33 : Bir kürenin hacmini hesaplayan [Link] programý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir

public class H5A1 extends Applet implements ActionListener


{
// bu sinif kurenin hacmini hesaplar
//=====================================================
// sinif degiskenleri
// bu degiskenler tum s�n�fa aittir
Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi
TextField kutugirdisi;// Textfield sinifi degiskeni (nesnesi) kutugirdisi
double yaricap; // Gercek degisken yar�cap
double hacim; // Gercek degisken hacim
//=====================================================
// pencereyi baslatma metotu
// pencere ilk basladiginda
// degiskenler buradaki degerleri alirlar
public void init()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
kutubasligi=new Label("Kurenin yaricapini (m)giriniz : ");
add(kutubasligi);
kutugirdisi=new TextField(10);
add(kutugirdisi);
yaricap=0;
hacim=0;
[Link](this);
}
//=====================================================
// girdi alanindaki olan olaylari dinleme metotu
// Her yeni rakam girildiginde bu metot cagirilir
public void actionPerformed(ActionEvent e)
{
Double sayi1=new Double([Link]() );
yaricap=[Link]();
hacim=kureninhacmi(yaricap);
[Link](" ");//kutudaki rakami sil
repaint();//pencereyi yeniden paint metotuna gore ciz
}
//=====================================================
// paint (boya=pencereye ciz metotu)
public void paint(Graphics g)
{
[Link](yaricap+" m capindaki kurenin hacmi : "+hacim+" m^3",25,50);
}
//=====================================================
//kurenin hacmini hesaplama metotu
public double kureninhacmi(double r)
{
return (4.0/3.0)*[Link]*r*r*r;
}
}

[Link]

ªekil 2.12 Kürenin hacmini hesaplayan [Link] applet çýktýsý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
11. Bir dik üçgenin hipotenüsünü hesaplayan bir applet programý yazýnýz. Program dik
üçgenin iki dik kenarýný applet de girsin ve hipotenus metotuyla hesaplasýn ve sonucu
applete yazdýrsýn.

Not : Dik üçgenin hipotenüsü :


Hipotenüs = [Link](dikkkenar1*dikkenar1+dikkenar2*dikkenar2);

Problem 2.34 : Bir dik üçgenin hipotenüsünü hesaplayan [Link] programý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir
public class H5A2 extends Applet implements ActionListener
{
// bu sýnýf dik ucgenin hipotenusunu hesaplar
//=====================================================
// sinif degiskenleri
// bu degiskenler tum sýnýfa aittir
Label kutubasligi1; //Label sinifi degiskeni (nesnesi) kutubasligi1
TextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1
Label kutubasligi2; //Label sinifi degiskeni (nesnesi) kutubasligi2
TextField kutugirdisi2; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
double dikkenar1; // Gercek degisken dikkenar1
double dikkenar2; // Gercek degisken dikkenar1
//=====================================================
// pencereyi baslatma metotu
// pencere ilk basladiginda
// degiskenler buradaki degerleri alirlar
public void init()
{
kutubasligi1=new Label("Birinci dik kenari giriniz : ");
add(kutubasligi1);
kutugirdisi1=new TextField(10);
add(kutugirdisi1);
kutubasligi2=new Label("Ikinci dik kenari giriniz : ");
add(kutubasligi2);
kutugirdisi2=new TextField(10);
add(kutugirdisi2);
dikkenar1=0;
dikkenar2=0;
[Link](this);
}
//=====================================================
// girdi alanindaki olan olaylari dinleme metotu
// Her yeni rakam girildiginde bu metot cagirilir
public void actionPerformed(ActionEvent e)
{
Double sayi1=new Double([Link]() );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
dikkenar1=[Link]();
Double sayi2=new Double([Link]() );
dikkenar2=[Link]();
//[Link](" ");//kutudaki rakami sil
repaint();//pencereyi yeniden paint metotuna gore ciz
}
//=====================================================
// paint (boya=pencereye ciz metotu)
public void paint(Graphics g)
{
[Link](" hipotenus = "+hipotenus(dikkenar1,dikkenar2),25,80);
}
//=====================================================
//ucgenin hipotenusunu hesaplama metotu
public double hipotenus(double dk1,double dk2)
{
return [Link](dk1*dk1+dk2*dk2);
}
}

[Link]

ªekil 2.13 Bir dik üçkenin hipotenüsünü hesaplayan [Link] applet çýktýsý

12. H3OD5_2000

iki kenar ve aralarýndaki açý (derece cinsinden ) verildiðinde üçgenin üçüncü kenarýný
hesaplayacak

public static double ucgenkarsýkenar(double birinciyan, double ikinciyan,

double aciderece)

metodunu yazýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
not:karsikenar=[Link](birinciyan*birinciyan+ikinciyan*ikinciyan-
2*birinciyan*ikinciyan*[Link](aradakiaçý derece));

bu metodu H3OD5_2000 sýnýfý JoptionPane konsol programý main metodunda kullanýnýz (iki
yan kenar ve aradaki açý derece cinsinden verilecek, üçüncü kenar hesaplanarak
yazýlacak)

Problem 2.35 H3OD5_2000.java programý diküçgenin hipotenüsünü hesaplar

import [Link]; // giriº çýkýºý

import Mathd;

public class H3OD5_2000

// ucgenin kenarinin bulunmasi metodu

public static double kkenar(double a,double b,double t)

double kenar;

kenar=[Link](a*a+b*b-2*a*b*[Link](t));

return kenar;

public static void main(String[] args)

Text cin=new Text();

double sayi1;

double sayi2;

double sayi3;

sayi1=[Link]([Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
("birinci kenarý giriniz : "));

sayi2=[Link]([Link]

("ikinci kenarý giriniz : "));

sayi3=[Link]([Link]

(" iki kenar arasýndaki açýyý derece cinsinden giriniz : "));

[Link](null,

"üçgenin üçüncü kenarý : "+kkenar(sayi1,sayi2,sayi3),

"üçgen kenar hesabý",

JoptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 2.14 Bir dik üçkenin hipotenüsünü hesaplayan H3OD5_2000.java programýnýn


JoptionPane çýktýsýnda görülmesi

13. H3AL2 sýnýfýnda static double exp(double x) metodunu yaz ve ayný sýnýf içinde
çaðýrarak ekrandan girilen bir x deðeri için sonucu konsol ortamýnda hesaplattýr.

Problem 2.36 : [Link] exp metotunun çaðrýlmasý

import [Link].*;

public class H3AL2

// sayinin exponenti static metodu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double exp(double x)

double faktoriyel=1;

double us=1;

double exponent=1;

for(double i=1;i<=300;i++)

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

public static void main(String[] args) throws IOException

double sayi;

Text cin=new Text();

[Link]("Bir sayi giriniz : ");

sayi=[Link]();

[Link]("girilen sayinin exponenti : "+exp(sayi));

Bir sayi giriniz : girilen sayinin exponenti : 2.7182818284590455

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
14. H3AL2_2000 sýnýfýnda static double exp(double x) metodunu yaz ve ayný sýnýf içinde
çaðýrarak ekrandan JoptionPane kullanýlarak girilen bir x deðeri için sonucu konsol
ortamýnda hesaplattýr.

Problem 2.37 : H3AL2_2000.java exp metotunun çaðrýlmasý

import [Link]; // giriº çýký

public class H3AL2_2000

// sayinin exponenti static metodu

public static double exp(double x)

double faktoriyel=1;

double us=1;

double exponent=1;

for(double i=1;i<=300;i++)

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

public static void main(String[] args)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

double sayi;

sayi=[Link]([Link]

("Bir gerçek sayý giriniz : "));

[Link](null,"exp("+sayi+") = "+exp(sayi),

"sayýnýn exponenti statik metodu",JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 2.15 Sayýnýn exponentini statik metodla hesaplayan H3AL2_2000.java


programýný JoptionPane kullanan çýktýsý

15. H3AL2 sýnýfýndaki static double exp(double x) metodunu H3AL3 sýnýfýnda


çaðýrarak ekrandan girilen bir x deðeri için sonucu konsol ortamýnda hesaplattýr.

Problem 2.38 : [Link] exp metotunun çaðrýlmasý

import [Link].*;

import H3AL2;

public class H3AL3

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args) throws IOException

double sayi;

Text cin=new Text();

[Link]("Bir sayi giriniz : ");

sayi=[Link]();

[Link]("girilen sayinin exponenti : "+[Link](sayi));

16. H3AL2_2000 sýnýfýndaki static double exp(double x) metodunu H3AL3_2000


sýnýfýnda çaðýrarak ekrandan girilen bir x deðeri için sonucu konsol ortamýnda hesaplattýr.

Problem 2.39 : [Link] exp metotunun çaðrýlmasý

import [Link]; // giriº çýký

import H3AL2_2000;

public class H3AL3_2000

public static void main(String[] args)

double sayi;

sayi=[Link]([Link]

("Bir gerçek sayý giriniz : "));

[Link](null,"exp("+sayi+") = "+H3AL2_2000.exp(sayi),

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
"H3AL2_2000.exp() statik metodu",JoptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 2.16 Sayýnýn exponentini statik metodla hesaplayan H3AL3_2000.java


programýný JoptionPane kullanan çýktýsý

17. H3AL4 sýnýfýnda yazýlan double exp(double x) metodunu ayný sýnýfda çaðýrarak
ekrandan girilen bir x deðeri için sonucu konsol ortamýnda hesaplattýr.

Problem 2.40 : [Link] exp metotunun çaðrýlmasý

import [Link].*;

public class H3AL4

// sayinin exponenti dinamik metodu

public double exp(double x)

double faktoriyel=1;

double us=1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double exponent=1;

for(double i=1;i<=300;i++)

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

public static void main(String[] args) throws IOException

double sayi;

Text cin=new Text();

H3AL4 y=new H3AL4();

[Link]("Bir sayi giriniz : ");

sayi=[Link]();

[Link]("girilen sayinin exponenti : "+[Link](sayi));

18. H3AL4_2000 sýnýfýnda yazýlan double exp(double x) metodunu ayný sýnýfda çaðýrarak
ekrandan girilen bir x deðeri için sonucu JOPtionPage kullanarak konsol ortamýnda
hesaplattýr.

Problem 2.41 : H3AL4_2000.java exp metotunun çaðrýlmasý

import [Link]; // giriº çýký

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H3AL4_2000

// sayinin exponenti dinamik metodu

public double exp(double x)

double faktoriyel=1;

double us=1;

double exponent=1;

for(double i=1;i<=300;i++)

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

public static void main(String[] args)

double sayi;

sayi=[Link]([Link]

("Bir gerçek sayý giriniz : "));

H3AL4 y=new H3AL4();

[Link](null,"exp("+sayi+") = "+[Link](sayi),

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
"H3AL4_2000, exp() dinamik metodu",JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 2.17 Sayýnýn exponentini dinamik metodla hesaplayan H3AL3_2000.java


programýný JoptionPane kullanan çýktýsý

19. H3AL5a sýnýfýnda yazýlan double exp(double x) metodunu H3AL5 sýnýfýnda


çaðýrarak ekrandan girilen bir x deðeri için sonucu konsol ortamýnda hesaplattýr.

Problem 2.42 : [Link] , exp metotunun çaðrýlmasý

import [Link].*;

class H3AL5a

// sayinin exponenti dinamik metodu

public double exp(double x)

double faktoriyel=1;

double us=1;

double exponent=1;

for(double i=1;i<=300;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

public class H3AL5

public static void main(String[] args) throws IOException

double sayi;

Text cin=new Text();

H3AL5a y=new H3AL5a();

[Link]("Bir sayi giriniz : ");

sayi=[Link]();

[Link]("girilen sayinin exponenti : "+[Link](sayi));

20. H3AL5a sýnýfýnda yazýlan double exp(double x) metodunu H3AL5_2000 sýnýfýnda


çaðýrarak ekrandan girilen bir x deðeri için sonucu swing JOPtionPane kullanarak konsol
ortamýnda hesaplattýr.

Problem 2.43 : [Link], exp metotunun çaðrýlmasý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link]; // giriº çýký

class H3AL5a

// sayinin exponenti dinamik metodu

public double exp(double x)

double faktoriyel=1;

double us=1;

double exponent=1;

for(double i=1;i<=300;i++)

faktoriyel*=i;

us*=x;

exponent+=us/faktoriyel;

return exponent;

public class H3AL5_2000

public static void main(String[] args)

double sayi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi=[Link]([Link]

("Bir gerçek sayý giriniz : "));

H3AL5a y=new H3AL5a();

[Link](null,"exp("+sayi+") = "+[Link](sayi),

"H3AL5a, exp() dinamik metodu",JOptionPane.PLAIN_MESSAGE);

[Link](0);

21. H3AL5a sýnýfýnda yazýlan double exp(double x) metodunu H3AL6 sýnýfýnda ve


[Link] dosyasýndan çaðýrarak ekrandan girilen bir x deðeri için sonucu konsol
ortamýnda hesaplattýr.

Problem 2.44 : [Link] , exp metotunun çaðrýlmasý

import [Link].*;

import H3AL5a;

public class H3AL6

public static void main(String[] args) throws IOException

double sayi;

Text cin=new Text();

H3AL5a y=new H3AL5a();

[Link]("Bir sayi giriniz : ");

sayi=[Link]();

[Link]("girilen sayinin exponenti : "+[Link](sayi));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

22. H3AL5a sýnýfýnda yazýlan double exp(double x) metodunu H3AL6_2000 sýnýfýnda ve


H3AL6_2000.java dosyasýndan çaðýrarak ekrandan girilen bir x deðeri için sonucu konsol
ortamýnda hesaplattýr.

Problem 2.45 : H3AL6_2000 , exp metotunun çaðrýlmasý

import [Link]; // giriº çýký

import H3AL5a;

public class H3AL6_2000

public static void main(String[] args)

double sayi;

sayi=[Link]([Link]

("Bir gerçek sayý giriniz : "));

H3AL5a y=new H3AL5a();

[Link](null,"exp("+sayi+") = "+[Link](sayi),

"H3AL5a, exp() dinamik metodu",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
23 . H3OD1
Math kütüphanesinde aºaðýdaki metotlar tanýmlanmýºtýr.
public static native double sin(double a)
a radyan cinsinden
public static native double cos(double a)
a radyan cinsinden
public static native double tan(double a)
a radyan cinsinden
public static native double asin(double a)
sonuç deðeri : -pi/2 den pi/2 ye kadar.
public static native double acos(double a)
sonuç deðeri 0 dan pi’ ye kadar
public static native double atan(double a)
sonuç deðeri : -pi/2 den pi/2 ye kadar.
public static native double atan2(double a,
double b)
sonuç deðeri : -pi den pi ye kadar

bu metotlarýn hepsi radyan cinsinden tanýmlýdýr. Bu metotlarýn derece eºitlerini tanýmlamak


istiyoruz. Mathd sýnýfý yaratarak, bu sýnýfta
public static double sind(double a)
a derece cinsinden
public static double cosd(double a)
a derece cinsinden
public static double tand(double a)
a derece cinsinden
public static double asind(double a)
sonuç deðeri : -90 dan 90 dereceye kadar.
public static double acosd(double a)
sonuç deðeri 0 dan 180 dereceye kadar
public static double atand(double a)
sonuç deðeri : -90 dan 90 a kadar.
public static double atan2d(double a,
double b)
sonuç deðeri : -180 den 180 dereceye kadar

statik metotlarýný oluºturunuz. [Link] applet programýný yazýnýz. Bu programa derece


cinsinden bir girdi giriniz ve hesaplanmýº sin,cos,tan deðerlerini apletde yazdýrýnýz.

not :
derece=radyan/[Link]*180;

Problem 2.46 : [Link]

class Mathd

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double sind(double a)

double pi=[Link];

double r=(a/180.0)*pi;

double sind=[Link](r);

return sind;

public static double cosd(double a)

double pi=[Link];

double r=(a/180.0)*pi;

double cosd=[Link](r);

return cosd;

public static double tand(double a)

double pi=[Link];

double r=(a/180.0)*pi;

double tand=[Link](r);

return tand;

public static double asind(double b)

double asind=[Link](b)*180.0/[Link];

return asind;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static double acosd(double b)

double acosd=[Link](b)*180/([Link]);

return acosd;

public static double atand(double b)

double atand=[Link](b)*180/([Link]);

return atand;

public static double atan2d(double a,double b)

double atand=Math.atan2(a,b)*180.0/([Link]);

return atand;

Problem 2.47 : [Link]

import [Link];

import [Link].*;

import [Link].*;

import Mathd;

public class H3OD1 extends Applet implements ActionListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

double a;

double b;

Label s1;

TextField t1;

Label s2;

TextField t2;

public void init()

s1=new Label("Derece cinsinden aciyi giriniz : ");

t1=new TextField(15);

s2=new Label("0 ile 1 arasinda arc giriniz : ");

t2=new TextField(15);

add(s1);

add(t1);

add(s2);

add(t2);

[Link](this);

[Link](this);

public void actionPerformed(ActionEvent e)

Double sayi1=new Double([Link]() );

a=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double sayi2=new Double([Link]() );

b=[Link]();

[Link]("");

[Link]("");

repaint();

// trigonometrik fonksiyonlarýn derece cinsinden yazýlmýº hali

public void paint(Graphics g)

[Link]("sin("+a+") : " + [Link](a),35,70);

[Link]("cos("+a+") : " + [Link](a),35,90);

[Link]("tan("+a+") : " + [Link](a),35,110);

[Link]("asin("+b+"): " + [Link](b),35,130);

[Link]("acos("+b+"): " + [Link](b),35,150);

[Link]("atan("+b+"): " + [Link](b),35,170);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 2.18 Bir derece cinsinden trigonometrik fonksiyonlarý hesaplayan [Link]
çýktýsý

24. H3OD2
Bir konsol programý oluºturunuz. Bu programa 0-1 arasýnda bir girdi giriniz. Mathd sýnýfýndan
atand,acosd ve asind statik metotlarýný kullanarak bu metotlarýn sonuçlarýný konsol
ortamýnda çýktýya yazdýrýnýz.

Problem 2.48 : [Link],

import [Link].*;

import Text;

import Mathd;

public class H3OD2

// trigonometrik fonksiyonlarýn derece cinsinden yazýlmýº hali

public static void main(String args[]) throws IOException

double a;

Text cin=new Text();

[Link]("0-1 arasinda bir sayi giriniz : ");

a=[Link]();

[Link]("asin("+a+"): " + [Link](a)+" derece");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("acos("+a+"): " + [Link](a)+" derece");

[Link]("atan("+a+"): " + [Link](a)+" derece");

25. H3OD3
kendi kendini çaðýran (recursive), tabanýn kuvvetinci kuvvetini hesaplayacak ( taban^kuvvet,
2^3=8 gibi)
public static pow(double taban, double kuvvet)
metotunu H3OD3 sýnýfýnda, konsol programý olarak yazýnýz. main metotunda dýºarýdan bir
sayý okuyarak bu metot yardýmýyla sonucu hesaplayýnýz.
not: [Link](taban,1) çaðýrýmý taban deðerini geri verecektir.

Problem 2.49 : [Link] ,

import [Link].*;

public class H3OD3

// sayinin exponenti dinamik metodu

public double kuvvet(double x,double y)

// y nin pozitif olduðu kabul edilmistir.

if(y<0) return 0;

if(y ==0) return 1;

else return x*kuvvet(x,y-1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args) throws IOException

Text cin=new Text();

double sayi1;

double sayi2;

H3OD2 x=new H3OD2();

[Link](" sayiyi giriniz : ");

sayi1=[Link]();

[Link](" kuvveti giriniz : ");

sayi2=[Link]();

[Link](""+sayi1+" nin "+sayi2+" inci kuvveti : "+[Link](sayi1,sayi2));

26. H3OD4
döngü yapýsýyla hesap yapan, tabanýn kuvvetinci kuvvetini hesaplayacak ( taban^kuvvet,
2^3=8 gibi)
public pow(double taban, double kuvvet)
H3OD4a sýnýfýnda yazýnýz. H3OD4 sýnýfýnda bir applet programý oluºturarak H3OD4a
sýnfýndaki pow metotu yardýmýyla verilen bir sayýnýn verilen bir kuvvetini hesaplayýnýz. ve
appletde çýktý olarak yazdýrýnýz.

Problem 2.50 : [Link],

import [Link];

import [Link].*;

import [Link].*;

class H3OD4a

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

public static double kuvvet(double a,double b)

double k=1.0;

if(b<0)

for(int i=0;i<(int)(-b);i++)

{k*=a;}

k=1.0/k;

else if(b==0)

k=1.0;

else if(b>0)

for(int i=1;i<=(int)b;i++)

{k*=a;}

return k;

public class H3OD4 extends Applet implements ActionListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

double a;

double b;

Label s1;

TextField t1;

Label s2;

TextField t2;

public void init()

s1=new Label("tabani giriniz : ");

t1=new TextField(10);

s2=new Label("kuvveti giriniz : ");

t2=new TextField(10);

add(s1);

add(t1);

add(s2);

add(t2);

[Link](this);

[Link](this);

public void actionPerformed(ActionEvent e)

Double sayi1=new Double([Link]() );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
a=[Link]();

Double sayi2=new Double([Link]() );

b=[Link]();

[Link]("");

[Link]("");

repaint();

// trigonometrik fonksiyonlarýn derece cinsinden yazýlmýº hali

public void paint(Graphics g)

[Link]("taban "+a+" nin "+b+" inci kuvveti : "+ [Link](a,b),35,70);

27. H3OD4_2000
döngü yapýsýyla hesap yapan, tabanýn kuvvetinci kuvvetini hesaplayacak ( taban^kuvvet,
2^3=8 gibi)
public pow(double taban, double kuvvet)
H3OD4a sýnýfýnda yazýnýz. H3OD4_2000 sýnýfýnda bir siwng JApplet programý oluºturarak
H3OD4a sýnfýndaki pow metotu yardýmýyla verilen bir sayýnýn verilen bir kuvvetini
hesaplayýnýz. ve appletde çýktý olarak yazdýrýnýz.

Problem 2.51 : [Link],

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class H3OD4a

public static double kuvvet(double a,double b)

double k=1.0;

if(b<0)

for(int i=0;i<(int)(-b);i++)

{k*=a;}

k=1.0/k;

else if(b==0)

k=1.0;

else if(b>0)

for(int i=1;i<=(int)b;i++)

{k*=a;}

return k;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H3OD4_2000 extends JApplet implements ActionListener

double a;

double b;

JLabel s1;

JTextField t1;

JLabel s2;

JTextField t2;

JTextArea cikti;

public void init()

cikti=new JTextArea();

Container c=getContentPane();

[Link](new FlowLayout());

s1=new JLabel("tabani giriniz : ");

t1=new JTextField(10);

s2=new JLabel("kuvveti giriniz : ");

t2=new JTextField(10);

cikti=new JTextArea("ilk deðer");

[Link](s1);

[Link](t1);

[Link](s2);

[Link](t2);

[Link](cikti);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public void actionPerformed(ActionEvent e)

a=[Link]([Link]() );

b=[Link]([Link]() );

[Link]("");

[Link]("");

[Link]("taban "+a+" nin "+b+" inci kuvveti : "+ [Link](a,b));

repaint();

[Link]

ªekil 2.19 [Link] çýktýsý

28. H3OD5
iki kenar ve aralarýndaki açý (derece cinsinden ) verildiðinde üçgenin üçüncü kenarýný
hesaplayacak
public static double ucgenkarsýkenar(double birinciyan, double ikinciyan,
double aciderece)
metotunu yazýnýz.
not : karsikenar=[Link](birinciyan*birinciyan+ikinciyan*ikinciyan-

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
2*birinciyan*ikinciyan*[Link](aradakiaçý derece));
bu metotu H3OD5 sýnýfý konsol programý main metotunda kullanýnýz (iki yan kenar ve aradaki
açý derece cinsinden verilecek, üçüncü kenar hesaplanarak yazýlacak)

Problem 2.52 : [Link],

import [Link].*;

import Mathd;

public class H3OD5

// ucgenin kenarinin bulunmasi metodu

public static double kkenar(double a,double b,double t)

double kenar;

kenar=[Link](a*a+b*b-2*a*b*[Link](t));

return kenar;

public static void main(String[] args) throws IOException

Text cin=new Text();

double sayi1;

double sayi2;

double sayi3;

[Link](" birinci kenari giriniz : ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi1=[Link]();

[Link](" ikinci kenari giriniz : ");

sayi2=[Link]();

[Link](" iki kenar arasindaki aciyi derece cinsinden giriniz : ");

sayi3=[Link]();

[Link]("ucgenin ucuncu kenari : "+kkenar(sayi1,sayi2,sayi3));

29. Hata fonksiyonu erf(x) aºaðýdaki formülle tanýmlanabilir.

Bu formülü hesaplayacak olan statik erf metodunu yazýnýz ve java swing çýktýsý verecek bir örnekte
deneyiniz.

30. Bir konsol programý yazýnýz. Text sýnýfý kullanarak dýºarýdan x deðerini, celcius,
fahrenheight cinsinden girilen deðerin celcius eºitini hesaplasýn. Bunun için

C=5/9*(F-32)

formülünü kullanabilirsiniz.

Ýkinci metot, fahrenheight, derece celcius cinsinden girilen deðerin fahrenheight eºdeðerini
hesaplasýn.

31. Bir applet programý yazýnýz. Bu programýn içindeki kubunhacmi metodu kübün hacmini
hesaplasýn. Applet kullanýcýya kübün kenar uzunluðunu sorsun ve hacmini versin. okuyunuz.
erf statik metodu yaratarak formülü hesaplayýnýz. Ana programda erf metodunu çaðýrýnýz ve
sonucunu yazdýrýnýz. Hata analizi yaparak döngüyü kaç terim için hesaplamanýz gerektiðine
karar veriniz.

32. Sýcaklý[Link] programýný denemek için bir swing JApplet programý yazýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
33. mesafe metodunu yazýnýz. Bu metod iki noktanýn (x1,y1) ve (x2,y2) arasýndaki
mesafeyi hesaplasýn. Bu metodu bir konsol test programýnda deneyin.

34. Bir tam sayý eðer kendisinden baºka bir tam sayýyla bölünemiyorsa, asal sayý adýný
alýr. Örneðin 2,3,5,7,11..

Asal sayýlarý bulan bir metot yazýnýz. Bu metotu bir applette kullanarak 1 den 1000 e kadar
olan sayýlar arasýndaki asal sayýlarý belirleyiniz.

35. Üç (gerçek veya tamsayý) sayýnýn arasýndan minimum olaný bulan minimum3 metodunu
yazýnýz ve bir konsol programýnda test ediniz

36. Üç sayýnýn (gerçek veya tamsayý) arasýndan maksimum olaný bulan maksimum3
metodunu yazýnýz ve bir konsol programýnda test ediniz

37. tekmi isimli boolean bir metot yazýnýz. bu metot eðer girilen sayý tekse true deðeri, sayý
çiftse false deðeri versin. Bu metodu bir applet programýnda test ediniz.

38. kürenin hacmini hesaplayan hacim(double x) metodunu içeren kureApplet applet


programýný olusturunuz. Bu program kürenin yarýçapýný sorsun, ve sonuç olarak hacim
metodunda hesaplanan kürenin hacmini versin.

Problem 2.53 kürenin hacmini hesaplayan kü[Link] programý

import [Link].*;

import [Link];

import [Link].*;

public class kureapplet extends Applet implements ActionListener

Label rakametiketi,sonucetiketi;

TextField rakam,sonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void init()

rakametiketi=new Label("Bir tamsayi giriniz : ");

rakam=new TextField(10);

[Link](this);

sonucetiketi=new Label("Kurenin Hacmi : ");

sonuc=new TextField(10);

[Link](false);

add(rakametiketi);

add(rakam);

add(sonucetiketi);

add(sonuc);

public void actionPerformed( ActionEvent e)

double sayi;

double sayisi;

Double sayi1=new Double([Link]() );

sayi=[Link]();

sayisi=hacim(sayi);

showStatus("hesaplandi....");

[Link]([Link](sayisi));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double sayi2=new Double([Link]() );

sayisi=[Link]();

public static double hacim(double x)

return (4.0/3.0)*[Link]*[Link](x,3);

BÖLÜM 3: SINIF (CLASS) YAPILARINA GÝRݪ

3.0 STANDART KAVRAMLARIN TÜRKÇE KARªILIKLARI

Class : sýnýf ana nesne kökenli programlama elemaný.


Object : nesne sýnýf (Class) yapýlarý bilgisayar belleðinde bir iºlem için kullanýldýðýnda
aldýklarý (özel) isim.
new : sýnýflarýn kurucu metotunu çaðýrýp nesne tanýmýný ve bilgisayar adreslerini oluºturan
deyim
Method: metot sýnýflarýn içindeki iºlevsel program parçacýklarý
Constructor : Kurucu metot nesne ilk defa oluºturulurken hangi sýnýf deðiºkenlerinin hangi
deðerleri alacaðýný belirleyen metot

3.1 SINIF YAPISININ GENEL TANIMI

ªu na kadarki bütün programlarýmýzda sýnýf(class) yapýsýný kullandýk. Fakat tam olarak


sýnýflarýn ne olduðunu ve neler yapabileceklerini anlatmadýk. Sýnýf yapýsýnýn en onemli ozelliði
yeni bir deðiºken türü tanýmlýyor olmasýdýr. ªu ana kadar programlarýmýzý tanýmlamak
amacýyla çeºitli sýnýflar tanýmladýk. Bu bölümde sýnýflarýn deðiºken türü olarak tanýmlamasýný
ve kullanmasýný göreceðiz.

Sýnýf (Class) deyince herhangi bir nesnenin genel tanýmlanmasýný anlýyoruz. Bu sýnýflardan
deðiºkenler tanýmlandýklarýnda nesneleri oluºtururlar. Örneðin kalem dediðimizde genel bir
sýnýfý anlatýyoruz. Alinin cebindeki kýrmýzý kalem ise belirli bir nesnedir. Sýnýfýn genel tanýmý
ºu ºekilde yapýlabilir :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class sýnýfýn_ismi
{
//sýnýfa ait deðiºken listesi
deðiºken_türü deðiºken_ismi;
deðiºken_türü deðiºken_ismi;
.........
//sýnýfa ait metot listesi

degiºken türü metotadý(metot girdi deðiºken listesi)


{
//metotun içindeki hesaplanan iºlemler
return çýktý_deðiºkeni;
}
..............
}

Sýnýf (class) tanýmýnda metotlarýn (veya deðiºkenlerin) bulunmasý ºart deðildir. Bulunduklarý
takdirde bunlar o sýnýfa ait veya sinifin üyesi metotlar olarak düºünülür. Ýlk sýnýf örneði olarak
içinde hiçbir metotun yer almadýðý bir kutu sýnýfý tanýmlýyalým. Bir kutuyu üç geometrik boyutu
(eni,boyu,yüksekliði) cinsinden tanýmlayabiliriz.

class Kutu
{
double en;
double boy;
double yukseklik;
}

Üstte bahsettiðimiz gibi sýnýf yeni bir deðiºken türü yaratýr. Yukardaki sýnýfýn yarattýðý
deðiºken türünün adý Kutu’dur. Kutu deðiºkenini baºka bir proðramda tanýmlarken
budeðiºken türünden bir nesne yaratýlýr. Örneðin

Kutu kutu1= new Kutu();

kutu1, kutu türünde tanýlanmýº bir nesnedir. Bu nesnenin kendisinin de en boy ve yükseklik
olmak üzere üç alt deðiºkeni mevcuttur. Eðer bir programda kutu1 deðiºkeni tanýmlanmýºsa,
bu deðiºkenin alt degiºkenlerine ºu ºekilde ulaºýlabilir :

[Link]=1.0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªimdi Kutu sýnýfýndan nesneyi kullanacak ufak bir kututestý sýnýfý oluºturalým ve Kutu sýnýfýný
bu sýnýfta kullanalým.

import [Link]; // giriº çýkýº

class Kutu

double en;

double boy;

double yukseklik;

class kututesti

public static void main(String args[])

double hacim;

String s="";

Kutu kutu1=new Kutu();

[Link]=10.0;

[Link]=20.0;

[Link]=30.0;

hacim=[Link]*[Link]*[Link];

s=s+"Kutunun hacmi : "+hacim+"\n";

[Link](null,s,

"sýnýf yapýsý: kututesti1",JOptionPane.PLAIN_MESSAGE);

[Link](0);}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

Bu programýn adýnýn [Link] olmasý zorunludur. Çünki ana metot(main) kututesti


sýnýfýnda tanýmlanmýºtýr. Fakat programý javac terimiyle bilgisayar diline çevirdiðimizde iki
tane sýnýf(class) dosyasýnýn oluºtuðunu görürüz. Birisi [Link] diðeride [Link].
Ana program kututesti olduðu için bu programýn iºletimi

java kututesti

deyimini kullanarak yapýlýr. Program iºletildiðinde

[Link]

ªekil 3.1 [Link] programýnýn JoptionPage grafik çýktýsýndaki görünümü

Sonucunu verir. kutu1 nesnesi yaratýldýðýnda bilgisayar belleðinde kutu1 için bir adres
tanýmlanýr. New Kutu() deyimi verildiðinde ise bilgisayrýn belleginde en,boy ve yükseklik
deðiºkenleri için yer ayrýlýr ve bu yerlerin adresleriyle kutu1 nesnesinin adresi arasýnda
baðlantý saðlanýr. Bunu grafik olarak anlatalým :

Tablo 3.1 Nesne adreslerinin bilgisayar belleðindeki yerleri ve yerleºmesi

Deyim Bilgisayar ana nesne belleði Nesne alt hafýza belleði


Kutu kutu1 null Mevcut deðil
kutu1=new Kutu(); kutu1 adresi (örneðin: 23436A3F) en

Boy

Yükseklik

Not: null terimi bilgisayar beleðinin boº olduðunu gösterir. Yukardaki grafikte ilk olarak

Kutu kutu1;

tanýmý yapýldýðýnda bilgisayar belleðinde 1 byte boyutunda bir yer tanýmlar. Ve bu yere boº
anlamýna gelen null degerini yükler. Ýkinci durumda ise ( kutu1=new Kutu() tanýmýnda) kutu1
nesne adresindeki kutuda en,boy,yükseklik deðiºkenlerinin adresleri kaydedilmiºtir. Bu adres

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
aracýlýðýyla en boy ve yükseklik deðiºkenlerine benimkutum degiºkeni üzerinden ulaºýlabilir.
Diðer deyimle en,boy,yükseklik kutu1 nesnesinin alt deðiºkenleridir.

3.2 KURUCU ( CONSTRUCTOR ) METOT

Ýkinci bir programda Kutu sýnýfý iki nesne tanýmlama gereði duyduðumuzu varsayalým. Buna
örnek olarak ªekil 3.2.1 de [Link] programý tanýmlanmýºtýr.

Program 3.1 : Kurucu metot örneði, Kutu sýnýfý iki nesne tanýmlayan [Link] programý

import [Link]; // giriº çýkýº

class Kutu

double en;

double boy;

double yukseklik;

class kututesti1

public static void main(String args[])

double hacim;

Kutu kutu1=new Kutu();

String s="";

[Link]=10.0;

[Link]=20.0;

[Link]=30.0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
hacim=[Link]*[Link]*[Link];

s+="Birinci kutunun hacmi : "+hacim+"\n";

Kutu kutu2=new Kutu();

[Link]=5.0;

[Link]=10.0;

[Link]=15.0;

hacim=[Link]*[Link]*[Link];

s+="Ýkinci kutunun hacmi : "+hacim+"\n";

[Link](null,s,

"Kutu testi 1",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Bu programýn çýktýsý :

[Link]

ªekil 3.2 [Link]

Bu programda Kutu sýnýfýndan kutu1 ve kutu2 deðiºkenleri tanýmlanmýºtýr. Bu basit


programda bile en,boy ve yükseklik deðikenlerini iki defa çaðýrmak program listesinin
uzamasýna sebep olmuºtur. Gerçek uygulamalarda ise çok daha yüksek sayýda deðiºken
içeren sýnýflar oluºturulabilir ve bu sýnýflarda oluºturulan toplam nesne sayýsý da çok fazla
olabilir. Bu yüzden nesneyi ilk tanýmlarken ayný zamanda deðiºkenlerinin deðerlerini de
tanýmlayabilirsek, çok daha okunaklý ve kýsa bir bilgisayar listesiyle ayný iºi yapabiliriz. Bu iº
için kurucu (constructor) adý verilen metotlar kullanýlýr. Kurucu metotlarý diðer metotlardan
biraz farklýdýr. Once metot önüne metot deðiºken türü gelmez ve metot dýºýna hiçbir deðiºken

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
göndermezler. Ýsimleri de herzaman sýnýf(class) ismiyle ayný olur. Program 3.1 deki programý
kurucu (constructor) metotu kullanarak tekrar yazalým.

Program 3.2 : Kurucu metot örneði, Kutu sýnýfý iki nesneyi kurucu(constructor) metotu
yardýmýyla tanýmlayan [Link] programý

import [Link]; // giriº çýkýº

class Kutu

double en;

double boy;

double yukseklik;

//kurucu metod kutu

Kutu(double e,double b,double y)

en=e;

boy=b;

yukseklik=y;

class kututesti2

public static void main(String args[])

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

double hacim;

String s="";

Kutu kutu1=new Kutu(10.0,20.0,30.0);

hacim=[Link]*[Link]*[Link];

s+="kutu1\'in hacmi : "+hacim+"\n";

Kutu kutu2=new Kutu(5.0,10.0,15.0);

hacim=[Link]*[Link]*[Link];

s+="kutu2\'nin hacmi : "+hacim;

[Link](null,s,

"Kutu testi 2",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Bu program bir öncekinin ayný sonucu verir. Fakat burada bir önceki programda yapýlan

Kutu kutu1=new Kutu();

Tanýmý yerini

Kutu kutu1=new Kutu(10.0,20.0,30.0);

Tanýmýna býrakmýº ve kututesti2 sýnýfý yazýlýrken en ,boy yükseklik deðiºkenlerinin yeniden


tanýmlanmasý ihtiyacýný ortadan kaldýrmýºtýr.

3.3 DÝÐER METOTLAR

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Tekrar yukarýda incelediðimiz kutu sýnýfýný göz önüne alalým. Hacim bir kutunun özellikleri
arasýnda yer alýr, ve her zaman kutunun hacminin hesaplanmasý gerekebilir. Bu yüzden
hacim iºlemini Kutu sýnýfýnýn içinde tanýmlamak daha ideal olacaktýr. ªekil 3.3.1 deki
[Link] programýnda hacim hesaplarýný yapan hacim metotu Kutu sýnýfýnýn içinde
tanýmlanmýºtýr.

Program 3.3 : Kurucu metot örneði, Kutu sýnýfý iki nesneyi kurucu(constructor) metotu
yardýmýyla tanýmlayan ve hacmi hacim() metotuyla hesaplayan [Link]
programý

import [Link]; // giriº çýkýº

class Kutu

double en;

double boy;

double yukseklik;

//kurucu metod kutu

Kutu(double e,double b,double y)

en=e;

boy=b;

yukseklik=y;

//bu metot kutunun hacmini hesaplar

double hacim()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

return en*boy*yukseklik;

class kututesti3

public static void main(String args[])

double hacim;

String s="";

Kutu kutu1=new Kutu(10.0,20.0,30.0);

s+="kutu1\'in hacmi : "+[Link]()+"\n";

Kutu kutu2=new Kutu(5.0,10.0,15.0);

s+="kutu2\'nin hacmi : "+[Link]();

[Link](null,s,

"Kutu testi 3",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Program çýktýsý yine ayný olacaktýr.

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.3 [Link]

Bir önceki bölümde metot yazýmý konusunda anlattýklarýmýzýn hepsini buraya ilave edebiliriz.

3.4 THIS DEYÝMÝNÝN KULLANIMI

Bazen bir metotun içinde o metotun ait olduðu sýnýftan yaratýlacak nesneyi veya o nesnenin
bir alt deðiºkenini tanýmlamak gerekir. Nesne daha tanýmlanmadýðindan direk olarak nesne
ismini kullanamayýz. Bunun yerina java this deyimini kullanýr. This deyimi bilhassa sýnýfa ait
deðiºken isimlerinin aynýsý metotda kullanýlmýºsa da iºe yarar. Bu durumda tüm sýnýfa ait
deðiºkenler [Link]ðiºken_ismi komutuyla çaðýrýlabilir. geçen bölümde sýnýf ve metota ait
deðiºkenleri izlerken [Link] ve [Link] isimlerinde iki örnek
problemi incelemiºtik.

ªimdi de aynýgruptan metotvesýný[Link] programýný inceleyelim.

Program 3.4 : [Link] programýyla ve this deyimi yardýmýyla metotun


içinde yerel ve sýnýfa ait deðiºkenlere ulaºým.

import [Link];
import [Link];

public class metotvesinifdeg3 extends Applet


{
//buradaki degiskenler tum sinifa aittir
double x ;
int y ;

void metot1( Graphics g) //metota hiç bir deðiºken girmiyor


{
double x;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int y;
x=5.5;
y=6;
//tum sinifa at degiskenler this kelimesi ile birlikte kullanilabilirler
[Link]("metot1 in dis degiskenleri this ile ulasim : x = "+this.x+" y = "+this.y,25,25);
[Link]("metot1 in ic degiskenleri : x = "+x+" y = "+y,25,40);
}

public void paint(Graphics g)


{
x = 2.5;
y = 3;
metot1(g);
}
}

Sýnýfa ait her deðiºkeni baºýna this. getirerek kullanabiliriz. Fakat this kullanýmý mutlaka
gerekli deðilse kullanýlmamasý tavsiye edilir.

Örneðin yukarýdaki kurucu metot kutu

//kurucu metot kutu

kutu(double en,double boy,double yukseklik)


{
[Link]=en;
[Link]=boy;
[Link]=yukseklik;
}

ºeklinde this deðiºkenini kullanarak da yazýlabilirdi. Burada girdi deðiºkeni ile sýnýf
deðiºkeninin adý ayný verilmiºtir. This sol taraftaki deðiºkenin sýnýf deðiºkeni olduðunu
bilgisayara bildirmektedir.

3.5 SINIF DEÐݪKENLERÝNÝN DIª DÜNYADAN GÝZLENMESÝ

Yukarda incelediðimiz kutu metodu. Program 3.5 de daha detaylý yazýlmýºtýr. Burada en boy
ve yükseklik deðiºkenleri private olarak tanýmlanmýºtýr. Private olarak tanýmlanan
deðiºkenlere dýºarýdan direk olarak

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Kutu x=new Kutu(3.0,5.0,7.0);

[Link]=8.0;

gibi direk ulaºým mevcut deðildir. Bu deðiºkenlere ulaºým (deðerlerini deðiºtirme veya
çaðýrma) ancak ulaºým metodlarý adýný verdiðimiz metodlar aracýlýðýyla yapýlabilir.

Program 3.5 : Kurucu metot örneði, Kutu sýnýfý iki nesneyi kurucu(constructor) metotu
yardýmýyla tanýmlayan ve hacmi hacim() metotuyla hesaplayan ve diðer metod
tanýmlarýnýn da bulunduðu [Link] programý.

import [Link]; // giriº çýkýº

class Kutu

private double en;

private double boy;

private double yukseklik;

//kurucu metod kutu

Kutu(double e,double b,double y)

en=e;

boy=b;

yukseklik=y;

//sýnýf deðiºkenlerini deðiºtirme set metodu

public void setKutu(double e,double b,double y)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

en=e;

boy=b;

yukseklik=y;

//sýnýf deðiºkenlerine ulaºma (get) metotlarý

public double getEn()

{return en;}

public double getBoy()

{return boy;}

public double getTukseklik()

{return yukseklik;}

//bu metot kutunun hacmini hesaplar (iºlem- hesap) metodu

public double hacim()

return en*boy*yukseklik;

//string çýktý metodu

public String toString()

return("en = "+en+" boy = "+boy+" yükseklik = "+yukseklik+"\n"+

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
"Hacim = "+hacim()+"\n");

class kututesti4

public static void main(String args[])

double hacim;

String s="";

Kutu kutu1=new Kutu(10.0,20.0,30.0);

s+=[Link]();

Kutu kutu2=new Kutu(5.0,10.0,15.0);

s+=[Link]();

[Link](null,s,

"Kutu testi 4",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Bu programýn çýktýsý :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.4 [Link]

Ýkinci bir örnek olarak dörtiºlemhesapmakinasi sýnýfýna bakalým. Burada da sýnýf deðiºkenleri
protected olarak tanýmlanmýºtýr. Aºaðýda dort iºlem (toplama cýkarma carpma bolme yapan
dortislemhesapmakinasi sýnýfýný görüyorsunuz.

Program 3.5 : dö[Link] programý ve sýnýf deðiºkenlerinin


deðerlerinin metot kullanýlarak deðiºtirilmesi

public class dortislemhesapmakinasi


{
//sýnýf deðiºkenleri x sonuc hafiza
protected double x,sonuc,hafiza;
// kurucu metot dortislemhesapmakinesi

public dortislemhesapmakinasi(double y)
{
//constructor
sonuc=y;
hafiza=0;
}

// ikinci bir kurucu metot dortislemhesapmakinesi


public dortislemhesapmakinasi()
{
sonuc=0;
hafiza=0;
}

public double topla(double x)


{
sonuc+=x;
return sonuc;
}

public double cikar(double x)


{
sonuc-=x;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return sonuc;
}

public double carp(double x)


{
sonuc*=x;
return sonuc;
}

public double bol(double x)


{
sonuc/=x;
return sonuc;
}

//bu metotla sonuc deðeri deðiºtirilir

public void gir(double x)


{
sonuc=x;
}

public double oku()


{
return sonuc;
}

public void C()


{
sonuc=0;
}

public void M(double x)


{
//hafýzaya al
hafiza=x;
}

public double MR()


{
//hafýzayý çagýr
return hafiza;
}

public void MTopla(double x)


{
hafiza+=x;
}

public void Mcikar(double x)


{
hafiza-=x;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double isaretdegistir()
{
sonuc=-sonuc;
return sonuc;
}

public String toString()


{
return ""+sonuc;
}

public String MtoString()


{
return ""+hafiza;
}
}

Bu sýnýfta (class) sýnýf deðiºkeni sonuc deðerlerinin deðiºtirilmesi için gir metotu yazýlmýºtýr.
Bunun sebebi programlarda sýnýfa ait deðiºkenlere dýºarýdan direk ulaºýmýn önlenmesini
saðlamaktýr. Ýyi programlama ºartlarýndan birisi sýnýfýn deðiºkenlerine sadece o sýnýfýn
metotlarý üzerinden ulaºmaktýr. Herkese serbest ulaºým verilmez. Hatta bunu saglamak için
deðiºkenlerin baºýna sadece bu sýnýfa aittir dýºarýdan kullanýlamaz anlamýndaki private
sözcügü getirilebilir . private sözcüðü yerine ancak dýºarda bu sýnýftan yaratýlana yeni
sýnýflar (akraba sýnýflar) kullanabilir, yabancý sýnýflar kullanamaz anlamýndaki protected
sözcüðü de sýk olarak kullanýlýr. Protected sözcügü ayný directorydeki diðer dosyalarý da
(public) gibi kabula eder, fakat baºka direktorylerdeki dosyalar için private olarak davranýr.

[Link] programýnýn x, sonuc ve hafýza deðiºkenleri için protected


sözcüðü kullandýðýmýz için

dortislemhesapmakinasi h = new dortislemhesapmakinasi();


[Link] = 2.0;

ºeklinde ulaºýlamaz. Ayný iºlemi yapmak için aºaðýdaki üç yoldan birini kullanabiliriz.

dortislemhesapmakinasi h = new dortislemhesapmakinasi();


[Link](2.0);

veya

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
dortislemhesapmakinasi h = new dortislemhesapmakinasi(2.0);

ºeklinde sonuç deðiºkenine 2.0 deðeri atanýr.

Hafiza deðiºkeninin deðerinin deðiºtirilmesi için ise :


h.M(3.0);
metotu çaðýrýlýr.

Sýnýf deðiºkenlerinin dýº dünyadan gizlenmesi niçin gereklidir? Bunun en önemli sebebi
program güvenliðinin saðlanmasýdýr. Deðiºkenlere dýºarýdan direk müdahale edilebilirse,
deðerleri de deðiºtirilebilir. Örneðin deðiºkeni bir banka hesabý veya ºirketin özel hesabý
olarak düºünebiliriz. Dýº dünyadan gizlenmemiº bir deðiºkenin deðeri deðiºtirilebilir. Private
veya protected deðiºkenler ise ancak metotlar üzerinden deðiºtirilebilir, burada yeterli
güvenlik önlemlerini almak mümkündür.

3.6 SINIFLARDA KALITIM (INHERITANCE)

Bir sýnýfýn kurulmasýnda o sýnýfla direk olarak iliºkisi olan bir sýnýftan onun tüm metotlarý ve
deðiºkenleri kalýtým (inheritance ) yoluyla yeni kurulan bir sýnýfa aktarýlabilir. Kalýtým için
sýnýf(class) tanýmýnda extends kelimesi kullanýlýr. Eðer bir sýnýftan daha alt sýnýflara kalýtým
yoluyla aktarma yapýlacaksa private deðiºken türü yerini protected deðiºken türüne býrakýr.
Protected private deyiminin aynýdýr. Fakat kalýtýmla deðiºkenlerin aktarýldýðý alt sýnýflara
deðiºkenleri görme izni verir. Private terimi ise kalýtýmla aktarýlan alt sýnýflardan bile o
deðiºkenleri saklar.

Program 3.6 da nokta sýnýfý tanýmlanmýºtýr. Program 3.7 de ise nokta sýnýfýndan kalýtým
yoluyla yaratýlan daire sýnýfýný görüyoruz. Programda da görüleceði gibi daire sýnýfýnýn tanýmý

public class daire extends nokta

terimiyle yapýlmýºtýr. Ayrýca daire sýnýfýnýn kurucusu yazýlýrken nokta sýnýfýnýn kurucusu direk
olarak super (a,b); terimiyle çaðýrýlmýºtýr.

Burada önemli bir noktayý hatýrlatalým :

"Java dilindeki bir sýnýf sadece bir tane baºka sýnýfýn metot ve deðiºkenlerini kalýtým
yoluyla aktarabilir. "

Program 3.6 : [Link] programý ve nokta sýnýfýnýn tanýmý.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class nokta
{
protected double x, y;
public nokta(double a, double b)
{
noktagir(a,b);
}

public void noktagir(double a, double b)


{
x=a;
y=b;
}

public double Xoku()


{
return x;
}

public double Yoku()


{
return y;
}

public String toString()


{
return "["+x+","+y+"]";
}
}

Program 3.7 : [Link] programý ve daire sýnýfýnýn tanýmý. Daire sýnýfý nokta sýnýfýndan
Kalýtým (inheritance) yoluyla türetilmiºtir.

import nokta;

public class daire extends nokta


{
protected double yaricap;

public daire()
{
//daire kalýtým yaptigi nokta sýnýfýnýn kurucu metotunu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// super deyimi ile cagirabilir.
super(0,0);
yaricapgir(0);
}

public daire(double r, double a, double b)


{
super(a,b);
yaricapgir(r);

public void yaricapgir(double r)


{
if(r = 0.0)
yaricap=r;
else
yaricap=0.0;
}

public double yaricapoku()


{
return yaricap;
}

public double alan()


{
return 3.14159*yaricap*yaricap;
}

public String toString()


{
return "Merkez = "+"["+x+","+y+"]"+
"; Yaricap="+yaricap;
}
}

Kalýtým yoluyla aktarýlan metotlar ve deðiºkenler yeni programda o programýn içinde


yazýlmýº gibi aynen kullanýlabilir.

3.7 SINIFLARI BAªKA BIR SINIFTA NESNE OLARAK ÇAÐIRARAK BiR ARAYA
GETiRME (COMPOSITION)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Sýnýftaki deðiºken ve metotlarý kalýtým yoluyla aktarabildiðimiz gibi, sadece üst sýnýfa ait bir
nesne (object) tanýmýný alt sýnýfta tanýmlýyarak ta yapabiliriz. Buna nesne yoluyla aktarým
(ingilizce composition) diyoruz.

Program 3.8 : 1 [Link] programý ve daire sýnýfýnýn tanýmý. Nokta sýnýfý daire1
sýnýfýnda merkez adlý nesne olarak tanýmlanmýstýr.

import nokta;

public class daire1


{
protected double yaricap;
protected nokta merkez;

public daire1()
{

merkez=new nokta(0,0);
yaricapgir(0);
}

public daire1(double r, double a, double b)


{
merkez=new nokta(a,b);
yaricapgir(r);

public void yaricapgir(double r)


{
if(r = 0.0)
yaricap=r;
else
yaricap=0.0;
}

public double yaricapoku()


{
return yaricap;
}

public double alan()


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return 3.14159*yaricap*yaricap;
}

public String toString()


{
return "Merkez = "+"["+merkez.x+","+merkez.y+"]"+
"; Yaricap="+yaricap;
}
}

daire1 programýnda

3.8 KALITIM YOLUYLA ALT SINIFA BAÐLANMIª ÜST SINIF REFERANSI


ÜZERINDEN ALT SINIFI ÇAÐIRMA

Yukarýda nokta ve daire sýnýflarýný tanýmlamýºtýk. Baska bir sýnýftan kalýtým yoluyla türeyen
sýnýfýn(dairenin noktadan kalýtým yoluyla türemesi gibi), üst sýnýfýn adresi(tanýmý) üzerinden
programýn içinde aktarýmý mümkündür.

Program 3.9 : [Link] sýnýfýnda üst sýnýf üzerinden adres referansý kullanýmý

import [Link];
import [Link];

public class noktatesti extends Applet


{
private nokta noktaref,n;
private daire daireref,d;

public void init()


{
n=new nokta(30,50);
d=new daire(2.7,120,89);
}

public void paint(Graphics g)


{
//once noktamizi ve dairemizi yazdiralým
[Link]("Nokta n : "+[Link](),25,25);
[Link]("Daire d : "+[Link](),25,40);
//c dairesinin adresini nokta olarak tanýmlanan noktaref e aktaralým
noktaref=d;
[Link]("Daire(noktaref uzerinden) :"+[Link](),25,70);
//noktaref nesnesini daireref degiºkenine(nesnesine) aktaralým
daireref=(daire)noktaref;
[Link]("Daire(daireref uzerinden) :"+[Link](),25,85);
[Link]("Dairenin alani(daireref uzerinden) :"+[Link](),25,100);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

[Link]

ªekil 3.5 [Link]

Program 3.9 da görülen [Link] sýnýfýnda, n nokta sýnýfý nesnesi, ve noktaref


noktasinifi nesnesi, ve d dairesýnýfý nesnesi, ve daireref daire sinifi nesnesi tanýmlanmiºtýr.
Ýnit metotunda p ve c nesnelerinin adresleri kurucu metotu new deyimiyle taºýyarak
tanýmlanmiºtir. Dahasonra noktaref=d; deyimiyle aslýnda daire sýnýfýndan olan d nesnesi
nokta sýnýfýndan tanýmlanan noktaref nesnesinin adresine yüklenmiºtir. Programda da
görüldüðü gibi noktaref üzerinden daireyi kullanmak mümkündür çünkü nokta dairenin
kalýtým yoluyla üst sýnýfýdýr. Ayný zamanda cast iºlemcisi (daire) terimini kullanarak
noktaref’i daireref’e aktarmak da mümkün olmuºtur. Bu aktarma nokta dairenin super sýnýfý
olmasa baºarýlamazdý. Bazen sadece bu süper sýnýf aktarýmýný saglamak amacýyla sýnýf
hiyerarºisinin en tepesine aslýnda belli bir görevi olmýyan abstract sýnýflar yerleºtirilir. Bu
sýnýfýn alt sýnýflarý olarak tanýmlanan tüm sýnýflar bu sýnýf adresinden yararlanýlarak
aktarýlabilir. Abstract sýnýflarýn tanýmýnda abstract sözcüðü kullanýlýr. Abstract tür metotlarýn
içinde metotlarýn sadece baºlýklarý verilip tanýmlarý yapýlmýyabilir. (metotun ana gövdesi
tanýmlanmýyabilir). Abstract super sýnýfýnýn kullanýlmasýna ºöyle bir örnek verebiliriz : sekil
isimli bir abstract sýnýfýn alt sýnýflarý olarak daire,üçgen,dikdörtgen ve kare sýnýflarýný
oluºturduðumuzu ve bu sýnýflarýn herbirinin kendi ºeklini çizecek ciz metotunu içerdiðini
düºünelim. Programý yazarken abstract sýnýf sekilde de alan metotu tanýmý yaparýz. Ve sekil
sýnýfýndan bir nesne tanýmlarýz. Program çalýºýrken sekil üzerinden istediðimiz alt ºeklin
çizimi dinamik olarak her biri için ayrý bir adres tanýmlamadan mümkün olur. Ayný ºekilde bir
nümerik analiz programý yazarken, örneðin her deðiºik fonksiyon için ayrý ayrý integral metotu
yazma yerine abstract tür bir fonksiyon için integral programýný yazar ve gerçek
foksiyonumuzu tanýmladýðýmýz sýnýfý bu abstract sýnýfýn alt sýnýfý olarak tanýmlarýz.

Bu kavramý daha sonraki bölümlerimizde daha geniº örneklerle açýklamaya çalýºacaðýz.

3.9 NESNEYi DiNAMiK OLARAK SiLMEK FINALIZE() METOTU

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java dili kullanýlmayan nesneleri silmek için arka planda çalýºan bir sisteme sahiptir. Bu
yüzden C++ gibi dillerde dinamik nesne tanýmlarýnda mutlaka yer almasý gereken nesneyi
silme metotlarý javada o kadar gerekli deðildir. Fakat eðer kendiniz metlaka bir nesneyi acil
olarak silmek isteseniz finalize() isimli bir metotu sýnýfýnýzda tanýmlayýp kullanabilirsiniz.
Örnek olarak aºaðýdaki metotu verebiliriz.

protected void finalize() throws Throwable


{
[Link]();
}

3.10 ALIªTIRMALAR

1. [Link], [Link],[Link] ve [Link] programlarýný


karºýlaºtýrýnýz. Aralarýndaki fark ve benzerlikleri açýklayýnýz.

2. [Link] programýný inceleyiniz

Program 3.10 [Link], bu program nokta sýnýfýndan (Program 3.5) kalýtým yoluyla
türüyen daire sýnýfýnýn(Program 3.6) kullanýlmasýný göstermektedir.

import [Link].*;

import daire;

class dairetest

public static void main(String args[]) throws IOException

nokta merkez=new nokta(1.0,2.0);

daire d1=new daire(2.5,1.0,2.0);

[Link]("nokta : "+[Link]() );

[Link]("daire : "+[Link]() );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("dairenin alan� : "+[Link]());

//not : noktagir metodu kalýtýmla nokta sýnýfýndan aktarýlmýºtýr

[Link](1.5,2.5);

[Link]("daire(merkez degisti) : "+[Link]() );

[Link](1.0);

[Link]("daire(yaricap degisti) : "+[Link]() );

[Link]("dairenin alan� : "+[Link]());

nokta : [1.0,2.0]

daire : Merkez = [1.0,2.0]; Yaricap=2.5

dairenin alaný : 19.6349375

daire(merkez degisti) : Merkez = [1.5,2.5]; Yaricap=2.5

daire(yaricap degisti) : Merkez = [1.5,2.5]; Yaricap=1.0

dairenin alaný : 3.14159

3. dairetest_2000.java programýný inceleyiniz

Program 3.11 dairetest_2000.java, bu program nokta sýnýfýndan (Program 3.5) kalýtým


yoluyla türüyen daire sýnýfýnýn(Program 3.6) kullanýlmasýný göstermektedir.

import [Link]; // giriº - çýkýº

import daire;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class dairetest_2000

public static void main(String args[])

nokta merkez=new nokta(1.0,2.0);

daire d1=new daire(2.5,1.0,2.0);

String s="";

s+="nokta : "+[Link]()+"\n";

s+="daire : "+[Link]()+"\n";

s+="dairenin alaný : "+[Link]()+"\n";

//not : noktagir metodu kalýtýmla nokta sýnýfýndan aktarýlmýþtýr

[Link](1.5,2.5);

s+="daire(merkez degisti) : "+[Link]()+"\n";

[Link](1.0);

s+="daire(yaricap degisti) : "+[Link]()+"\n";

s+="dairenin alaný : "+[Link]()+"\n";

[Link](null,s,

"daire testi 2000",JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.6 daire testi 2000 JoptionPage çýktýsý

5. Nokta sýnýfýný kullanarak dogru sýnýfýný yarat. Doðru iki noktayla tanýmlanýr. Dogru sýnýfýnýn
kurucu metotunu, boyunu hesaplayan boy metotunu, uç noktalarýný String deðiºkeni olarak
tanýmlayan toString metotunu ve gerekli olan diðer metotlarý tanýmla. Konsol programý olarak
dogrutesti sýnýfý oluºturarak bu sýnýfýn içinde cokdogrubirdogru isimli bir nesne oluºtur be
bu nesnenin baslangýç ve bitiº noktalarýyla boyunu yazdýr. Girdi deðerlerini program içinde
sabit olarak tanýmla.

Program 3.12 [Link]

import nokta;

public class dogru


{
protected nokta n1,n2;

//kurucu metot metot girdisi x1,y1,x2,y2


public dogru(double x1, double y1,double x2,double y2)
{
n1=new nokta(x1,y1);
n2=new nokta(x2,y2);
}

//kurucu metot, method girdisi iki nokta


public dogru(nokta nokta1,nokta nokta2)
{
n1=new nokta(nokta1.x,nokta1.y);
n2=new nokta(nokta2.x,nokta2.y);
}

public void dogrugir(double x1, double y1,double x2,double y2)


{
[Link](x1,y1);
[Link](x2,y2);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String toString()
{
return "("+[Link]()+","+[Link]()+")";
}

public double boy()


{
return [Link](([Link]()-[Link]())*([Link]()-[Link]()) +
([Link]()-[Link]())*([Link]()-[Link]()) );
}
}

Program 3.13 [Link]

import [Link].*;
import nokta;

public class dogrutesti


{
public static void main(String args[]) throws IOException
{
dogru cokdogrubirdogru=new dogru(1.0,1.0,2.0,2.0);
[Link]([Link]());
[Link]("dogru boyu : "+[Link]());
}
}

([1.0,1.0],[2.0,2.0])

dogru boyu : 1.4142135623730951

6. Nokta sýnýfýný kullanarak dikdortgen sýnýfýný yarat. Dikdörtgen iki noktayla tanýmlanýr.
Dikdortgen sýnýfýnýn kurucu metotunu, çevresini hesaplayan çevre metotunu, Alanýný
hesaplayan alan metotonu, dikdortgeni tanýmlayan iki noktayý String deðiºkeni olarak
tanýmlayan toString metotunu ve gerekli olan diðer metotlarý tanýmla. Applet programý olarak
dikdortgentesti sýnýfý oluºturarak bu sýnýfýn içinde cokguzelbirdikdortgen isimli bir nesne
oluºtur be bu nesnenin baslangýç ve bitiº noktalarýyla boyunu yazdýr. Girdi deðerlerini
program içinde sabit olarak tanýmla.

Program 3.14 [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];
import [Link];
import nokta;

class dikDortgen
{
protected nokta n1,n2;

//kurucu metot metot girdisi x1,y1,x2,y2


public dikDortgen(double x1, double y1,double x2,double y2)
{
n1=new nokta(x1,y1);
n2=new nokta(x2,y2);
}

//kurucu metot, method girdisi iki nokta


public dikDortgen(nokta nokta1,nokta nokta2)
{
n1=new nokta(nokta1.x,nokta1.y);
n2=new nokta(nokta2.x,nokta2.y);
}

public void dikdortgengir(double x1, double y1,double x2,double y2)


{
[Link](x1,y1);
[Link](x2,y2);
}

public String toString()


{
return "dikdortgen : ("+[Link]()+","+[Link]()+")";
}

public double alan()


{
return ([Link]()-[Link]())*([Link]()-[Link]());
}

public double cevre()


{
return 2*([Link]()-[Link]())+ 2*([Link]()-[Link]());
}
}

public class dikdortgentesti extends Applet


{
public void paint(Graphics g)
{
dikDortgen cokguzelbirdikdortgen=new dikDortgen(1,1,2,2);
[Link]([Link](),20,20);
[Link]("Alan : "+ [Link](),20,35);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

[Link]

ªekil 3.7 [Link] çýktýsý

7. dogrutesti1 sýnýfýný yaz. Bu sýnýfta dogruyu tanýmlýyan noktalarý (toplam iki nokta) swing
JoptionPane konsol programýna ekrandan deðiºken olarak gir. Dogrunun iki noktasýný ve
doðru boyunu ekrana çýktý olarak yazdýr.

8. Dikdortgentesti1 sýnýfýný yaz. Bu sýnýfta dogruyu tanýmlýyan uç noktalarý JApplet


programýna dýºardan deðiºken olarak gir.

9. Hesapmakinesi sýnýfýný yarat. Bu sýnýf iki gerçek deðiºkeni sýnýf deðiºkeni olarak
tanýmlasýn. Topla,cýkar,carp ve bol metotlarýný yaz ve bu iºlemleri metotlarýn içinde tanýmla.

bir test programýný yaz ve bu sýnýf hesapmakinesi sýnýfýný kullanarak dýºarýdan girilen iki
gercek sayýnýn dört iºlemini hesapla. dortislemhesapmakinasi programý Program 3.5 de
verilmiºtir.

Program 3.15 Dörtiºlem hesap makinasý appleti tanýmlayan [Link] programý

import [Link]; // java applet sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import dortislemhesapmakinasi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H4AL1 extends Applet implements ActionListener

// Dört iºlem hesap makinasý

TextField sonucgirdisi;

TextField kutugirdisi;

Button Gir,Arti,Eksi,Carpi,Bolu,M,MR,MArti,MEksi,Isaret,C;

//Button sinifi degiskenleri

double sayi;

dortislemhesapmakinasi D;

// pencereyi baslatma metotu

public void init()

D=new dortislemhesapmakinasi();

sonucgirdisi=new TextField(30);

[Link](false);

add(sonucgirdisi);

kutugirdisi=new TextField(30);

add(kutugirdisi);//kutuyu pencereye yerlestir

Gir=new Button("gir");

Arti=new Button("+");

Eksi=new Button("-");

Carpi=new Button("*");

Bolu=new Button("/");

M=new Button("M");

MR=new Button("MR");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
MArti=new Button("M+");

MEksi=new Button("M-");

Isaret=new Button("+/-");

C=new Button("C");

add(Gir);

add(Arti);

add(Eksi);

add(Carpi);

add(Bolu);

add(M);

add(MR);

add(MArti);

add(MEksi);

add(Isaret);

add(C);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

// girdi alanindaki olan olaylari dinleme metotu

public void actionPerformed(ActionEvent e)

String ss=[Link]();

if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link]();

else if([Link]()==C) D.C();

[Link]([Link]());

if([Link]()==MR|| [Link]()==M ||[Link]()==MArti


||[Link]()==MEksi)

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else

[Link]("");

[Link]

ªekil 3.8 Dörtiºlem hesap makinasý çýktý appleti [Link]

10. Hesapmakinesi sýnýfýný için. bir JApplet test programý yaz ve bu sýnýf hesapmakinesi
sýnýfýný kullanarak dýºarýdan girilen iki gercek sayýnýn dört iºlemini hesapla .
dortislemhesapmakinasi programý yukarýda verilmiºtir.

Program 3.16 Dörtiºlem hesap makinasý swing JAppleti tanýmlayan H4AL1_2000.java


programý

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import dortislemhesapmakinasi;

public class H4AL1_2000 extends JApplet implements ActionListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Dört iºlem hesap makinasý

JTextField sonucgirdisi;

JTextField kutugirdisi;

JButton Gir,Arti,Eksi,Carpi,Bolu,M,MR,MArti,MEksi,Isaret,C;

//JButton sinifi degiskenleri

double sayi;

dortislemhesapmakinasi D;

// pencereyi baslatma metodu

public void init()

D=new dortislemhesapmakinasi();

Container c=getContentPane();

[Link](new FlowLayout());

sonucgirdisi=new JTextField(30);

[Link](false);

[Link](sonucgirdisi);

kutugirdisi=new JTextField(30);

[Link](kutugirdisi);//kutuyu pencereye yerlestir

Gir=new JButton("gir");

Arti=new JButton("+");

Eksi=new JButton("-");

Carpi=new JButton("*");

Bolu=new JButton("/");

M=new JButton("M");

MR=new JButton("MR");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
MArti=new JButton("M+");

MEksi=new JButton("M-");

Isaret=new JButton("+/-");

C=new JButton("C");

[Link](Gir);

[Link](Arti);

[Link](Eksi);

[Link](Carpi);

[Link](Bolu);

[Link](M);

[Link](MR);

[Link](MArti);

[Link](MEksi);

[Link](Isaret);

[Link](C);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

String ss=[Link]();

if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link]();

else if([Link]()==C) D.C();

[Link]([Link]());

if([Link]()==MR|| [Link]()==M ||[Link]()==MArti ||[Link]()==MEksi)

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else

[Link]("");

10. Hesapmakinesi sýnýfýný için. bir JFrame test programý yaz ve bu sýnýf hesapmakinesi
sýnýfýný kullanarak dýºarýdan girilen iki gercek sayýnýn dört iºlemini hesapla.
dortislemhesapmakinasi programý yukarýda verilmiºtir.

Program 3.17 Dörtiºlem hesap makinasý appleti tanýmlayan H4AL1SWF_2000.java


programý (java komutuyla çalýºtýracaðýz)

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import dortislemhesapmakinasi;

import BasicWindowMonitor;

//dörtiºlem hesap makinasý sýnýfýný çaðýrýr

//swing frame versiyonu

public class H4AL1SWF_2000 extends JFrame implements ActionListener

// Dört iºlem hesap makinasý

JTextField sonucgirdisi;

JTextField kutugirdisi;

JButton Gir,Arti,Eksi,Carpi,Bolu,M,MR,MArti,MEksi,Isaret,C;

//JButton sinifi degiskenleri

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double sayi;

dortislemhesapmakinasi D;

// pencereyi baslatma metodu

public H4AL1SWF_2000()

D=new dortislemhesapmakinasi();

Container c=getContentPane();

[Link](new FlowLayout());

sonucgirdisi=new JTextField(30);

[Link](false);

[Link](sonucgirdisi);

kutugirdisi=new JTextField(30);

[Link](kutugirdisi);//kutuyu pencereye yerlestir

Gir=new JButton("gir");

Arti=new JButton("+");

Eksi=new JButton("-");

Carpi=new JButton("*");

Bolu=new JButton("/");

M=new JButton("M");

MR=new JButton("MR");

MArti=new JButton("M+");

MEksi=new JButton("M-");

Isaret=new JButton("+/-");

C=new JButton("C");

[Link](Gir);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](Arti);

[Link](Eksi);

[Link](Carpi);

[Link](Bolu);

[Link](M);

[Link](MR);

[Link](MArti);

[Link](MEksi);

[Link](Isaret);

[Link](C);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String ss=[Link]();

if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link]();

else if([Link]()==C) D.C();

[Link]([Link]());

if([Link]()==MR|| [Link]()==M ||[Link]()==MArti ||[Link]()==MEksi)

[Link]([Link]());

else

[Link]("");

//=====================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args)

H4AL1SWF_2000 pencere= new H4AL1SWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

11. Bayaðý kesirler sanýrým ilk okulda sizleri epey zorlamýºtýr. Daha fazla aklýmýzý
karýºtýrmalarýný önlemek amacýyla bayagikesir sýnýfýný tanýmlayalým. Bu sýnýf bayaðý
kesirlerin dört iºlemini ve sadeleºtirilmelerini yapabilme kapasitesinde olsun. Ayný zamanda
bayaðý kesirleri yazdýran toString metotunu da tanýmlayalým. Bu metot [2/3] veya 3[5/4]
ºeklinde bayaðý kesirleri yazdýrabilsin.

Bayaðý kesirleri sadeleºtirirken en büyük ortak bölen hesabý gerekebilir. Bu amaçla asaðýdaki
metot verilmiºtir.

public int enbuyukortakbolen(int n, int m)


{
// iki tam sayýnýn en buyuk ortak bolenini hesaplar
if(n==0)
return m;
if(m==0)
return n;
while(m != n)
{
if(nm)
n=n-m;
else
m=m-n;
}
return n;
}

not : sadeleºtirme iºlemi pay ve paydayý en büyük ortak bölene bölerek yapýlýr.

Bayagi kesir sýnýfýnýn calýºmasýný kontrol amacýyla [Link] applet programýný


yaz. Bu programa iki bayaðý kesir gir ve dort iºlemini hesapla.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 3.18 : [Link],bayagikesir sýnýfý tanýmý

//===========================================
// bayagikesir sinifi tanimi
// Dr. Turhan Coban
//===========================================
import [Link].*;

// sinif bayagikesir
// bu sinif bayagikesir sayilarin matematik
// islemlerini tanimlar
//

class bayagikesir {
// sinif degiskenleri
int pay;
int payda;

// kurucu metotlar

public bayagikesir()
{
pay=0;
payda=1;
}

public bayagikesir(int npay,int npayda)


{
pay=npay;
payda=npayda;
}

public bayagikesir(int numer)


{
pay=numer;
payda=1;
}

public bayagikesir(bayagikesir c )
{
pay=[Link]();
payda=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
// giriº- çýkýº metodlarý

public int enbuyukortakbolen()


{
int n=pay;
int m=payda;
// iki tam sayinin en buyuk ortak bolenini hesaplar
if(n==0)
return m;
if(m==0)
return n;
while(m != n)
{
if(nm)
n=n-m;
else
m=m-n;
}
return n;
}

public void sadelestir()


{
//sadelestir
int isaret=1;
if(pay<0)
{
isaret=-isaret;
pay=-pay;
}
if(payda<0)
{
isaret=-isaret;
payda=-payda;
}
if(payda==0) {pay=0;payda=1;}
int ebob=enbuyukortakbolen();
ebob=[Link](ebob);
pay=isaret*pay/ebob;
payda=payda/ebob;
}

public int Pay()


{
return pay;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int Payda()
{
return payda;
}

public void payGir(int r)


{
pay=r;
}

public void paydaGir(int i)


{
payda=i;
}

public void bayagikesirGir(bayagikesir sag)


{
pay=[Link]();
payda=[Link]();
}

public void bayagikesirGir(int nr,int ni)


{
pay=nr;
payda=ni;
}

public void bayagikesirGir(int nr)


{
pay=nr;
payda=1;
}

public void bayagikesirGir(double d) throws bayagikesirException


{
// tam sayinin bayagikesir esitini y�kle
// eh birazc�k yaklas�m var tabi
bayagikesirGir((int)d*10000,10000);
sadelestir();
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double toDouble()
{
//bayagikesir sayinin gercek sayi esidi
return ((double)pay/(double)payda);
}

public static bayagikesir BayagikesireCevir(double d) throws bayagikesirException


{
// tam sayinin bayagikesir esiti
// eh birazc�k yaklas�m var tabi
bayagikesir b=new bayagikesir();
[Link]((int)d*10000,10000);
[Link]();
return b;
}

public void topla(bayagikesir sag) throws bayagikesirException


{
//ikinci bir bayagikesirle topla
pay = pay*[Link]() + [Link]()*payda;
payda = payda*[Link]();
sadelestir();
}

public void topla(int sag) throws bayagikesirException


{
//bir gercek say�yla topla
pay = pay + sag*payda;
sadelestir();
}

public void cikar(bayagikesir sag) throws bayagikesirException


{
//ikinci bir bayagikesirle topla
pay = pay*[Link]() - [Link]()*payda;
payda = payda*[Link]();
sadelestir();
}

public void cikar(int sag) throws bayagikesirException


{
//bir gercek say�yla topla
pay = pay - sag*payda;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sadelestir();
}

public void carp(bayagikesir sag ) throws bayagikesirException


{
//bir bayagikesir sayiyla carp
pay = pay*[Link]();
payda = payda*[Link]();
sadelestir();
}

public void carp(int sag ) throws bayagikesirException


{
//bir gercek sayiyla carp
pay = pay*sag;
sadelestir();
}

public void bol(bayagikesir sag ) throws bayagikesirException


{
//bir bayagikesir say�yla bol
pay = pay*[Link]();
payda = payda*[Link]();
sadelestir();
}

public void bol(int sag ) throws bayagikesirException


{
//bir Pay say�yla bol
payda = payda*sag;
sadelestir();
}

public static bayagikesir topla(bayagikesir sol, bayagikesir sag) throws bayagikesirException


{
// iki bayagikesir sayýnýn toplamýný return deyimiyle bayagikesir olarak
// aktarýr
int r1= [Link]() * [Link]() + [Link]() * [Link]();
int i1= [Link]()* [Link]();
bayagikesir sonuc;
sonuc=new bayagikesir(r1,i1);
[Link]();
return sonuc;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static bayagikesir topla(bayagikesir sol, int sag) throws bayagikesirException
{
// bir bayagikesir ve bir Pay say�n�n toplam�n� return deyimiyle bayagikesir olarak
// aktarýr
int r1=[Link]() + sag*[Link]();
int i1=[Link]();
bayagikesir sonuc;
sonuc=new bayagikesir(r1,i1);
[Link]();
return sonuc;
}

public static bayagikesir topla(int sol, bayagikesir sag) throws bayagikesirException


{
// bir bayagikesir ve bir Pay say�n�n toplam�n� return deyimiyle bayagikesir olarak
// aktar�r
int r1=[Link]() + sol*[Link]();
int i1=[Link]();
bayagikesir sonuc;
sonuc=new bayagikesir(r1,i1);
[Link]();
return sonuc;
}

//===================================

public static bayagikesir cikar(bayagikesir sol, bayagikesir sag) throws bayagikesirException


{
// iki bayagikesir sayýnýn farkýný return deyimiyle bayagikesir olarak
// aktarýr
int r1= [Link]() * [Link]() - [Link]() * [Link]();
int i1= [Link]()* [Link]();
bayagikesir sonuc;
sonuc=new bayagikesir(r1,i1);
[Link]();
return sonuc;
}

public static bayagikesir cikar(bayagikesir sol, int sag) throws bayagikesirException


{
// bir bayagikesir ve bir Pay sayýnýn toplamýný return deyimiyle bayagikesir olarak
// aktarýr
int r1=[Link]() - sag*[Link]();
int i1=[Link]();
bayagikesir sonuc;
sonuc=new bayagikesir(r1,i1);
[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return sonuc;
}

public static bayagikesir cikar(int sol, bayagikesir sag) throws bayagikesirException


{
// bir bayagikesir ve bir Pay sayýnýn toplamýný return deyimiyle bayagikesir olarak
// aktarýr
int r1=[Link]() - sol*[Link]();
int i1=[Link]();
bayagikesir sonuc;
sonuc=new bayagikesir(r1,i1);
[Link]();
return sonuc;
}

//===================================

public static bayagikesir carp(bayagikesir sol, bayagikesir sag) throws bayagikesirException


{ // iki bayagikesir sayinin carpimini aktar
bayagikesir sonuc;
sonuc=new bayagikesir([Link]()*[Link](),[Link]()*[Link]());
[Link]();
return sonuc;
}

public static bayagikesir carp(bayagikesir sol, int sag) throws bayagikesirException


{ // bir bayagikesir ve bir double sayinin carpimini aktar
bayagikesir sonuc;
sonuc=new bayagikesir([Link]()*sag,[Link]());
[Link]();
return sonuc;
}

public static bayagikesir carp(int sol, bayagikesir sag) throws bayagikesirException


{ // bir bayagikesir ve bir double sayinin carpimini aktar
bayagikesir sonuc;
sonuc=new bayagikesir([Link]()*sol,[Link]());
[Link]();
return sonuc;
}

public static bayagikesir bol(bayagikesir sol, bayagikesir sag) throws bayagikesirException


{ // iki bayagikesir sayinin b”l�mlerini aktar
double a=[Link]()*[Link]()+[Link]()*[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bayagikesir sonuc;
sonuc=new bayagikesir((int)([Link]()*[Link]()),(int)([Link]()*[Link]()));
[Link]();
return sonuc;
}

public static bayagikesir bol(bayagikesir sol, int sag) throws bayagikesirException


{ // bayagikesir sayýyý double sayýya bol
bayagikesir sonuc;
sonuc=new bayagikesir([Link](),([Link]()*sag));
[Link]();
return sonuc;
}

public boolean kucuktur(bayagikesir sol,bayagikesir sag)


{
// less then comparison of two bayagikesir numbers
return ([Link]() < [Link]());
}

public boolean kucuktur_esittir(bayagikesir sol,bayagikesir sag)


{
// less then and esittir comparison of two bayagikesir numbers
return ([Link]() <= [Link]());
}

public boolean buyuktur(bayagikesir sol,bayagikesir sag)


{
// buyuktur then comparison of two bayagikesir numbers
return [Link]() [Link]();
}

public boolean buyuktur_esittir(bayagikesir sol,bayagikesir sag)


{
// buyuktur then and esittir comparison of two bayagikesir numbers
return [Link]() = [Link]();
}

public boolean esittir(bayagikesir sol,bayagikesir sag)


{
// esittir comparison of two bayagikesir numbers
return [Link]() == [Link]();
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean esit_degildir(bayagikesir sol,bayagikesir sag)
{
// not esittir comparison of two bayagikesir numbers
return [Link]() != [Link]();
}

public static String toString(bayagikesir value)


{
String b="";
if([Link]([Link]())!=1)
{
b=b+"( "+[Link]()+" / "+[Link]()+" )";
}
else
{
b=b+[Link]()+" ";
}
return b;
}

public String toString()


{
// yazima haz�r bayagikesir formda String de§iskeni iletir.
String b="";
if([Link](Payda())!=1)
{
b=b+"( "+pay+" / "+Payda()+" )";
}
else
{
b=b+Pay()+" ";
}
return b;
}
};

//bayagikesir sinifinin taniminin sonu

Program 3.19 :Bayagýkesir sýnýfý test programý [Link]

// Dr. Turhan Çoban

// Bayaðý kesir testi

//--------------------------------------------------------------------------------------------

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link]; // java applet sinifini cagir
import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir
import bayagikesir;

public class bkTesti extends Applet implements ActionListener


{
//
//=====================================================
// sinif degiskenleri
// bu degiskenler tum sýnýfa aittir
Label kutubasligi1; //Label sinifi degiskeni (nesnesi) kutubasligi1
TextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1
Label kutubasligi2; //Label sinifi degiskeni (nesnesi) kutubasligi2
TextField kutugirdisi2; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
TextField kutugirdisi3; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
TextField kutugirdisi4; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
bayagikesir k1; // bayagikesir degisken k1
bayagikesir k2; // bayagikesir degisken k2
//=====================================================
// pencereyi baslatma metotu
// pencere ilk basladiginda
// degiskenler buradaki degerleri alirlar
public void init()
{
k1=new bayagikesir(1,2);
k2=new bayagikesir(2,4);
kutubasligi1=new Label("Birinci bayagikesir sayiyi giriniz : ");
add(kutubasligi1);
kutugirdisi1=new TextField(5);
[Link](this);
add(kutugirdisi1);
kutugirdisi2=new TextField(5);
[Link](this);
add(kutugirdisi2);
kutubasligi2=new Label("Ikinci bayagikesir sayiyi giriniz : ");
add(kutubasligi2);
kutugirdisi3=new TextField(5);
[Link](this);
add(kutugirdisi3);
kutugirdisi4=new TextField(5);
[Link](this);
add(kutugirdisi4);
}
//=====================================================
// girdi alanindaki olan olaylari dinleme metotu
// Her yeni rakam girildiginde bu metot cagirilir
public void actionPerformed(ActionEvent e)
{
Integer sayi1,sayi2,sayi3,sayi4;
sayi1=new Integer([Link]() );
sayi2=new Integer([Link]() );
sayi3=new Integer([Link]() );
sayi4=new Integer([Link]() );
showStatus("Hesaplaniyor....");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link](),[Link]());
[Link]([Link](),[Link]());
showStatus("Hesaplandi");
repaint();//pencereyi yeniden paint metotuna gore ciz
}
//=====================================================
// paint (boya=pencereye ciz metotu)
public void paint(Graphics g)
{
[Link]("ilk sayi : "+[Link](),25,80);
[Link]("ikinci sayi : "+[Link](),25,95);
try{
[Link]("iki sayinin toplami : "+[Link]([Link](k1,k2)),25,110);
[Link]("iki sayinin farki : "+[Link]([Link](k1,k2)),25,125);
[Link]("iki sayinin carpimi : "+[Link]([Link](k1,k2)),25,140 );
[Link]("iki sayinin bolumu : "+[Link]([Link](k1,k2)),25,155 );
}
catch (bayagikesirException e)
{
showStatus([Link]());
}
}
}

[Link]

ªekil 3.9 Bayaðý kesir test programý [Link] applet çýktýsý

Program 3.20 :Bayagýkesir sýnýfý Java swing applet test programý bkTesti_2000.java

import [Link].*; // java swing sinifini cagir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import bayagikesir;

public class bkTesti_2000 extends JApplet implements ActionListener

//

//=====================================================

// sinif degiskenleri

// bu degiskenler tum sýnýfa aittir

JLabel kutubasligi1; //JLabel sinifi degiskeni (nesnesi) kutubasligi1

JTextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1

JLabel kutubasligi2; //JLabel sinifi degiskeni (nesnesi) kutubasligi2

JTextField kutugirdisi2; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi3; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi4; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextArea cikti; // JTextArea sýnýfý deðiºkeni (nesnesi) cikti

bayagikesir k1; // bayagikesir degisken k1

bayagikesir k2; // bayagikesir degisken k2

//=====================================================

// pencereyi baslatma metodu

// pencere ilk basladiginda

// degiskenler buradaki degerleri alirlar

public void init()

k1=new bayagikesir(1,2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
k2=new bayagikesir(2,4);

Container c=getContentPane();

[Link](new FlowLayout());

kutubasligi1=new JLabel("Birinci bayagikesir sayiyi giriniz : ");

[Link](kutubasligi1);

kutugirdisi1=new JTextField(5);

[Link](this);

[Link](kutugirdisi1);

kutugirdisi2=new JTextField(5);

[Link](this);

[Link](kutugirdisi2);

kutubasligi2=new JLabel("Ikinci bayagikesir sayiyi giriniz : ");

[Link](kutubasligi2);

kutugirdisi3=new JTextField(5);

[Link](this);

[Link](kutugirdisi3);

kutugirdisi4=new JTextField(5);

[Link](this);

[Link](kutugirdisi4);

cikti=new JTextField(" ");

//=====================================================

// girdi alanindaki olan olaylari dinleme metodu

// Her yeni rakam girildiginde bu metod cagirilir

public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Integer sayi1,sayi2,sayi3,sayi4;

sayi1=new Integer([Link]() );

sayi2=new Integer([Link]() );

sayi3=new Integer([Link]() );

sayi4=new Integer([Link]() );

showStatus("Hesaplaniyor....");

[Link]([Link](),[Link]());

[Link]([Link](),[Link]());

showStatus("Hesaplandi");

String s="";

s+="ilk sayi : "+[Link]()+"\n";

s+="ikinci sayi : "+[Link]();

s+="iki sayinin toplami : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin farki : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin carpimi : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin bolumu : "+[Link]([Link](k1,k2))+"\n";

[Link](s);

repaint();//pencereyi yeniden paint metoduna gore ciz

//=====================================================

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.10 bkTesti_2000 swing JApplet çýktýsý

Program 3.21 :Bayagýkesir sýnýfý test programý bkTestiSWF_2000.java swing Frame test
programý

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import bayagikesir;

import BasicWindowMonitor;

public class bkTestiSWF_2000 extends JFrame implements ActionListener

//

//=====================================================

// sinif degiskenleri

// bu degiskenler tum sýnýfa aittir

JLabel kutubasligi1; //JLabel sinifi degiskeni (nesnesi) kutubasligi1

JTextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1

JLabel kutubasligi2; //JLabel sinifi degiskeni (nesnesi) kutubasligi2

JTextField kutugirdisi2; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JTextField kutugirdisi3; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi4; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextArea cikti; // JTextArea sýnýfý deðiºkeni (nesnesi) cikti

bayagikesir k1; // bayagikesir degisken k1

bayagikesir k2; // bayagikesir degisken k2

//=====================================================

// pencereyi baslatma metodu

// pencere ilk basladiginda

// degiskenler buradaki degerleri alirlar

public bkTestiSWF_2000()

super("bayaðý kesir Testi bkTestiSWF_2000, frame format");

k1=new bayagikesir(1,2);

k2=new bayagikesir(2,4);

Container c=getContentPane();

[Link](new FlowLayout());

kutubasligi1=new JLabel("Birinci bayagikesir sayiyi giriniz : ");

[Link](kutubasligi1);

kutugirdisi1=new JTextField(5);

[Link](this);

[Link](kutugirdisi1);

kutugirdisi2=new JTextField(5);

[Link](this);

[Link](kutugirdisi2);

kutubasligi2=new JLabel("Ikinci bayagikesir sayiyi giriniz : ");

[Link](kutubasligi2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutugirdisi3=new JTextField(5);

[Link](this);

[Link](kutugirdisi3);

kutugirdisi4=new JTextField(5);

[Link](this);

[Link](kutugirdisi4);

cikti=new JTextArea(toString());

[Link]([Link]());

[Link](cikti);

//=====================================================

public String toString()

String s="";

s+="ilk sayi : "+[Link]()+"\n";

s+="ikinci sayi : "+[Link]()+"\n";

s+="iki sayinin toplami : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin farki : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin carpimi : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin bolumu : "+[Link]([Link](k1,k2))+"\n";

return s;

// girdi alanindaki olan olaylari dinleme metodu

// Her yeni rakam girildiginde bu metod cagirilir

public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

Integer sayi1,sayi2,sayi3,sayi4;

sayi1=new Integer([Link]() );

sayi2=new Integer([Link]() );

sayi3=new Integer([Link]() );

sayi4=new Integer([Link]() );

[Link]([Link](),[Link]());

[Link]([Link](),[Link]());

[Link](toString());

//=====================================================

public static void main(String[] args)

bkTestiSWF_2000 pencere= new bkTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.11 bkTestiSWF_2000 swing JFrame çýktýsý

Kompleks sýnýfý örnek olarak burada verilmiºtir. Problem 11 ve 12 ile ilgili önemli bir nokta
bunlarýn gerçek hayatta kullanýlabilecek sýnýflar olmalarýdýr. Sadece bir eksersiz olarak
kullanýlmak amacýyla deðil, bu sýnýflara ihtiyacýmýz olduðunda bize hizmet vermek amacýyla
ve tüm detay metodlarý düºünülerek yazýlmýºlardýr. Bu sýnýflar her zaman kütüphanenizde
kalabilecek ve gerektiðinde direk olarak gerçek programlarýnýzda kullanýlabilecek özelliklerde
sýnýflardýr:

Program 3.22 : kompleks sýnýfýnýn tanýmý : [Link]

/===========================================
// kompleks sinifi tanimi
// Dr. Turhan Coban
//===========================================
import [Link].*;

// sinif kompleks
// bu sýnýf kompleks sayýlarýn matematik
// iºlemlerini tanýmlar
//
class kompleks {
// sýnýf degiskenleri
double ger; // kompleks sayýnýn gerçek kýsmý
double imaj; // kompleks sayýnýn imajineri kýsmý

// kurucu metotlar
public kompleks()
{
ger=0;
imaj=0;
}

public kompleks(double nger,double nimaj)


{
ger=nger;
imaj=nimaj;
}

public kompleks(double numer)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ger=numer;
imaj=0;
}

public kompleks(kompleks c )
{
ger=[Link]();
imaj=[Link]();
}
// giriº - çýkýº metotlarý

public double gercek()


{
return ger;
}

public double imajineri()


{
return imaj;
}

public void gercekgir(double r)


{
ger=r;
}

public void imajinerigir(double i)


{
imaj=i;
}

public void kompleksgir(kompleks sag)


{
ger=[Link]();
imaj=[Link]();
}

public void kompleksgir(double nr,double ni)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ger=nr;
imaj=ni;
}

public double R()


{
//kompleks sayinin polar koordinat cap esidi
return [Link](ger*ger+imaj*imaj);
}

public double theta()


{
//kompleks sayinin polar koordinat radyan aci esidi
return Math.atan2(imaj,ger);
}

public double dtheta()


{
//kompleks sayinin polar koordinat derece aci esidi
return Math.atan2(imaj,ger)*45.0/[Link](1.0);
}

public void topla(kompleks sag)


{
//ikinci bir kompleks say�yla topla
imaj = imaj + [Link]();
ger = ger + [Link]();
}

public void topla(double sag)


{
//bir gercek say�yla topla
ger = ger + sag;
}

public void cikar(kompleks sag)


{
imaj = imaj - [Link]();
ger = ger - [Link]();
}

public void cikar(double sag)


{
//bir gercek say�y� cikar

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ger = ger - sag;
}

public void carp(kompleks sag )


{
//bir kompleks sayiyla carp
ger = ger*[Link]() - imaj*[Link]();
imaj = ger*[Link]() + imaj*[Link]();
}

public void carp(double sag )


{
//bir gercek sayiyla carp
ger = ger*sag;
imaj = imaj*sag;
}

public void bol(kompleks sag )


{
//bir kompleks say�yla bol
double a=ger*ger+imaj*imaj;
ger = ( ger*[Link]() + imaj*[Link]())/a;
imaj = (-ger*[Link]() + imaj*[Link]())/a;
}

public void bol(double sag )


{
//bir gercek say�yla bol
ger = ger/sag;
imaj = imaj/sag;
}

public static kompleks topla(kompleks sol, kompleks sag)


{
// iki kompleks say�n�n toplam�n� return deyimiyle kompleks olarak
// aktar�r
double r1=([Link]() + [Link]());
double i1=([Link]() + [Link]());
kompleks sonuc;
sonuc=new kompleks(r1,i1);
return sonuc;
}

public static kompleks topla(kompleks sol, double sag)


{
// bir kompleks ve bir gercek say�n�n toplam�n� return deyimiyle kompleks olarak
// aktar�r
double r1=([Link]() + sag);
double i1=[Link]();
kompleks sonuc;
sonuc=new kompleks(r1,i1);
return sonuc;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static kompleks topla(double sol, kompleks sag)
{
// bir kompleks ve bir gercek say�n�n toplam�n� return deyimiyle kompleks olarak
// aktar�r
double r1=([Link]() + sol);
double i1=[Link]();
kompleks sonuc;
sonuc=new kompleks(r1,i1);
return sonuc;
}

public static kompleks cikar(kompleks sol, kompleks sag)


{ // iki kompleks sayinin sonuclarini aktar
kompleks sonuc;
sonuc=new kompleks(([Link]() - [Link]()),
([Link]() - [Link]()));
return sonuc;
}

public static kompleks cikar(kompleks sol, double sag)


{ // bir kompleks sayidan bir gercek sayiyi cikar sonuclarini aktar
kompleks sonuc;
sonuc=new kompleks(([Link]() - sag),[Link]());
return sonuc;
}

public static kompleks cikar(double sol, kompleks sag)


{ // bir double sayidan bir kompleks sayiyi cikar sonuclarini aktar
kompleks sonuc;
sonuc=new kompleks((sol - [Link]()),-[Link]());
return sonuc;
}

public static kompleks carp(kompleks sol, kompleks sag)


{ // iki kompleks sayinin carpimini aktar
kompleks sonuc;
sonuc=new kompleks
(([Link]()*[Link]() - [Link]()*[Link]()),
([Link]()*[Link]() + [Link]()*[Link]()));
return sonuc;
}

public static kompleks carp(kompleks sol, double sag)


{ // bir kompleks ve bir double sayinin carpimini aktar
kompleks sonuc;
sonuc=new kompleks([Link]()*sag,[Link]()*sag);
return sonuc;
}

public static kompleks carp(double sol, kompleks sag)


{ // bir kompleks ve bir double sayinin carpimini aktar
kompleks sonuc;
sonuc=new kompleks([Link]()*sol,[Link]()*sol);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return sonuc;
}

public static kompleks bol(kompleks sol, kompleks sag)


{ // iki kompleks sayinin b”l�mlerini aktar
double a=[Link]()*[Link]()+[Link]()*[Link]();
kompleks sonuc;
sonuc=new kompleks
(([Link]()*[Link]() + [Link]()*[Link]())/a,
(-[Link]()*[Link]() + [Link]()*[Link]())/a);
return sonuc;
}

public static kompleks bol(kompleks sol, double sag)


{ // kompleks say�y� gercek say�ya bol
kompleks sonuc;
sonuc=new kompleks([Link]()/sag,[Link]()/sag);
return sonuc;
}

public static kompleks pow(kompleks sol, double sag)


{ // kompleks bir say�n�n gercek kuvvetini hesaplar.
double Rad,th;
Rad=[Link](sol.R(),sag);
th=sag*[Link]();
kompleks sonuc;
sonuc =new kompleks((Rad*[Link](th) ),
(Rad*[Link](th) ) );
return sonuc;
}

public boolean kucuktur(kompleks sol,kompleks sag)


{
// less then comparison of two kompleks numbers
return (sol.R() < sag.R());
}

public boolean kucuktur_esittir(kompleks sol,kompleks sag)


{
// less then and esittir comparison of two kompleks numbers
return (sol.R() <= sag.R());
}

public boolean buyuktur(kompleks sol,kompleks sag)


{
// buyuktur then comparison of two kompleks numbers
return sol.R() sag.R();
}

public boolean buyuktur_esittir(kompleks sol,kompleks sag)


{
// buyuktur then and esittir comparison of two kompleks numbers
return sol.R() = sag.R();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public boolean esittir(kompleks sol,kompleks sag)


{
// esittir comparison of two kompleks numbers
return sol.R() == sag.R();
}

public boolean esit_degildir(kompleks sol,kompleks sag)


{
// not esittir comparison of two kompleks numbers
return sol.R() != sag.R();
}

public static String toString(kompleks value)


{
String b="";
if([Link]([Link]())!=1)
{
if([Link]() = 0)
b=b+"("+[Link]()+" + "+[Link]()+"i )";
else
b=b+"("+[Link]()+" - "+(-[Link]())+"i )";
}
else
{
if([Link]() = 0)
b=b+"("+[Link]()+" + i )";
else
b=b+"("+[Link]()+" - i )";
}
return b;
}

public String toString()


{
// yazima haz�r kompleks formda String de§iskeni iletir.
String b="";
if([Link](imajineri())!=1)
{
if(imajineri() 0)
b=b+"("+gercek()+" + "+imajineri()+"i )";
else if(imajineri() <0 )
b=b+"("+gercek()+" - "+(-imajineri())+"i )";
else
b=b+gercek()+ " ";
}
else
{
if(imajineri() 0)
b=b+"("+gercek()+" + i )";
else if(imajineri() < 0)
b=b+"("+gercek()+" - i )";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else
b=b+gercek()+" ";
}
return b;
}
};
//kompleks sinifinin taniminin sonu

Program 3.21 : kompleks sýnýfýný test eden [Link] programý

import [Link]; // java applet sinifini cagir


import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir
import kompleks;

public class H8A1 extends Applet implements ActionListener


{
//
//=====================================================
// sinif degiskenleri
// bu degiskenler tum s�n�fa aittir
Label kutubasligi1; //Label sinifi degiskeni (nesnesi) kutubasligi1
TextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1
Label kutubasligi2; //Label sinifi degiskeni (nesnesi) kutubasligi2
TextField kutugirdisi2; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
TextField kutugirdisi3; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
TextField kutugirdisi4; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
kompleks k1; // kompleks degisken k1
kompleks k2; // kompleks degisken k2
//=====================================================
// pencereyi baslatma metotu
// pencere ilk basladiginda
// degiskenler buradaki degerleri alirlar
public void init()
{
k1=new kompleks();
k2=new kompleks();
kutubasligi1=new Label("Birinci kompleks sayiyi giriniz : ");
add(kutubasligi1);
kutugirdisi1=new TextField(5);
[Link](this);
add(kutugirdisi1);
kutugirdisi2=new TextField(5);
[Link](this);
add(kutugirdisi2);
kutubasligi2=new Label("Ikinci kompleks sayiyi giriniz : ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
add(kutubasligi2);
kutugirdisi3=new TextField(5);
[Link](this);
add(kutugirdisi3);
kutugirdisi4=new TextField(5);
[Link](this);
add(kutugirdisi4);
}
//=====================================================
// girdi alanindaki olan olaylari dinleme metotu
// Her yeni rakam girildiginde bu metot cagirilir
public void actionPerformed(ActionEvent e)
{
Double sayi1=new Double([Link]() );
Double sayi2=new Double([Link]() );
Double sayi3=new Double([Link]() );
Double sayi4=new Double([Link]() );
[Link]([Link](),[Link]());
[Link]([Link](),[Link]());
repaint();//pencereyi yeniden paint metotuna gore ciz
}
//=====================================================
// paint (boya=pencereye ciz metotu)
public void paint(Graphics g)
{
[Link]("ilk sayi : "+[Link](),25,80);
[Link]("ikinci sayi : "+[Link](),25,95);

[Link]("iki sayinin toplami : "+[Link]([Link](k1,k2)),25,110);


[Link]("iki sayinin farki : "+[Link]([Link](k1,k2)),25,125);
[Link]("iki sayinin carpimi : "+[Link]([Link](k1,k2)),25,140 );
[Link]("iki sayinin bolumu : "+[Link]([Link](k1,k2)),25,155 );
}
}
import [Link]; // java applet sinifini cagir
import [Link].*; // java pencere kullanma sinifini cagir
import [Link].*; // java pencereyi dinleme sinifini cagir
import kompleks;

public class H8A1 extends Applet implements ActionListener


{
//
//=====================================================
// sinif degiskenleri
// bu degiskenler tum s�n�fa aittir
Label kutubasligi1; //Label sinifi degiskeni (nesnesi) kutubasligi1
TextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1
Label kutubasligi2; //Label sinifi degiskeni (nesnesi) kutubasligi2
TextField kutugirdisi2; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
TextField kutugirdisi3; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
TextField kutugirdisi4; // Textfield sinifi degiskeni (nesnesi) kutugirdisi2
kompleks k1; // kompleks degisken k1
kompleks k2; // kompleks degisken k2
//=====================================================
// pencereyi baslatma metotu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// pencere ilk basladiginda
// degiskenler buradaki degerleri alirlar
public void init()
{
k1=new kompleks();
k2=new kompleks();
kutubasligi1=new Label("Birinci kompleks sayiyi giriniz : ");
add(kutubasligi1);
kutugirdisi1=new TextField(5);
[Link](this);
add(kutugirdisi1);
kutugirdisi2=new TextField(5);
[Link](this);
add(kutugirdisi2);
kutubasligi2=new Label("Ikinci kompleks sayiyi giriniz : ");
add(kutubasligi2);
kutugirdisi3=new TextField(5);
[Link](this);
add(kutugirdisi3);
kutugirdisi4=new TextField(5);
[Link](this);
add(kutugirdisi4);
}
//=====================================================
// girdi alanindaki olan olaylari dinleme metotu
// Her yeni rakam girildiginde bu metot cagirilir
public void actionPerformed(ActionEvent e)
{
Double sayi1=new Double([Link]() );
Double sayi2=new Double([Link]() );
Double sayi3=new Double([Link]() );
Double sayi4=new Double([Link]() );
[Link]([Link](),[Link]());
[Link]([Link](),[Link]());
repaint();//pencereyi yeniden paint metotuna gore ciz
}
//=====================================================
// paint (boya=pencereye ciz metotu)
public void paint(Graphics g)
{
[Link]("ilk sayi : "+[Link](),25,80);
[Link]("ikinci sayi : "+[Link](),25,95);

[Link]("iki sayinin toplami : "+[Link]([Link](k1,k2)),25,110);


[Link]("iki sayinin farki : "+[Link]([Link](k1,k2)),25,125);
[Link]("iki sayinin carpimi : "+[Link]([Link](k1,k2)),25,140 );
[Link]("iki sayinin bolumu : "+[Link]([Link](k1,k2)),25,155 );
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.12 Kompleks sýnýfý testi [Link] applet çýktýsý

Program 3.23 : kompleks sýnýfýný test eden java swing applet programý
kompleksTesti_2000.java

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import kompleks;

public class kompleksTesti_2000 extends JApplet implements ActionListener

//

//=====================================================

// sinif degiskenleri

// bu degiskenler tum sýnýfa aittir

JLabel kutubasligi1; //JLabel sinifi degiskeni (nesnesi) kutubasligi1

JTextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1

JLabel kutubasligi2; //JLabel sinifi degiskeni (nesnesi) kutubasligi2

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JTextField kutugirdisi2; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi3; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi4; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextArea cikti; // JTextArea sýnýfý deðiºkeni (nesnesi) cikti

kompleks k1; // kompleks degisken k1

kompleks k2; // kompleks degisken k2

//=====================================================

// pencereyi baslatma metodu

// pencere ilk basladiginda

// degiskenler buradaki degerleri alirlar

public void init()

k1=new kompleks(1,2);

k2=new kompleks(2,4);

Container c=getContentPane();

[Link](new FlowLayout());

kutubasligi1=new JLabel("Birinci kompleks sayýyý giriniz : ");

[Link](kutubasligi1);

kutugirdisi1=new JTextField(5);

[Link](this);

[Link](kutugirdisi1);

kutugirdisi2=new JTextField(5);

[Link](this);

[Link](kutugirdisi2);

kutubasligi2=new JLabel("Ýkinci kompleks sayýyý giriniz : ");

[Link](kutubasligi2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutugirdisi3=new JTextField(5);

[Link](this);

[Link](kutugirdisi3);

kutugirdisi4=new JTextField(5);

[Link](this);

[Link](kutugirdisi4);

cikti=new JTextArea( toString());

[Link]([Link]());

[Link](cikti);

public String toString()

String s="";

s+="ilk sayi : "+[Link]()+"\n";

s+="ikinci sayi : "+[Link]()+"\n";

s+="iki sayinin toplami : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin farki : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin carpimi : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin bolumu : "+[Link]([Link](k1,k2))+"\n";

return s;

//=====================================================

// girdi alanindaki olan olaylari dinleme metodu

// Her yeni rakam girildiginde bu metod cagirilir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e)

Double sayi1,sayi2,sayi3,sayi4;

sayi1=new Double([Link]() );

sayi2=new Double([Link]() );

sayi3=new Double([Link]() );

sayi4=new Double([Link]() );

showStatus("Hesaplanýyor....");

[Link]([Link](),[Link]());

[Link]([Link](),[Link]());

showStatus("Hesaplandý");

[Link](toString());

repaint();//pencereyi yeniden çiz

//=====================================================

[Link]

ªekil 3.13 Kompleks sýnýfý testi kompleksTesti_2000.html JApplet çýktýsý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 3.24 : kompleks sýnýfýný test eden kompleksTestiSWF_2000.java JFrame
programý

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import kompleks;

import BasicWindowMonitor;

public class kompleksTestiSWF_2000 extends JFrame implements ActionListener

//

//=====================================================

// sinif degiskenleri

// bu degiskenler tum sýnýfa aittir

JLabel kutubasligi1; //JLabel sinifi degiskeni (nesnesi) kutubasligi1

JTextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1

JLabel kutubasligi2; //JLabel sinifi degiskeni (nesnesi) kutubasligi2

JTextField kutugirdisi2; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi3; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextField kutugirdisi4; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextArea cikti; // JTextArea sýnýfý deðiºkeni (nesnesi) cikti

kompleks k1; // kompleks degisken k1

kompleks k2; // kompleks degisken k2

//=====================================================

// pencereyi baslatma metodu

// pencere ilk basladiginda

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// degiskenler buradaki degerleri alirlar

public kompleksTestiSWF_2000()

super("kompleks sayý Testi kompleksTestiSWF_2000, frame format");

k1=new kompleks(1,2);

k2=new kompleks(2,4);

Container c=getContentPane();

[Link](new FlowLayout());

kutubasligi1=new JLabel("Birinci kompleks sayiyi giriniz : ");

[Link](kutubasligi1);

kutugirdisi1=new JTextField(5);

[Link](this);

[Link](kutugirdisi1);

kutugirdisi2=new JTextField(5);

[Link](this);

[Link](kutugirdisi2);

kutubasligi2=new JLabel("Ikinci kompleks sayiyi giriniz : ");

[Link](kutubasligi2);

kutugirdisi3=new JTextField(5);

[Link](this);

[Link](kutugirdisi3);

kutugirdisi4=new JTextField(5);

[Link](this);

[Link](kutugirdisi4);

cikti=new JTextArea(toString());

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](cikti);

//=====================================================

public String toString()

String s="";

s+="ilk sayi : "+[Link]()+"\n";

s+="ikinci sayi : "+[Link]()+"\n";

s+="iki sayinin toplami : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin farki : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin carpimi : "+[Link]([Link](k1,k2))+"\n";

s+="iki sayinin bolumu : "+[Link]([Link](k1,k2))+"\n";

return s;

// girdi alanindaki olan olaylari dinleme metodu

// Her yeni rakam girildiginde bu metod cagirilir

public void actionPerformed(ActionEvent e)

Double sayi1,sayi2,sayi3,sayi4;

sayi1=new Double([Link]() );

sayi2=new Double([Link]() );

sayi3=new Double([Link]() );

sayi4=new Double([Link]() );

[Link]([Link](),[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link](),[Link]());

[Link](toString());

//=====================================================

public static void main(String[] args)

kompleksTestiSWF_2000 pencere= new kompleksTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

[Link]

ªekil 3.14 Kompleks sýnýfý testi kompleksTestiSWF_2000 JFrame konsol çýktýsý

13. Kalýtým yoluyla dortislemhesapmakinasý sýnýfýndan türetilen bilimselhesapmakinasý1 sýnýfý


verilmiºtir. Bu sýnýfý inceleyiniz.

Program 3.25 : [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import dortislemhesapmakinasi;

public class bilimselhesapmakinasi1 extends dortislemhesapmakinasi

//bu metot miras (inheritance) yoluyla aktarma yapmaktadýr.

// kurucu metot dortislemhesapmakinesi

double arasonuc;

double arasonuc2;

public bilimselhesapmakinasi1(double y)

//constructor

super(y);

arasonuc=0;

arasonuc2=0;

public bilimselhesapmakinasi1()

super();

arasonuc=0;

arasonuc2=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double topla(double x)

if(arasonuc2==0) {sonuc+=x;}

else {sonuc+=[Link](arasonuc2,x);arasonuc2=0;}

return sonuc;

public double cikar(double x)

if(arasonuc2==0) {sonuc-=x;}

else {sonuc-=[Link](arasonuc2,x);arasonuc2=0;}

return sonuc;

public double carp(double x)

if(arasonuc2==0) {sonuc*=x;}

else {sonuc*=[Link](arasonuc2,x);arasonuc2=0;}

return sonuc;

public double bol(double x)

if(arasonuc2==0) {sonuc/=x;}

else {sonuc/=[Link](arasonuc2,x);arasonuc2=0;}

return sonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public void gir(double x)

if(arasonuc2==0) {sonuc=x;}

else {sonuc=[Link](arasonuc2,x);arasonuc2=0;}

public double oku()

arasonuc=sonuc;

return arasonuc;

public double pow(double x)

// sonucun x inci kuvveti

arasonuc=x;

arasonuc2=x;

return arasonuc;

public double kok(double x)

arasonuc=[Link](x);

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double kare(double x)

arasonuc=x*x;

return arasonuc;

public double bir_bolu_x(double x)

arasonuc=1.0/x;

return arasonuc;

public double cos(double x)

arasonuc=[Link](x);

return arasonuc;

public double sin(double x)

arasonuc=[Link](x);

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double tan(double x)

arasonuc=[Link](x);

return arasonuc;

public double RtoD(double x)

arasonuc=180.0/[Link]*x;

return arasonuc;

public double DtoR(double x)

arasonuc=[Link]/180.0*x;

return arasonuc;

public double acos(double x)

arasonuc=[Link](x);

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double asin(double x)

arasonuc=[Link](x);

return arasonuc;

public double atan(double x)

arasonuc=[Link](x);

return arasonuc;

public double exp(double x)

arasonuc=[Link](x);

return arasonuc;

public double ln(double x)

arasonuc=[Link](x);

return arasonuc;

public double pi()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
arasonuc=[Link];

return arasonuc;

public double log10(double x)

arasonuc=[Link](x)/[Link](10.0);

return arasonuc;

public double isaretdegistir(double x)

arasonuc=-x;

return arasonuc;

public String aratoString()

return ""+arasonuc;

Object kullanarak dortislemhesapmakinasý sýnýfýndan türetilen bilimselhesapmakinasý2 sýnýfý


verilmiºtir. Bu sýnýfý inceleyiniz. Alýºtýrma 10’da verilen bilimselhesapmakinasý1 programýndan
farklarýný açýklayýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 3.26 : [Link] programý

import dortislemhesapmakinasi;

public class bilimselhesapmakinasi2

//bu metot nesne (object) yoluyla aktarma yapmaktad�r.

// kurucu metot dortislemhesapmakinesi

dortislemhesapmakinasi DH;

double arasonuc;

double arasonuc2;

public bilimselhesapmakinasi2(double y)

//constructor

DH=new dortislemhesapmakinasi(y);

arasonuc=0;

arasonuc2=0;

public bilimselhesapmakinasi2()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
DH=new dortislemhesapmakinasi();

arasonuc=0;

arasonuc2=0;

public double topla(double x)

if(arasonuc2==0) {[Link]([Link]()+x);}

else {[Link]([Link]()+[Link](arasonuc2,x));arasonuc2=0;}

return [Link]();

public double cikar(double x)

if(arasonuc2==0) {[Link]([Link]()-x);}

else {[Link]([Link]()-[Link](arasonuc2,x));arasonuc2=0;}

return [Link]();

public double carp(double x)

if(arasonuc2==0) {[Link]([Link]()*x);}

else {[Link]([Link]()*[Link](arasonuc2,x));arasonuc2=0;}

return [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double bol(double x)

if(arasonuc2==0) {[Link]([Link]()/x);}

else {[Link]([Link]()/[Link](arasonuc2,x));arasonuc2=0;}

return [Link]();

public double gir(double x)

if(arasonuc2==0) {[Link](x);}

else {[Link]([Link](arasonuc2,x));arasonuc2=0;}

return [Link]();

public double oku()

arasonuc=[Link]();

return arasonuc;

public double pow(double x)

// sonucun x inci kuvveti

arasonuc=x;

arasonuc2=x;

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double kok(double x)

arasonuc=[Link](x);

return arasonuc;

public double kare(double x)

arasonuc=x*x;

return arasonuc;

public double bir_bolu_x(double x)

arasonuc=1.0/x;

return arasonuc;

public double cos(double x)

arasonuc=[Link](x);

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double sin(double x)

{birde acele

arasonuc=[Link](x);

return arasonuc;

public double tan(double x)

arasonuc=[Link](x);

return arasonuc;

public double RtoD(double x)

arasonuc=180.0/[Link]*x;

return arasonuc;

public double DtoR(double x)

arasonuc=[Link]/180.0*x;

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double acos(double x)

arasonuc=[Link](x);

return arasonuc;

public double asin(double x)

arasonuc=[Link](x);

return arasonuc;

public double atan(double x)

arasonuc=[Link](x);

return arasonuc;

public double exp(double x)

arasonuc=[Link](x);

return arasonuc;

public double ln(double x)

arasonuc=[Link](x);

return arasonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double pi()

arasonuc=[Link];

return arasonuc;

public double log10(double x)

arasonuc=[Link](x)/[Link](10.0);

return arasonuc;

public double isaretdegistir(double x)

arasonuc=-x;

return arasonuc;

public String aratoString()

return ""+arasonuc;

13. bilimsel hesapmakinasý1 sýnýfýný kullanan hesap makinasý simulasyon programý


[Link] tanýmlanmýºtýr. Bu programý inceleyiniz. Ayný iºlemi bilimselhesapmakinasi2

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sýnýfýný kullanarak yapan [Link] programýný yazýnýz. [Link] ve
[Link] programlarýnýn temel farklarýný (miras-inheritance ve nesne-
object yoluyla aktarma-composition) izah ediniz

Program 3.27 : [Link] programý

import [Link]; // java applet sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import bilimselhesapmakinasi1;

public class H4O1 extends Applet implements ActionListener

// bilimsel hesap makinasý

TextField sonucgirdisi;

TextField kutugirdisi;

Button Gir,Arti,Eksi,Carpi,Bolu,M,MR,MArti,MEksi,Isaret,C;

Button Pow,Cos,Sin,Tan,RtoD,DtoR,Acos,Asin,Atan,Exp,Kok,Kare,birBoluX;

Button Ln,Log10,Oku,PI;

//Button sinifi degiskenleri

double sayi;

bilimselhesapmakinasi1 D;

// pencereyi baslatma metodu

public void init()

D=new bilimselhesapmakinasi1();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sonucgirdisi=new TextField(25);

[Link](false);

add(sonucgirdisi);

kutugirdisi=new TextField(25);

add(kutugirdisi);//kutuyu pencereye yerlestir

Gir=new Button(" Gir ");

Oku=new Button(" Oku ");

Arti=new Button(" + ");

Eksi=new Button(" - ");

Carpi=new Button(" * ");

Bolu=new Button(" / ");

M=new Button("M");

MR=new Button("MR");

MArti=new Button("M+");

MEksi=new Button("M-");

Isaret=new Button("+/-");

C=new Button("C");

Pow=new Button("x^y");

Cos=new Button("cos");

Sin=new Button("sin");

Tan=new Button("tan");

RtoD=new Button("R->D");

DtoR=new Button("D->R");

Acos=new Button("acos");

Asin=new Button("asin");

Atan=new Button("atan");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Exp=new Button("exp");

Ln=new Button("ln");

Log10=new Button("log10");

Kok=new Button("x^0.5");

Kare=new Button("x^2");

birBoluX = new Button("1/x");

PI=new Button("pi");

add(Gir);

add(Oku);

add(Arti);

add(Eksi);

add(Carpi);

add(Bolu);

add(M);

add(MR);

add(MArti);

add(MEksi);

add(Isaret);

add(C);

add(Pow);

add(Cos);

add(Sin);

add(Tan);

add(DtoR);

add(Acos);

add(Asin);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
add(Atan);

add(RtoD);

add(birBoluX);

add(Exp);

add(Ln);

add(Log10);

add(Kok);

add(Kare);

add(PI);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

String ss=[Link]();

if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

if([Link]()==Oku) [Link]();

if([Link]()==PI) [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link](sayi);

else if([Link]()==C) D.C();

else if([Link]()==Pow) [Link](sayi);

else if([Link]()==Cos) [Link](sayi);

else if([Link]()==Sin) [Link](sayi);

else if([Link]()==Tan) [Link](sayi);

else if([Link]()==RtoD) [Link](sayi);

else if([Link]()==DtoR) [Link](sayi);

else if([Link]()==Acos) [Link](sayi);

else if([Link]()==Asin) [Link](sayi);

else if([Link]()==Atan) [Link](sayi);

else if([Link]()==Exp) [Link](sayi);

else if([Link]()==Ln) [Link](sayi);

else if([Link]()==Log10) D.log10(sayi);

else if([Link]()==Kok) [Link](sayi);

else if([Link]()==Kare) [Link](sayi);

else if([Link]()==birBoluX) D.bir_bolu_x(sayi);

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link]()==MR || [Link]()==M ||

[Link]()==MArti||[Link]()==MEksi)

[Link]([Link]());

else if([Link]()==Cos ||

[Link]()==Sin||[Link]()==Tan||[Link]()==RtoD ||

[Link]()==DtoR || [Link]()==Acos || [Link]()==Ln ||

[Link]()==Asin||[Link]()==Atan||[Link]()==Exp ||

[Link]()==Log10||[Link]()==Isaret ||[Link]()==Kok ||

[Link]()==Kare || [Link]()==birBoluX || [Link]()==Oku ||

[Link]()==PI)

[Link]([Link]());

else

[Link]("");

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 3.15 [Link] bilimsel hesap makinasý simulasyonu

Program 3.28 : [Link] programý, Bilimsel hesap makinasý, bu programda hesap


makinasý dügmeleri formatlanmýºtýr.

import [Link]; // java applet sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import bilimselhesapmakinasi1;

public class H4O1b extends Applet implements ActionListener

// bilimsel hesap makinasý

TextField sonucgirdisi;

TextField kutugirdisi;

Button Gir,Arti,Eksi,Carpi,Bolu,M,MR,Marti,MEksi,Isaret,C;

Button Pow,Cos,Sin,Tan,RtoD,DtoR,Acos,Asin,Atan,Exp,Kok,Kare,birBoluX;

Button Ln,Log10,Oku,PI;

//Button sinifi degiskenleri

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double sayi;

bilimselhesapmakinasi1 D;

// pencereyi baslatma metodu

public void init()

D=new bilimselhesapmakinasi1();

sonucgirdisi=new TextField(40);

[Link](false);

add(sonucgirdisi);

kutugirdisi=new TextField(40);

add(kutugirdisi);//kutuyu pencereye yerlestir

Gir=new Button(" Gir ");

Oku=new Button(" Oku ");

Arti=new Button(" + ");

Eksi=new Button(" - ");

Carpi=new Button(" * ");

Bolu=new Button(" / ");

M=new Button("M");

MR=new Button("MR");

Marti=new Button("M+");

Meksi=new Button("M-");

Isaret=new Button("+/-");

C=new Button("C");

Pow=new Button("x^y");

Cos=new Button("cos");

Sin=new Button("sin");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Tan=new Button("tan");

RtoD=new Button("R->D");

DtoR=new Button("D->R");

Acos=new Button("acos");

Asin=new Button("asin");

Atan=new Button("atan");

Exp=new Button("exp");

Ln=new Button("ln");

Log10=new Button("log10");

Kok=new Button("x^0.5");

Kare=new Button("x^2");

birBoluX = new Button("1/x");

PI=new Button("pi");

Panel m=new Panel();

[Link](new GridLayout(5,8));

[Link](Gir);

[Link](Oku);

[Link](Arti);

[Link](Eksi);

[Link](Carpi);

[Link](Bolu);

[Link](M);

[Link](MR);

[Link](MArti);

[Link](MEksi);

[Link](Isaret);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](C);

[Link](Pow);

[Link](Cos);

[Link](Sin);

[Link](Tan);

[Link](DtoR);

[Link](RtoD);

[Link](birBoluX);

[Link](Acos);

[Link](Asin);

[Link](Atan);

[Link](Kok);

[Link](Kare);

[Link](Exp);

[Link](Ln);

[Link](Log10);

[Link](PI);

add(m);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

String ss=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

if([Link]()==Oku) [Link]();

if([Link]()==PI) [Link]();

else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link](sayi);

else if([Link]()==C) D.C();

else if([Link]()==Pow) [Link](sayi);

else if([Link]()==Cos) [Link](sayi);

else if([Link]()==Sin) [Link](sayi);

else if([Link]()==Tan) [Link](sayi);

else if([Link]()==RtoD) [Link](sayi);

else if([Link]()==DtoR) [Link](sayi);

else if([Link]()==Acos) [Link](sayi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if([Link]()==Asin) [Link](sayi);

else if([Link]()==Atan) [Link](sayi);

else if([Link]()==Exp) [Link](sayi);

else if([Link]()==Ln) [Link](sayi);

else if([Link]()==Log10) D.log10(sayi);

else if([Link]()==Kok) [Link](sayi);

else if([Link]()==Kare) [Link](sayi);

else if([Link]()==birBoluX) D.bir_bolu_x(sayi);

[Link]([Link]());

if([Link]()==MR || [Link]()==M ||

[Link]()==MArti||[Link]()==MEksi)

[Link]([Link]());

else if([Link]()==Cos ||

[Link]()==Sin||[Link]()==Tan||[Link]()==RtoD ||

[Link]()==DtoR || [Link]()==Acos || [Link]()==Ln ||

[Link]()==Asin||[Link]()==Atan||[Link]()==Exp ||

[Link]()==Log10||[Link]()==Isaret ||[Link]()==Kok ||

[Link]()==Kare || [Link]()==birBoluX || [Link]()==Oku ||

[Link]()==PI)

[Link]([Link]());

else

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("");

[Link]

ªekil 3.16 [Link] bilimsel hesap makinasý simulasyonu. Bu program üsttekinin


aynýdýr,yalnýz düðmeleri formatlý bir ºekilde yerleºtirilmiºtir. Bu format (layout) iºlemini
daha sonraki bölümlerde detaylý olarak inceleyeceðiz.

Program 3.29 : [Link] programý, Bilimsel hesap makinasý, bu programda


hesap makinasý dügmeleri formatlanmýºtýr ve temel olarak swing applet sýnýfý
kullanýlmýºtýr.

import [Link].*; // java swing sinifini cagir

import [Link].*;

import [Link].*;

import bilimselhesapmakinasi1;

public class H4O1bSW extends JApplet implements ActionListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// bilimsel hesap makinasi

JTextField sonucgirdisi;

JTextField kutugirdisi;

JButton Gir,Arti,Eksi,Carpi,Bolu,M,MR,MArti,MEksi,Isaret,C;

JButton Pow,Cos,Sin,Tan,RtoD,DtoR,Acos,Asin,Atan,Exp,Kok,Kare,birBoluX;

JButton Ln,Log10,Oku,PI;

//Button sinifi degiskenleri

double sayi;

bilimselhesapmakinasi1 D;

// pencereyi baslatma metodu

public void init()

D=new bilimselhesapmakinasi1();

Container c=getContentPane();

[Link](new BorderLayout());

sonucgirdisi=new JTextField();

[Link](false);

[Link]([Link]);

[Link](new Font("SansSerif",[Link],14));

JPanel e=new JPanel();

[Link](new GridLayout(2,1));

kutugirdisi=new JTextField(40);

[Link](new Font("SansSerif",[Link],14));

[Link](sonucgirdisi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kutugirdisi);

[Link](e,[Link]);

Gir=new JButton(" Gir ");

Oku=new JButton(" Oku ");

Arti=new JButton(" + ");

Eksi=new JButton(" - ");

Carpi=new JButton(" * ");

Bolu=new JButton(" / ");

M=new JButton("M");

MR=new JButton("MR");

MArti=new JButton("M+");

MEksi=new JButton("M-");

Isaret=new JButton("+/-");

C=new JButton("C");

Pow=new JButton("x^y");

Cos=new JButton("cos");

Sin=new JButton("sin");

Tan=new JButton("tan");

RtoD=new JButton("R->D");

DtoR=new JButton("D->R");

Acos=new JButton("acos");

Asin=new JButton("asin");

Atan=new JButton("atan");

Exp=new JButton("exp");

Ln=new JButton("ln");

Log10=new JButton("log10");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Kok=new JButton("x^0.5");

Kare=new JButton("x^2");

birBoluX = new JButton("1/x");

PI=new JButton("pi");

JPanel m=new JPanel();

[Link](new GridLayout(5,8));

[Link](Gir);

[Link](Oku);

[Link](Arti);

[Link](Eksi);

[Link](Carpi);

[Link](Bolu);

[Link](M);

[Link](MR);

[Link](MArti);

[Link](MEksi);

[Link](Isaret);

[Link](C);

[Link](Pow);

[Link](Cos);

[Link](Sin);

[Link](Tan);

[Link](DtoR);

[Link](RtoD);

[Link](birBoluX);

[Link](Acos);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](Asin);

[Link](Atan);

[Link](Kok);

[Link](Kare);

[Link](Exp);

[Link](Ln);

[Link](Log10);

[Link](PI);

[Link](m,[Link]);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

String ss=[Link]();

if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

if([Link]()==Oku) [Link]();

if([Link]()==PI) [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link](sayi);

else if([Link]()==C) D.C();

else if([Link]()==Pow) [Link](sayi);

else if([Link]()==Cos) [Link](sayi);

else if([Link]()==Sin) [Link](sayi);

else if([Link]()==Tan) [Link](sayi);

else if([Link]()==RtoD) [Link](sayi);

else if([Link]()==DtoR) [Link](sayi);

else if([Link]()==Acos) [Link](sayi);

else if([Link]()==Asin) [Link](sayi);

else if([Link]()==Atan) [Link](sayi);

else if([Link]()==Exp) [Link](sayi);

else if([Link]()==Ln) [Link](sayi);

else if([Link]()==Log10) D.log10(sayi);

else if([Link]()==Kok) [Link](sayi);

else if([Link]()==Kare) [Link](sayi);

else if([Link]()==birBoluX) D.bir_bolu_x(sayi);

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link]()==MR || [Link]()==M ||

[Link]()==MArti||[Link]()==MEksi)

[Link]([Link]());

else if([Link]()==Cos ||

[Link]()==Sin||[Link]()==Tan||[Link]()==RtoD ||

[Link]()==DtoR || [Link]()==Acos || [Link]()==Ln ||

[Link]()==Asin||[Link]()==Atan||[Link]()==Exp ||

[Link]()==Log10||[Link]()==Isaret ||[Link]()==Kok ||

[Link]()==Kare || [Link]()==birBoluX || [Link]()==Oku ||

[Link]()==PI)

[Link]([Link]());

else

[Link]("");

public static void main(String s[]) {

JFrame f = new JFrame("Hesap Makinasý Java Programlama dili");

[Link](new WindowAdapter() {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void windowClosing(WindowEvent e) {[Link](0);}

});

JApplet applet = new H4O1bSW();

[Link]().add("Center", applet);

[Link]();

[Link]();

[Link](new Dimension(450,220));

[Link]();

[Link]

ªekil 3.17 H4O1bSW bilimsel hesap makinasý simulasyonu. Bu program üsttekinin


aynýdýr,yalnýz Applet yerine Swing Applet Japplet kullanýlmýºtýr.

14. H4O2

[Link] ve [Link] programlarýný inceleyiniz. Bu programlardan yararlanarak


[Link] programýný (vektor sýnýfýný) oluºturunuz. Testprogramý [Link]’da ayný
baºlangýç noktalý iki vektörü toplatýnýz.
Not : vektorler doðrular gibi iki nokta ve bir fiziksel boyut (uzay veya baºka bir fiziksel boyut
olabilir) ile tanýmlanýrlar. bir yonleri mevcuttur (daima P0 dan P1 e doðru
Program 3.30 : [Link] program

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import vektor3D;

import Text;

class H4O2

public static void main(String arg[]) throws IOException

double xi,xj,xk;

double Fi,Fj,Fk;

nokta3D n1;

vektor3D v1;

vektor3D v2;

Text cin=new Text();

[Link]("vektor etki noktasini gir : ");

xi=[Link]();

xj=[Link]();

xk=[Link]();

n1=new nokta3D(xi,xj,xk);

[Link]("vektor de§erini gir : ");

Fi=[Link]();

Fj=[Link]();

Fk=[Link]();

v1=new vektor3D(n1,Fi,Fj,Fk);

[Link]("vektor de§erini gir : ");

Fi=[Link]();

Fj=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Fk=[Link]();

v2=new vektor3D(xi,xj,xk,Fi,Fj,Fk);

[Link](v2);

[Link]("toplam = \n"+[Link]());

[Link]("toplamin mutlak degeri . "+v1.F());

vektor etki noktasini gir : 1 1 1


vektor degerini gir : 1 1 1
vektor degerini gir : 2 2 2
toplam =
baslangic noktasi : 1.0 i + 1.0 j + 1.0 k
Vektor : 3.0 i + 3.0 j + 3.0 k
toplamin mutlak degeri : 5.196152422706632

Program 3.31 : [Link] programý

public class nokta3D

protected double xi,xj,xk;

public nokta3D()

xi=0;

xj=0;

xk=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public nokta3D(double yi,double yj,double yk)

xi=yi;

xj=yj;

xk=yk;

public nokta3D(nokta3D y)

xi=[Link];

xj=[Link];

xk=[Link];

public void xiGir(double yi)

xi=yi;

public void xjGir(double yj)

xj=yj;

public void xzGir(double yk)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

xk=yk;

public void noktaGir(double yi,double yj,double yk)

xi=yi;

xj=yj;

xk=yk;

public void noktaGir(nokta3D y)

xi=[Link];

xj=[Link];

xk=[Link];

public double xiOku()

return xi;

public double xjOku()

return xj;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double xkOku()

return xk;

public void topla(nokta3D y)

xi+=[Link];

xj+=[Link];

xk+=[Link];

public static nokta3D topla(nokta3D y1,nokta3D y2)

nokta3D x=new nokta3D(y1);

[Link](y2);

return x;

public void fark(nokta3D y)

xi-=[Link];

xj-=[Link];

xk-=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static nokta3D fark(nokta3D y1,nokta3D y2)

nokta3D x=new nokta3D(y1);

[Link](y2);

return x;

public nokta3D noktaOku()

return this;

public double R()

//koordinat merkezi ile nokta aras�ndali mesafe

return [Link](xi*xi+xj*xj+xk*xk);

public double cosai()

//noktan�n i ekseniyle yapt�§� a‡�n�n cosin�s�

return xi/R();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double cosaj()

//noktan�n j ekseniyle yapt�§� a‡�n�n cosin�s�

return xj/R();

public double cosak()

//noktan�n k ekseniyle yapt�§� a‡�n�n cosin�s�

return xk/R();

public boolean esittir(nokta3D v)

boolean b=((xi==[Link])&&(xj==[Link])&&(xk==[Link]));

return b;

public boolean buyuktur(nokta3D v)

return (this.R()>v.R());

public boolean kucuktur(nokta3D v)

return (this.R()<v.R());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public String toString()

String s="";

if(xi!=0)

s+=xi+" i ";

if(xj>0 )

s+="+ "+xj+" j";

else if(xj<0)

s+="- "+[Link](xj)+" j";

if(xk>0 )

s+="+ "+xk+" k";

else if(xk<0)

s+="- "+[Link](xk)+" k";

return s;

Program 3.32 : [Link] programý

import nokta3D;

public class dogru3D

public nokta3D P0,P1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double xi,xj,xk;

//***** kurucu metotlar dogru3D

public dogru3D()

P0=new nokta3D();

P1=new nokta3D();

xi=0;

xj=0;

xk=0;

public dogru3D(double yi0,double yj0,double yk0,double yi1,double yj1,double yk1)

P0=new nokta3D(yi0,yj0,yk0);

P1=new nokta3D(yi1,yj1,yk1);

nokta3D P=new nokta3D(P0);

[Link](P1);

xi=[Link]();

xj=[Link]();

xk=[Link]();

public dogru3D(nokta3D y0,nokta3D y1)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
P0=new nokta3D(y0);

P1=new nokta3D(y1);

nokta3D P=new nokta3D(P0);

[Link](P1);

xi=[Link]();

xj=[Link]();

xk=[Link]();

//***** s�n�f de§iŸken giriŸi ..Gir (veya set..) metotlar�

public void P0Gir(double yi,double yj,double yk)

[Link](yi,yj,yk);

public void P0Gir(nokta3D y)

[Link](y);

public void P1Gir(double yi,double yj,double yk)

[Link](yi,yj,yk);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void P1Gir(nokta3D y)

[Link](y);

//***** s�n�f de§iŸken ‡�k�Ÿ� ..Oku veya get.. metotlar�

public double xiOku(int i)

if(i==0) return [Link]();

else return [Link]();

public double xjOku(int i)

if(i==0) return [Link]();

else return [Link]();

public double xkOku(int i)

if(i==0) return [Link]();

else return [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double xiOku()

return xi;

public double xjOku()

return xj;

public double xkOku()

return xk;

//****sýnýf islem metotlarý

public double R()

//iki nokta arasýndaki mesafe

return [Link](xi*xi+xj*xj+xk*xk);;

public double cosai()

//noktan�n i ekseniyle yapt�§� a‡�n�n cosin�s�

return xi/R();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double cosaj()

//noktanýn j ekseniyle yaptýðý açýnýn kosinüsü

return xj/R();

public double cosak()

//noktan�n k ekseniyle yaptýðý açýnýn kosinüsü

return xk/R();

//*****sýnýf mantýksal karºýlaºtýrma metodlarý

public boolean esittir(dogru3D v)

boolean b=((xi==[Link])&&(xj==[Link])&&(xk==[Link]));

return b;

public boolean buyuktur(dogru3D v)

return (this.R()>v.R());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean kucuktur(dogru3D v)

return (this.R()<v.R());

//****** sýnýf string çýktý metotu toString

public String toString()

String s="P0 = "+[Link]()+"\n";

s=s+"P1 = "+[Link]()+"\n";

s=s+""+xi+" i + "+xj+" j + "+xk+" k";

return s;

Program 3.33 : [Link] programý

import dogru3D;

import nokta3D;

class vektor3D extends nokta3D

protected double Fi,Fj,Fk;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public vektor3D()

super();

Fi=0;

Fj=0;

Fk=0;

public vektor3D(double yi0,double yj0,double yk0,

double Fi0,double Fj0,double Fk0)

// (yi0,yj0,yk0) noktasýndan baslayan vektor

super(yi0,yj0,yk0);

Fi=Fi0;

Fj=Fj0;

Fk=Fk0;

public vektor3D(double yi0,double yj0,double yk0,double yi1,double yj1,double yk1,double F)

//iki dogrudan gecen vektorun tanýmý

dogru3D D=new dogru3D(yi0,yj0,yk0,yi1,yj1,yk1);

Fi=F*[Link]();

Fj=F*[Link]();

Fk=F*[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public vektor3D(double Fi0,double Fj0,double Fk0)

//0,0,0 noktas�ndan baslayan vektor tan�m�

super();

Fi=Fi0;

Fj=Fj0;

Fk=Fk0;

public vektor3D(vektor3D y)

xi=[Link];

xj=[Link];

xk=[Link];

Fi=[Link];

Fj=[Link];

Fk=[Link];

public vektor3D(nokta3D y0,double Fi0,double Fj0,double Fk0)

// y0 noktas�ndan baslayan vektor

super(y0);

Fi=Fi0;

Fj=Fj0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Fk=Fk0;

public vektor3D(nokta3D y0,nokta3D y1,double F)

//iki noktadan gecen vektorun tan�m�

dogru3D D=new dogru3D(y0,y1);

Fi=F*[Link]();

Fj=F*[Link]();

Fk=F*[Link]();

public void FiGir(double yi)

xi=yi;

public void FjGir(double yj)

xj=yj;

public void FzGir(double yk)

xk=yk;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void FGir(double Fi0,double Fj0,double Fk0)

Fi=Fi0;

Fj=Fj0;

Fk=Fk0;

public void vektorGir(vektor3D y)

xi=[Link];

xj=[Link];

xk=[Link];

Fi=[Link];

Fj=[Link];

Fk=[Link];

public double FiOku()

return Fi;

public double FjOku(){

return Fj;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double FkOku()

return Fk;

public nokta3D vektorOku()

return this;

public double F()

//vektorun absolute büyüklüðü

return [Link](Fi*Fi+Fj*Fj+Fk*Fk);

//not R() metodu, vektorun merkezden uzaklýðý nokta3D de tanýmlanmýºtýr.

// tekrar tanýmý gerekmez.

/*

public double R()

//koordinat merkezi ile nokta aras�ndali mesafe

return [Link](xi*xi+xj*xj+xk*xk);

*/

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double cosFi()

//vektorun i ekseniyle yaptýðý açýnýn kosinüsü

return Fi/F();

public double cosFj()

//vektorun j ekseniyle yaptýðý açýnýn kosinüsü

return Fj/F();

public double cosFk()

//vektorun k ekseniyle yaptýðý açýnýn kosinüsü

return Fk/F();

public void topla(vektor3D v)

if(noktaEsittir(v))

Fi+=[Link];

Fj+=[Link];

Fk+=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static vektor3D topla(vektor3D v1,vektor3D v2)

vektor3D x;

x=new vektor3D(v1);

[Link](v2);

return x;

public void cikar(vektor3D v)

if(noktaEsittir(v))

Fi-=[Link];

Fj-=[Link];

Fk-=[Link];

public static vektor3D cikar(vektor3D v1,vektor3D v2)

vektor3D x=new vektor3D(v1);

[Link](v2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return x;

public void vektorelcarp(vektor3D v)

if(noktaEsittir(v))

double Fi1=Fi;

double Fj1=Fj;

double Fk1=Fk;

Fi=(Fj1*[Link]-Fk1*[Link]);

Fj=-(Fi1*[Link]-Fk1*[Link]);

Fk=(Fi1*[Link]-Fj1*[Link]);

public double scalarcarp(vektor3D v)

double s=0.0;

if(noktaEsittir(v))

s=Fi*[Link]+Fj*[Link]+Fk*[Link];

return s;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean esittir(vektor3D v)

boolean b=((xi==[Link])&&(xj==[Link])&&(xk==[Link]));

b=b && ((Fi==[Link])&&(Fj==[Link])&&(Fk==[Link]));

return b;

public boolean noktaEsittir(vektor3D v)

boolean b=((xi==[Link])&&(xj==[Link])&&(xk==[Link]));

return b;

public boolean buyuktur(vektor3D v)

return (this.F()>v.F());

public boolean kucuktur(vektor3D v)

return (this.F()<v.F());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String toString()

String s="baslangic noktas� : "+xi+" i + "+xj+" j + "+xk+" k\n";

s=s+"Vektor : "+Fi+" i + "+Fj+" j + "+Fk+" k\n";

return s;

14. H4OD3_2000

[Link] ve [Link] programlarýný inceleyiniz. Bu programlardan yararlanarak


[Link] programýný (vektor sýnýfýný) oluºturunuz. Java swing JFrame Test programý
H4OD3_2000.java’da ayný baºlangýç noktalý iki vektörü toplatýnýz.
Not : vektorler doðrular gibi iki nokta ve bir fiziksel boyut (uzay veya baºka bir fiziksel boyut
olabilir) ile tanýmlanýrlar. bir yonleri mevcuttur (daima P0 dan P1 e doðru).
Program 3.34 : vektor3D sýnýfýný test eden swing JFrame, H4OD3_2000 .java programý

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import vektor3D;

import vektorpanel;

import BasicWindowMonitor;

public class H4OD3_2000 extends JFrame implements ActionListener

//

//=====================================================

// sinif degiskenleri

// bu degiskenler tum sýnýfa aittir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JTextArea cikti; // JTextArea sýnýfý deðiºkeni (nesnesi) cikti

vektor3D k[]=new vektor3D[2]; // vector3D boyutlu deðisken

vektorpanel p[]=new vektorpanel[2]; //vektorPanel deðiºken p1

//=====================================================

// pencereyi baslatma metodu

// pencere ilk basladiginda

// degiskenler buradaki degerleri alirlar

public H4OD3_2000()

super("vektor testi H4OD3_2000, frame format");

k[0]=new vektor3D(1.0,1.0,1.0,2.0,2.0,2.0);

k[1]=new vektor3D(1.0,1.0,1.0,3.0,3.0,3.0);

Container c=getContentPane();

[Link](new FlowLayout());

JPanel p1=new JPanel();

[Link](new GridLayout(2,1));

p[0]=new vektorpanel("V1 xi,xj,xk:","V1 Fi,Fj,Fk:");

p[1]=new vektorpanel("V2 xi,xj,xk:","V2 Fi,Fj,Fk:");

[Link](p[0],[Link]);

[Link](p[1],[Link]);

[Link](p1);

cikti=new JTextArea(toString());

[Link]([Link]());

[Link](cikti);

p[1].F[2].addActionListener(this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//=====================================================

public String toString()

String s="";

for(int i=0;i<2;i++)

s+="Vektör "+(i+1)+"\n";

s+=k[i].toString();

s+="Toplam vektör : \n";

k[0].topla(k[1]);

s+=k[0].toString();

return s;

// girdi alanindaki olan olaylari dinleme metodu

// Her yeni rakam girildiginde bu metod cagirilir

public void actionPerformed(ActionEvent e)

for(int i=0;i<2;i++)

k[i].vektorGir([Link](p[i].x[0].getText()),

[Link](p[i].x[1].getText()),

[Link](p[i].x[2].getText()),

[Link](p[i].F[0].getText()),

[Link](p[i].F[1].getText()),

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](p[i].F[2].getText()));

[Link](toString());

//=====================================================

public static void main(String[] args)

H4OD3_2000 pencere= new H4OD3_2000();

[Link](new BasicWindowMonitor());

[Link](300,200);

[Link](true);

[Link]

ªekil 3.18 vektor3D sýnýfýný test eden H4OD3_2000 java frame programý

yukarýdaki programda kullanýlan alt sýnýf [Link]

Program 3.35 : vektor3D sýnýfýný test eden swing JFrame, H4OD3_2000 .java
programýnda kullanýlan vektorpanel alt sýnýfý ([Link] programý)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

public class vektorpanel extends JPanel

public JLabel xisim;

public JTextField x[]=new JTextField[3];

public JLabel Fisim;

public JTextField F[]=new JTextField[3];

public vektorpanel()

[Link](new GridLayout(2,4));

xisim=new JLabel("xi,xj,xk");

x[0]=new JTextField(5);

x[1]=new JTextField(5);

x[2]=new JTextField(5);

Fisim=new JLabel("Fi,Fj,Fk");

F[0]=new JTextField(5);

F[1]=new JTextField(5);

F[2]=new JTextField(5);

[Link](xisim);

for(int i=0;i<3;i++)

[Link](x[i]);

[Link](Fisim);

for(int i=0;i<3;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](F[i]);

public vektorpanel(String isim1,String isim2)

[Link](new GridLayout(2,4));

xisim=new JLabel(isim1);

x[0]=new JTextField(5);

x[1]=new JTextField(5);

x[2]=new JTextField(5);

Fisim=new JLabel(isim2);

F[0]=new JTextField(5);

F[1]=new JTextField(5);

F[2]=new JTextField(5);

[Link](xisim);

for(int i=0;i<3;i++)

[Link](x[i]);

[Link](Fisim);

for(int i=0;i<3;i++)

[Link](F[i]);

public void setvectorPanel(double xi[],double Fi[])

for(int i=0;i<3;i++)

this.x[i].setText(""+xi[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<3;i++)

this.F[i].setText(""+Fi[i]);

15. H4O3

Üç noktadan bir düzlem geçtiðini biliyoruz. düzlemin formülü z=a*x+b*y+c dir (a,b,c sabit). 3
noktadan geçen düzlemi tanýmlayan [Link] programýný ve duzlem sýnýfýný yazýnýz.
not: birim vektorler xi, x doðrultusunda, xj y doðrultusunda ve xk z doðrultusundadýr.
[Link] konsol türü örnek test programýnda yarattýðýnýz bir düzlem nesnesinin(object)
baºlangýç kordinatlarýna uzaklýðýný (baºlangýç noktasýndan geçen ve düzleme dik olan bir
doðrunun boyunu) hesaplayýnýz.

Program 3.36 : [Link], [Link] test programý [Link]

import duzlem;

import vektor3D;

import nokta3D;

class H4O3

public static void main(String args[])

//bu test d�zlem ile nokta aras�ndaki mesafeyi hesaplar.

double a,b,c;

a = (-7.0/3.0);

b = (5.0/3.0);

c = (2.0/3.0);

duzlem d=new duzlem(a,b,c);

nokta3D P1=new nokta3D(1,1,d.z(1.0,1.0));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
nokta3D P0=new nokta3D(2,-1,3);

vektor3D v=new vektor3D(P1,b,c,1.0);

nokta3D P=new nokta3D(P0);

[Link](P1);

vektor3D v1=new vektor3D(P1,[Link](),[Link](),[Link]());

double sonuc=[Link](v1)/v.F();

[Link]("duzlem d = "+[Link]());

[Link]("nokta P0 = "+[Link]());

[Link]("duzlem(d) ile nokta arasindaki mesafe:"+sonuc);

duzlem d = z = -2.3333333333333335 + 1.6666666666666667x + 0.6666666666666666y


nokta P0 = 2.0 i - 1.0 j+ 3.0 k
duzlem(d) ile nokta arasindaki mesafe:1.6222142113076254

 H4OD4_2000

kompleks sýnýfýna kompleks sayýnýn karekokünü hesaplayacak

public static kompleks karekok(kompleks sol)

metodunu ekleyiniz. Bir test programý yazarak (H4OD4_2000.java) girdiðiniz kompleks


sayýnýn karesini hesaplatýnýz.

not : public static kompleks pow(kompleks sol) metodu kompleks sayýnýn üssünü
hesaplar.

public static kompleks karekok(kompleks sol)

return pow(sol,0.5);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

Program 3.37 : [Link], [Link] test programý [Link]

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import kompleks;

import BasicWindowMonitor;

public class H4OD4_2000 extends JFrame implements ActionListener

//

//=====================================================

// sinif degiskenleri

// bu degiskenler tum sýnýfa aittir

JLabel kutubasligi1; //JLabel sinifi degiskeni (nesnesi) kutubasligi1

JTextField kutugirdisi1; // Textfield sinifi degiskeni (nesnesi) kutugirdisi1

JTextField kutugirdisi2; // JTextfield sinifi degiskeni (nesnesi) kutugirdisi2

JTextArea cikti; // JTextArea sýnýfý deðiºkeni (nesnesi) cikti

kompleks k1; // kompleks degisken k1

//=====================================================

// pencereyi baslatma metodu

// pencere ilk basladiginda

// degiskenler buradaki degerleri alirlar

public H4OD4_2000()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

super("kompleks sayý karekök testi H4OD4_2000, frame format");

k1=new kompleks(1.0,1.0);

Container c=getContentPane();

[Link](new FlowLayout());

kutubasligi1=new JLabel("kompleks sayýyý giriniz : ");

[Link](kutubasligi1);

kutugirdisi1=new JTextField(5);

[Link](this);

[Link](kutugirdisi1);

kutugirdisi2=new JTextField(5);

[Link](this);

[Link](kutugirdisi2);

cikti=new JTextArea(toString());

[Link]([Link]());

[Link](cikti);

//=====================================================

public String toString()

String s="";

s+="kompleks sayý : "+[Link]()+"\n";

s+="kompleks sayýnýn karekökü : "+[Link]([Link](k1))+"\n";

s+="kompleks sayýnýn karesi : "+[Link]([Link](k1))+"\n";

return s;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

// girdi alanindaki olan olaylari dinleme metodu

// Her yeni rakam girildiginde bu metod cagirilir

public void actionPerformed(ActionEvent e)

[Link]([Link]([Link]()),

[Link]([Link]()));

[Link](toString());

//=====================================================

public static void main(String[] args)

H4OD4_2000 pencere= new H4OD4_2000();

[Link](new BasicWindowMonitor());

[Link](500,200);

[Link](true);

BÖLÜM 4 : BOYUTLU DEÐݪKENLER VE NESNELER (ARRAYS)

4.1 TEK BOYUTLU DEÐiªKENLER

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Boyutlu deðiºkenler ayný degiºken türü veya sýnýf türünden birden fazla nesne veya
deðiºkenin tek bir isimle tanýmlanmasýdýr. Boyutlu deðiºkenlere referans indeks numarasý
kullanýlarak ulaºýlýr. Genel olarak bir boyutlu deðiºkenler

Deðiºken_türü deðiºken_ismi[];

veya

Deðiºken_türü[] deðiºken_ismi;

ªeklinde tanýmlanýr. Birinci tanýmýn kullanýlmasý daha yaygýndýr. Ýki taným arasýnda bilgisayar
açýsýndan bir fark mevcut deðildir. Bir örnek verecek olursak

int ayýn_gunleri[]; veya

int[] ayýn_gunleri;

Bu tanýmlar her ne kadar haftanýn_gunleri nin boyutlu bir deðiºken olduðunu belirtiyorsa da
kesin boyutunu bildirmemektedir. Boyutlu deðiºkenin tam boyutunu tanýmlamak ve bilgisayar
hafýzasýndaki yerini tam olarak saptamak için

Deðiºken_ismi=new Deðiºken_türü[deðiºken_boyutu];

Terimi kullanýlýr. Bunu bir önceki örneðe uygularsak :

Ayýn_gunleri=new int[12];

Boyutlu deðiºkeni bir kere tanýmladýktan sonra onun içindeki her alt deðere indeksi üzerinden
ulaºmak mümkündür.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Örnegin:

ayýn_gunleri[0] = 31;

ayýn_gunleri[1] = 28;

gibi. . Ýndeks deðiºkeni herzaman sýfýrdan baºlar.

Küçük bir örnek sýnýfta bu kavramý daha açýk olarak vermeye çalýºalým.

Program 4.1 [Link]

import [Link].*;

class boyut
{
public static void main(String args[] )
{
int ayin_gunleri[];
ayin_gunleri=new int[12];
ayin_gunleri[0]=31;
ayin_gunleri[1]=28;
ayin_gunleri[2]=31;
ayin_gunleri[3]=30;
ayin_gunleri[4]=31;
ayin_gunleri[5]=30;
ayin_gunleri[6]=31;
ayin_gunleri[7]=31;
ayin_gunleri[8]=30;
ayin_gunleri[9]=31;
ayin_gunleri[10]=30;
ayin_gunleri[11]=31;
[Link]("Nisan ayi "+ayin_gunleri[3]+" gun ceker");
}
}

Bu programý daha kýsa olarak yazmak için ªekil 4.1.2 de görülen ºekilde bütün deðiºkenlerin
deðerlerini ayný anda tanýmlýyabiliriz.

Program 4.2 : [Link]

import [Link].*;

class boyut1
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String args[] )
{
int ayin_gunleri[]={31,28,31,30,31,30,31,31,30,31,30,31};
[Link]("Nisan ayi "+ayin_gunleri[3]+" gun ceker");
}
}

Program 4.3’de boyut kavramýnýn for döngüsüyle birlikte kullanýºýný görüyorsunuz. Boyutlu
deðiºkenin toplam boyutuna da sayý.length deðiºkeniyle ulaºýyoruz. Daha önceki
birçokprogramlama dilinde bu mümkün deðildir ve boyutlu deðiºkenin boyutunun bildirilmesi
gerekir. Program 4.3 ün çýktýsýný step step takip ederek ve bir hesap makinasý kullanarak
hesaplayýnýz.

Program 4.3 : [Link]

import [Link].*; //java girdi cikti sinifini cagir


class Aritmetik2
{
public static void main(String args[])
{
int sayi[]={10,5,7,9,11,13,14,18};
int toplam=0;
int i;
for(i=0;i<[Link];i++)
{
toplam+=sayi[i];
}
[Link]("Ortalama = "+toplam/[Link]);
}
}

ªimdi de bir applet örneðinde tek boyutlu deðiºkenleri kullanalým. Daha önce [Link]
programýný incelemiºtik. ªimdi bu programa her bir zar yüzeyinin atýlýº frekanslarýný
ekleyelim. Toplam altý yüz olduðundan birden altýya kadar her sayýnýn kaç kere geldiðini
saydýrmamýz gerekir. Bunun için bir boyutlu zarfrekansi deðiºkenini tanýmlayacaðýz.

Program listesi ve sonuç appleti Program 4.4 ve ºekil 4.1 de görülmektedir.

Program 4.4 : zarfrekansýApplet

import [Link].*;
import [Link];
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class zarfrekansiApplet extends Applet implements ActionListener
{
int toplamzaratisi=0;
int toplam=0;
TextField ilkzar,ikincizar;
Button salla; //zar atma dügmesi
int zar1,zar2;
int zarfrekansi[];

public static int zar()


{
return 1+(int)([Link]()*6);
}

public void init()


{
//programi baslat
zarfrekansi=new int[6];
ilkzar=new TextField(10); // Textfield sinifi ilkzar nesnesini yarat
add(ilkzar); // ilk zar nesnesini pencereye ekle
ikincizar=new TextField(10);// Textfield sinifi ikincizar nesnesini yarat
add(ikincizar); // ikinci zar nesnesini pencereye ekle
salla=new Button("Zari salla ve at");
add(salla);
[Link](this);
}

public void actionPerformed(ActionEvent e)


{
zar1=zar();
zar2=zar();
[Link]([Link](zar1));
[Link]([Link](zar2));
toplam+=(zar1+zar2);
toplamzaratisi++;
// not boyutlu degisken indeksi 0 dan basliyor.
zarfrekansi[zar1-1]++;
zarfrekansi[zar2-1]++;
repaint();
}

public void paint( Graphics g)


{
[Link]("toplam = "+toplam+" Atilan zar sayisi = "+toplamzaratisi,25,50);
for(int i=0;i<6;i++)
{
[Link](zarfrekansi[i]+" kere "+(i+1)+" atildi ",25,(65+15*i));
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

[Link]

ªekil 4.1 ZarfrekansiApplet..html appletinin görünümü

zarfrekansý[Link] programýnýn bir de swing eºdeðeri zarfrekansý[Link] swing Frame


programýný verelim :

Program 4.5 : zarfrekansýSWF, java swing JFrame programý

import [Link].*;

import [Link].*;

import [Link];

import [Link].*;

import BasicWindowMonitor;

public class zarfrekansiSWF extends JFrame implements ActionListener

int toplamzaratisi=0;

int toplam=0;

JTextField ilkzar,ikincizar;

JButton salla; //zar atma düðmesi

JTextArea cikti;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int zar1,zar2;

int zarfrekansi[];

public static int zar()

return 1+(int)([Link]()*6);

public zarfrekansiSWF()

//programi baslat

super("Zar frekansý swing JFrame");

zarfrekansi=new int[6];

Container c=getContentPane();

[Link](new FlowLayout());

ilkzar=new JTextField(10); // JTextfield sinifi ilkzar nesnesini yarat

[Link](ilkzar); // ilk zar nesnesini pencereye ekle

ikincizar=new JTextField(10);// Textfield sinifi ikincizar nesnesini yarat

[Link](ikincizar); // ikinci zar nesnesini pencereye ekle

salla=new JButton("Zari salla ve at");

[Link](salla);

[Link](this);

cikti=new JTextArea();

[Link]([Link]());

[Link](cikti);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e)

String s="";

zar1=zar();

zar2=zar();

[Link]([Link](zar1));

[Link]([Link](zar2));

toplam+=(zar1+zar2);

toplamzaratisi++;

// not boyutlu degisken indeksi 0 dan basliyor.

zarfrekansi[zar1-1]++;

zarfrekansi[zar2-1]++;

s+="toplam = "+toplam+" Atilan zar sayisi = "+toplamzaratisi+"\n";

for(int i=0;i<6;i++)

s+=zarfrekansi[i]+" kere "+(i+1)+" atildi \n";

[Link](s);

repaint();

//=====================================================

public static void main(String[] args)

zarfrekansiSWF pencere= new zarfrekansiSWF();

[Link](new BasicWindowMonitor());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](450,200);

[Link](true);

[Link]

ªekil 4.2 [Link] JFrame program çýktý görünümü

4.2 TEK BOYUTLU NESNE TÝPÝ DEÐݪKENLER

Nesne tipi deðiºkenler için de ayný normal basit deðiºkenlerde olduðu gibi boyut tanýmý
yapýlýr. Normal boyut tanýmý yapýldýktan sonra, boyuttaki her nesne teker teker tanýmlanýr.
Örneðin :

kompleks sayi[]=new kompleks[5];


sayi[0]=new kompleks(1,2);
sayi[1]=new kompleks(1,-1);
sayi[2]=new kompleks(2,0);
sayi[3]=new kompleks(1.1,-0.5);
sayi[4]=new kompleks(1,1.5);

Dogru3 n[];

n=new dogru3[3];
n[0]=new dogru3(1,1,1,2,2,2);
n[1]=new dogru3(2,2,2,3,3,3);
n[2]=new dogru3(3,3,3,4,4,4);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
gibi.

4.3 ÇOK BOYUTLU DEÐݪKENLER

Ýki ve daha fazla boyutlu deðiºkenler de tanýmlamak mümkündür. Ýki boyutlu deðiºkenler en
fazla tablo veya matris gibi satýr ve sütun olmak üzere iki boyutta gösterilmesi gereken
büyüklükleri oluºturmak için kullanýlý[Link] iki boyutlu deðiºkenleri direk olarak açamaz. Tek
boyutlu deðiºkenlerin yine tek boyutlu degiºkenini açar. Sonuç olarak iki boyut saðlanmýº
olur. Örnek verecek olursak

Int b[][]=new int[3][4]. Genel olarak ilk parantes satýr sayýsý, ikinci parantez sütun sayýsý
olarak kabul edilir. Buna göre b deðiºkenini ºöyle düºünebiliriz :

b[0][0] b[0][1] b[0][2] b[0][3]


b[1][0] b[1][1] b[1][2] b[1][3]
b[2][0] b[2][1] b[2][2] b[2][3]

Iki boyutlu deðiºken de bir boyutlu deðiºkenlerde olduðu gibi degerleri direk olarak
yüklüyebiliriz, ve yükleme sýrasýnda boyutlarý da tayin edebiliriz.

Örneðin :

Int b[][] = {{1,2},{3,4}};

Terimi bize aºaðýdaki tabloyu tanýmlar:

1 2
3 4

b[0][0] b[0][1]
b[1][0] b[1][1]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Ýki boyutlu deðiºkenlerin kullanýlmasýný göstermek amacýyla bir örnek problem verelim:

Program 4.6 : Ýki boyutlu deðiºkenler örnegi : [Link]

import [Link];
import [Link];

public class ikiboyut extends Applet


{

// void tipi paint metotu


public void paint( Graphics g)
{
int a1[][]={{1,2,3},{4,5,6}};
int a2[][]={{1,2},{4}};
[Link](" a1 : ",25,25);
ikiboyutyazdir(a1,g,40);
[Link](" a2 : ",25,70);
ikiboyutyazdir(a2,g,85);
}
public void ikiboyutyazdir(int a[][], Graphics g,int y)
{
int x=25;
for(int i=0;i<[Link];i++)
{
for(int j=0;j<a[i].length;j++)
{
[Link]([Link](a[i][j]),x,y);
x+=15;
}
x=25;
y+=15;
}
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 4.3 Ýki boyutlu deðiºkenler örnegi [Link] doyasýnýn appletviewer ile
görünümü

Ayný programý swing JoptionPane çýktýsý olarak da tanýmlayalým :

Program 4.7 : Ýki boyutlu deðiºkenler örnegi : ikiboyut_2000.java

import [Link];

public class ikiboyut_2000

public static void main( String args[])

int a1[][]={{1,2,3},{4,5,6}};

int a2[][]={{1,2},{4}};

String s=" a1 : \n";

s=s+ikiboyutyazdir(a1);

s=s+" a2 : \n";

s=s+ikiboyutyazdir(a2);

[Link](null,s);

[Link](0);

public static String ikiboyutyazdir(int a[][])

String s="";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<[Link];i++)

for(int j=0;j<a[i].length;j++)

s+=[Link](a[i][j])+" ";

s+="\n";

return s;

JoptionPane çýktýsý :

[Link]

ªekil 4.4 Ýki boyutlu deðiºkenler örnegi ikiboyut_2000 doyasýnýn JoptionPane çýktýsý
olarak

görünümü

Ayný programýn swing JFrame versiyonunu da inceleyelim :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 4.8 : Ýki boyutlu deðiºkenler örnegi : ikiboyutSWF_2000.java

import [Link].*;

import [Link].*;

import [Link].*;

import BasicWindowMonitor;

public class ikiboyutSWF_2000 extends JFrame

JTextArea cikti;

public ikiboyutSWF_2000()

super("iki boyutlu deðiºken örneði");

Container c=getContentPane();

[Link](new FlowLayout());

int a1[][]={{1,2,3},{4,5,6}};

int a2[][]={{1,2},{4}};

String s=" a1 : \n";

s=s+ikiboyutyazdir(a1);

s=s+" a2 : \n";

s=s+ikiboyutyazdir(a2);

cikti=new JTextArea(s);

[Link]([Link]());

[Link](cikti);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static String ikiboyutyazdir(int a[][])

String s="";

for(int i=0;i<[Link];i++)

for(int j=0;j<a[i].length;j++)

{s+=[Link](a[i][j])+" ";}

s+="\n";

return s;

//=====================================================

public static void main(String[] args)

ikiboyutSWF_2000 pencere= new ikiboyutSWF_2000();

[Link](new BasicWindowMonitor());

[Link](200,200);

[Link](true);

Swing frame çýktýsý :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 4.5 Ýki boyutlu deðiºkenler örnegi ikiboyutSWF_2000 doyasýnýn JFrame çýktýsý
olarak

görünümü

Boyutlara ulaºmak için yukarýdaki programlardan da görüleceði gibi for döngüsü kullandýk.
Boyutlu deðiºkenlere ulaºým. for döngülerinin en çok kullanýldýðý yerlerden biridir.

Satýrlarýn boyutuna [Link], sütunlarýn boyutuna ise a[satýr].length terimiyle ulaºtýk. Bu


taným bize toplam satýr ve sütun boyutunu direk tanýmlar, ve kullanýmda yeterince esneklik
saðlar.

4.4 BOYUTLU DEÐݪKENLERÝN METOTLARA AKTARIMI

Boyutlu deðiºkenler aynen boyutsuz deðiºkenler gibi metotlara aktarýlýrlar. Örneðin eðer

int sýcaklýk[] = new int[24];

deyimiyle tanýmlanan sicaklýk;

sicakligidegistir(sýcaklik);

terimiyle sicakligidegistir metotuna aktarýlabilir. Metot tanýmlanýrken, sýcaklýðýn boyutlu


deðiºken olduðu tanýmlanmalýdýr:

double void sicakligideðiºtir(int sicaklik[])

..........................

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
gibi.

Metotlarýn çýktý deðiºkenleri de çok boyutlu olarak tanýmlanabilir ve kullanýlabilir. Örneðin :

public static double[][] inversematris(double[][] a) gibi.

4.5 BOYUTLU DEÐݪKENLERDE BOYUT DEÐݪTÝRME

Boyutlu deðiºkenlerin boyutlarý ilk tanýmlamalarýnda belirtildiðinden normal olarak


deðiºtirilemez. Ancak indirek yollarla boyutun deðiºtirilmesi mümkündür. Bu yol önce yeni
boyutta bir boyutlu deðiºken tanýmlamak, sonra boyutlu deðiºkenin içerisindeki deðerleri bu
yeni deðiºkene aktarmak ve sonra orijinal boyutlu deðiºkenin adresini yeni oluºturulan
boyutlu deðiºken adresiyle deðiºtirmek ºeklinde yapýlýr.

double a[]={3.0,5.0,7.0}

double b[]=new double[4];

for(int i=0;i<[Link];i++)

{b[i]=a[i];}

a=b;

program parçacýðýnda a deðiºkeninin boyutu üçten 4 e deðiºtirilmiºtir. Daha detaylý bir


örnekle boyut deðiºtirmeyi inceleyelim.

Program 4.9 : boyutlu deðiºtirme örnegi : [Link]

public class doubleBoyut

//sýnýf deðiºkenleri

public double a[];

public int length;

public doubleBoyut(double x[] )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

length=[Link];

a=new double[length];

for(int i=0;i<length;i++)

a[i]=x[i];

public doubleBoyut(int n)

a=new double[n];

length=[Link];

public void boyutEkle(int n)

if(n>0)

int z=[Link]+n;

double[] b=new double[z];

for(int i=0;i<[Link];i++)

{b[i]=a[i];}

a=b;

length=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void boyutEkle()

boyutEkle(1);

public void boyutAzalt(int n)

int z=[Link]-n;

if(z>1)

double[] b=new double[[Link]-n];

for(int i=0;i<z;i++)

b[i]=a[i];

a=b;

else

double[] b=new double[1];

b[0]=a[0];

a=b;

length=[Link];

public void boyutAzalt()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
boyutAzalt(1);

public double getValue(int i)

return a[i];

public double[] getValue()

return a;

public void setValue(double x,int i)

a[i]=x;

public void setValue(double[] x )

length=[Link];

a=new double[length];

for(int i=0;i<length;i++)

a[i]=x[i];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public String toString(int i)

return ""+a[i];

public String toString()

String s="";

for(int i=0;i<length;i++)

s+=a[i]+" ";

s+="\n";

return s;

DoubleBoyut sýnýfýnda boyutu deðiºtirilebilen deðiºken (nesne) tanýmladýk. Bu deðiºkeni


boyutDegistir sýnýfýnda test edelim :

Program 4.10 : boyutlu deðiºtirme testi : doubleBoyut sýnýfýný kullanan


[Link]

import [Link];

import doubleBoyut;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class boyutDegistir

public static void main(String args[])

double x[]={3.1,5.3,7.0,9.7,11.0,11.5,12.3};

doubleBoyut y=new doubleBoyut(x);

String s="Orijinal boyutlu ("+[Link]+") double : \n";

s+=[Link]();

[Link](3);

s+="3 eklenmiº boyutlu ("+[Link]+")double : \n";

s+=[Link]();

[Link](5);

s+="5 azaltýlmýº boyutlu ("+[Link]+")double : \n";

s+=[Link]();

[Link](null,s,

"boyutlu deðiºken boyut deðiºtirme eksersizi",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

Program çýktýsý :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 4.6 boyut deðiºtirme örneði boyutu deðiºtirilebilen doubleBoyut sýnýfýnýn
boyutDegistir sýnýfýnda JoptionPane çýktýsý olarak görünümü

4.6 ALIªTIRMALAR

1. nokta3 ve dogru3 sýnýflarýnýn tanýmlarý verilmiºtir. Bu tanýmlarý kullanarak konsol ortamýnda


5 adet dogru3 tanýmlayýnýz. Doðrularýn baºlangýç ve bitiº noktalarýný konsol ortamýndan
giriniz. ve doðrularýn boylarýnýn ortalamasýný konsol ortamýnda ekrana yazdýrýnýz.

Program 4.11 : [Link]

public class nokta3


{
protected double x, y, z;

//kurucu metotlar
public nokta3()
{
nokta3gir(0,0,0);
}

public nokta3(double a, double b,double c)


{
nokta3gir(a,b,c);
}

public nokta3(nokta3 n)
{
nokta3gir([Link](),[Link](),[Link]());
}

// giriŸ c�k�s metotlar�


public void nokta3gir(double a, double b,double c)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x = a;
y = b;
z = c;
}

public void nokta3gir(nokta3 in1)


{
x = in1.x;
y = in1.y;
z = in1.z;
}

public void Xgir(double a)


{
x = a;
}

public void Ygir(double b)


{
y = b;
}

public void Zgir(double c)


{
x = c;
}

public double Xoku()


{
return x;
}

public double Yoku()


{
return y;
}

public double Zoku()


{
return z;
}

public String toString()


{
return "["+x+","+y+","+z+"]";
}
}
public class nokta3
{
protected double x, y, z;

//kurucu metotlar
public nokta3()
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
nokta3gir(0,0,0);
}

public nokta3(double a, double b,double c)


{
nokta3gir(a,b,c);
}

public nokta3(nokta3 n)
{
nokta3gir([Link](),[Link](),[Link]());
}

// giriŸ c�k�s metotlar�


public void nokta3gir(double a, double b,double c)
{
x = a;
y = b;
z = c;
}

public void nokta3gir(nokta3 in1)


{
x = in1.x;
y = in1.y;
z = in1.z;
}

public void Xgir(double a)


{
x = a;
}

public void Ygir(double b)


{
y = b;
}

public void Zgir(double c)


{
x = c;
}

public double Xoku()


{
return x;
}

public double Yoku()


{
return y;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double Zoku()
{
return z;
}

public String toString()


{
return "["+x+","+y+","+z+"]";
}
}

Program 4.12 : [Link]

public class dogru3


{
// 3 boyutlu dogru
nokta3 n1;
nokta3 n2;

public dogru3()
{
n1=new nokta3();
n2=new nokta3();
}

public dogru3(double n1x, double n1y,double n1z,


double n2x, double n2y,double n2z)
{
n1=new nokta3(n1x,n1y,n1z);
n2=new nokta3(n2x,n2y,n2z);
}

public dogru3(nokta3 na,nokta3 nb)


{
n1=new nokta3([Link](),[Link](),[Link]());
n2=new nokta3([Link](),[Link](),[Link]());
}

public void dogru3gir(double x1, double y1,double z1,


double x2, double y2,double z2)
{
n1.nokta3gir(x1,y1,z1);
n2.nokta3gir(x2,y2,z2);
}

public void dogru3gir(nokta3 in1, nokta3 in2 )


{
n1.nokta3gir(in1.x,in1.y,in1.z);
n2.nokta3gir(in2.x,in2.y,in2.z);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void n1gir(double x1,double y1,double z1)
{
n1.nokta3gir(x1,y1,z1);
}

public void n1gir(nokta3 in1)


{
n1.nokta3gir(in1.x,in1.y,in1.z);
}

public void n2gir(double x2,double y2,double z2)


{
n2.nokta3gir(x2,y2,z2);
}

public void n2gir(nokta3 in2)


{
n2.nokta3gir(in2.x,in2.y,in2.z);
}

public nokta3 n1oku()


{
return n1;
}

public nokta3 n2oku()


{
return n2;
}

public double X()


{
//dogrunun x koordinat uzunlugu
return ([Link]()-[Link]());
}

public double Y()


{
//dogrunun y koordinat uzunlugu
return ([Link]()-[Link]());
}

public double Z()


{
//dogrunun z coordinat uzunlugu
return ([Link]()-[Link]());
}

public double ac�_n1_xy()


{
//dogrunun n1 noktas�ndan x y duzlemindeki ac�s�
return Math.atan2(Y(),X());
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double ac�_n1_xz()
{
// dogrunun n1 noktasýndan x z duzlemindeki açýsý
// radyan
return Math.atan2(Z(),X());
}

public double ac�_n1_yz()


{
//dogrunun n1 noktas�ndan y z duzlemindeki ac�s�
//radyan
return Math.atan2(Z(),Y());
}

public double R()


{
//dogrunun boyu
return [Link](X()*X()+Y()*Y()+Z()*Z());
}

public String toString()


{
return "n1: "+[Link]()+"n2: "+[Link]();
}
}

2. Sizin için kompleks sýnýfý yaratýlmýº ve bu sýnýfýn nasýl kullanýldýðýný açýklayan H8A1 applet
programý verilmiºtir. Bu iki programý incele. Ayrýca Aritmetik2 programýný incele ve boyutlu
deðiºkenlerin kullanýmýný öðren. Sonra 5 kompleks sayýnýn toplamýný hesaplayan bir konsol
programý yaz.

Program 4.13 [Link] programý

import [Link].*; //java girdi cikti sinifini cagir


import kompleks;
class H8A1
{
public static void main(String args[])
{
kompleks sayi[]=new kompleks[5];
sayi[0]=new kompleks(1,2);
sayi[1]=new kompleks(1,-1);
sayi[2]=new kompleks(2,0);
sayi[3]=new kompleks(1.1,-0.5);
sayi[4]=new kompleks(1,1.5);
kompleks toplam=new kompleks();
int i;
for(i=0;i<[Link];i++)
{
[Link](sayi[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
[Link]((double)[Link]);
[Link]("Ortalama = "+[Link]());
}
}

Ortalama = (1.22 + 0.4i )

Program 4.14 [Link] programý

import [Link].*; //java girdi cikti sinifini cagir


import kompleks;
import Text;

class H8A1a
{
public static void main(String args[]) throws IOException
{
kompleks sayi[]=new kompleks[5];
double n1,n2;
kompleks toplam=new kompleks();
int i;
Text cin=new Text();

for(i=0;i<[Link];i++)
{
[Link]("bir kompleks sayi giriniz : ");
n1=[Link](cin);
n2=[Link](cin);
sayi[i]=new kompleks(n1,n2);
[Link](sayi[i]);
}
[Link]((double)[Link]);
[Link]("Ortalama = "+[Link]());
}
}

bir kompleks sayi giriniz : 1 1


bir kompleks sayi giriniz : 2 2
bir kompleks sayi giriniz : 3 3
bir kompleks sayi giriniz : 4 4
bir kompleks sayi giriniz : 5 5
Ortalama = (3.0 + 3.0i )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
3. Üç boyutlu nokta ve doðru tanýmlarý nokta3 ve dogru3 sýnýflarýnda verilmiºtir. 3 tane
dogruyu boyutlu deðiºken olarak H8A2 sýnýfýnda tanýmlayýn ve dogrularýn toplam boylarýný ve
baslangýç noktasýnýn xy xz ve yz düzlemlerinde yaptýðý açýlarý derece cinsinden yazdýrýn.

Program 4.15 [Link] programý

import [Link].*; //java girdi cikti sinifini cagir


import kompleks;
class H8A2
{
public static void main(String args[])
{
dogru3 n[]=new dogru3[3];
n[0]=new dogru3(1,1,1,2,2,2);
n[1]=new dogru3(2,2,2,3,3,3);
n[2]=new dogru3(3,3,3,4,4,4);
int i;
for(i=0;i<[Link];i++)
{
[Link](n[i].toString()+"boy : "+n[i].R());
[Link]("aci xy = "+n[i].aci_n1_xy());
[Link]("aci xz = "+n[i].aci_n1_xz());
[Link]("aci yz = "+n[i].aci_n1_yz());
}
}
}

n1: [1.0,1.0,1.0]n2: [2.0,2.0,2.0]boy : 1.7320508075688772


aci xy = 0.7853981633974483
aci xz = 0.7853981633974483
aci yz = 0.7853981633974483
n1: [2.0,2.0,2.0]n2: [3.0,3.0,3.0]boy : 1.7320508075688772
aci xy = 0.7853981633974483
aci xz = 0.7853981633974483
aci yz = 0.7853981633974483
n1: [3.0,3.0,3.0]n2: [4.0,4.0,4.0]boy : 1.7320508075688772
aci xy = 0.7853981633974483
aci xz = 0.7853981633974483
aci yz = 0.7853981633974483

12. [Link] programý. . Programý inceleyiniz.

Program 4.16 [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//bu sýnýf sinif degiskeni kompleksi boyutlu olarak çaðýrýr

import [Link].*; //java girdi cikti sinifini cagir

import kompleks;

class H5AL3

public static void main(String args[]) throws IOException

Text cin=new Text();

double n1,n2;

[Link]("kompleks sayilarin miktari, n = ");

int n=[Link]();

kompleks sayi[]=new kompleks[n];

kompleks toplam=new kompleks();

int i;

for(i=0;i<[Link];i++)

[Link]("bir kompleks sayi giriniz : ");

n1=[Link]();

n2=[Link]();

sayi[i]=new kompleks(n1,n2);

[Link](sayi[i]);

[Link]((double)[Link]);

[Link]("Ortalama = "+[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

13. H5O1 : java konsol programýnda toplam bayaðýkesir sayisini sorduktan sonra
ekrandan verilen sayýda bayaðý kesiri giriniz ve ortalamalarýný hesaplayýnýz.

Program 4.17 [Link] programý

//bu sýnýf sinif degiskeni kompleksi boyutlu olarak çaðýrýr

import [Link].*; //java girdi cikti sinifini cagir

import bayagikesir;

class H5O1

public static void main(String args[]) throws IOException

Text cin=new Text();

int n1,n2;

[Link]("toplam bayagi kesir sayisi, n = ");

int n=[Link]();

bayagikesir sayi[]=new bayagikesir[n];

bayagikesir toplam=new bayagikesir();

int i;

for(i=0;i<[Link];i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("bir bayagikesir giriniz : ");

n1=[Link]();

n2=[Link]();

sayi[i]=new bayagikesir(n1,n2);

for(i=0;i<[Link];i++)

try{

[Link](sayi[i]);

catch (bayagikesirException e)

[Link]([Link]());

[Link]("Toplam = "+[Link]());

try{

[Link]([Link]);

catch (bayagikesirException e)

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("Ortalama = "+[Link]());

14. H5O3
Üç boyutlu n kompleks sayýyý java konsol programýnda toplam kompleks sayýlarýn
sayýsýný sorduktan sonra ekrandan verilen sayýda kompleks sayýyý giriniz. Kompleks
sayýlar girildikten sonra, kompleks sayýlarýn ortalamasýný hesaplayýnýz.

Program 4.18 [Link] programý

//bu sýnýf sinif degiskeni kompleksi boyutlu olarak çaðýrýr

import [Link].*; //java girdi cikti sinifini cagir

import kompleks;

class H5O3

public static void main(String args[]) throws IOException

Text cin=new Text();

double n1,n2;

[Link]("toplam kompleks sayi, n = ");

int n=[Link]();

kompleks sayi[]=new kompleks[n];

kompleks toplam=new kompleks();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int i;

for(i=0;i<[Link];i++)

[Link]("kompleks sayiyi giriniz : ");

n1=[Link]();

n2=[Link]();

sayi[i]=new kompleks(n1,n2);

for(i=0;i<[Link];i++)

[Link](sayi[i]);

[Link]("Toplam = "+[Link]());

[Link]([Link]);

[Link]("Ortalama = "+[Link]());

15 H5OD1_2000

Problem 15 de verilen [Link] örnek programýný inceleyiniz. Java konsol programýnda


(Text sýnýfýný kullanabilirsiniz) toplam kompleks sayýsýný sorduktan sonra ekrandan verilen
sayýda kompleks sayýyý giriniz ve kareköklerinin ortalamalarýný hesaplayýnýz.

Program 4.19 H5OD1_2000.java programý

//bu sýnýf sinif degiskeni kompleksi boyutlu olarak çaðýrýr

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*; //java girdi cikti sinifini cagir

import kompleks;

class H5OD1_2000

public static void main(String args[]) throws IOException

Text cin=new Text();

int n1,n2;

[Link]("toplam kompleks sayý, n = ");

int n=[Link]();

kompleks sayi[]=new kompleks[n];

kompleks toplam=new kompleks();

int i;

for(i=0;i<[Link];i++)

[Link]("bir kompleks sayý giriniz : ");

n1=[Link]();

n2=[Link]();

sayi[i]=new kompleks(n1,n2);

for(i=0;i<[Link];i++)

[Link]([Link](sayi[i]));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]("kompleks sayýlarýn kareköklerinin toplamý = "+[Link]());

[Link]([Link]);

[Link]("kompleks sayýlarýn karekoklerinin ortalamasý = "+[Link]());

15. H5OD2_2000

Double boyutlu sayýlarýn boyutlarýný deðiºtirerek kullanabilen doubleBoyut sýnýfý yukarýda


tanýmlanmýºtýr. Ýnteger (tamsayý) deðiºkenlerin boyutlarýný deðiºtirerek kullanabileceðimiz
intBoyut sýnýfýný oluºturunuz. Bir test programý yazýnýz. Bu programda bir deðiºkene 5
boyutlu bir integer deðiºken gurubu yükleyiniz, sonra boyutu 6 ya çýkarýnýz ve sonrada
boyutu 4 e düºürünüz. Sonuçlarý yazdýrýnýz.

Program 4.20 [Link] programý

public class intBoyut

//sýnýf deðiºkenleri

public int a[];

public int length;

public intBoyut(int x[] )

length=[Link];

a=new int[length];

for(int i=0;i<length;i++)

a[i]=x[i];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public intBoyut(int n)

a=new int[n];

length=[Link];

public void boyutEkle(int n)

if(n>0)

int z=[Link]+n;

int[] b=new int[z];

for(int i=0;i<[Link];i++)

{b[i]=a[i];}

a=b;

length=[Link];

public void boyutEkle()

boyutEkle(1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void boyutAzalt(int n)

int z=[Link]-n;

if(z>1)

int[] b=new int[[Link]-n];

for(int i=0;i<z;i++)

b[i]=a[i];

a=b;

else

int[] b=new int[1];

b[0]=a[0];

a=b;

length=[Link];

public void boyutAzalt()

boyutAzalt(1);

public int getValue(int i)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return a[i];

public int[] getValue()

return a;

public void setValue(int x,int i)

a[i]=x;

public void setValue(int[] x )

length=[Link];

a=new int[length];

for(int i=0;i<length;i++)

a[i]=x[i];

public String toString(int i)

return ""+a[i];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public String toString()

String s="";

for(int i=0;i<length;i++)

s+=a[i]+" ";

s+="\n";

return s;

Program 4.21 H5OD2_2000.java programý

import [Link];

import doubleBoyut;

public class H5OD2_2000

public static void main(String args[])

int x[]={3,5,7,9,11};

intBoyut y=new intBoyut(x);

String s="Orijinal boyutlu ("+[Link]+") integer : \n";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s+=[Link]();

[Link]();

s+="1 eklenmiº boyutlu ("+[Link]+") integer : \n";

s+=[Link]();

[Link](2);

s+="2 azaltýlmýº boyutlu ("+[Link]+") integer : \n";

s+=[Link]();

[Link](null,s,

"int boyutlu deðiºken boyut deðiºtirme eksersizi",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 4.7 intBoyut, boyutlu tam sayý boyut deðiºtirme eksersizi, H5OD2_2000.java,
JoptionPane çýktýsý

16. H5OD3_2000

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String isim;

String Soysisim;

int not;

sýnýf deðiºkenleri ve gerekli metodlarý kapsayan “ogrenci” sýnýfýný yaratýnýz.Sýnýftaki


öðrenci sayýsýný sorup, daha sonra tümöðrenciler için öðrenci ismi, soyismi, ve notunu
giriniz (sýnýfýnýzda minimum üç öðrenci olsun). Çoktý alanýnda öðrencilerin isim soyisim ve
not listesini sýraladýktan sonra sýnýf ortalamasýný da verin.

Program 4.22 [Link] programý

class ogrenci

public String isim;

public String soyisim;

public int not;

public ogrenci(String isimGir,String soyisimGir,int notGir)

isim=isimGir;

soyisim=soyisimGir;

not=notGir;

public void isimGir(String isim)

[Link]=isim;

public void soyisimGir(String soyisim)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link]=soyisim;

public void notGir(int not)

[Link]=not;

public void ogrenciGir(String isimGir,String soyisimGir,int notGir)

isim=isimGir;

soyisim=soyisimGir;

not=notGir;

public String isimOku()

return isim;

public String soyisimOku()

return soyisim;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int notOku()

return not;

public String toString()

return isim+" "+soyisim+" "+not;

Program 4.23 H5OD3_2000.java programý

import [Link].*; //java girdi cikti sinifini cagir

import ogrenci;

import ogrenciFrame;

class H5OD3_2000

public static void main(String args[]) throws IOException

Text cin=new Text();

int i,n;

int not;

double toplam = 0;

String isim, soyisim;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ogrenci temp;

[Link]("Lutfen ogrenci sayisini giriniz = ");

n=[Link]();

ogrenci dizi[]=new ogrenci[n];

for(i=0;i<n;i++)

//[Link]("Ogrenci ismi = ");

String s[]=new String[3];

[Link]("isim : ");

isim = [Link]();

[Link]("soyisim : ");

soyisim=[Link]();

[Link]("not : ");

not=[Link]();

dizi[i]=new ogrenci(isim, soyisim, not);

toplam += not;

toplam /= (double)n;

[Link]("Ogrenci Listesi = \n ");

for(i=0;i<[Link];i++)

[Link](dizi[i].toString());

[Link]("sýnýf Ortalamasý = " + toplam);

H5OD5_2000.java programýnýn çýktýsý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Turhan Çoban 25

Meral Çoban 75

Ali Velizade 99

sýnýf Ortalamasý = 66.33333333333333

BÖLÜM 5 : SINIFLARDA HÝYERARªÝ, ABSTRACT SINIF VE ÝNTERFACE

5.1 ABSTRACT SINIF

Üçüncü bölümde sýnýflarýn diðer sýnýflardan kalýtým (Inheritance) yoluyla türetilmesini


görmüºtük. Sýnýflarý kalýtým yoluyla birbirinden türetirken eðer ortak özellikli sýnýflar
yaratýyorsak, bütün bu sýnýf gurubunun en tepesine abstract bir sýnýf koyabiliriz. Abstract
sýnýfýn diðer sýnýflarýn kullanýlmasýnda extends yoluyla tepe sýnýflýk etmek ve bütün alt
sýnýflara ortak bir adres çýkýº noktasý saðlamak dýºýnda bir görevi yoktur. Diðer bir deyimle bu
sýnýflar hiçbir zaman doðrudan kullanýlmazlar. Ancak alt sýnýflarýndan birini referans olarak
göstermek ve onlara dolaylý yoldan ulaºmak amacýyla kullanýlýrlar.

Kavramý daha iyi verebilmek için bir örnek problem oluºturalým. Daha önce sýnýf kavramýný
açýklarken kullandýðýmýz nokta,daire sýnýflarýný hatýrlýyacaksýnýz. ªimdi bu sýnýflarýn üzerine
sekil isimli bir abstract sýnýf ekleyerek tekrar oluºturalým.

Program 5.1 Abstract sýnýf sekil ( [Link] dosyasýnda yer alýyor)

public abstract class sekilX

//not burada baºka deðiºkenlerde olabilir

public double alan(){return 0.0;}

public double hacim() {return 0.0;}

public abstract String isim();

Program 5.2: sekil sýnýfýndan kalýtým yoluyla türetilen noktaX sýnýfý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import sekilX;

public class noktaX extends sekilX

protected double x, y;

public noktaX(double a, double b)

x=a;

y=b;

public void noktagir(double a, double b)

x=a;

y=b;

public double Xoku()

return x;

public double Yoku()

return y;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public String toString()

return "["+x+","+y+"]";

public String isim() {return "nokta";}

Program 5.3: noktaX sýnýfýndan kalýtým yoluyla türetilen daireX sýnýfý

import noktaX;

public class daireX extends noktaX

protected double yaricap;

public daireX()

//daire kalýtým yaptýðý nokta sýnýfýnýn kurucu metodunu

// super deyimi ile cagirabilir.

super(0,0);

yaricapgir(0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public daireX(double r, double a, double b)

super(a,b);

yaricapgir(r);

public void yaricapgir(double r)

if(r >= 0.0)

yaricap=r;

else

yaricap=0.0;

public double yaricapoku()

return yaricap;

public double alan()

return 3.14159*yaricap*yaricap;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String toString()

return "Merkez = "+"["+x+","+y+"]"+

"; Yaricap="+yaricap;

public String isim() {return "daire";}

Program 5.4: daireX sýnýfýndan kalýtým yoluyla türetilen silindirX sýnýfý

import daireX;

public class silindirX extends daireX

protected double yukseklik;

public silindirX()

yukseklikoku(0);

public silindirX( double h, double r, int a, int b)

super(r, a, b );

yukseklikoku( h);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void yukseklikoku (double h )

if(h>=0) yukseklik=h;

else yukseklik=0;

public double yukseklikoku(){return yukseklik;}

public double alan()

return 2* [Link]()+

2*[Link]*yaricap*yukseklik;

public double hacim(){return [Link]()*yukseklik;}

public String toString()

{return [Link]()+";yukseklik="+yukseklik;}

public String isim(){return "silindir";}

Program 5.4 : Abstract sýnýf ve indirek referanslamayý test eden abstracttesti sýnýfý

import [Link];

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class abstracttesti extends Applet

private noktaX n;

private daireX d;

private silindirX s;

private sekilX a[];

public void init()

n = new noktaX(7,11);

d = new daireX(3.5,22,8);

s = new silindirX(10,3.3,10,10);

a = new sekilX[3];

a[0]=n;

a[1]=d;

a[2]=s;

public void paint(Graphics g)

//direk cagirma :

[Link]([Link]()+": "+[Link](),25,25);

[Link]([Link]()+": "+[Link](),25,40);

[Link]([Link]()+": "+[Link](),25,55);

//indirek cag�rma

int y=85;

for(int i=0;i<[Link];i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link](a[i].isim()+": "+a[i].toString(),25,y);

y+=15;

[Link]("Alan : "+a[i].alan()+" Hacim : "+a[i].hacim(),25,y);

y+=15;

[Link]

ªekil 5.1 Abstract sýnýf ve indirek referanslamayý test eden abstractTesti sýnýfýnýn
sonuclarýnýn applet de görülmesi

Program 5.5 : Abstract sýnýf ve indirek referanslamayý test eden


abstractTesti_2000.java

import [Link];

import silindirX;

import noktaX;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import daireX;

public class abstractTesti_2000

public static void main(String args[])

noktaX n;

daireX d;

silindirX s;

sekilX a[];

n = new noktaX(7,11);

d = new daireX(3.5,22,8);

s = new silindirX(10,3.3,10,10);

a = new sekilX[3];

a[0]=n;

a[1]=d;

a[2]=s;

String st="";

st+=[Link]()+": "+[Link]()+"\n";

st+=[Link]()+": "+[Link]()+"\n";

st+=[Link]()+": "+[Link]()+"\n";

//indirek caðýrma

int y=85;

for(int i=0;i<[Link];i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
st+=a[i].isim()+": "+a[i].toString()+"\n";

st+="Alan : "+a[i].alan()+" Hacim : "+a[i].hacim()+"\n";

[Link](null,st,"abstract test programý",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

ªekil 5.2 Abstract sýnýf ve indirek referanslamayý test eden abstractTesti_2000


sýnýfýnýn sonuclarýnýn JoptionPane çýktýsý olarak görülmesi

Örnekten de görüldügü gibi nokta, daire ve silindir abstract sekil sýnýfýnýn alt sýnýflarý olarak
oluºturulmuº, ve ayný zamanda bu sýnýflara indirek referans olarak kullanýlmýºtýr. Diðer bir
deyimle nokta daire ve silindirin adresleri sekil sýnýfý nesneye aktarýlmýº ve bu nesne
üzerinden üç sýnýfta indirek olarak kullanýlmýºtýr. Bu indirek kullanýmýn bize temel faydasý,
Programýmýza yeni sýnýflar eklediðimizde daha kolay ve az program deðiºtirerek uyumu
saðlayabilme yeteneðidir. Orneðin yukarýdaki program sýnýflarý gurubuna koni eklemek
istersek bütün yapacaðýmýz koni sýnýfýný tanýmladýktan sonra, sekil nesnesi a nýn boyutunu bir
arttýrarak ayný hesaplamaya koniyide ilave etmekten ibaret olacaktýr. Bu tür uygulamalar
bilgisayar kodunun deðiºim gereksinimini minimuma indirgediðinden nesne kokenli bilgisayar
programcýlýðýnýn onemli uygulamalarýndan biridir.

5.2 INTERFACE

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Abstract sýnýflarýn dezavantajý sadece bir sýnýfýn kalýtým yoluyla ve extends sozcüðü
kullanýlarak baðlanabilir olmasýdýr. Ve eðer baºka bir sýnýf halihazýrda o sýnýfa kalýtým yoluyla
baðlanmýºsa, bizim yeni bir sýnýfý üst sýnýf olarak kullanma olasýlýðýmýz yok olmuº demektir.
Fakat bazý uygulamalar için bu [Link] zaman interface kullanýrýz. Interface de
abstract sýnýf gibi kendi içinde bir iºlem yapmaz. Sadece öbür sýnýflarýn baðlanmasýný teºkil
eden bir adres noktasý olarak iº görür. Ýnterface’i bir baºka sýnýfa baðlamak gerektiðinde
extends yerine implements sözcüðü kullanýlýr. Abstract sýnýflar kendi baºýna bir bütün teºkil
edebilmelerine raðmen interface’in sadece kendi baºýna bir anlamý yoktur. Interface sýnýfýnda
yer alan tüm metod ve deðiºkenlerin alt sýnýflarda tanýmlanmasý gerekir.

Örnek olarak bir önceki problemi interface ile tanýmlýyalým.

Program 5.5 interface sekil ( [Link] dosyasýnda yer alýyor)

public interface sekilY

//burada de§iŸken veya nesnelerde olabilir

public abstract double alan();

public abstract double hacim();

public abstract String isim();

Program 5.6 : interface sekilden implements kelimesiyle türeyen noktaY sýnýfý (


[Link] dosyasýnda yer alýyor)

import sekilY;
public class noktaY implements sekil
{
protected double x, y;
public noktaY(double a, double b)
{
noktagir(a,b);
}
public void noktagir(double a, double b)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x=a;
y=b;
}
public double Xoku()
{
return x;
}
public double Yoku()
{
return y;
}
public double alan() {return 0.0;}
public double hacim() {return 0.0;}
public String toString()
{
return "["+x+","+y+"]";
}
public String isimOku()
{
return "Nokta";
}
}

Görüldüðü gibi burada nokta sýnýfýnýn bir öncekinden farký implements kelimesinin kullanýlmýº
olamasý ve bos alan ve hacim metotlarýnýn bu dosyada yazýlmasýnýn gerekmesinden ibarettir.
Interface programla yapýlan ve alt sýnýflarda bu metodlarýn (veya deðiºkenlerin)
tanýmlanacaðýna dair yapýlan bir kontrattý[Link] ve silindirY sýnýflarýnda bir fark mevcut
degildir. Ýki seklin iºlemsel sonuçlarý arasýnda da bir fark mevcut deðildir.

Yukardaki örneðe parelel olarak burada da daireY,SilindirY tanýmlarýný yapalým ve


interfaceTesti_2000.java programýnda test edelim.

Program 5.6 : interface sekilY’den implements kelimesiyle türeyen noktaY sýnýfýndan


extends yoluyla türeyen daireY sýnýfý( [Link] dosyasýnda yer alýyor)

import noktaY;

public class daireY extends noktaY

protected double yaricap;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public daireY()

//daire kalýtým yaptýðý nokta sýnýfýnýn kurucu metodunu

// super deyimi ile cagirabilir.

super(0,0);

yaricapgir(0);

public daireY(double r, double a, double b)

super(a,b);

yaricapgir(r);

public void yaricapgir(double r)

if(r >= 0.0)

yaricap=r;

else

yaricap=0.0;

public double yaricapoku()

return yaricap;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double alan()

return 3.14159*yaricap*yaricap;

public String toString()

return "Merkez = "+"["+x+","+y+"]"+

"; Yaricap="+yaricap;

public String isim() {return "daire";}

Program 5.7 : interface sekilY’den implements kelimesiyle türeyen noktaY sýnýfýndan


extends yoluyla türeyen daireY sýnýfýndan extends yoluyla türeyen silindirY sýnýfý(
[Link] dosyasýnda yer alýyor)

import daireY;

public class silindirY extends daireY

protected double yukseklik;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public silindirY()

super(0, 0, 0 );

yukseklikoku(0);

public silindirY( double h, double r, int a, int b)

super(r, a, b );

yukseklikoku( h);

public void yukseklikoku (double h )

if(h>=0) yukseklik=h;

else yukseklik=0;

public double yukseklikoku(){return yukseklik;}

public double alan()

return 2* [Link]()+

2*[Link]*yaricap*yukseklik;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double hacim(){return [Link]()*yukseklik;}

public String toString()

{return [Link]()+";yukseklik="+yukseklik;}

public String isim(){return "silindir";}

Program 5.8 : interface sekilY’den türeyen sýnýflarý test eden ve indirek olarak
referanslýyan interfaceTesti_2000.java programý

import [Link];

import silindirY;

import noktaY;

import daireY;

public class interfaceTesti_2000

public static void main(String args[])

noktaY n;

daireY d;

silindirY s;

sekilY a[];

n = new noktaY(7,11);

d = new daireY(3.5,22,8);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s = new silindirY(10,3.3,10,10);

a = new sekilY[3];

a[0]=n;

a[1]=d;

a[2]=s;

String st="";

st+=[Link]()+": "+[Link]()+"\n";

st+=[Link]()+": "+[Link]()+"\n";

st+=[Link]()+": "+[Link]()+"\n";

//indirek caðýrma

int y=85;

for(int i=0;i<[Link];i++)

st+=a[i].isim()+": "+a[i].toString()+"\n";

st+="Alan : "+a[i].alan()+" Hacim : "+a[i].hacim()+"\n";

[Link](null,st,"interface test programý",

JOptionPane.PLAIN_MESSAGE);

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 5.2 interface sýnýf ve indirek referanslamayý test eden interfaceTesti_2000
sýnýfýnýn sonuclarýnýn JoptionPane çýktýsý olarak görülmesi

5.3 ALIªTIRMALAR

1. Derste gördüðümüz abstract class sekilX,noktaX,daireX, silindirX sýnýflarýna ve ilave


olarak koniX sýnýfýný yaratýnýz. Bu sýnýflarýn [Link] test sýnýfýnda alanlarýný ve
hacimlerini sekilX referansýný kullanarak yazdýrýnýz.

2. Derste gördüðümüz interface sekilY, noktaY,daireY, silindirY sýnýflarýna ve ilave olarak


küreY sýnýfýný yaratýnýz. Bu sýnýflarýn [Link] testY sýnýfýnda alanlarýný ve hacimlerini
sekilY referansýný kullanarak yazdýrýnýz.

3. [Link] programýný inceleyiniz. Bu program bir boyutlu abstract sýnýf fx ve bu sýnýfta


tanýmlanan abstract metot f(double x) i kullanan turev ve integral metodlarýný içerir. Ýntegral
ve türev metodlarýný niçin abstact kavramý kullanarak yazdýðýmýzý açýklayýnýz.

Program 5.7 [Link], fx ve H5AL1 sýnýflarýnýn tanýmý

//abstract sinif ve boyutlu deðiskenler alistirmasi

abstract class fx

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
abstract double f(double x);

public class H5AL1

public static double turev(fx fi,double x)

// bu metod birinci dereceden bir fonksiyonun t�revini hesaplar

// metodun hata miktari h0 and n degiskenlerinin degisimi ile

// degistirilebilir. fonksiyon girisi fx abstract s�n�f� �zerinden

// yapilmalidir.

// Bu problem boyutlu de§iskenerin kullan�lmasi ile ilgili de bir

// ornate.

double h0=0.0256;

int i,m;

int n=7;

//basit bir fonksiyonun t�revi

double T[][];

T=new double[n][n];

double h[];

h=new double[n];

for(i=0;i<n;i++)

h[i]=0;

for(int j=0;j<n;j++)

T[i][j]=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

h[0]=h0;

double r=0.5;

for( i=1;i<n;i++)

h[i]=h0*[Link](r,i);

for(i=0;i<n;i++)

T[i][0]=( fi.f(x + h[i]) - fi.f( x - h[i]))/(2.0*h[i]);

for(m=1;m<n;m++)

for(i=0;i<n-m;i++)

T[i][m]=(h[i]*h[i]*T[i+1][m-1] - h[i+m]*h[i+m]*T[i][m-1])/

(h[i]*h[i]- h[i+m]*h[i+m]);

double xx=T[0][n-1];

return xx;

public static double integral(fx fi,double a,double b)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//gauss-legendre denklemini kullanarak integral hesaplama

//

double s[],w[];

int i;

s=new double[30];

w=new double[30];

s[ 0] = .15532579626752470000E-02;

s[ 1] = .81659383601264120000E-02;

s[ 2] = .19989067515846230000E-01;

s[ 3] = .36899976285362850000E-01;

s[ 4] = .58719732103973630000E-01;

s[ 5] = .85217118808615820000E-01;

s[ 6] = .11611128394758690000E+00;

s[ 7] = .15107475260334210000E+00;

s[ 8] = .18973690850537860000E+00;

s[ 9] = .23168792592899010000E+00;

s[10] = .27648311523095540000E+00;

s[11] = .32364763723456090000E+00;

s[12] = .37268153691605510000E+00;

s[13] = .42306504319570830000E+00;

s[14] = .47426407872234120000E+00;

s[15] = .52573592127765890000E+00;

s[16] = .57693495680429170000E+00;

s[17] = .62731846308394490000E+00;

s[18] = .67635236276543910000E+00;

s[19] = .72351688476904450000E+00;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s[20] = .76831207407100990000E+00;

s[21] = .81026309149462140000E+00;

s[22] = .84892524739665800000E+00;

s[23] = .88388871605241310000E+00;

s[24] = .91478288119138420000E+00;

s[25] = .94128026789602640000E+00;

s[26] = .96310002371463720000E+00;

s[27] = .98001093248415370000E+00;

s[28] = .99183406163987350000E+00;

s[29] = .99844674203732480000E+00;

w[ 0] = .39840962480827790000E-02;

w[ 1] = .92332341555455000000E-02;

w[ 2] = .14392353941661670000E-01;

w[ 3] = .19399596284813530000E-01;

w[ 4] = .24201336415292590000E-01;

w[ 5] = .28746578108808720000E-01;

w[ 6] = .32987114941090080000E-01;

w[ 7] = .36877987368852570000E-01;

w[ 8] = .40377947614710090000E-01;

w[ 9] = .43449893600541500000E-01;

w[10] = .46061261118893050000E-01;

w[11] = .48184368587322120000E-01;

w[12] = .49796710293397640000E-01;

w[13] = .50881194874202750000E-01;

w[14] = .51426326446779420000E-01;

w[15] = .51426326446779420000E-01;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
w[16] = .50881194874202750000E-01;

w[17] = .49796710293397640000E-01;

w[18] = .48184368587322120000E-01;

w[19] = .46061261118893050000E-01;

w[20] = .43449893600541500000E-01;

w[21] = .40377947614710090000E-01;

w[22] = .36877987368852570000E-01;

w[23] = .32987114941090080000E-01;

w[24] = .28746578108808720000E-01;

w[25] = .24201336415292590000E-01;

w[26] = .19399596284813530000E-01;

w[27] = .14392353941661670000E-01;

w[28] = .92332341555455000000E-02;

w[29] = .39840962480827790000E-02;

int n=30;

double z=0;

double x,y;

for(i=0;i<n;i++)

x=(b+a)/2.0+(b-a)/2.0*s[i];

y=fi.f(x);

z+=(b-a)/2*w[i]*y;

for(i=0;i<n;i++)

x=(b+a)/2.0+(b-a)/2.0*(-s[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
y=fi.f(x);

z+=(b-a)/2.0*w[i]*y;

return z;

4. [Link] programý alýºtýrma 3 de verilen turev ve integral sýnýflarýný konsol ortamýnda


kullanmaktadýr. Programýn inceleyiniz.

Program 5.8 [Link]

import [Link].*;

import H5AL1;

class f1 extends fx

double f(double x)

return x*x;

class f2 extends fx

double f(double x)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return [Link](x);

public class H5AL2

public static void main(String args[]) throws IOException

f1 b1;

b1=new f1();

[Link]("Integral : "+[Link](b1,0.0,1.0));

[Link]("Turev : "+[Link](b1,1.0));

f2 b2;

b2=new f2();

[Link]("Integral : "+[Link](b2,0.0,[Link]));

[Link]("Turev : "+[Link](b2,[Link]));

5. H5O2 :

abstract class fxi


{
abstract double f(double x[]);
}

tanýmýný ve H5AL1 sýnýfýndaki turev metotuna H5O2 sýnýfýnda

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double turev(fx fi,double x)

gerekli deðiºiklikleri yaparak

public static double turev(fxi fi,double x[],int i)

metotunu oluºturunuz ve i'inci x deðeri için denklemin türevini hesaplayýnýz.


( dfi(x[])/dxi türevini hesaplayýnýz. )

Program 5.9 [Link]

//abstract sinif ve boyutlu deðiºkenler odevi

abstract class fxi

abstract double f(double x[]);

public class H5O2

public static double turev(fxi fi,double x[],int k)

// bu metot ninci dereceden bir fonksiyonun t�revini hesaplar

// metotun hata miktari h0 and n degiskenlerinin degisimi ile

// degistirilebilir. fonksiyon girisi fxi abstract s�n�f� �zerinden

// yapilmalidir.

// Bu problem boyutlu de§iskenerin kullan�lmasi ile ilgili de bir

// ornate.

double h0=0.0256;

int i,m;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n=7;

//basit bir fonksiyonun t�revi

double T[][];

T=new double[n][n];

double h[];

h=new double[n];

for(i=0;i<n;i++)

h[i]=0;

for(int j=0;j<n;j++)

T[i][j]=0;

h[0]=h0;

double r=0.5;

for( i=1;i<n;i++)

h[i]=h0*[Link](r,i);

for(i=0;i<n;i++)

double temp=x[k];

x[k]=x[k] + h[i];

double fiP=fi.f(x);

x[k]=temp - h[i];

double fiM=fi.f(x);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x[k]=temp;

T[i][0]=( fiP - fiM)/(2.0*h[i]);

for(m=1;m<n;m++)

for(i=0;i<n-m;i++)

T[i][m]=(h[i]*h[i]*T[i+1][m-1] - h[i+m]*h[i+m]*T[i][m-1])/

(h[i]*h[i]- h[i+m]*h[i+m]);

double xx=T[0][n-1];

return xx;

public static double integral(fxi fi,double x[],int k, double a,double b)

//gauss-legendre denklemini kullanarak integral hesaplama

//integral(x[k]=a dan x[k]=b ye kadar fonksiyon fi(x), x=x[0]..x[k]..x[n]

//

double s[],w[];

double tempxk=x[k];

int i;

s=new double[30];

w=new double[30];

s[ 0] = .15532579626752470000E-02;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s[ 1] = .81659383601264120000E-02;

s[ 2] = .19989067515846230000E-01;

s[ 3] = .36899976285362850000E-01;

s[ 4] = .58719732103973630000E-01;

s[ 5] = .85217118808615820000E-01;

s[ 6] = .11611128394758690000E+00;

s[ 7] = .15107475260334210000E+00;

s[ 8] = .18973690850537860000E+00;

s[ 9] = .23168792592899010000E+00;

s[10] = .27648311523095540000E+00;

s[11] = .32364763723456090000E+00;

s[12] = .37268153691605510000E+00;

s[13] = .42306504319570830000E+00;

s[14] = .47426407872234120000E+00;

s[15] = .52573592127765890000E+00;

s[16] = .57693495680429170000E+00;

s[17] = .62731846308394490000E+00;

s[18] = .67635236276543910000E+00;

s[19] = .72351688476904450000E+00;

s[20] = .76831207407100990000E+00;

s[21] = .81026309149462140000E+00;

s[22] = .84892524739665800000E+00;

s[23] = .88388871605241310000E+00;

s[24] = .91478288119138420000E+00;

s[25] = .94128026789602640000E+00;

s[26] = .96310002371463720000E+00;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s[27] = .98001093248415370000E+00;

s[28] = .99183406163987350000E+00;

s[29] = .99844674203732480000E+00;

w[ 0] = .39840962480827790000E-02;

w[ 1] = .92332341555455000000E-02;

w[ 2] = .14392353941661670000E-01;

w[ 3] = .19399596284813530000E-01;

w[ 4] = .24201336415292590000E-01;

w[ 5] = .28746578108808720000E-01;

w[ 6] = .32987114941090080000E-01;

w[ 7] = .36877987368852570000E-01;

w[ 8] = .40377947614710090000E-01;

w[ 9] = .43449893600541500000E-01;

w[10] = .46061261118893050000E-01;

w[11] = .48184368587322120000E-01;

w[12] = .49796710293397640000E-01;

w[13] = .50881194874202750000E-01;

w[14] = .51426326446779420000E-01;

w[15] = .51426326446779420000E-01;

w[16] = .50881194874202750000E-01;

w[17] = .49796710293397640000E-01;

w[18] = .48184368587322120000E-01;

w[19] = .46061261118893050000E-01;

w[20] = .43449893600541500000E-01;

w[21] = .40377947614710090000E-01;

w[22] = .36877987368852570000E-01;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
w[23] = .32987114941090080000E-01;

w[24] = .28746578108808720000E-01;

w[25] = .24201336415292590000E-01;

w[26] = .19399596284813530000E-01;

w[27] = .14392353941661670000E-01;

w[28] = .92332341555455000000E-02;

w[29] = .39840962480827790000E-02;

int n=30;

double z=0;

double y;

for(i=0;i<n;i++)

x[k]=(b+a)/2.0+(b-a)/2.0*s[i];

y=fi.f(x);

z+=(b-a)/2*w[i]*y;

for(i=0;i<n;i++)

x[k]=(b+a)/2.0+(b-a)/2.0*(-s[i]);

y=fi.f(x);

z+=(b-a)/2.0*w[i]*y;

x[k]=tempxk;

return z;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
6 . Program 5.10 da verilen polar sýnýfýný inceleyiniz. Polar sýnýfýnýn kompleks sýnýfýyla
oldukça benzer olduðunu gözlemleyebilirsiniz. Bu iki sýnýfýn temel özelliklerinden yararlanan
abstact bir sýnýf oluºturunuz, bu sýnýfýn alt sýnýflarý olarak polar ve kompleks sýnýflarýný
yeniden tanýmlayýnýz. Bir örnek programda abstract sýnýf üzerinden polar ve kompleks
sýnýflarý çaðýrarak kullanýnýz.

Program 5.10 Polar sýnýfý tanýmý [Link]

public class polar

//duzlemde tanimlanmis polar koordinat sistemi

protected double R,teta;

public polar()

R=0;

teta=0;

public polar(double Ri,double tetai)

R=Ri;

teta=tetai;

public polar(polar y)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

R=[Link]();

teta=[Link]();

public void RGir(double Ri)

R=Ri;

public void tetaGir(double tetai)

teta=tetai;

public void polarGir(double Ri,double tetai)

R=Ri;

teta=tetai;

public void kartesienGir(double xi,double xj)

R=[Link](xi*xi+xj*xj);

teta=Math.atan2(xj,xi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double ROku()

return R;

public double tetaOku()

return teta;

public double xi()

return R*[Link](teta);

public double xj()

return R*[Link](teta);

public void topla(polar y)

kartesienGir((xi()+[Link]()),(xj()+[Link]()));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void fark(polar y)

kartesienGir((xi()-[Link]()),(xj()-[Link]()));

public polar polarOku()

return this;

public boolean esittir(polar v)

boolean b=((R==[Link]())&&(teta==[Link]()));

return b;

public boolean buyuktur(polar v)

return (this.R>[Link]());

public boolean kucuktur(polar v)

return (this.R<[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public String toString()

return ""+R+"*exp("+teta+"i) ";

BÖLÜM 6 : GRAFÝKLER, FONTLAR VE RENKLER

6.1 GÝRݪ

Daha önce applet çizerken [Link] kütüphanesi ndeki grafik (Graphics) sýnýfý ný
kullanmýºtýk. Ve grafik (Graphics) sinifinina ait drawString metotunu kullanarak applete yazý
yazdýrmýºtýk. ªimdi bu sýnýfýn diðer özelliklerini ve metotlarýný öðreneceðiz.

Graphics sýnýfý [Link] sýnýfýnýn altýnda yer alýr. Bu gurupta ayný zamanda grafik
çiziminin çeºitli fazlarýnda kullanýlan [Link], [Link]:Font, [Link],
[Link], [Link], [Link] yer alýr. Daha detaylý grafik çizme iºlemleri
tanýmlayabilen [Link]. Graphics2D paketi [Link] paketinden türetilmiºtir. Ayrýca
[Link], [Link], [Link] gibi temel grafik alt
programlarý da [Link] altýnda tanýmlanmýºtýr. Temel ºekilleri çizdirmeye yarayan
[Link], [Link].Line2D, [Link] de
[Link] altýnda tanýmlanýr. [Link].Arc2D, . [Link].Ellipse2D, .
[Link].Rectangle2D, . [Link].RoundRectangle2D gibi çizim paketleri de
[Link] paketinin alt paketleri olarak tanýmlanmýºtýr.

Graphics sýnýfý, yazý yazma, çizgi çizme, dikdörtgen, oval çizme gibi bir dizi metotu barýndýrýr.
Bunun dýºýnda awt kütüphanesinin önemli bir sýnýfý da Color sýnýfýdýr. Color sýnýfý rekleri
tanýmlar ve deðiºik renklerin kullanýmýna imkan verir. Font sýnýfý grafikte kullanýlan yazýlarýn
fontlarýnýn (yazý tipinin ve boyutunun) belirlenmesi amacýyla kullanýlýr. FontMetrics sýnýfý
fontlarýn boyutlarýnýn belirlenmesiyle ilgili metotlarý içerir. Polygon sýnýfý polygon çizimiyle
ilgili metotlarý barýndýrýr. Bu metodlarýn bir kýsmýný burada göreceðiz. Temel olarak Graphics
ve Graphics2D sýnýflarýný grafik çiziminde kullanacaðýz, Bu iºlemi yaparken de diðer tüm
yardýmcý grafik sýnýflarýndan yararlanacaðýz. Graphics2D sýnýfý daha yeni olarak tanýmlanmýº
ve Graphics sýnýfýndan türetilmiº bir sýnýftýr. Fakat çok daha komleks grafik çizim
kapasitelerini barýndýrýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java appletlerinde çizim yaparken ilk hatýrlamamýz gereken nokta, koordinat merkezinin
ekranýn sol üst köºesi olduðudur. X ekseni sola doðru, Y ekseni aºaðýya doðru gider.

[Link]

ªekil 6.1 Java grafik koordinat sistemi, x ve y eksenleri

Y ekseninin alta doðru gitmesi konsol programlarýnda (ve ilk konsol programlama ortamý olan
satýr yazýcýlarýnda) satýrlarýn alta dogru ilerlemesi gibi tarihi bir nedene dayanmaktadýr. Bütün
bilgisayar diileri ve ekraný grafik programlamalarýnda standartdýr.

6.2 GRAPHICS VE GRAPHICS2D SINIFLARI

Graphics sýnýfý grafik çizimi için gerekli olan bir çok metotu içinde barýndýrýr. Grafik sýnýfý
[Link] sýnýfýnýn alt sýnýflarýndandýr. Grafik çizme amacýyla genellikle Graphics
sýnýfýndan bir nesne paint veya paintComponent metotunun içinde çaðýrýlýr. Paint
metotunun tanýmý ºöyledir

public void paint (Graphics g)

Bu taným Applet, Japplet,JFrame extend etmiº programlardan çaðýrýlabilir. Paint metodu tüm
bu üç sýnýfýn türetildiði Component sýnýfýnda tanýmlanmýºtýr. [Link] sýnýfý altýnda
tanýmlanan JComponent sýnýfýnda ise paintComponent metodu tanýmlanmýºtýr.
JComponentin alt metodu JPanel bu metodu kullanýr. Tanýmý paint metoduna benzer

public void paintComponent (Graphics g)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
paint veya paintComponent metodlarý Applet, Japplet, Frame, JFrame, Panel, JPanel
sýnýflarý tarafýndan direk olarak program açýldýðýnda çaðýrýlýr. Kullanýcý tarafýndan çaðýrýlmaz.
Tekrar kullanýcý tarafýndan çaðýrýlmasý gerektiðinde ise repaint metotu kullanýlýr ve repaint
metotu üzerinden indirek olarak paint metotu çaðýrýlýr. Bu metodun tanýmý :

public void repaint ()

ºeklindedir.

Ýkinci ilginç metod update metodudur. Bu metod

public void update (Graphics g)

ºeklinde tanýmlanmýºtýr. Update metodu çaðýrýldýðýnda Graphics metodu sistem tarafýndan


otomatik olarak gönderilir. Graphics2D sýnýfý Graphics sýnýfýnýn bir alt sýnýfý olarak
tanýmlanmýºtýr. Bu sýnýf Graphicss sýnýfýna göre çok daha kompleks çizimler yapabilen
metodlara sahiptir. Burada graphics ve Graphics2D de yer alan bazý sýnýf ve çizim tekniklerini
yakýndan inceleyeceðiz.

6.1.1 drawString , drawChars ve drawBytes metotlarý

Graphics sýnýfýnýn altmetodlarý olan bu metotlarýn tanýmlarý ºu ºekilde verilmiºtir.

public abstract void drawString( String stringYazý, int x,int y)


public void drawChars( char charYazý[], int baslangýçindeksi,int yazýlacakharfsayýsý, int
x,int y)
public void drawBytes( byte byteYazý[],
int baºlangýçindeksi,int yazýlacakharfsayýsý, int x,int y)

drawString metotu bir string deðiºkenini verilen x ve y koordinatlarýndan baºlayarak çizer.

DrawChars bir boyutlu Char tipi deðiºken dizisini baºlangiçindeksi indeksinden baslayarak
yazýlacakharfsayýsý kadar kýsmýný x ve y koordinatlarýndan baºlýyarak çizer. DrawByte metotu
da drawChars metotu gibidir tek deðiºikliði Byte türü boyutlu deðiºken kullanmasýdýr.

Program 6.1. de bu metotlarýn kullanýlmasýný açýklayan bir program verilmiºtir.

Program 6.1 : [Link] programý : drawString,drawChars,drawBytes metotlarýnýn


kullanýlmasý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];

import [Link].*;

public class ciz extends Applet

private String s ="Bunu drawString Metoduyla yazdýr";

private char c[]={'c','h','a','r','s',' ','8'};

private byte b[]={'b','y','t','e',25,26,27};

public void paint(Graphics g)

[Link](new Color(0,0,100));

[Link](new Font("SansSerif",[Link],24));

[Link](s,100,25);

[Link](c,2,3,100,50);

[Link](b,0,5,100,75);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.2 drawString drawChars drawBytes metotlarýný kullanan ciz programýnýn
Applet çýktýsý

ªimdi ayný iºlemi ve ayný metodlarý Graphics2D üzerinden yaptýralým :

Program 6.2 : ciz2DSWF_2000.java programý : drawString,drawChars,drawBytes


metotlarýnýn swing JFrame ve Graphics2D ile birlikte kullanýlmasý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import renk;

public class ciz2DSWF_2000 extends JFrame {

final static Color bg = [Link];

final static Color fg = [Link];

final static Color red = [Link];

final static Color white = [Link];

private String s ="Bunu drawString Metoduyla yazdýr";

private char c[]={'k','a','r','e','k','t','e','r','l','e','r'};

public ciz2DSWF_2000()

//Initialize drawing colors

super("String character çizimi");

setBackground(bg);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
setForeground(fg);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link](new Font("TimesRoman",[Link],14));

[Link](s,100,50);

//ikinci charecterden baºlayarak 5 character yaz.

[Link](c,2,5,100,100);

//=====================================================

public static void main(String[] args)

ciz2DSWF_2000 pencere= new ciz2DSWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

Burada hemen belirtelimki swing sýnýflarýný kullanýrken Graphics2D sýnýflarý kullanmak


zorunda deðiliz, ama burada genel olarak swing ve Graphics2D kullanýmlarýný birlikte
sunacaðýz. Bu programýn çýktýsý da bir önceki programýn çýktýsýnda olduðu gibidir :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.3 drawString drawChars metotlarýný kullanan ciz2DSWF_2000 programýnýn
swing JFrame çýktýsý

Programdan da görüleceði gibi paint metodu yine Graphics cinsinden çaðýrýlmakta , daha
sonra

Graphics2D g2 = (Graphics2D)g;

Kullanýlarak adres Graphics2D sýnýfýndan nesneye yüklenmektedir.

6.3 RENK KONTROLÜ

Appletlerde renk controlu Color sýnýfýný kullanarak yapýlýr. Renk olusumunda monitör ve
Televizyon sistemlerinde kullanýlan RG B ( Red- Green-Blue = Kýrmýzý- Yesil - Mavi ) sistemi
temel alýnýr. Bu üç renk monitorde 0-255 arasý deðerler alabilir. Üç rengin karýºýmý toplam
256*256*256 renk tanýmlar.

Color sýnýfý kurucu metotlarý ºu ºekilden tanýmlanýr.

public Color( int kirmizi,int yesil,int mavi) //her renk 0-255 arasý

public Color(float kirmizi,float yeºil,float mavi) //her renk 0.0-1.0 arasý

Color sýnýfýnda ayrýca renk degerlerini okuyabildiðimiz

public int getRed() // Kýrmýzý tonunu oku


public int getGreen()//Yesil tonunu oku
public int getBlue()//Mavi tonunu oku
public abstract Color getColor() //rengi oku

metotlarý ve rengi deðiºtirebildiðimiz

public abstract Color setColor(Color c)

metotu mevcuttur. Color sýnýfýnda sabit olarak tanýmlanmýº :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Tablo 6.1 Color sýnýfýnda tanýmlanmýº sabir renkler

Renk sabiti Renk RGB deðeri


Public final static Color Orange Portakal 255,200,0
Public final static Color pink Pembe 255,175,175
public final static Color cyan Camgöbeði 0,255,255
public final static Color magenta Mor 255,0,255
public final static Color yellow Sarý 255,255,0
public final static Color black Siyah 0,0,0
public final static Color white Beyaz 255,255,255
public final static Color gray Gri 128,128,128
public final static Color lightGray Açýk gri 192,192,192
public final static Color darkGray Koyu Gri 64,64,64
public final static Color red Kýrmýzý 255,0,0
public final static Color green 0,255,0
Yeºil
public final static Color blue Mavi 0,0,255

Color sýnýfýnýn daha iyi anlaºýlabilmesi amacýyla Color sýnýfýnýn bir alt sýnýfý olan renk sýnýfýný
tanýmladýk.

Program 6.3 : Color sýnýfýnýn alt sýnýfý renk sýnýfýný tanýmlayan [Link] programý :

import [Link].*;

import [Link].*;

public class renk extends Color

public final static renk kirmizi=new renk(255,0,0);

public final static renk mavi=new renk(0,0,255);

public final static renk siyah=new renk(0,0,0);

public final static renk camgobegi=new renk(0,255,255);

public final static renk koyugri=new renk(64,64,64);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public final static renk gri=new renk(128,138,128);

public final static renk yesil=new renk(0,255,0);

public final static renk acikgri=new renk(192,192,192);

public final static renk mor=new renk(255,0,255);

public final static renk portakal=new renk(255,200,0);

public final static renk pembe=new renk(255,175,175);

public final static renk beyaz=new renk(255,255,255);

public final static renk sari=new renk(255,255,0);

public final static renk acikmavi=new renk(150,206,237);

public final static renk lacivert=new renk(0,0,128);

//burada kendi yeni renginizi tanýmlayabilirsiniz.

public renk(float kirmizi,float yesil, float mavi)

super(kirmizi,yesil,mavi);

public renk(double kirmizi,double yesil, double mavi)

super((float)kirmizi,(float)yesil,(float)mavi);

public renk(int kirmizi,int yesil, int mavi)

super(kirmizi,yesil,mavi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public renk(int RGB)

super(RGB);

public renk(renk r)

super([Link](),[Link](),[Link]());

public int getKirmizi()

return getRed();

public int getYesil()

return getGreen();

public int getMavi()

return getBlue();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int getKYM()

return getRGB();

public Color toColor()

return (Color)this;

public static renk toRenk(Color r)

{return (renk)r;}

public String toString()

return "renk[ kirmizi "+getKirmizi()+" mavi "+getMavi()+" yesil "+getYesil()+"]";

//metodlar

//static int HSBtoRGB(float hue,float saturation,float brightness)

//getRed(),getGreen(),getBlue(),getRGB()

Renk sýnýfýný bir çok yerde Color sýnýfý yerine kullanabiliriz. Kullanamadýðýmýz durumlarda
cast iºlemcisi (Color) kullanýlabilir.

Applette renk deðiºtirdiðimiz küçük bir örnek program yazalým :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 6.4 : [Link]

import [Link].*;

import [Link];

import renk;

public class RenkTest extends Applet

private int kirmizi,yesil,mavi;

public void init()

kirmizi=150;

yesil=255;

mavi=125;

// arka palanýn rengi mavi olarak veriliyor

setBackground([Link]);

public void paint(Graphics g)

// yazýnýn rengi 100,255,125 olarak alýndý

[Link](new renk(kirmizi,yesil,mavi));

[Link]("ABCDEFGHIJKLMNOPQRSTUVWXYZ",50,33);

showStatus("Su andaki arkaplan rengi : "+getBackground());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 6.4 [Link] çýktýsý

Bu programda kirmizi deðeri 100, yesil deðeri 255 ve mavi degeri de 125 alýnmýº ve setColor
deyimiyle yeni renk tanýmlanmýºtýr. Arka plan rengi ise public void setBackground(Color c)

Metotunu kullanarak maviye dönüºtürülmüºtür.

Ayný programýn JApplet eºidi olan, ayný zamanda java komutuyla kendi çerçevesini de
oluºturabilen bir eºdeðerini verelim. Renk2D sýnýfýnda Graphics2D sýnýfý kullanýlmaktadýr.
Grafik kalitesini karºýlaºtýrabilirsiniz.

Program 6.5 : [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class Renk2D extends JApplet {

private int kirmizi,yesil,mavi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void init()

kirmizi=100;

yesil=255;

mavi=125;

setBackground(new Color(0,0,255));

setForeground(new Color(kirmizi,yesil,mavi));

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

[Link](new Color(kirmizi,yesil,mavi));

[Link]("ABCDEFGHIJKLMNOPQRSTUVWXYZ",50,33);

[Link]("Su andaki renk : "+[Link](),50,53);

public static void main(String s[]) {

JFrame f = new JFrame("Renk2D");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

JApplet applet = new Renk2D();

[Link]().add("Center", applet);

[Link]();

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new Dimension(550,100));

[Link]();

Renk2D sýnýfýnýn çýktýsý :

[Link]

ªekil 6.4 [Link] çýktýsý

Swing sýnýfýnda renk seçimini yapabilmek amacýyla JColorChooser adlý bir program
tanýmlanmýºtýr. Bu programý kullanarak renk grafik kutusunun rengini deðiºtirebildiðimiz
renkSeciciSWF swing JFrame programý aºaðýda verilmiºtir.

Program 6.6 : renkSeciciSWF_2000 .java

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import BasicWindowMonitor;

public class renkSeciciSWF_2000 extends JFrame implements ActionListener

// Renk secme ornegi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JButton renkdegistir;

Color r=[Link];

Container c;

// pencereyi baslatma metodu

public renkSeciciSWF_2000()

super("JColorChoser ");

c=getContentPane();

[Link](new FlowLayout()) ;

renkdegistir=new JButton("renk deðiºtirmek için düðmeye basýnýz");

[Link](this);

[Link](renkdegistir);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

{ r=[Link](this,"Renk seçiniz :",r);

if(r==null)

r=[Link];

[Link](r);

repaint();

//=====================================================

public static void main(String[] args)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

//ana program

renkSeciciSWF_2000 pencere= new renkSeciciSWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

[Link] [Link]

[Link] [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.6-6.9 renkSeciciSWF_2000.java java swing frame programý ve JcolorChooser
renk seçme programý

Renk seciciSWF_2000.java programýnda temel olarak JFrame grafik çýktýsý kullanýlmýºtýr. Bu


programýn içerisinde çaðýrýlan

r=[Link](this,"Renk seçiniz :",r);

metodu java kütüphanesinde yer almaktadýr. ShowDialog metodu bize Color sýnýfýndaki renk
deðiºkenini aktarmakta ve

[Link](r);

komutuylada arka plan renklerini deðiºtirmektedir.

JFrame ve JApplet arasýndaki farký anlamaya biraz daha katkýda bulunmasý amacýyla ayný
programý bir de JApplet olarak verelim :

Program 6.7 : renkSeciciSWA_2000 .java

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import BasicWindowMonitor;

public class renkSeciciSWA_2000 extends JApplet implements ActionListener

// Renk secme ornegi

JButton renkdegistir;

Color r=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Container c;

// pencereyi baslatma metodu

public void init()

c=getContentPane();

[Link](new FlowLayout()) ;

renkdegistir=new JButton("renk deðiºtirmek için düðmeye basýnýz");

[Link](this);

[Link](renkdegistir);

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

r=[Link](this,"Renk seçiniz :",r);

if(r==null)

r=[Link];

[Link](r);

repaint();

JFrame ve JApplet programlarýnýn en büyük farký JFrame ana programdan (main) çalýºtýðý
halde JApplet’in bir browser programýndan çalýºtýrýlýyor olmasýdýr. Burada da en dýº çerçeve
dýºýnda JFrame ile ayný görüntüyü elde ederiz.

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.10 renkSeciciSWA_2000.java programýnýn Appletviewer’daki çýktýsý

6.4 YAZI KONTROLU

Appletlerde yazý kontrolu Font sýnýfý ný kullanarak yapýlýr. ªekil 5.3.1 de java 1.1.5 de
kullanýlabilecek tüm yazý stillerinin (font) listesini veren [Link] programýný görüyoruz.

Program 6.8 : [Link] programý, java kütüphanesinde mevcut olan yazý sitillerini
gösterir

import [Link].*;
import [Link].*;

public class stil extends Applet


{

public void paint(Graphics g)


{
String stilListesi[];
stilListesi=getToolkit().getFontList() ;
int y=15;
for(int i=0;i<[Link];i++)
{
[Link](stilListesi[i],15,y);
y+=15;
}
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.11 [Link] programý, java kütüphanesinde mevcut olan yazý sitillerini gösterir
applet programýnýn sonuçlarý.

Yine ayný programýn swing JApplet eºitini verelim :

Program 6.9 : [Link] programý, java kütüphanesinde mevcut olan yazý sitillerini
gösterir

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class stil2D extends JApplet {

public void init()

setBackground([Link]);

setForeground([Link]);

public void paint(Graphics g)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Graphics2D g2 = (Graphics2D) g;

String stilListesi[];

stilListesi=getToolkit().getFontList();

int y=15;

for(int i=0;i<[Link];i++)

[Link](stilListesi[i],15,y);

y+=15;

public static void main(String s[]) {

JFrame f = new JFrame("stil2D");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

JApplet applet = new stil2D();

[Link]().add("Center", applet);

[Link]();

[Link]();

[Link](new Dimension(550,300));

[Link]();

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.12 : [Link] program çýktýsý

Bu yazý sitillerinden birisi asaðýda verilen yazý tiplerinden birisiyle beraber ve verilen belli bir
yazý boyutunda gösterilebilir.

public final static int PLAIN : düz yazý sitili


public final static int BOLD : Kalýn yazý sitili
public static int ITALIC : Ýtalik (yatýk) yazý sitili

bu tanýmlardaki final sözcüðü bu ifadelerin deðiºken deðil sabit olduðunu gö[Link]


sýnýfýnýn kurucu metotu ºu ºekildedir.

Public Font( String s, int yazý_sitili, int harf_boyutu);

Bir appletin yazý sitili Graphics sýnýfýndaki setFont metotuyla deðiºtirilebilir.

Public abstract void setFont(Font f)

Örnek olarak aºaðýdaki deyimi verebiliriz :

[Link] (new Font(“Serif”,[Link],12);

ªimdi setFont metotunu küçük bir örnekte kullanarak gösterelim :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 6.10 : [Link] programý, java kütüphanesindeki Font uygulamasýný
gösterir

import [Link].*;
import [Link];

public class RenkFont extends Applet


{
private int kirmizi,yesil,mavi;

public void init()


{
kirmizi=100;
yesil=255;
mavi=125;
}

public void paint(Graphics g)


{
[Link](new Color(kirmizi,yesil,mavi));
setBackground(new Color(0,0,255));
[Link](new Font("TimesRoman",[Link],36));
[Link]("ABCDEFGHIJKLMNOPQRSTUVWXYZ",50,33);
showStatus("Su andaki font : "+[Link]());
}
}

[Link]

ªekil 6.13 [Link] programý, java kütüphanesindeki Font uygulamasýný gösterir

bu programýn da Japplet eºdeðerini verelim:

Program 6.11 : [Link] swing JApplet programý, java kütüphanesindeki Font


uygulamasýný gösterir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class RenkFont2D extends JApplet {

private int kirmizi,yesil,mavi;

public void init()

kirmizi=100;

yesil=255;

mavi=125;

setBackground(new Color(0,0,255));

setForeground(new Color(kirmizi,yesil,mavi));

public void paint(Graphics g)

Graphics2D g2 = (Graphics2D) g;

[Link](new Color(kirmizi,yesil,mavi));

setBackground(new Color(0,0,255));

Font font=[Link]();

[Link](new Font([Link](),[Link],24));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("ABCDEFGHIJKLMNOPQRSTUVWXYZ",50,33);

[Link]("Su andaki font : "+[Link](),50,70);

[Link](new Font([Link](),[Link],12));

[Link]("Su andaki font : "+[Link](),50,85);

public static void main(String s[]) {

JFrame f = new JFrame("RenkFont2D");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

JApplet applet = new RenkFont2D();

[Link]().add("Center", applet);

[Link]();

[Link]();

[Link](new Dimension(550,200));

[Link]();

[Link]

ªekil 6.14 [Link] JFrame programý, java kütüphanesindeki Font


uygulamasýný gösterir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
6.5 ÇiZGi ÇiZiMi

Javada çizgi çizmek için kullanýlan temel metot Graphics sýnýfýnda drawLine metotu dur. Bu
metot Graphics sýnýfýnda tanýmlanmýºtýr. Kurucu metotu :

Public abstract void drawLine(


int x1, // ilk noktanýn x koordinatý
int y1, //ilk noktanýn y koordinatý
int x2, // ikinci noktanýn x koordinatý
int y2) //ikinci noktanýn y koordinatý

Graphics2D sýnýfýnda ise çizgi çiziminde [Link] kütüphanesinde tanýmlanan Line2D


sýnýfý, Graphics2D sýnýfýndaki draw metoduyla birlikte kullanýlýr.

Bir küçük örnek problem [Link]' da drawLine metotunun kullanýmýný görelim:

Program 6.12 : Çizgi çizim örneði [Link]

import [Link].*;
import [Link];

import [Link].*;

public class cizgiciz extends Applet

public void paint(Graphics g)

[Link](new Color(0,0,0));

[Link](new Font("SansSerif",[Link],24));

[Link](10,10,230,95);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 6.615 ve çizginin appletde görünümü

ªimdi ayný problemin yaklaºýk eºidini cizgiSWF_2000.java programýnda görelim :

Program 6.13 : Çizgi çizim örneði cizgiSWF_2000.java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import renk;

public class cizgiSWF_2000 extends JFrame {

final static Color bg = [Link];

final static Color fg = [Link];

final static Color red = [Link];

final static Color white = [Link];

public cizgiSWF_2000()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

//Initialize drawing colors

super("çizgi çizimi");

setBackground(bg);

setForeground(fg);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

Line2D l=new [Link](50,50,100,75);

[Link](l);

[Link](new BasicStroke(1f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

Line2D l1=new [Link](50,150,100,175);

[Link](l1);

//=====================================================

public static void main(String[] args)

cizgiSWF_2000 pencere= new cizgiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 6.16 ve çizginin cizgiSWF_2000 JFrame çýktýsýnda görünümü

Bu programdaki temel çizim metodlarýna göz atalým :

Graphics2D g2 = (Graphics2D)g;

Graphics sýnýfý g nesnesini Graphics2D sýnýfi g2 nesnesine aktarýr.

[Link]([Link]);

Grafik çizim rengini siyah olarak tanýmlar.

Line2D l=new [Link](50,50,100,75);

Ýlk devamlý çizginin koordinatlarýný tanýmlar

[Link](l);

Ýlk devamli çizgiyi çizer

[Link](new BasicStroke(1f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

Çizgiyi noktalý çizme komutunu tanýmlar

Line2D l1=new [Link](50,150,100,175);

Noktalý çizginin koordinatlarýný tanýmlar

[Link](l1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Noktalý çizgiyi çizer.

Burada bizim için yeni bir kavram olan noktalý çizgi çizmenin detaylarýna biraz göz atalým.
Noktalýçizgi oluºturmak için temel olarak setStroke metodunu kullanýyoruz. Bu metodun
içinde Basic Stroke metodu bir nesne yaratýyoruz. BasicStroke türü nesne çizgi kalýnlýðý, çizgi
baðlama sitili,çizgi ucu bitiº sitili ve çizgi-boºluk bilgisi içerir. Çizgi kalýnlýðý çizgi istikametine
dik olarak ölçülür. Çizgi kalýnlýðý 1f (buradaki f sayýnýn float temel deðiºken türü olduðunu
belitir) 0.35277 milimetreye eºittir. Yalnýz transformasyon kullanýldýðýnda bu deðiºebilir.
Transformasyonlara biraz sonra deðineceðiz.

Çizgi baðlama sitili iki çizginin birbirine baðlandýðý noktadaki ºeklini belirler. BasicStroke
sýnýfýnda 3 baðlanma sitili mevcuttur. Bunlar :

JOIN_BEVEL

JOIN_MITER

JOIN_ROUND

sitilleridir. Çizgi ucu bitiº sitilleri boº çizgi ucunun ºeklini belirtir. Yine
temel olarak 3 BasicStroke çizgi ucu bitiº sitili mevcuttur. Bunlar :

CAP_BUTT
CAP_ROUND
CAP_SQUARE

sitilleridir. Çizgi boºluk bilgisi birbirini takip eden ºeffaf ve görünür çizgi
parçacýklarý ve bunlarýn boylarýný tanýmlar. Bir ara boºluk deðiºkeni ve
çizgi boºluk çizgi boºluk olmak üzere bir seriden oluºur. Son olarak
son rakam serinin hangi elemanýndan çizime baºlanacaðýný gösterir
Örneðin:

[Link](new BasicStroke(1,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,0,new float[] {10,5,2,5},0));

10 boyutu bir çizgi 5 boºluk 2 boyutu çizgi 5 boºluk belirtir.

[Link](new BasicStroke(1,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,5,new float[] {5},0));

5 boºluk ve 5 çizgi belirtir. cizgiSWF_2000.java programýnda çeºitli


stoke tiplerini deneyebilirsiniz.

6.6 DiKDÖRTGEN ÇÝZÝM Ý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java Graphics sýnýfýnda dikdörtgen çizmek için kullanýlan temel metot drawRect metotudur.
Bu metot Graphics sýnýfýnda tanýmlanmýºtýr. Bu metotlarýn tanýmý :

Public abstract void drawRect(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik) // dikdörtgenin yüksekliði

Bu metota ilave olarak dikdörtgenin içini verilen renkte boyayan

Public abstract void fillRect(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik) // dikdörtgenin yüksekliði

ve dikdörtgeni arkaplan renginde boyayan (silen)

Public abstract void clearRect(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik) // dikdörtgenin yüksekliði
metotlarý mevcuttur. DrawRect ve fillRec metotunun kullanýmý Program 6.6 da verilmiºtir.

Program 6.14 : [Link]

import [Link];
import [Link].*;

public class dikdortgenCiz extends Applet


{

public void paint(Graphics g)


{
[Link](new Color(255,0,0));
[Link](10,10,100,50);
[Link](129,10,100,50);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 6.17 [Link] programý ve [Link] appleti

Graphics2D metodunda dikdörtgen çizmek için

[Link](new [Link](x, y,dikdortgenEn,dikdortgenYukseklik));

kullanýlýr.

Dikdörtgenin içini maviye boyamak için

[Link]([Link]);

Rectangle2D dikdortgen2=new [Link](50,50,100,40);

[Link](dikdortgen2);

kullanýlabilir. Graphics2D de tek renk yerine deðiºen bir renk profiliyle boyamak da
mümkündür. Örneðin :

final static Color beyaz=[Link];

final static Color siyah=[Link];

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

Rectangle2D dikdortgen4=new [Link](250,50,100,40);

[Link](dikdortgen4);

kodu dikdörtgeni kýrmýzýdan beyaza dönüºen bir spekturumla boyar. Tüm bu kodu bir örnek
problemde gösterelim :

Program 6.15 : [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class dikdortgenSWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

public dikdortgenSWF_2000()

super("Dikdörtgen çizimi");

setBackground([Link]);

setForeground(siyah);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

Rectangle2D dikdortgen1=new [Link](55,55,90,30);

[Link](dikdortgen1);

[Link](siyah);

Rectangle2D dikdortgen2=new [Link](50,50,100,40);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](dikdortgen2);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,3f,new float[] {10f},0f));

[Link]([Link]);

Rectangle2D dikdortgen3=new [Link](50,150,100,40);

[Link](dikdortgen3);

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

Rectangle2D dikdortgen4=new [Link](250,50,100,40);

[Link](dikdortgen4);

GradientPaint kirmizidanmaviye=new
GradientPaint(250,150,kirmizi,350,190,[Link]);

[Link](kirmizidanmaviye);

Rectangle2D dikdortgen5=new [Link](250,150,100,40);

[Link](dikdortgen5);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

[Link]([Link]);

[Link](dikdortgen5);

//=====================================================

public static void main(String[] args)

dikdortgenSWF_2000 pencere= new dikdortgenSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](true);

Bu programýn çýktýsý :

[Link]

ªekil 6.18 çeºitli dikdörtgen çizimlerinin dikdortgenSWF_2000 JFrame çýktýsýnda


görünümü

Graphics sýnýfýnda Köºeleri yuvarlatýlmýº dikdörtgen çizmek içinse drawRoundRect


metotu kullanýlýr

Public abstract void drawRoundRect(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik, // dikdörtgenin yüksekliði
int koseeni, // yuvarlak kosenin eni
int koseyuksekligi )// yuvarlak kosenin yuksekligi

Bu metota ilave olarak dikdörtgenin içini verilen renkte boyayan

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Public abstract void fillRoundRect(
int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik, // dikdörtgenin yüksekliði
int koseeni, // yuvarlak kosenin eni
int koseyuksekligi )// yuvarlak kosenin yuksekligi

metotu da paralel olarak tanýmlanmýºtýr. Yine bir örnek problemde bu tanýmý kullanacak
olursak :

Program 6.16 : [Link] programý

import [Link];
import [Link].*;

public class yuvarlakKoseliDikdortgenCiz extends Applet


{
public void paint(Graphics g)
{
[Link](new Color(0,0,255));
[Link](new Font("SansSerif",[Link],12));
[Link](10,10,100,100,15,15);
[Link](120,10,100,100,15,15);
}
}

[Link]

ªekil 6.19 [Link] appleti

Graphics2D sýnýfýnda koºeleri yuvarlatýlmýº dikdörtgen çizmek için :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new [Link](x,
y,dikdortgenEn,dikdortgenYukseklik,xKöºeYarýçapý,yKöºeYarýçapý));

metodlarý kullanýlýr. Rakamsal örnek verirsek :

[Link]([Link]);

RoundRectangle2D dikdortgen2=new
[Link](50,50,100,40,15,15);

[Link](dikdortgen2);

kullanýlabilir. Dikdörtgenin içini boyamak içinse:

[Link]([Link]);

RoundRectangle2D dikdortgen2=new
[Link](50,50,100,40,15,15);

[Link](dikdortgen2);

kodu kullanýlabilir. Elbette bir önceki örnekte olduðu gibi spektrumlu boyama da mümkündür.
Tüm bu kodu bir örnek problemde gösterelim

Program 6.17 : yuvarlakKoseliDikdortgenSWF_200 [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class yuvarlakKoseliDikdortgenSWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public yuvarlakKoseliDikdortgenSWF_2000()

super("Yuvarlak Köºeli Dikdörtgen Çizimi");

setBackground([Link]);

setForeground(siyah);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

RoundRectangle2D dikdortgen1=new [Link](55,55,90,30,15,15);

[Link](dikdortgen1);

[Link](siyah);

RoundRectangle2D dikdortgen2=new [Link](50,50,100,40,15,15);

[Link](dikdortgen2);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,3f,new float[] {10f},0f));

[Link]([Link]);

RoundRectangle2D dikdortgen3=new
[Link](50,150,100,40,15,15);

[Link](dikdortgen3);

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

RoundRectangle2D dikdortgen4=new
[Link](250,50,100,40,15,15);

[Link](dikdortgen4);

GradientPaint kirmizidanmaviye=new
GradientPaint(250,150,kirmizi,350,190,[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kirmizidanmaviye);

RoundRectangle2D dikdortgen5=new
[Link](250,150,100,40,15,15);

[Link](dikdortgen5);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

[Link]([Link]);

[Link](dikdortgen5);

//=====================================================

public static void main(String[] args)

yuvarlakKoseliDikdortgenSWF_2000 pencere=

new yuvarlakKoseliDikdortgenSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.20 çeºitli köºesi yuvarlatýlmýº dikdörtgen çizimlerinin
yuvarlakKoselidikdortgenSWF_2000 JFrame çýktýsýnda görünümü

Graphics’de 3 boyutlu dikdortgen çizen draw3DRect ve fill3Drect metotlarý mevcutttur. Bu


metotlarýn tanýmlarý ºu ºekilde verilmiºtir.

Public abstract void draw3DRect(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik, // dikdörtgenin yüksekliði
boolean yukarýkaldýrma) // yukarý kalkýk 3üncü boyut

Public abstract void fill3DRect(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // dikdörgenin geniºliði
int yukseklik, // dikdörtgenin yüksekliði
boolean yukarýkaldýrma) // yukarý kalkýk 3üncü boyut

Program 61.8 : [Link] programý

import [Link];
import [Link].*;

public class ucBoyutluDikdortgenCiz extends Applet


{
public void paint(Graphics g)
{
[Link]([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new Font("SansSerif",[Link],12));
g.draw3DRect(10,10,100,100,true);
g.fill3DRect(120,10,100,100,true);
g.draw3DRect(10,120,100,100,false);
g.fill3DRect(120,120,100,100,false);
}
}

[Link]

ªekil 6.21 ucBoyutluDikdortgenCiz. html appleti

6.7 ÇÝZÝLEN ªEKÝLLERÝN DEÐݪTÝRÝLEREK ÇÝZÝMÝ (TRANSFORM)

Graphics2D sýnýfýnda çizilen ºekiller dinamik olarak deðiºtirilebilirler. Bu deðiºimler


döndürme, köºedençekip uzatma gibi deðiºik iºlemler olabilir. Bu deðiºtirme prosesini önce
bir örnekle gösterelim, sonrada izah etmeye çalýºalým.

Program 6.19 : [Link]

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class donmusDikdortgenSWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

public donmusDikdortgenSWF_2000()

super("Dödürülmüº - çekilmiº Dikdörtgen çizimleri");

setBackground([Link]);

setForeground(siyah);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

Rectangle2D dikdortgen1=new [Link](55,55,90,30);

AffineTransform at= [Link](45,50,50);

[Link](at);

[Link](dikdortgen1);

[Link](siyah);

Rectangle2D dikdortgen2=new [Link](50,50,100,40);

[Link](dikdortgen2);

[Link](new AffineTransform());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,3f,new float[] {10f},0f));

[Link]([Link]);

Rectangle2D dikdortgen3=new [Link](50,150,100,40);

AffineTransform at1= [Link](1.5,1.5);

[Link](at1);

[Link](dikdortgen3);

[Link](new AffineTransform());

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

Rectangle2D dikdortgen4=new [Link](250,50,100,40);

AffineTransform at2= [Link](0.4,0);

[Link](at2);

[Link](dikdortgen4);

[Link](new AffineTransform());

GradientPaint kirmizidanmaviye=

new GradientPaint(250,150,kirmizi,350,190,[Link]);

[Link](kirmizidanmaviye);

Rectangle2D dikdortgen5=new [Link](250,150,100,40);

[Link](dikdortgen5);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

[Link]([Link]);

AffineTransform at3= [Link](0.0,10.0);

[Link](at3);

[Link](dikdortgen5);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new AffineTransform());

//=====================================================

public static void main(String[] args)

donmusDikdortgenSWF_2000 pencere= new donmusDikdortgenSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

ªekil 6.22 çeºitli ºekli deðiºtirilmiº dikdörtgen çizimlerinin donmusDikdortgenSWF-


2000 JFrame çýktýsýnda görünümü

AffineTransform at= [Link](x,y,açýDerece);

ªekli x,y noktasý etrafýnda açýDerece kadar saat akranýnýn tersi yönde döndürür.

AffineTransform at2= [Link](xÇekiºi,yÇekiºi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekli x ekseninde xÇeliºi kadar, y ekseninde yÇekiºi kadar uzatýr (orijinal ºekilden elastik
ve üst köºesi tutturulmuº ºekilde)

AffineTransform at1=
[Link](xBoyutFaktörü,yBoyutFaktörü);

ªeklin boyutunu xBoyutFaktörü,yBoyutFaktörü faktörleriyle çarparak büyütür.

AffineTransform at3=
[Link](xTaºýmaFaktörü,yTaºýmaFaktörü);

ªekli yerinden hareket ettirir. Orijinal transforma geri dönmek için :

[Link](new AffineTransform());

metodu çaðýrýlabilir.

6.8 OVAL VE AÇILI OVAL ÇÝZÝMÝ

Graphics sýnýfýOval çizimi için drawOval ve fillOval metotlarý kullanýlýr bu metotlarýn tanýmý
ºöyledir :

Public abstract void drawOval (


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // ovalin geniºliði
int yukseklik) // ovalin yüksekliði

Public abstract void fillOval(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // ovalin geniºliði
int yukseklik) // ovalin yüksekliði

(x1,y1) koordinatýnýn ovalle iliºkisini daha iyi anlayabilmek için aºaðýdaki grafiði verebiliriz :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.23 Oval tanýmý koordinat sistemi

Oval programýný küçük bir örnek programda kullanalým :

Program 6.20 : [Link] programý

import [Link];
import [Link].*;
public class daireCiz extends Applet
{

public void paint(Graphics g)


{
[Link](new Color(0,0,255));
[Link](10,10,50,50);
[Link](70,10,50,50);
}
}

[Link]

ªekil 6.24 [Link] apleti

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Graphics ile bir ovalin tamamýný deðilde sadece bir bölümünü çizmek dilenilirse, drawArc ve
fillArc metotlarý kullanýlabilir. Bu metotlarýn tanýmý :

Public abstract void drawArc(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // ovalin geniºliði
int yukseklik, // ovalin yüksekliði
int baºlangýçaçýsý, //arkýn baºlangýç açýsý, derece
int çizimaçýsý) // arkýn çizim açýsý, derece

Public abstract void fillArc(


int x1, // üst tepe noktanýn x koordinatý
int y1, // üst tepe noktanýn y koordinatý
int en, // ovalin geniºliði
int yukseklik, // ovalin yüksekliði

int baºlangýçaçýsý, //arkýn baºlangýç açýsý, derece


int çizimaçýsý) // arkýn çizim açýsý, derece

ªimdi de bu metotu kullanan bir bilgisayar programý yazalým :

Program 6.21 : [Link], arc çizimi programý

import [Link];
import [Link].*;

public class arcCiz extends Applet


{

public void paint(Graphics g)


{
[Link](new Color(0,0,255));
[Link](new Font("SansSerif",[Link],12));
[Link](70,10,50,50);
[Link](10,10,50,50,30,60);
[Link](70,10,50,50,30,60);
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.25 [Link] apleti

Graphics2D sýnýfýnda oval (elips) çizmek için :

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

Ellipse2D elips1=new [Link](x,y,en,yükseklik);

[Link](elips1);

kullanabiliriz. Ýçini boyamak için ise :

[Link](elips1);

metodunu kullanýrýz.

Yine örneðimizde kullanacak olursak :

Program 6.21 : elipsSWF_2000 .java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class elipsSWF_2000 extends JFrame {

final static Color kirmizi=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
final static Color beyaz=[Link];

final static Color siyah=[Link];

public elipsSWF_2000()

super("Elips çizimi");

setBackground([Link]);

setForeground(siyah);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

Ellipse2D elips1=new [Link](55,55,90,30);

[Link](elips1);

[Link](siyah);

Ellipse2D elips2=new [Link](50,50,100,40);

[Link](elips2);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,3f,new float[] {10f},0f));

[Link]([Link]);

Ellipse2D elips3=new [Link](50,150,100,40);

[Link](elips3);

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

Ellipse2D elips4=new [Link](250,50,100,40);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](elips4);

GradientPaint kirmizidanmaviye=new
GradientPaint(250,150,kirmizi,350,190,[Link]);

[Link](kirmizidanmaviye);

Ellipse2D elips5=new [Link](250,150,100,40);

[Link](elips5);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

[Link]([Link]);

[Link](elips5);

//=====================================================

public static void main(String[] args)

elipsSWF_2000 pencere= new elipsSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.26 çeºitli oval (elips) çizimlerinin elipsSWF_2000JFrame çýktýsýnda
görünümü

6.9 ÇÝZÝMÝN SEÇÝLEN BÝR RESÝMLE DOLDURULMASI

Graphics2D sýnýfýnda bir grafiði boyarken bir resim dosyasýnýn içinde tanýmlanan bir motifi de
kullanabiliriz.

Program 6.22 :textureE lipsSWF_2000.java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

import [Link].*;

public class textureElipsSWF_2000 extends JFrame {

TexturePaint tp = getImageTexture("[Link]");

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public textureElipsSWF_2000()

super("Elips çizimi");

setBackground(beyaz);

setForeground(siyah);

public TexturePaint getImageTexture(String imageFile)

URL url = getClass().getResource(imageFile);

Image img = getToolkit().getImage(url);

try {

MediaTracker tracker = new MediaTracker(this);

[Link](img, 0);

[Link](0);

} catch (Exception e) {}

int width = [Link](this);

int height = [Link](this);

BufferedImage buffImg = new BufferedImage(width, height,


BufferedImage.TYPE_INT_ARGB);

Graphics g = [Link]();

[Link](img, 0, 0, this);

Rectangle2D rect = new Rectangle(0, 0, width, height);

return new TexturePaint(buffImg, rect);

//************

public void paint(Graphics g) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Graphics2D g2 = (Graphics2D)g;

[Link](tp);

Ellipse2D elips1=new [Link](55,55,90,30);

[Link](elips1);

[Link](siyah);

Ellipse2D elips2=new [Link](50,50,100,40);

[Link](elips2);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,3f,new float[] {10f},0f));

[Link]([Link]);

Ellipse2D elips3=new [Link](50,150,100,40);

[Link](elips3);

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

Ellipse2D elips4=new [Link](250,50,100,40);

[Link](elips4);

[Link](tp);

Ellipse2D elips5=new [Link](250,150,100,40);

[Link](elips5);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

[Link]([Link]);

[Link](elips5);

//=====================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args)

textureElipsSWF_2000 pencere= new textureElipsSWF_2000();

[Link](new BasicWindowMonitor());

[Link](300,300);

[Link](true);

//************

[Link]

ªekil 6.27 çeºitli oval (elips) çizimlerinin ve arkaplan resimli boyama iºleminin
textureElipsSWF_2000JFrame çýktýsýnda görünümü

Burada texture [Link] dosyasýndan

public TexturePaint getImageTexture(String imageFile)

metodu kullanýlarak aktarýlmýº ve aynen yeni bir renk gibi çizim ortamýnda kullanýlmýºtýr.

ªimdi de Graphics2D metoduyla arc çizdirmeye bakalým arc yukarda da bahsettiðimiz gibi
tamamlanmamýº bir elipstir.

Program 6.23 : arcSWF_2000.java

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class arcSWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

public arcSWF_2000()

super("arc çizimi");

setBackground([Link]);

setForeground(siyah);

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link]([Link]);

Arc2D arc1=new [Link](55,55,90,30,90,270,[Link]);

[Link](arc1);

[Link](siyah);

Arc2D arc2=new [Link](50,50,100,40,90,270,[Link]);

[Link](arc2);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
BasicStroke.JOIN_ROUND,3f,new float[] {10f},0f));

[Link]([Link]);

Arc2D arc3=new [Link](50,150,100,40,90,270,[Link]);

[Link](arc3);

GradientPaint kirmizidanbeyaza=new GradientPaint(250,50,kirmizi,350,90,beyaz);

[Link](kirmizidanbeyaza);

Arc2D arc4=new [Link](250,50,100,40,90,270,[Link]);

[Link](arc4);

GradientPaint kirmizidanmaviye=new
GradientPaint(250,150,kirmizi,350,190,[Link]);

[Link](kirmizidanmaviye);

Arc2D arc5=new [Link](250,150,100,40,90,270,[Link]);

[Link](arc5);

[Link](new BasicStroke(2f,BasicStroke.CAP_ROUND,

BasicStroke.JOIN_ROUND,1f,new float[] {5f},0f));

[Link]([Link]);

[Link](arc5);

//=====================================================

public static void main(String[] args)

arcSWF_2000 pencere= new arcSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 6.28 çeºitli tamamlanmamýº oval (ark) çizimlerinin arcSWF_20000 JFrame


çýktýsýnda görünümü

6.10 POLYGON ÇÝZÝMÝ

Graphics sýnýfýnda Açýk ve kapalý polygon ºekilleri çizmek için drawPolygon ve fillPolygon
metotlarý kullanýlýr. Metotlarýn tanýmý :

Program 6.24 : [Link]

public abstract void drawPolygon(


int x[], // x koordinat vektörü
int y[], // y koordinatý vektörü
int nokta sayýsý) // nokta sayýsý

public abstract void drawPolyline(


int x[], // x koordinat vektörü
int y[], // y koordinatý vektörü
int nokta sayýsý) // nokta sayýsý

public abstract void drawPolygon( Polygon p) //Graphics sýnýfý metotu

public Polygon() //Polygon sýnýfý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public Polygon(
int x[], // x koordinat vektörü
int y[], // y koordinatý vektörü
int nokta sayýsý) // nokta sayýsý

Metot tanýmlarýndan da görüldüðü gibi polygon int türü vektörle çizilebileceði gibi bu vektörü
içinde barýndýran Polygon sýnýfý bir nesne kullanýlarak ta çizilebilir.

Örnek olarak üçgen çizen bir program verelim :

Program 6.25 : [Link], poligon çizim programý

import [Link];
import [Link].*;
public class ucgenCiz extends Applet
{
public void paint(Graphics g)
{
int x[]={10,(int)(10+100*[Link]([Link]/3.0)),110,10};
int y[]={100,(int)(100-100*[Link]([Link]/3.0)),100,100};
int x1[]={130,(int)(130+100*[Link]([Link]/3.0)),230,130};
int y1[];
y1=y;
[Link](new Color(0,0,255));
[Link](x,y,4);
[Link](x1,y1,4);
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.29 [Link] programý ve apleti

Graphics2D programýnda grafik çizdirmek için kullanýlan metodlar Graphics sýnýfýna göre
oldukça deðiºiktir. Burada önce örnek programýmýzý verelim:

Program 6.26 : [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class polygonSWF extends JFrame

public polygonSWF()

super("Polygon çizimi");

public void paint(Graphics g)

int x[]={55,67,109,73,83,55,27,37,1,43};

int y[]={0,36,36,54,96,72,96,54,36,36};

Graphics2D g2=(Graphics2D)g;

GeneralPath yildiz=new GeneralPath();

[Link](x[0],y[0]);

for(int i=1;i<[Link];i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{[Link](x[i],y[i]);}

[Link]();

[Link](200,200);

for(int i=0;i<20;i++)

[Link]([Link]/10.0);

[Link](new Color((int)([Link]()*256),(int)([Link]()*256),

(int)([Link]()*256)));

[Link](yildiz);

[Link](new BasicStroke(2));

[Link]([Link]);

[Link](yildiz);

public static void main(String[] args)

polygonSWF pencere= new polygonSWF();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.30 çeºitli yýldýzlarýn (polygonun) çizim ve döndürme iºlemi polygonSWF
JFrame çýktýsýnda görünümü

bu programda önce

int x[]={55,67,109,73,83,55,27,37,1,43};

int y[]={0,36,36,54,96,72,96,54,36,36};

GeneralPath yildiz=new GeneralPath();

[Link](x[0],y[0]);

for(int i=1;i<[Link];i++)

{[Link](x[i],y[i]);}

[Link]();

ile yýldýz tanýmlanmýº, ve

[Link](yildiz);

ile çizilmiº, ve

[Link](yildiz);

ile içi boyanmýºtýr. Ayrýca

[Link](200,200); ile çizim baºlama noktasý 200,200 noktasýna kaydýrýlmýº ve

[Link]([Link]/10.0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
komutu ile döndürülmüºtür. Programda setPAint kullanarak tesadüfi renkler seçilmiº ve yýldýz
çizimi doldurulmuºtur.

Programda kullanýlan

GeneralPath yildiz=new GeneralPath();

Terimine özellikle dikkatinizi çekmek isteriz. Bu terim GeneralPath nesnesi yýldýzý tanýmlar.

6.11 GENELLEªTÝRÝLMݪ EÐRÝ ÇÝZÝMÝ

GeneralPath nesnesi kullanarak polinomdan çok daha kompleks çekiller de tanýmlayabiliriz.

Program 6.28 : generalPathSWF_2000 .java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class generalPathSWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

public generalPathSWF_2000()

super("ikinci ve üçüncü dereceden genel eðri çizimi");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

setBackground([Link]);

setForeground(siyah);

Dimension boyut=getSize();

int dx=[Link];

int dy=[Link];

[Link](siyah);

[Link](new BasicStroke(3));

g2.draw3DRect(0,0,dx-3,dy-3,true);

g2.draw3DRect(3,3,dx-7,dy-7,false);

GeneralPath sekil=new GeneralPath(GeneralPath.WIND_EVEN_ODD);

[Link](20,20);

//quadratik ekleme

[Link](160,120,245,45);

//kübik ekleme

[Link](195,95,295,145,245,195);

[Link](-80,110,345,110,20,195);

[Link](400,250,200,250,20,20);

[Link](sekil);

//=====================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args)

generalPathSWF_2000 pencere= new generalPathSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

ªekil 6.31 ikinci ve üçüncü dereceden genel eðri çizimi, generalPathSWF_2000,


JFrame çýktýsýnda görünümü

Bu çizimdeki çizginin oldukça düzgün olduðuna dikkatinizi çekeriz. Bunu saðlayan temel
komut :

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

Komutudur. Bu komut çizgileri daha düzgün hale getirir, fakat belli bir hesap ve hafýza
kapasitesi harcar. Programý bu komutu çýkararak da çalýºtýrýnýz ve aradaki farklarý inceleyiniz.

ªekli oluºturan temel komutlar:

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
GeneralPath sekil=new GeneralPath(GeneralPath.WIND_EVEN_ODD);

[Link](20,20);

//quadratik ekleme

[Link](160,120,245,45);

//kübik ekleme

[Link](195,95,295,145,245,195);

komutlarýdýr. Daha sonra bu ºekiller

[Link](sekil);

komutuyla çizdirilmiºtir.

[Link](sekil);

komutu burada kullanýlmamakla birlikte, geçerli bir komuttur. Programda deneyiniz. Bu


programda çizdirilen ikinci dereceden (quadratik eðriler) quadTo ve curveTo metodlarý
kullanýlarak oluºturulmuºtur. ªimdi de ikinci derece polynom uydurmasýný QuadCurve2D
sýnýfýný kullanarak yapan bir programý inceleyelim :

Program 6.29 : curve2SWF_2000 .java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class curve2SWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public curve2SWF_2000()

super("ikinci dereceden eðri çizimi");

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

setBackground([Link]);

setForeground(siyah);

Dimension boyut=getSize();

int dx=[Link];

int dy=[Link];

[Link](siyah);

g2.draw3DRect(0,0,dx-3,dy-3,true);

g2.draw3DRect(3,3,dx-7,dy-7,false);

[Link](siyah);

QuadCurve2D qc2=new [Link](0,125,140,225,225,150);

[Link](qc2);

QuadCurve2D qc2_1=new [Link](0,200,155,225,225,170);

[Link]([Link]);

[Link](qc2_1);

//=====================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args)

curve2SWF_2000 pencere= new curve2SWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

ªekil 6.32 ikinci dereceden genel eðri çizimi, curve2SWF_2000, JFrame çýktýsýnda
görünümü

ªimdide üçüncü dereceden eðri uyduran bir program koduna göz atalým :

Program 6.30 : curve3SWF_2000.java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class curve3SWF_2000 extends JFrame {

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

final static Color siyah=[Link];

public curve3SWF_2000()

super("üçüncü dereceden eðri çizimi");

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

setBackground([Link]);

setForeground(siyah);

Dimension boyut=getSize();

int dx=[Link];

int dy=[Link];

[Link](siyah);

g2.draw3DRect(0,0,dx-3,dy-3,true);

g2.draw3DRect(3,3,dx-7,dy-7,false);

[Link](siyah);

CubicCurve2D cc3=new [Link](50,175,140,90,10,90,100,175);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](cc3);

CubicCurve2D cc3_1=new [Link](50,275,140,190,10,190,100,275);

[Link]([Link]);

[Link](cc3_1);

//=====================================================

public static void main(String[] args)

curve3SWF_2000 pencere= new curve3SWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,300);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.33 üçüncü dereceden genel eðri çizimi, curve3SWF_2000, JFrame çýktýsýnda
görünümü

6.12 RESÝM GÖSTERÝMÝ

Java dili sadece .gif ve .jpg standartlarýndaki resimleri gösterebilir. Resim önce getImage
metotuyla bir Image sýnýfý nesneye yuklenir, sonra drawImage metotuyla gösterilir.

Orneðin Image resim=getImage(getDocumentBase(),”[Link]”);

Ve resim [Link](resim,1,1,this); deyimiyle çizilir. Burada ikinci ve üçüncü noktalar


baºlangýç x ve y koordinatlarýdý[Link] olarak this resmin çizileceði appletiniçinde bulunulan
sýnýfýn appleti olduðunu belirtmektedir.

Bir örnek problemle resim çizimini biraz daha belirgin hale getitelim :

Program 6.31: [Link] resim aktarým programý

import [Link];

import [Link].*;

public class resim extends Applet

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

private Image res;

public void init()

res=getImage(getDocumentBase(),"[Link]");

public void paint(Graphics g)

[Link](res,1,1,this);

/*

// resmi orijinalinin iki katý boyunda ciziniz

int en=[Link](this);

int yukseklik=[Link](this);

[Link](res,1,90,en*2,yukseklik*2,this);

*/

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 6.34 : Resmin java üzerinden aktarýlmasý, [Link]

Java grafik çizim olasýlýklarý burada verilenden çok aha geniº boyutludur. Bu bölümde
veremediðimiz bir çok detayý javanýn parasýz olarak çekebileceðiniz döküman
kütüphanesinde bulabilirsiniz.

6.13 ALIªTIRMALAR

1. [Link] programýný inceleyiniz.

Program 6.13 [Link]

import [Link];
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class ciz1 extends Applet
{
private String s ="Bunu drawString Metotuyla yazdir";
private char c[]={'c','h','a','r','s',' ','8'};
private byte b[]={'b','y','t','e',75,76,77};
public void init()
{
Color c=new Color(0,0,255);
setBackground(c);
}

public void paint(Graphics g)


{
[Link](new Color(100,255,125));
[Link](new Font("SansSerif",[Link],24));
[Link](s,100,25);
[Link](c,2,3,100,50);
[Link](b,0,6,100,75);
}
}

[Link]

ªekil 6.15 [Link] appleti

2. Ýki boyutlu plot çizimi amacýyla bir program paketi hazýrlanmýºtýr. Bu paket temel
olarak üç java programýndan oluºmaktadýr. Birinci program dosyadan plot bilgisini
okuyan [Link] programýdýr. Çizilecek Plotla ilgili en temel bilgi [Link] dosyasýnda
bulunmaktadýr. Bu dosyadaki ilk satýr Pot baºlýðýný, ikinci satýr x ekseni baºlýðýný, üçüncü
satýr y ekseni baºlýðýný, dördüncü satýr çizilecek iki boyutlu plot sayýsýný (okunacak dosya
sayýsýný), beºinci ve sonraki satýrlar plot bilgisinin olduðu dosya ismi, çizgi çizim türü, ve
integer RGB renk deðerlerini vermektedir. Çizgi çizim türlerini bazýlarý

// plottype = 0 sürekli çizgi


// plottype = 10 kullanýcý tarafýndan tanýmlanan karakter
// plottype = 20 dikdörtgen
// plottype = 21 daire
// plottype = 22 üçgen

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// plottype = 23 eºkenar dörtgen
// plottype = 24 beºgen

// plottype = 25 altýgen

eðer çizgi türü 10 olarak tanýmlanmýºsa kullanýlacak olan karakterinde verilmesi gerekir

[Link] 10 * 0 0 255 gibi. Aºaðýda örnek bir [Link] dosyasý deðeri verilmektedir.

türkçe yazý

x ekseni

y ekseni

[Link] 26 0 0 255

[Link] 5 0 0 255

Plot bilgi dosyasýnda iki kolon olarak x,y plot bilgisi verilir. Küçük bir örnek dosyasý verecek
olursak :

11
24
39
4 16
5 25
6 36
7 49

Burada bilgi dosyadan okunmaktadýr. Dosya okuma yazma komutlarýný daha detaylý olarak
10. bölümde inceleyeceðiz.

Program 6.14 : [Link]

//======================================================
// Numerical Analysis package in java
// Plot class to plot 2D data
// Dr. Turhan Coban

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// =====================================================
import [Link].*;

public class Plot


{
public String label; // Plot Label
public String xlabel; // X axis Label
public String ylabel; // Y axis Label
public String filename; // file name
public double xmax,xmin,ymax,ymin; // real max,min scale
public int xabsmin,yabsmin,abswidth,absheight; // absolute max,min scale
public int nmax; // max number of data points
public int nline; // max number of data sets
public double x[][]; // x data
public double y[][]; // y=f(x) data
public int n[]; // n : number of data in each line
public int red[],green[],blue[]; // color code 0-255
public int plottype[];
public int xgridon;
public int ygridon;
// plottype = 0 continuous line
// plottype = 10 user defined character plot
// plottype = 20 rectangle
// plottype = 21 circle
// plottype = 22 triangle
// plottype = 23 diamond

// plottype = 24 pentagon
// plottype = 25 hexagon
public char ch[]; // plot character (used with plottype 10)
public int xntic; // number of tics in x axis
public int yntic; // number of tics in y axis
BufferedReader fin;
BufferedReader ffile;
File plotFile;
File lineDataFile;
public void set_plotwindow(int width,int height,double xip,double yip,double dxp,double dyp)
{
//sets rectangular plot window
xabsmin = (int)(width*(xip+0.2));
yabsmin = (int)(height*(yip+0.2));
abswidth = (int)(width*dxp);
absheight = (int)(height*dyp);
}

public Plot(String pl,String xl,String yl,int xnt,int ynt


,int xgo,int ygo,String ifn[],int ipt[],int ir[],int ig[]
,int ib[]) throws IOException
{
xmin=9.99e50;
xmax=-9.99e50;
ymin=9.99e50;
ymax=-9.99e50;
xntic=8;
yntic=8;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double xtemp,ytemp;
label=pl;
xlabel=xl;
ylabel=yl;
nline=[Link];
xntic=xnt;
yntic=ynt;
xgridon=xgo;
ygridon=ygo;
n=new int[nline];
red=new int[nline];
green=new int[nline];
blue=new int[nline];
plottype=new int[nline];
ch=new char[nline];
//read all data to determine limit values
String fn[];
fn=new String[nline];
int i,j;
for(i=0;i<nline;i++)
{
fn[i]=ifn[i];
plottype[i]=ipt[i];
if(plottype[i] == 10) ch[i]='*';
red[i]=ir[i];
green[i]=ig[i];
blue[i]=ib[i];
j=0;
n[i]=0;

//open ffile
try
{
ffile=new BufferedReader(new FileReader(fn[i]));
} catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);
}
try
{
while(ffile!=null)
{
xtemp=[Link](ffile);
ytemp=[Link](ffile);
if(xtemp<xmin) xmin=xtemp;
if(xtempxmax) xmax=xtemp;
if(ytemp<ymin) ymin=ytemp;
if(ytempymax) ymax=ytemp;
n[i]++;
}
} catch(EOFException e_eof) { [Link]();}
if(i==0) nmax=n[i];
else
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if(n[i]nmax) nmax=n[i];
}
x=new double[nline][nmax];
y=new double[nline][nmax];
for(i=0;i<nline;i++)
{
//open ffile
try{
ffile=new BufferedReader(new FileReader(lineDataFile));
} catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);
}
for(j=0;j<n[i];j++)
{
x[i][j]=[Link](ffile);
y[i][j]=[Link](ffile);
}
}
}
set_plotwindow(400,400,0.1,0.1,0.9,0.9);
}

public Plot() throws IOException


{
//adding max-min prompts and input fields
//initial values of max and mins
// Structure of input file
// filename
// xlabel
// ylabel

// nline xntic yntic xgridon ygridon


// datafilename plottype redcolor greencolor bluecolor
// ........
// datafilename plottype redcolor greencolor bluecolor

//
// A sample data file input :
//

// 4 10 10 1 1
// [Link] 22 0 0 0
// [Link] 21 0 255 0
// [Link] 0 0 255 0
// [Link] 0 0 0 255
//
// see above for meaning of plot types
xmin=9.99e50;
xmax=-9.99e50;
ymin=9.99e50;
ymax=-9.99e50;
xntic=8;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
yntic=8;
double xtemp,ytemp;
try{
fin=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);
}
label=[Link](fin);
xlabel=[Link](fin);
ylabel=[Link](fin);
nline=[Link](fin);
xntic=[Link](fin);
yntic=[Link](fin);
xgridon=[Link](fin);
ygridon=[Link](fin);
n=new int[30];
red=new int[30];
green=new int[30];
blue=new int[30];
plottype=new int[30];
ch=new char[30];
//read all data to determine limit values
String fn[];
fn=new String[nline];
int i,j;
for(i=0;i<nline;i++)
{
fn[i]=[Link](fin);
plottype[i]=[Link](fin);
if(plottype[i] == 10) ch[i]=[Link](fin);
red[i]=[Link](fin);
green[i]=[Link](fin);
blue[i]=[Link](fin);
j=0;
n[i]=0;

//open ffile
try{
ffile=new BufferedReader(new FileReader(fn[i]));
} catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);
}
try{
while(ffile!=null)
{
xtemp=[Link](ffile);
ytemp=[Link](ffile);
if(xtemp<xmin) xmin=xtemp;
if(xtempxmax) xmax=xtemp;
if(ytemp<ymin) ymin=ytemp;
if(ytempymax) ymax=ytemp;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
n[i]++;
}
} catch(EOFException e_eof)
{
//close ffile
try{
[Link]();
} catch(IOException e)
{
[Link]("Error Closing File\n"+[Link]());
[Link](1);
}
} //End of EOFException

if(i==0) nmax=n[i];
else
{
if(n[i]nmax) nmax=n[i];
}
}
//close ffile
try{
[Link]();
} catch(IOException e)
{
[Link]("Error Closing File\n"+[Link]());
[Link](1);
}
x=new double[nline][nmax];
y=new double[nline][nmax];
//re-read the data again to load it
for(i=0;i<nline;i++)
{
//open ffile
try{
ffile=new BufferedReader(new FileReader(fn[i]));
} catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);

}
for(j=0;j<n[i];j++)
{
x[i][j]=[Link](ffile);
y[i][j]=[Link](ffile);

}
//close ffile
try{
[Link]();
} catch(IOException e)
{
[Link]("Error Closing File\n"+[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](1);
}

}
set_plotwindow(400,400,0.1,0.1,0.9,0.9);
//close fin
try{
[Link]();
} catch(IOException e)
{
[Link]("Error Closing File\n"+[Link]());
[Link](1);
}
}

Program 6.15 : [Link]

//======================================================
// Numerical Analysis package in java
// PlotShapes class
// This class convert graphic draw methods to
// plot coordinates and gives additional plotting methods
// Dr. Turhan Coban
// =====================================================
import [Link].*;
import [Link].*;
import [Link];

public class PlotShapes


{
Graphics g;
int xabsmin,yabsmin;
int absheight,abswidth;
double xmin,xmax,ymin,ymax;

public PlotShapes(Graphics gi,int xabsmini ,int yabsmini,


int absheighti,int abswidthi,
double xmini,double xmaxi,
double ymini,double ymaxi)
{
// xabsmin : absulute stating point x axis
// yabsmin : absolute starting point y axis
// absheight : absoulute height of plotting window
// abswidth : absolute width of plotting window

// xmin : minimum x value (real number)


// xmax : maximum x value (real number)
// ymin : minimum y value (real number)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// ymax : maximum y value (real number)
// g : graphic object that actual drawing is done through
g=gi;
xabsmin=xabsmini;
yabsmin=yabsmini;
absheight=absheighti;
abswidth=abswidthi;
xmin=xmini;
xmax=xmaxi;
ymin=ymini;
ymax=ymaxi;
}

public void drawLine(int plottype,double x1,double y1,double x2,double y2)


{
// draw a line from (x1,y1) to (x2,y2)
if(plottype==0) //draw a continuous line
{
[Link]( (int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight),
(int)(xabsmin+(x2-xmin)/(xmax-xmin)*abswidth),
(int)(yabsmin+absheight-(y2-ymin)/(ymax-ymin)*absheight));
}
} //end of drawLine

public void drawChar(char ch,double x1,double y1)


{
// draws a single character at (x1,y1)
char ch1[]=new char[1];
ch1[0]=ch;
int h=[Link]().getHeight();
int w=h-2;
[Link](ch1,0,1,
(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth)-2,
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+h/2);
} //end of [Link]

public void drawChars(char ch[],int firstspace,int numberofchars,


double x1,double y1)
{
// draws a character array from space firstspace to (firstspace+numberofchars)
// starting at (x1,y1)
int h=[Link]().getHeight();
int w=h-2;
[Link](ch,firstspace,numberofchars,
(int)((xabsmin+(x1-xmin)/(xmax-xmin)*abswidth)+5),
(int)((yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+h/2));

} //end of [Link]

public void drawString(String s,double x1,double y1)


{
//draws a String at (x1,y1)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int h=[Link]().getHeight();
int w=h-2;
[Link](s,
(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));

} //end of [Link]

public void drawRect(double x1,double y1,int rectwidth,int rectheight)


{
// draw a rectangle starting at (x1,y1)
// with dimensions of (rectwidth,rectheight)
[Link](
(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-rectwidth/2),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight-rectheight/2),
rectwidth,rectheight);

}//end of drawRect

public void drawOval(double x1,double y1,int width,int height)


{
// draw an oval with the centre of (x1,y1)
// with dimension of (width,height)
[Link](
(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-width/2),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight-height/2),
width,height);
}//end of drawRect

public void drawPolygon(double x1,double y1,int radius,int side)


{
//draw a polygon of n sides n=3(trinagle),n=4(dimond)....
double Pi=4.0*[Link](1.0);
int xvalues[]=new int[side+1];
int yvalues[]=new int[side+1];
double angle_increase;
double angle;
angle_increase=2.0*Pi/side;
angle=Pi/2.0;
for(int i=0;i<side;i++)
{
xvalues[i]= (int)([Link](xabsmin+(x1-xmin)/
(xmax-xmin)*abswidth+radius*[Link](angle)));
yvalues[i]= (int)([Link](yabsmin+absheight-(y1-ymin)/
(ymax-ymin)*absheight-radius*[Link](angle)));
if(i==0) {xvalues[side]=xvalues[i];yvalues[side]=yvalues[i];}
angle+=angle_increase;
}
[Link](xvalues,yvalues,side+1);
}//end of drawPolygon

public void drawXTic(int ticNumber,double ticHeight,int ticSide)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//draw a series of x axis tics
double dtic=(xmax-xmin)/ticNumber;
double x1=xmin;
double y1=ymin;
if(ticSide==0)
{
for(int i=0;i<=ticNumber;i++)
{
drawLine(0,x1,y1,x1,(y1-ticHeight));
x1=x1+dtic;
}
}
else

{
for(int i=0;i<=ticNumber;i++)
{
drawLine(0,x1,y1,x1,(y1+ticHeight));
x1=x1+dtic;
}
}
}

public void drawYTic(int ticNumber,double ticWidth,int ticSide)


{
//draw a series of y axis tics
double dtic=(ymax-ymin)/ticNumber;
double x1=xmin;
double y1=ymin;
if(ticSide==0)
{
for(int i=0;i<=ticNumber;i++)
{
drawLine(0,x1,y1,(x1-ticWidth),y1);
y1=y1+dtic;
}
}
else
{

for(int i=0;i<=ticNumber;i++)
{
drawLine(0,x1,y1,(x1+ticWidth),y1);
y1=y1+dtic;
}
}
}

public void drawXGrid(int ticNumber)


{
//draw x gridlies
double dtic=(xmax-xmin)/ticNumber;
double x1=xmin;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<=ticNumber;i++)
{
drawLine(0,x1,ymin,x1,ymax);
x1=x1+dtic;
}
}

public void drawYGrid(int ticNumber)


{
//draw y gridlines =====
double dtic=(ymax-ymin)/ticNumber;
double y1=ymin;
for(int i=0;i<=ticNumber;i++)
{
drawLine(0,xmin,y1,xmax,y1);
y1=y1+dtic;
}
}

public void drawXNumbers(int ticNumber)


{

//draw x numbers
double dtic=(xmax-xmin)/ticNumber;
double x1=xmin;
double y1=ymin;
String s;
s=" ";
for(int i=0;i<=ticNumber;i++)
{
s=[Link]([Link](x1*100.0)/100.00);
[Link](s,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+20);
x1=x1+dtic;
}
}

public void drawYNumbers(int ticNumber)


{
// draw y numbers
double dtic=(ymax-ymin)/ticNumber;
double x1=xmin;
double y1=ymin;
String s;
s=" ";
for(int i=0;i<=ticNumber;i++)
{
s=[Link]([Link](y1*100)/100.0)+" ";
[Link](s,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-40),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));
y1=y1+dtic;
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void drawXLabel(String xLabel)
{
// draw x labels
double x1=xmin+(xmax-xmin)/2.0;
double y1=ymin;
[Link](xLabel,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+30);
}

public void drawYLabel(String yLabel)


{
// draw y labels
double x1=xmin-(xmax-xmin)/6.0;
double y1=ymax-(ymax-ymin)/3.0;
int n=[Link]();
char ch[]=new char[n];
[Link](0,n,ch,0);
// [Link](yLabel,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-60),
// (int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));
for(int i=0;i<n;i++)
{
drawChar(ch[i],x1,y1);
y1=y1-(ymax-ymin)/30;
}
}

public void drawLabel(String Label)


{

//draw graphic label


double x1=xmin+(xmax-xmin)/2.0;
double y1=ymax;
[Link](Label,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)-10);
}

public void
drawPlotLines(int i,int plottype[],double x[][],double y[][],int n[],char ch[])
{
int j;
//draw lines
if(plottype[i]==0)
{
for(j=0;j<n[i]-1;j++)
{
if((x[i][j]=xmin && x[i][j]<=xmax )
&& (y[i][j]=ymin && y[i][j]<=ymax))
{
if((x[i][j+1]=xmin && x[i][j+1]<=xmax) &&
(y[i][j+1]=ymin && y[i][j+1]<=ymax))
{
drawLine(0,x[i][j],y[i][j],x[i][j+1],y[i][j+1]);
}
else if(x[i][j+1]xmax)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);
double a=y[i][j]-b*x[i][j];
drawLine(0,x[i][j],y[i][j],xmax,(a+b*xmax));
}
else if(y[i][j+1]ymax)
{
double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);
double a=y[i][j]-b*x[i][j];
drawLine(0,x[i][j],y[i][j],(ymax-a)/b,ymax);
}
else if(x[i][j+1]xmax && y[i][j+1]ymax)
{
double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);
double a=y[i][j]-b*x[i][j];
drawLine(0,x[i][j],y[i][j],(ymax-a)/b,(a+b*xmax));
}
}
else if((x[i][j+1]=xmin && x[i][j+1]<=xmax )
&& (y[i][j+1]=ymin && y[i][j+1]<=ymax))
{
if(x[i][j]<xmin)
{
double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);
double a=y[i][j+1]-b*x[i][j+1];
drawLine(0,xmin,(a+b*xmin),x[i][j+1],y[i][j+1]);
}
if(y[i][j]<ymin)
{
double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);
double a=y[i][j+1]-b*x[i][j+1];
drawLine(0,(ymin-a)/b,ymin,x[i][j+1],y[i][j+1]);

}
}
}//end of for(j=0
}//end of if(plottype
//draw characters
else if(plottype[i]==10)
{
for(j=0;j<n[i];j++)
{
if((x[i][j]=xmin && x[i][j]<=xmax )
&& (y[i][j]=ymin && y[i][j]<=ymax))
{ drawChar(ch[i],x[i][j],y[i][j]); }
}//end of for(j=0;
}//end else if(plottype[i]==10)
//draw rectangles
else if(plottype[i]==20)
{
for(j=0;j<n[i];j++)
{
if((x[i][j]=xmin && x[i][j]<=xmax )
&& (y[i][j]=ymin && y[i][j]<=ymax))
{ drawRect(x[i][j],y[i][j],4,4); }

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}//end of for(j=0;
}//end else if(plottype[i]==20)
//draw circle
else if(plottype[i]==21)
{
for(j=0;j<n[i];j++)
{
if((x[i][j]=xmin && x[i][j]<=xmax )
&& (y[i][j]=ymin && y[i][j]<=ymax))
{ drawOval(x[i][j],y[i][j],4,4); }
}//end of for(j=0;
}//end else if(plottype[i]==21)
else if(plottype[i]=22 && plottype[i]<=27)
{
for(j=0;j<n[i];j++)
{ if((x[i][j]=xmin && x[i][j]<=xmax )
&& (y[i][j]=ymin && y[i][j]<=ymax))
{drawPolygon(x[i][j],y[i][j],5,(plottype[i]-19));}
}//end of for(j=0;
}//end else if(plottype[i]==21..27)
}
}

Program 6.16 : [Link]

//======================================================
// Numerical Analysis package in java
// PlotApplet class to plot 2D data
// Dr. Turhan Coban
// =====================================================
import [Link].*;
import [Link].*;
import [Link].*;

import [Link].*;
import PlotShapes;
import Plot;

public class PlotApplet extends Applet implements ActionListener


{
Label promptXmin; // Label prompt in Xmin field
Label promptXmax; // Label prompt in Xmax field
Label promptYmin; // Label prompt in Ymin field
Label promptYmax; // Label prompt in Ymax field
TextField inputXmin; // input field Xmin
TextField inputXmax; // input field Xmax
TextField inputYmin; // input field Ymin
TextField inputYmax; // input field Ymax
Plot p1;
public void init()
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//adding max-min prompts and input fields
//label
//xaxis
//yaxis
// 4 10 10 1 1
// [Link] 22 0 0 0
// [Link] 21 0 255 0
// [Link] 0 0 255 0
// [Link] 0 0 0 255
int xnt=10;
int ynt=10;
int xgo=1;
int ygo=1;
String il=new String("label");
String xl=new String("x axis");
String yl=new String("y axis");
String ifn[]=new String[4];
ifn[0]="[Link]";
ifn[1]="[Link]";
ifn[2]="[Link]";
ifn[3]="[Link]";
int ipt[]=new int[4];
int ib[]=new int[4];
int ir[]=new int[4];
int ig[]=new int[4];
ipt[0]=22;
ipt[1]=21;
ipt[2]=0;
ipt[3]=0;
ir[0]=0;
ig[0]=0;
ib[0]=0;
ir[1]=0;
ig[1]=255;
ib[1]=0;
ir[2]=0;
ig[2]=255;
ib[2]=0;
ir[3]=0;
ig[3]=255;
ib[3]=0;
try{
//p1=new Plot(il,xl,yl,xnt,ynt,xgo,ygo,ifn,ipt,ir,ig,ib);
p1=new Plot();
} catch(IOException ioe) {[Link]("IOException in opening Plot");}
promptXmin=new Label("Xmin ");
inputXmin=new TextField(5);
promptXmax=new Label("Xmax ");
inputXmax=new TextField(5);
promptYmin=new Label("Ymin ");
inputYmin=new TextField(5);
promptYmax=new Label("Ymax ");
inputYmax=new TextField(5);
[Link](this);
[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);
[Link](this);
add(promptXmin);
add(inputXmin);
add(promptXmax);
add(inputXmax);
add(promptYmin);
add(inputYmin);
add(promptYmax);
add(inputYmax);
}

public void paint(Graphics g)


{
[Link]([Link]([Link]));
[Link]([Link]([Link]));
[Link]([Link]([Link]));
[Link]([Link]([Link]));
PlotShapes ps=new PlotShapes(g,[Link],[Link],
[Link],[Link],[Link],[Link],[Link],[Link]);
[Link]([Link],[Link],[Link],[Link]);
[Link]([Link],([Link])/80.0,0);
[Link]([Link],([Link])/80.0,0);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
if([Link]!=0)
[Link]([Link]);
if([Link]!=0)
[Link]([Link]);
int i,j;
for(i=0;i<[Link];i++)
{
// Select plot colors
[Link](new Color([Link][i],[Link][i],[Link][i]));
[Link](i,[Link],p1.x,p1.y,p1.n,[Link]);
}//end of for(i=0

}//end of method

public void actionPerformed( ActionEvent e)


{
Double valXmin=new Double([Link]());
[Link]=[Link]();
Double valXmax=new Double([Link]());
[Link]=[Link]();
Double valYmin=new Double([Link]());
[Link]=[Link]();
Double valYmax=new Double([Link]());
[Link]=[Link]();
repaint();
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 6.16 : [Link] çýktýsý

3. drawRect ve fillRect metotlarýný kullanarak biri dolu diðeri sadece bir çizgi olan iki
dikdörtgen çiz.

1. Oval ve fillOval metotlarýný kullanarak biri dolu diðeri sadece bir çizgi olan iki daire çiz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
2. Paint2D metodlarýndan yararlanarak biri dolu diðeri sadece bir çizgi olan iki eºkenar
dörtgen çizdir.

3. [Link] sýnýfýnda çizilen resmi iki kat büyüklüðnde çizdir.

Program 6.17 [Link]

import [Link];
import [Link].*;

public class resim1 extends Applet


{
private Image bebek;

public void init()


{
bebek=getImage(getDocumentBase(),"[Link]");
}

public void paint(Graphics g)


{
[Link](bebek,1,1,this);
}
}

4. drawPolygon ve fillPolygon metotlarýný kullanarak biri dolu diðeri sadece bir çizgi olan
iki eºkenar üçgen çiz.

5. Türkçe renkleri tanýmlýyan renk sýnýfýný yaz ( [Link]).

Program 6.18 . [Link], türkçe renk tanýmý sýnýfý

import [Link].*;
import [Link].*;
import [Link];

public class renk extends Color


{
public final static renk kirmizi=new renk(255,0,0);
public final static renk mavi=new renk(0,0,255);
public final static renk siyah=new renk(0,0,0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public final static renk camgobegi=new renk(0,255,255);
public final static renk koyugri=new renk(64,64,64);
public final static renk gri=new renk(128,138,128);
public final static renk yesil=new renk(0,255,0);
public final static renk acikgri=new renk(192,192,192);
public final static renk mor=new renk(255,0,255);
public final static renk portakal=new renk(255,200,0);
public final static renk pembe=new renk(255,175,175);
public final static renk beyaz=new renk(255,255,255);
public final static renk sari=new renk(255,255,0);
public final static renk acikmavi=new renk(150,206,237);
public final static renk lacivert=new renk(0,0,128);
//burada kendi yeni renginizi tanýmlayabilirsiniz.

public renk(float kirmizi,float yesil, float mavi)


{
super(kirmizi,yesil,mavi);
}

public renk(double kirmizi,double yesil, double mavi)


{
super((float)kirmizi,(float)yesil,(float)mavi);
}

public renk(int kirmizi,int yesil, int mavi)


{
super(kirmizi,yesil,mavi);
}

public renk(int RGB)


{
super(RGB);
}

public renk(renk r)
{
super([Link](),[Link](),[Link]());
}

public int getKirmizi()


{
return getRed();
}

public int getYesil()


{
return getGreen();
}

public int getMavi()


{
return getBlue();
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int getKYM()
{
return getRGB();
}

public String toString()


{
return "renk[ kirmizi "+getKirmizi()+" mavi "+getMavi()+" yesil "+getYesil()+"]";
}

//metotlar
//static int HSBtoRGB(float hue,float saturation,float brightness)
//getRed(),getGreen(),getBlue(),getRGB()
}

6. Problem 5.10 da verilen [Link], [Link] ve [Link] programlarýný


inceleyiniz.

Problem 6.19 : [Link]

import [Link].*;

import [Link].*;

import [Link];

import polar;

public class yildiz

public static void drawYildiz1(Graphics g,int xi,int yi, int n,int yildizboyu,double aci )

// bu yýldýz cizime teta=pi/2+aci radyandan baslar

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

for(int i=0;i<n;i++)

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta/2+teta1;

[Link](R,teta1);

[Link](r,teta2);

[Link]((xi+(int)[Link]()),(yi-(int)[Link]()),

(xi+(int)[Link]()),(yi-(int)[Link]()));

double teta3=teta*(i+1)+[Link]/2.0+aci;

[Link](R,teta3);

[Link]((xi+(int)[Link]()),(yi-(int)[Link]()),

(xi+(int)[Link]()),(yi-(int)[Link]()));

[Link](xi,yi,

(xi+(int)[Link]()),(yi-(int)[Link]()));

[Link](xi,yi,

(xi+(int)[Link]()),(yi-(int)[Link]()));

} //drawYildiz1 metodu sonu

public static void drawYildiz1(Graphics g,int xi,int yi, int n,int yildizboyu )

drawYildiz1(g,xi,yi,n,yildizboyu,0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} //drawYildiz1 metodu sonu

public static void drawYildiz(Graphics g,int xi,int yi, int n,int yildizboyu,double aci )

// bu y�ld�z cizime teta=pi/2+aci radyandan baslar

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta/2.0+teta1;

[Link](R,teta1);

[Link](r,teta2);

x[2*i]=xi+(int)[Link]();

y[2*i]=yi-(int)[Link]();

x[2*i+1]=xi+(int)[Link]();

y[2*i+1]=yi-(int)[Link]();

if(i==n)

x[2*i]=x[0];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
y[2*i]=y[0];

[Link](x,y,(2*n+2));

} //drawYildiz1 metodu sonu

public static void fillYildiz(Graphics g,int xi,int yi, int n,int yildizboyu,double aci )

// bu y�ld�z cizime teta=pi/2+aci radyandan baslar

// yild�zin i‡ini boyar

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta/2.0+teta1;

[Link](R,teta1);

[Link](r,teta2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x[2*i]=xi+(int)[Link]();

y[2*i]=yi-(int)[Link]();

x[2*i+1]=xi+(int)[Link]();

y[2*i+1]=yi-(int)[Link]();

if(i==n)

x[2*i]=x[0];

y[2*i]=y[0];

[Link](x,y,(2*n+2));

} //fillYildiz metodu sonu

public static void fillYildiz1(Graphics g,int xi,int yi, int n,int yildizboyu,double aci )

// bu y�ld�z cizime teta=pi/2+aci radyandan baslar

// yild�zin i‡ini boyar

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta/2.0+teta1;

[Link](R,teta1);

[Link](r,teta2);

x[2*i]=xi+(int)[Link]();

y[2*i]=yi-(int)[Link]();

x[2*i+1]=xi+(int)[Link]();

y[2*i+1]=yi-(int)[Link]();

if(i==n)

x[2*i]=x[0];

y[2*i]=y[0];

[Link](x,y,(2*n+2));

} //fillYildiz metodu sonu

Program 6.20 : Yýldý[Link]

import [Link];

import [Link].*;

import yildiz;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import renk;

public class yildizCiz extends Applet

public void paint(Graphics g)

//[Link]([Link]);

[Link]([Link]);

setBackground([Link]);

[Link](g,100,100,3,100,0);

[Link]([Link]);

yildiz.drawYildiz1(g,100,100,3,100,0);

10. [Link] programýný inceleyiniz.

Program 6.21 [Link]

import [Link];

import [Link].*;

import yildiz;

public class yildizCiz1 extends Applet

public void paint(Graphics g)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

double aci=0;

for(long j=0;j<5000;j++)

[Link]([Link]);

[Link](g,100,100,3,100,aci);

for(long i=0;i<10000;i++) {};

[Link]([Link]);

[Link](g,100,100,3,100,aci);

aci+=.001;

[Link]([Link]);

[Link](g,100,100,3,100,0);

7. Program 6.18 de verilen renk sýnýfýný test eden [Link] programýný inceleyiniz.
Ve applet çýktýsýný çalýºtýrýnýz.

Program 6.21 [Link]

import [Link].*;

import [Link];

import renk;

public class RenkTest extends Applet

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private int kirmizi,yesil,mavi;

public void init()

kirmizi=150;

yesil=255;

mavi=125;

// arka palan�n rengi mavi olarak veriliyor

setBackground([Link]);

public void paint(Graphics g)

// yazýnýn rengi 100,255,125 olarak alýndý

[Link](new renk(kirmizi,yesil,mavi));

[Link]("ABCDEFGHIJKLMNOPQRSTUVWXYZ",50,33);

showStatus("Su andaki arkaplan rengi : "+getBackground());

06017

ªekil 6.17 [Link] appletinin görünümü

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
11. H6O2

[Link], [Link], [Link] programlarinin inceleyiniz. ayný programlama


prensiplerini kullanarak n eºkenar kenarlý çokken çizecek [Link] sýnýfýný
yaratýnýz. Bu sinif

public static void drawEskenarCokgen(Graphics g,int xi,int yi, int n,int


esgenarcokkencapi,double aci )
public static void fillEskenarCokgen(Graphics g,int xi,int yi, int n,int yildizboyu,double
aci )

metotlarini kullanarak eskenar cokgen çizsin ve icini boyasin.

not xi,yi : çokken merkezinin koordinatlarý


n : çokken köºe sayýsý
eskenarcokkencapi: çokken merkezinden cokken köºesine olan mesafe
aci : 90 derece açý çokkenin baºlama açýsý olarak tanýmlanmýºtýr. bu açýdan sapýº radyan
olarak.

Program 6.22 [Link]

import [Link].*;

import [Link].*;

import [Link];

import polar;

public class eskenarcokgen

public static void drawEskenarcokgen(Graphics g,int xi,int yi, int n,int


eskenarcokgenboyu,double aci )

// xi,yi eskenar cokgen merkez koordinatlari

// n : eskenar dortgen kose sayisi

// eskenarcokkenboyu : eskenar cokgen merkezinden

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// kenarina olan mesafe

// bu eskenarcokken cizime teta=pi/2+aci radyandan baslar

double teta=2.0*[Link]/n;

double R=eskenarcokgenboyu;

polar P1=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

[Link](R,teta1);

x[i]=xi+(int)[Link]();

y[i]=yi-(int)[Link]();

if(i==n)

x[i]=x[0];

y[i]=y[0];

[Link](x,y,(n+1));

} //draweskenarcokgen metotu sonu

public static void fillEskenarcokgen(Graphics g,int xi,int yi, int n,int


eskenarcokgenboyu,double aci )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// bu eskenarcokgen cizime teta=pi/2+aci radyandan baslar

double teta=2.0*[Link]/n;

double R=eskenarcokgenboyu;

polar P1=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

[Link](R,teta1);

x[i]=xi+(int)[Link]();

y[i]=yi-(int)[Link]();

if(i==n)

x[i]=x[0];

y[i]=y[0];

[Link](x,y,(n+1));

} //filleskenarcokgen metotu sonu

8. eskenarcokgen sýnýfýný test etmek amacýyla bir applet programý yazýnýz ve ekrana
beºken çizdiriniz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
9. eskenarcokgen sýnýfýný test etmek amacýyla bir JFrame programý yazýnýz ve ekrana
üçken çizdiriniz.

13.

H6O3
grafik sýnýfýndaki:
public abstract void drawRect(int x1,int y1, int en,int yükseklik)
metotundan yararlanarak H6O3 sinifinda

public static void drawAciliDortgen(Graphics g, int x1,int y1, int en,int


yükseklik,double aci)

metotunu yaziniz. Bu metot dikdortgeni verilen açi kadar bir açýyla cizdirsin.

x1,y1 : dörtgenin sað üst köºe koordinatlarý


en,yükseklik : dörtgenin eni ve yüksekliði
aci: dörgenin radyan cinsinden x1,y1 noktasý etrafýnda dönme miktarý.
not :polar sýnýfý ve drawPolygon metotlarýndan yararlanabilirsiniz.

Program 6.23 açýlý dikdortgen çizdiren dikdortgen sýnýfý

Ýmport [Link].*;

import [Link].*;

import [Link];

import polar;

public class dikdortgen

public static void drawdikdortgen(Graphics g,int xi,int yi,int en,int boy,double aci )

double R=boy;

double r=en;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

polar P4=new polar();

int x[]=new int[5];

int y[]=new int[5];

int k=0;

//[Link](R,teta1);

x[0]=xi;

y[0]=yi;

double teta1=aci;

[Link](r,teta1);

x[1]=x[0]+(int)[Link]();

y[1]=y[0]-(int)[Link]();

teta1+=[Link]/2;

[Link](R,teta1);

x[2]=x[1]+(int)[Link]();

y[2]=y[1]-(int)[Link]();

teta1+=[Link]/2;

[Link](r,teta1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x[3]=x[2]+(int)[Link]();

y[3]=y[2]-(int)[Link]();

x[4]=xi;

y[4]=yi;

[Link](x,y,4);

public static void filldikdortgen(Graphics g,int xi,int yi,int en,int boy,double aci )

double R=boy;

double r=en;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

polar P4=new polar();

int x[]=new int[5];

int y[]=new int[5];

int k=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x[0]=xi;

y[0]=yi;

double teta1=aci;

[Link](r,teta1);

x[1]=x[0]+(int)[Link]();

y[1]=y[0]-(int)[Link]();

teta1+=[Link]/2;

[Link](R,teta1);

x[2]=x[1]+(int)[Link]();

y[2]=y[1]-(int)[Link]();

teta1+=[Link]/2;

[Link](r,teta1);

x[3]=x[2]+(int)[Link]();

y[3]=y[2]-(int)[Link]();

x[4]=xi;

y[4]=yi;

[Link](x,y,4);

Program 6.24 : dikdortgen sýnýfýný kullanan [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];

import [Link].*;

import [Link].*;

import dikdortgen;

import renk;

public class H6O2 extends Applet implements ActionListener

int en,boy,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label bos1;

Label bos2;

Label bos3;

Label renk1;

Label kirmizi;

Label mavi;

Label yesil;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

TextField kutukirmizi;

TextField kutumavi;

TextField kutuyesil;

public void init(){

//not : init metotunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

Panel p=new Panel();

[Link](new GridLayout(5,4));

//5*4 tablo p paneli haz�rland�

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutu3=new Label("eni giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yuksekligi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

[Link](kutugir5);

bos1=new Label(" ");

bos2=new Label(" ");

bos3=new Label(" ");

renk1=new Label("renk");

kirmizi=new Label("kirmizi");

mavi=new Label("mavi");

yesil=new Label("yesil");

kutukirmizi=new TextField(4);

kutumavi=new TextField(4);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutuyesil=new TextField(4);

xi1=300;

yi1=300;

en=150;

boy=100;

yaricap1=(int)[Link](100*100+150*150);

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+en);

[Link](""+boy);

[Link](""+aci1);

[Link]("255");

[Link]("200");

[Link]("0");

renk=new renk(255,200,0);

[Link](bos1);

[Link](bos2);

[Link](bos3);

[Link](kirmizi);

[Link](yesil);

[Link](mavi);

[Link](renk1);

[Link](kutukirmizi);

[Link](kutumavi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kutuyesil);

//elemanlar p paneline p paneli de aplete eklendi

add(p,[Link]);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

public void actionPerformed(ActionEvent e)

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer eni=new Integer([Link]());

en=[Link]();

Integer boyi=new Integer([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
boy=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

Integer Kirmizii=new Integer([Link]());

int kirmizi1=[Link]();

Integer Mavii=new Integer([Link]());

int mavi1=[Link]();

Integer Yesili=new Integer([Link]());

int yesil1=[Link]();

renk=new renk(kirmizi1,mavi1,yesil1);

repaint();

public void paint(Graphics g)

[Link](renk);

[Link](g,xi1,yi1,en,boy,(aci1/180.0*[Link]));

[Link]([Link]);

[Link](g,xi1,yi1,en,boy,(aci1/180.0*[Link]));

7.1 GRAPHIC KULLANICISI ARABÝRÝM PROGRAMLARI, GUI, (GRAPHICS USER


INTERFACE)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Grafik kullanýcý arabirim programlarý, GUI, programýnýza kullanýcýnýn daha iyi anlýyabileceði
bir görünüº verme ve ayný zamanda grafik ekrandan girdi cve çýktý yapabilme amacýyla
oluºturulur. Kullanýcýya sunulan programýn onun rahatlýkla anlayabileceði bir formata sahip
olmasý günümüz programlamacýlýðýnda oldukça önemlidir. Reklamlarla büyüyen bir kuºak
için paket bazen paketin içindekinden bile önemli hale gelebilmektedir. Grafik Kullanýcýsý
Arabirim programlarý kullanýcýya sunduðumuz paketi oluºturmaktadýr.

Java’da temel grafik arabirim kütüphaneleri [Link] sýnýfýnda yer almaktadýr. Java 1.2 den
itibaren awt kütüphanesine ek olarak java swing grafik arabirim kütüphanesi [Link]
tanýmlanmýºtýr. Bu bölümde awt ve swing yapýlarýný paralel olarak vermeye çalýºacaðýz..
Yalnýz swing kütüphanesi kapsam olarak çok daha geniº olduðundan swing ile yapýlan tüm
iºlemlerin ve grafik arabirim alt programlarýný awt’de karºýlýklarý mevcut deðildir. Bir önceki
grafik çiziminde olduðu gibi grafik arabirim elemanlarýnýn tanýtýmý da oldukça geniº bir
yelpaze oluºturduðuundan mümkün olduðunca detay verilmeye çalýºýlsa bile tüm kapsamý bu
kitapta iºlemek mümkün deðildir. Örneðin java swing konusundaki kapsamlý bir kitap olan
“Java Swing , O’Reily basým evi” kitabý yaklaºýk 1200 sayfalýk bir kitabý sadece bu konuya
ayýrmýºtýr.

GUI metotlarý [Link] (Abstract windowing toolkit) paketinde yer almaktadýr. Bu pakette
Container ve Component isimli iki alt pakette yer almaktadýr. Her zaman kullandýðýmýz
Applet sýnýfý Component sýnýfýndan türiyen Panel sýnýfýnýn alt sýnýfýdýr. Yani Component
Appletlerin süper sýnýfýdýr.

Burada Component sýnýfýnýn

· TextComponent

· TextField

· TextArea

· Button

· Label

· Checkbox

· List

· Choice

· Canvas

· Scrollbar

· Container

· Panel

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] sýnýfýnýn

· ScrollPane

· Window

· Frame

· Dialog

Sýnýflarýný incelemeye calýºacaðýz.

Paralel olarak [Link] paketinde yer alan grafik arayüz programlarýnda yer alan üst
seviye paketler Japplet, JDialog, JFrame,JWindow ve JComponent’dir

JComponent sýnýfýnýn altýnda yer alan sýnýflarýn bazýlarý :

JcomboBox
JLabel
JList
JMenuBar
JPanel
JPopupMenu
JScrollBar
JScrollPane
JTable
JTree
JInternalFrame
JOptionPane
JProgressBar
JRootPane
JSeperator
JSlider
JSplitPane
JTabbedPane
JToolBar
JToolTip
JViewePort
JColorChooser
JTextComponent
JTextArea
JTextField
JPasswordField
JEditorPAne
JTextPane
JFileChooser
JLayeredPane
AbstractButton
JToggleButton

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JCheckBox
JRadioButton
JButton
JMenuItem
JMenu
JRadioButtonMenuItem
JCheckButtonMenuItem

Yine yineleyelim , swing sýnýfýndaki tüm alt metodlarý kapsamak bu kitabýn kapsamýný
oldukça büyütecektir, bu yüzden ºimdilik buna imkan göremiyoruz, fakat pratikte ne olduklarý
hakkýnda iyi bir fikir verebilecek geniºlikte bir spektrum vermeye çalýºacaðýz. Burada özellkle
awt ve swing sýnýfý grafik iºlemcilerini bir arada vermeye çalýºtýk. Kullanýcý her iki tip grafik
ortamýyla da karºýlaºacaðý için (Kendi yazmasa bile hazýr programlar karºýsýna çýkacaktýr),
her ikisini de bilmesi gereklidir. Zaten bu kitabýn tüm konularýnda da hem awt hem de swing
ile yazýlmýº program örnekleri vermeye çalýºtýk. Bu konudan sonra geriye dönüp tüm
program örneklerini grafik ortamý gözüyle inceliyebilirsiniz.

7.2 AWT LABEL (ETÝKET) SINIFI , JAVAX JLABEL VE ICON SINIFLARI

Label sýnýfý Appletin içine sadece okunabilen fakat deðiºtirilemeyen yazýlar yazma amacýyla
kullanýlýrlar. Label sýnýfýnda tanýmlanan metotlar ºunlardýr:

· Kurucu Metotlar :

public Label() // Label sýnýfý nesneyi olusturur herhangi bir yazý göstermez
public Label(String s) // Label sýnýfý nesneyi olusturur ve s stringini gösterir
public void Label(String s,int pozisyon) // Label sýnýfý nesneyi olusturur ve s stringi gösterir
ayný zamanda Labeli pozisyonda verilen deðere göre istenilen yere yerleºtirir.
Yerleºtirme konumlarý :[Link],[Link],[Link] (sol,orta,sað) konumlarýdýr.

· Giriº çýkýº metotlarý


public String getText() // Label sýnýfýnýn String deðiºkenini okur.
public void setText(String s) // Label sýnýfýnýn String deðiºkenine yeni deðer girer.
public void setAlignment(int pozisyon)

Label pozisyon deðiºkeninde verilen deðere göre istenilen yere yerleºtirir.

Yerleºtirme konumlarý :[Link],[Link],[Link] (sol,orta,sað)


konumlarýdýr.

Örnek olarak bir bir program verelim :

Program 7.1 : [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];
import [Link].*;

public class LabelTesti extends Applet


{
private Label L1,L2;

public void init()


{
L1=new Label();
[Link]("Bu etiket once bos tanimlandi");
add(L1);
L2=new Label("Bu etiket yazisi ilk tanimda tanimlandi");
add(L2);
}

public void paint(Graphics g)


{
[Link]("L1 : "+[Link](),25,80);
[Link]("L2 : "+[Link](),25,95);
}
}

[Link]

ªekil 7.1 [Link] appleti

LabelTesti programýnda kullanýlan add metotu Label’i Container sýnýfýna(Appletin alt sýnýfý
olduðu) baðlar, diðer deyimle applete veya verilen üst komponente ilave eder.

Swing sýnýfý Jlabel Lable sýnýfýndandan farklý olarak bize sadece yazý deðil ayný zamanda
görüntü ekleme olasýlýklarý da sunar. Temel sýnýf olarak kurucu metodlarý :

JLabel()

JLabel(Icon Resim)

Jlabel(Icon Resim,int yazý_pozisyonu)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Jlabel(String etiket)

Jlabel(String etiket, Icon Resim)

Jlabel(String etiket, Icon Resim, int yazý_pozisyonu)

Jlabel(String etiket, int yatay_yazý_pozisyonu)

Buradaki yatay yazý pozisyonu

[Link]

JLabel .CENTER

[Link]

Veya

[Link]

[Link]

[Link]

Deðerlerinden birini alabilir.

Jlabel sýnýfýnýn çok kullanacaðýmýz bazý metotlarýný sayacak olursak :

Jcomponent sýnýfýndan gelen metodlar :

void setBackground(Color c ) : arkaplan rengini deðiºtiri

Color getBackground() : arkaplan rengini okur

void setForeground(Color c) : önpaln rengini deðiºtiri

Color getForeground() : ön plan rengini okur.

void setFont(Font f) : yazý fontunu seçer

Font getFont() : yazý fontunu okur

Boolean isVisible : görünür olup olmadýðýný kontrol eder

Void setVisible(Boolean b) : görünür veya görünmez yapar.

Jlabel sýnýfýnda tanýmlanmýº bazý alt sýnýflar :

void setText(String s) : JLabel ’ýn text deðiºkeninin deðerine yeni verilen deðeri
atar

String getText() : JLabel’ýn String text deðiºkenini okur.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
void setVerticalAlignment( int düºey_pozisyon) : Label’in Pencere içindeki düºey
pozisyonunu ayarlar

Buradaki düºey pozisyon

[Link]

[Link]

[Link]

Veya

[Link]

[Link]

[Link]

Deðerlerinden birini alabilir.

int getVerticalAlignment( )

void setVerticalTextPosition( int düºey_pozisyon) : Label’in içindeki yazýnýn Label içindeki


düºey pozisyonunu ayarlar. Sabitler üsttekilerin aynýdýr.

int getVerticalTextPosition() : Label’in içindeki yazýnýn Label içindeki düºey pozisyonunu


okur.

void setHorizontalTextPosition( int düºey_pozisyon) : Label’in içindeki yazýnýn Label içindeki


yatay pozisyonunu ayarlar. Sabitler üsttekilerin aynýdýr(LEFT,CENTER,RÝGHT).

int getHorizontallTextPosition( ) : Label’in içindeki yazýnýn Label içindeki yatay pozisyonunu


okur.

void setIcon(Icon resim) : Label içindeki resmi deðiºtirir veya eðer yoksa ilk defa atar

Icon getIcon() : Label içindeki resmi okur.

void setDisplayedMnemonic(int c) : Mnemoic alt harf kontrolunu kullanarak belli bir giriºe
ulaºmayý saðlar. (örneðin ‘m’ harfine set edilmiºse alt-m bu komuta gider. Örnek problemlerle
bu kavram açýlacaktýr.

int getDisplayedMnemonic(int c) : Mnemonic deðerini okur.

ªimdi örnek problemlerle swing JLabel kullanýmýna daha detaylý olarak bakalým.

Birinci örneðimizde basit bir ºekilde String label yazdýracaðýz. Çerçeve olarak JFrame
kullandýk.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 7.2 : [Link] swing java Jlabel örneði

import [Link].*;

public class label1SW

public static void main(String[] args)

JLabel etiket=new JLabel("JLabel sýnýfýna hoº geldiniz");

JFrame cerceve=new JFrame();

[Link](new BasicWindowMonitor());

[Link]().add(etiket);

[Link]();

[Link](true);

[Link]

ªekil 7.2 [Link] JFrame penceresi

Ýkinci örneðimizde resimli, hem resim hem yazýlý ve yalnýz yazýlý bir JApplet programý
olºturduk. Bu programýn ayný zamanda main metodu da olduðundan hem applet hem de
frame olarak çaðýrýlmasý mümkündür.

Çerçeve olarak JFrame kullandýk.

Program 7.3 LabelTestiSW Japplet türü JLabel örnek programý

Ýmport [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

public class LabelTestiSW extends JApplet {

protected String iconname1="images/kuº.gif";

ImageIcon icon1;

protected String iconname2="images/kö[Link]";

ImageIcon icon2;

protected JLabel j1,j2,j3;

public LabelTestiSW()

getRootPane().putClientProperty("defeatSystemEventQueueCheck",

[Link]);

public void init()

icon1=new ImageIcon(iconname1);

icon2=new ImageIcon(iconname2);

j1 = new JLabel(icon1);

j2 = new JLabel("Label (Etiket) yazýsý",icon2,[Link]);

[Link]([Link]);

[Link]([Link]);

j3 = new JLabel("Font 16 mavi Label");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Font font=[Link]();

[Link](new Font([Link](),[Link],16));

[Link]([Link]);

JPanel pane=new JPanel();

JPanel pane1=new JPanel();

JPanel pane2=new JPanel();

[Link](j1);

[Link](j2);

[Link](j3);

[Link](new Color(255,255,204));

[Link]([Link]);

[Link]([Link](1,1,2,2,[Link]));

[Link](new BorderLayout());

[Link](pane1,[Link]);

setContentPane(pane);

public static void main(String s[]) {

JFrame f = new JFrame("Label testi ");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

JApplet applet = new LabelTestiSW();

[Link]().add("Center", applet);

[Link]();

[Link]();

[Link](new Dimension(550,200));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

[Link]

ªekil 7.3 [Link] JFrame penceresi

Program 7.4 LabelDemo JPanel türü JLabel örnek programý

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

public class LabelDemo extends JPanel {

JLabel label1, label2, label3;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public LabelDemo() {

ImageIcon icon = new ImageIcon("images/[Link]",

"bir damla resmi");

setLayout(new GridLayout(3,1)); //3 satýr, 1 sütun

label1 = new JLabel("Resim ve Yazý",

icon,

[Link]);

//resme göreceli olarak yazý pozisyonunu ayarla:

[Link]([Link]);

[Link]([Link]);

label2 = new JLabel("Sadece yazýlý Label (Etiket)");

label3 = new JLabel(icon);

//Add labels to the JBufferedPane.

add(label1);

add(label2);

add(label3);

public static void main(String[] args) {

/*

* Create a window. Use JFrame since this window will include

* lightweight components.

*/

JFrame frame = new JFrame("LabelDemo");

[Link](new WindowAdapter() {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void windowClosing(WindowEvent e) {[Link](0);}

});

[Link]().add(new LabelDemo(), [Link]);

[Link]();

[Link](true);

[Link]

ªekil 7.4 [Link] JPanel penceresi

Bu programda resim

ImageIcon icon = new ImageIcon("images/[Link]","bir damla resmi");

Tanýmýyla ImageIcon sýnýfý aracýlýðýyla resmi Jlabel’a aktardý. images/[Link] [Link]


dosyasýnýn images alt direktorysinde yer aldýðýný belirtir.

Burada Icon interphase’ine biraz daha yakýndan göz atalým. Icon interphase sýnýfý
olduðundan tanýmlanan sýnýfý

içerisinde

public int getIconWidth()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int getIconHeight()

public void paintIcon(Component c, Graphics g, int x,int y)

metodlarý tanýmlanmak zorundadýr. ªimdi Icon sýnýfýnýn alt sýnýfý olan OvalIcon sýnýfýný
tanýmlayalým

Program 7.5 Jlabel’da kullanýlacak Icon oluºturan OvalIcon sýnýfý

import [Link].*;

import [Link].*;

import [Link].*;

public class OvalIcon implements Icon

int genislik, yukseklik;

public OvalIcon(int w,int h)

genislik=w;

yukseklik=h;

public void paintIcon(Component c,Graphics g,int x,int y)

Graphics2D g2=(Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

Ellipse2D elips1=new [Link](x,y,genislik-1,yukseklik-1);

[Link](elips1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int getIconWidth() {return genislik;}

public int getIconHeight() {return yukseklik;}

ªimdi de OvalIcon sýnýfýný kullanan JLabel sýnýflarýný oluºturup gösterelim :

Program 7.6 OvalIcon sýnýfýný kullanarak JLabel’da daire Icon’u (resmi) gösteren label2SW
programý

import [Link].*;

import [Link].*;

public class label2SW

public static void main(String[] args)

JFrame f=new JFrame();

[Link](new BasicWindowMonitor());

JLabel etiket1=new JLabel(new OvalIcon(20,50));

JLabel etiket2=new JLabel(new OvalIcon(50,20));

JLabel etiket3=new JLabel("daire",new OvalIcon(60,60),[Link]);

[Link]([Link]);

Container c=[Link]();

[Link](new FlowLayout());

[Link](etiket1);

[Link](etiket2);

[Link](etiket3);

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](true);

Bu sýnýfýn çýktýsý :

[Link]

ªekil 7.5 [Link] JFrame penceresi

Buradan da görüldüðü gibi JLabel sýnýfýný çok daha geniº bir platformda, oluºturduðumuz bir
grafiðin veya çizimin sonuçlarýný grafik ortama aktarmak amacýyla da kullanabiliriz.

7.3 BUTTON VE JBUTTON (DÜÐME) SINIFLARI

Button (düðme) basýlýnca belirli iºlemlerin yapýlmasýný baºlatan bir sýnýftýr. Graphic arabirim
kullaným (GUI) programlarýný veya aplet programlarýný konsol programlarýndan ayýran en
önemli özellik, GUI lerin iºlem kökenli olmasýdýr. Diðer bir deyimle kullanýcýnýn baºlatacaðý
iºlemleri yapar ve kullanýcýnýn yeni bir iºlem tanýmlamasýný beklerler. Bu iºlemleri yapan
sýnýflar [Link] kütüphanesi nde tanýmlanmýºtýr. Bu kütüphanede en çok
kullanacaðýmýz sýnýflar hiyerarºi düzeninde ºöyle verilebilir :

[Link]

· [Link]

· ActionEvent // Bir dügme(Button) basýldýðýnda,Listeden (List) iki klikle bir seçim


yapýldýðýnda veya menuden seçim yapýldýðýnda kullanýlýr.

· AdjustmentEvent // asaðý yukarý kaydýrma cubugunda (scroll bar) bir iºlem


yapýldýðýnda kullanýlýr.

· ItemEvent // List veya CheckBox kliklendiginde (bir kere) kullanýlýr

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
· ComponentEvent //appletteki elemanlarýn gizlenmesi, boylarýnýn deðiºtirilmesi, veya
deðiºik yerlere alýnmasý amacýyla kullanýlýr.

· ContainerEvent //Containera(applete) yeni bir eleman eklenilir veya çýkarýlýrken


kullanýlýr.

· FocusEvent //herhangi bir applet elemaný kullanýlmaya baslandýgýnda on plana


cýkarýlmakk, ve kullanýlmadýgýnda arka plana atýlmak istendiðinde kullanýlýr.

· PaintEvent

· WindowEvent //pencere acýlýp kapandýðýnda,kücültülüp büyütüldüðünde vb kullanýlýr.

· InputEvent

· KeyEvent //keyboarddan bir girdi alýndýðýnda kullanýlýr

· MouseEvent //mouse dan bir girdi alýndýðýnda kullanýlýr

Kullanýcý bir applet veya pencere tipi baºka Container programý yazarken dinleme ile ilgili iki
iºlem yapar ilk iºlem herhangi bir GUI dan bir girdi olup olmadýðýný dinlemek olduysa
kaydetmek ikincisi ise bu iºlemin sebep olacaðý iºlemleri oluºturmaktýr. Dinleme iºlemini
yapan metotlar ºunlardýr :

[Link]

· ActionListener

· AdjustmentListener

· ComponentListener

· ContainerListener

· FocusListener

· ItemListener

· KeyListener

· MouseListener

· MouseMotionListener

· TextListener

· WindowListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu metotlarýn bir çoðunu ilgili örneklerde yeri geldiðinde kullanacaðýz. ªimdi ayný sonucu
veren iki button orneði ile bu kavramý biraz daha açmaya çalýºalým :

Program 7.7 : [Link], düðme kullaným testi

import [Link];
import [Link].*;
import [Link].*;

public class ButtonTesti extends Applet


{
private Button B1,B2;
public void init()
{
B1=new Button("B1");
[Link](new B1Basilinca(this));
add(B1);
B2=new Button("B2");
[Link](new B2Basilinca(this));
add(B2);
}
}

class B1Basilinca implements ActionListener


{
Applet applet;

public B1Basilinca(Applet a) {applet=a;}


public void actionPerformed(ActionEvent e)
{
[Link](" "+[Link]()+"dugmesine basildi");
}
}

class B2Basilinca implements ActionListener


{
Applet applet;
public B2Basilinca(Applet a) {applet=a;}

public void actionPerformed(ActionEvent e)


{
[Link](" "+[Link]()+"dugmesine basildi");
}
}

07006JPG

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.6 [Link] sýnýfý sonuçlarýnýn appletde görünmesi

Problem 7.8 [Link] sýnýfý (sonuclar [Link] ile aynýdýr)

import [Link];
import [Link].*;

import [Link].*;

public class ButtonTesti1 extends Applet implements ActionListener


{

private Button B1,B2;

public void init()


{
B1=new Button("B1");
[Link](this);
add(B1);
B2=new Button("B2");
[Link](this);
add(B2);
}

public void actionPerformed(ActionEvent e)


{
if([Link]()==B1)
{showStatus(" "+[Link]()+"dugmesine basildi");}
else if([Link]()==B2)
{showStatus(" "+[Link]()+"dugmesine basildi");}
}
}

Birinci programda düðmelere basýldýðýnda oluºan eylemler (showStatus köºesine basýlan


düðmeyi yazdýrma) ayrý sýnýflarda yaptýrýlmýº ve Applet sýnýfý üzerinden bizim ButtonTesti
sýnýfýna aktarýlmýºtýr. Ýkinci programda ise ayný iºlemler tek bir sýnýfýn içerisinde yer almýºtýr.

Programdan da görülecegi gibi düðme basma eylemi ActionEvent sýnýfý üzerinden


aktarýlmýºtýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JButton sýnýfý ile Button sýnýfý arasýnda kullaným açýsýndan Label ve Jlabel sýnýfýnýn
arasýndakilere benzer farklar vardýr.

JButton sýnýfýnýn sýnýf tanýmý :

public class JButton extends AbstractButton implements Accessible

public JButton()

public JButton(Icon resim)

public JButton(String yazý);

public JButton(String yazý, Icon resim)

public AccessibleContext getAccessibleContext();

public String getUIClassID();

public boolean isDefaultButton();

public boolean isDefaultCapable();

public void setDefaultCapable(boolean b);

pubkic void updateUI();

ºeklindedir. Görüldüðü gibi JButton fazla metod barýndýrmaz bir çok önemli metodu Abstract
button ve onun tepe sýnýfý JComponent sýnýflarýndan alýr. JButton sýnýfýnda Jlabel sýnýfýnda da
kullandýðýmýz JComponent sýnýfýndan gelen metodlar :

public void setBackground(Color c ) : arkaplan rengini deðiºtiri

public Color getBackground() : arkaplan rengini okur

public void setForeground(Color c) : önpaln rengini deðiºtiri

public Color getForeground() : ön plan rengini okur.

public void setFont(Font f) : yazý fontunu seçer

public Font getFont() : yazý fontunu okur

public Boolean isVisible() : görünür olup olmadýðýný kontrol eder

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public Void setVisible(Boolean b) : görünür veya görünmez yapar.

AbstractButton sýnýfýnda tanýmlanmýº bazý alt sýnýflar :

public void setText(String s) : JLabel ’ýn text deðiºkeninin deðerine yeni verilen
deðeri atar

public String getText() :AbstractButton’ýn String text deðiºkenini okur.

public void setVerticalAlignment(int düºey_pozisyon) : AbstractButton’in Pencere içindeki


düºey pozisyonunu ayarlar

Buradaki düºey pozisyon

[Link]

[Link]

[Link]

Deðerlerinden birini alabilir.

public int getVerticalAlignment( )

public void setVerticalTextPosition( int düºey_pozisyon) : AbstractButton‘ýn içindeki yazýnýn


Label içindeki düºey pozisyonunu ayarlar. Sabitler üsttekilerin aynýdýr.

public int getVerticalTextPosition() : AbstractButton‘ýn içindeki yazýnýn AbstractButton


içindeki düºey pozisyonunu okur.

public void setHorizontalTextPosition( int düºey_pozisyon) : AbstractButton‘ýn içindeki


yazýnýn AbstractButton içindeki yatay pozisyonunu ayarlar. Sabitler

[Link]

[Link]

[Link]

public int getHorizontallTextPosition( ) : AbstractButton‘ýn içindeki yazýnýn AbstractButton‘


içindeki yatay pozisyonunu okur.

Public void setIcon(Icon resim) : AbstractButton‘ýn içindeki resmi deðiºtirir veya eðer yoksa
ilk defa atar

public Icon getIcon() : AbstractButton içindeki resmi okur.

public void setDisplayedMnemonic(int c) : Mnemoic alt harf kontrolunu kullanarak belli bir
giriºe ulaºmayý saðlar. (örneðin ‘m’ harfine set edilmiºse alt-m bu komuta gider. Örnek
problemlerle bu kavram açýlacaktýr.

Public int getDisplayedMnemonic(int c) : Mnemonic deðerini okur.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Listener (pencere dinleme) metod ve neslerinden ise :

protected ActionListener actionListener;

protected Itemlistener itemListener

protected ChangeListener changeListener

public void addActionListener(ActionListener l)

public void addChangeListener(ChangeListener l)

public void addItemListener(ItemListener l)

public void removeActionListener(ActionListener l)

public void removeChangeListener(ChangeListener l)

public void removeItemListener(ItemListener l)

public String getActionCommand()

public void setActionCommand(String com)

gibi metodlar mevcuttur. ªimdi örnekler üzerinden JButton sýnýfýný kullanmayý deneyelim :

Program 7.9 Jbutton sýnýfýnýn gösterilmesini örnekleyen ButtonTestiSWF programý

import [Link].*;

import [Link].*;

import [Link].*;

public class ButtonTestiSWF extends JFrame implements ActionListener

private JButton B1,B2;

private JTextArea cikti;

public ButtonTestiSWF()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
super("button örneði");

Container c=getContentPane();

[Link](new FlowLayout());

ImageIcon icon1 = new ImageIcon("images/[Link]");

B1=new JButton("B1",icon1);

[Link]([Link]);

[Link](this);

[Link](B1);

B2=new JButton("B2",icon1);

[Link](this);

[Link](B2);

cikti=new JTextArea(" ");

[Link](cikti);

[Link]([Link]());

public static void main(String[] args)

ButtonTestiSWF pencere= new ButtonTestiSWF();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

public void actionPerformed(ActionEvent e)

String gs="";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link]()==B1)

gs = " "+[Link]()+"dügmesine basildi\n";

else if([Link]()==B2)

gs = " "+[Link]() +"dügmesine basildi";

[Link](gs);

[Link]

ªekil 7. [Link] sonuçlarýnýn JFrame penceresinde görüntüsü

Button ve JButton arasýndaki farklarý görmek amacýyla birbirinin ayný olan


[Link] awt applet programýný, [Link] swing programýyla
karºýlaºtýralým. Not :isimler ayný olduðundan bu iki programý ayný dosyalarda saklýyamayýz.

Program 7.10 Button sýnýfýnýn gösterilmesini örnekleyen ButtonDemoApplet programý

import [Link].*;

import [Link];

import [Link];

import [Link];

public class ButtonDemoApplet extends Applet

implements ActionListener {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
protected Button b1, b2, b3;

protected static final String DISABLE = "disable";

protected static final String ENABLE = "enable";

public void init() {

b1 = new Button();

[Link]("Disable middle button");

[Link](DISABLE);

b2 = new Button("Middle button");

b3 = new Button("Enable middle button");

[Link](false);

[Link](ENABLE);

//Listen for actions on buttons 1 and 3.

[Link](this);

[Link](this);

//Add Components to the Applet, using the default FlowLayout.

add(b1);

add(b2);

add(b3);

public void actionPerformed(ActionEvent e) {

if ([Link]().equals(DISABLE)) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](false);

[Link](false);

[Link](true);

} else {

[Link](true);

[Link](true);

[Link](false);

[Link]

ªekil 8. [Link] sonuçlarýnýn AppletViewer browserýnda görüntüsü

Program 7.11 Button sýnýfýnýn gösterilmesini örnekleyen ButtonDemoApplet programý (bu


program 7.10 ile ayný iºlevi yapmaktadýr)

*
* Swing version.
*/

import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];

public class ButtonDemoSWA extends JApplet


implements ActionListener {
protected JButton b1, b2, b3;
protected static final String DISABLE = "disable";
protected static final String ENABLE = "enable";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
protected String leftButtonFilename = "images/[Link]";
protected String middleButtonFilename = "images/[Link]";
protected String rightButtonFilename = "images/[Link]";

public void init() {


ImageIcon leftButtonIcon = new ImageIcon(
getURL(leftButtonFilename));
ImageIcon middleButtonIcon = new ImageIcon(
getURL(middleButtonFilename));
ImageIcon rightButtonIcon = new ImageIcon(
getURL(rightButtonFilename));
b1 = new JButton("Disable middle button", leftButtonIcon);
[Link]([Link]);
[Link]([Link]);
[Link]('d');
[Link](DISABLE);
b2 = new JButton("Middle button", middleButtonIcon);
[Link]([Link]);
[Link]([Link]);
[Link]('m');
b3 = new JButton("Enable middle button", rightButtonIcon);
//Use the default text position of CENTER, RIGHT.
[Link]('e');
[Link](ENABLE);
[Link](false);
//Listen for actions on buttons 1 and 3.
[Link](this);
[Link](this);
//Add Components to a JPanel, using the default FlowLayout.
JPanel pane = new JPanel();
[Link](b1);
[Link](b2);
[Link](b3);
//Add JPanel to this applet, using the default BorderLayout.
getContentPane().add(pane, [Link]);
}
public void actionPerformed([Link] e) {
if ([Link]().equals(DISABLE)) {
[Link](false);

[Link](false);

[Link](true);
} else {
[Link](true);
[Link](true);
[Link](false);
}
}
protected URL getURL(String filename) {
URL codeBase = getCodeBase();
URL url = null;
try {
url = new URL(codeBase, filename);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} catch ([Link] e) {
[Link]("Couldn't create image: badly specified URL");
return null;
}
return url;
}
}

[Link]

ªekil 9. [Link] sonuçlarýnýn swing JApplet olarak Appletviewer browserýnda


görüntüsü

Programdan da görüldüðü gibi bu program bir önce verilmiº olan programýn swing frame
benzeridir. Ýki program da Applet olarak verilmiºtir. Programlarda setEnabled(Boolean b)
metodu kullanýlarak düðmenin çalýºmasý etkisisz hale getirilmiºtir. Ayrýca swing versiyonunda
resim dosyasýný kullanýrken URL sýnýfý üzerinden okuduk. URL network ortamýnda bilgi
aktarmaya yarayan bir sýnýftýr. Resim dosyasý baºka bir bilgisayarda olabilirdi.

7.4 TEXTFIELD (YAZIM ALANI) SINIFI

TextField bir satýrlýk yazým alanlarýdýr. TextField’in metotlarý aºaðýda verilmiºtir :

· Kurucu Metotlar :

public TextField()
public TextField(int satýrsayýsý) // satýr sayýsý uzunluðunda bir yazý kutusu açar.
public TextField(String s) // s uzunluðunda bir yazý kutusu açr ve s yi içine yazar
public TextField(String s,int satýrsayýsý) ) // satýr sayýsý uzunluðunda bir yazý kutusu açr ve s
yi içine yazar

· Diðer Metotlar:

Public void setEchoChar(char c) // kutudaki gerçek yazýyý gizleyerek onun yerine c karacter
deðiºkenini yazar.
Public void setEditable(boolean b) //kutunun içine yazýlan yazýnýn degiºtirileblmesini saðlar
veya engeller

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
b=true yazý yazýlabilir b=false yazý yazýlamaz.

Bu metotlarýn kullanýmýný yine bir program örneðiyle izleyelim :

Program 7.12 [Link] programý

import [Link];
import [Link].*;

import [Link].*;

public class TextFieldTesti extends Applet implements ActionListener


{
private TextField T1,T2,T3,T4;

public void init()


{
setBackground([Link]);
//bos textField
T1=new TextField();
[Link](this);
add(T1);
T2=new TextField("Buraya yazi yaziniz");
[Link](this);
add(T2);
T2=new TextField("gizli yazi");
[Link]('*');
[Link](this);
add(T2);
T3=new TextField("gizli yazi");
[Link](false);
add(T3);
}

public void actionPerformed(ActionEvent e)


{
showStatus("Yazi : "+[Link]());
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.10 [Link] programý sonuçlarýnýn appletde görünümü

Bu programda her yazý alanýna (TextField) addActionListener metotu eklenmiº ve bir yazý
girildiðinde actionPerformed metotundaki showStatus metotu yoluyla en son girilen yazý
showStatus penceresine aktarýlmýºtýr.

TextField sýnýfýnýn java swing eºdeðeri JTextField sýnýfýdýr. JTextField sýnýfý kurucu metotlarý :

JTextField()
JTextField(String)
JTextField(String, int)
JTextField(int)
JTextField(Document, String, int)

ªeklindedir.

TextFielde Paralel olarak Özel bir TextField türü olan PasswordField de swingde
tanýmlanmýºtýr. PassWord fieldin kurucu metod tanýmlarý :

JPasswordField()
JPasswordField(String)
JPasswordField(String, int)
JPasswordField(int)
JPasswordField(Document, String, int)

ªeklinde tanýmlanmýºtýr.

Bu iki sýnýfýn Text deðerini girmak veya okumak için

void setText(String)
String getText()

metodlarý tanýmlanmýºtýr.

void setEditable(boolean)

boolean isEditable()

metodlarý Yazý alanýndaki yazýyý kullanýcýnýn deðiºtirp deðiºtiremeyaceðini saptar veya bu


müsadeyi deðiºtirir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
void setColumns(int);
int getColumns()

int getColumnWidth()

metodlarý yazý alanýnýn byutunu deðiºtirmek veya saptamak amacýyla kullanýlabilir.

void setHorizontalAlignment(int);
int getHorizontalAlignment()

metodlarý yazýý alanýndaki yazýnýn ne ºekilde yerleºtirildiðini saptar veya isteðe göre
yerleºtirir. [Link] , [Link], veya [Link]

void setEchoChar(char)
char getEchoChar()
JpasswordField sýnýfýnda tanýmlanmýº yazýlan yazýnýn yerine geçecek karekteri tanýmlayan
veya soran metodlardýr.

void addActionListener(ActionListener)

metodlarý ise TextFieldin dinlenmesini ve giriº tuºu basýldýðýnda yapýlacak eylemlerin verildiði
ActionListener implement’inden gelen

public void actionPerformed(ActionEvent e)

metodunu çalýºtýrmaya yarar.

void removeActionListener(ActionListener)

ise ActionListener dinleme metodunu iptal eder.

JTextField ve JPasswordField metodlarýnýn kullanýlmasýný bir örnek problemle inceleyelim.


Bu bir önceki problemin hemen hemen ayný iºlemleri yapan JFrame ortamýnda yazýlmýº bir
örnek problemdir.

Program 7.13 TextFieldTesti [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

public class TextFieldTestiSWF extends JFrame implements ActionListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

private JTextField T1,T2,T3;

private JPasswordField T4;

Container c;

public TextFieldTestiSWF()

super("JTestField ve JPassword Field Testleri");

c=getContentPane();

[Link](new FlowLayout());

[Link]([Link]);

//bos textField

T1=new JTextField(10);

[Link](this);

[Link](T1);

T2=new JTextField("Buraya yazý yazýnýz");

[Link](this);

[Link](T2);

T3=new JTextField("deðiºtirilemez yazý");

[Link](false);

[Link](this);

[Link](T3);

T4=new JPasswordField("gizli yazý");

[Link](T4);

public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String s="Kaynak = ";

if([Link]()==T1)

s+="T1 Yazý : "+[Link]();

else if([Link]()==T2)

s+="T2 Yazý : "+[Link]();

else if([Link]()==T3)

s+="T3 Yazý : "+[Link]();

else if([Link]()==T4)

s+="T4 Yazý : "+[Link]();

[Link](this,s,"JTestField ve JPassword Field Testleri",

JOptionPane.PLAIN_MESSAGE);

public static void main(String[] args)

TextFieldTestiSWF pencere= new TextFieldTestiSWF();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.11 TextFieldTesti SWF .java programý sonuçlarýnýn JFrame ve JoptionPane’de
görünümü

7.5 YAZIM ALANI AWT TEXTAREA VE SWING JTEXTAREA SINIFLARI

awt kütüphanesinde tanýmlanan Text Area sýnýfý yapý olarak TextField sýnýfýna benzer. En
onemli farký bir satýr yerine birden fazla satýr girdi alabilme olasýlýðýdýr. TextField ve TextArea
sýnýflarý TextComponent sýnýfýnýn alt sýnýflarýdýr. Bu yüzden üstte belirttiðimiz

Public void setEchoChar(char c) // kutudaki gerçek yazýyý gizleyerek onun yerine c karacter
deðiºkenini yazar.
Public void setEditable(boolean b) //kutunun içine yazýlan yazýnýn degiºtirileblmesini saðlar
veya engeller
b=true yazý yazýlabilir b=false yazý yazýlamaz.

Metotlarý burada da aynen geç[Link]’nýnkurucu metotlarýda ºöyledir:

public TextArea()
public TextArea(int sütun,int satýr)
sütun x satýr boyutunda yazý alaný tanýmlar
public TextArea(String s)
String deðiºkeni s nin boyuna göre yazý alaný tanýmlar ve s yi içine yazar.
public TextArea(String s,int sütun,int satýr)
sütun x satýr boyutunda yazý alaný tanýmlar ve s yi içine yazar
public TextArea(String s,int sütun,int satýr,int scrollbar)

scroll bar (kontrolçubuðu) deðiºkeni ºu deðerleri alabilir :


SCROLLBARS_BOTH Hem yatay hemdüºey kontrol çubuðu tanýmlar

SCROLLBARS_HORÝZONTAL_ONLY Yatay kontrol çubuðu tanýmlar

SCROLBARS_NONE Kontrol çubuðu tanýmlamaz

SCROLLBARS_VERTÝCAL_ONLY Düºey kontrol çubuðu tanýmlar

ªimdi TextArea metotunu Küçük bir örnekte kullanalým :

Program 7.14 [Link] programý

import [Link];
import [Link].*;
public class TextAreaTesti extends Applet
{
private TextArea T1;
public void init()
{
setBackground([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//bos textField
String s="buraya denemek icin\nyazi yazildi\n\t sonrada bu yazi aktarildi";
//not \n satirbasi kontrolu
// \t bir sonraki tab setine git
T1=new TextArea(s,5,40);
add(T1);
}
}

[Link]

ªekil 7.12 [Link] Programý applet çýktýsý

Bu programda gördüðünüz \n ve \t string komutlarýdýr. Alt satýra geç ve gelecek tab noktasýna
git anlamýna gelir Bu komutlar aslýnda c dilinden alýnmadýr ve c dilindeki tüm \ komutlarý java
stringlerinde de geçerlidir.

ªimdi TextArea metotunu biraz daha detaylý bir programda kullanalým

Program 7.15 : TextArea sýnýfýný kullanan [Link] programý

import [Link];
import [Link].*;
import [Link].*;

public class TextAreaTesti1 extends Applet


implements ActionListener,TextListener
{

private TextArea T1,T2;


private Button kopye;
public void init()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
setBackground([Link]);
//bos textField
String s="buraya denemek icin\nyazi yazildi\n\t sonrada bu yazi aktarildi";
//not \n sat�rbaŸ� kontrol�
// \t bir sonraki tab setine git
T1=new TextArea(s,5,20,TextArea.SCROLLBARS_NONE);
[Link](this);
add(T1);
kopye=new Button("Kopye ");
[Link](this);
add(kopye);
T2=new TextArea(5,20);
[Link](false);
add(T2);
}
public void actionPerformed(ActionEvent e)
{
// T1 penceresinden seçilen yazýyý
// kopye düðmesine basýldýðýnda T2 penceresine aktar
[Link]([Link]());
}

public void textValueChanged(TextEvent e)


{
//Birinci pencereye yeni yazý yazýldýðýnda ikinci pencereye aktar
TextComponent kaynak=(TextComponent)([Link]());
[Link]([Link]());
}
}

[Link]

ªekil 7.13 [Link] Programý sonuçlarýný gösteren appletler

Bu programda TextListener kullanýldýðýndan textValueChange metotu da kullanýlmýºtýr.


Buradaki metot birinci kutuya yazýlan yazýyý ikinci kutuya kopyalamaktadýr.

Kopye düðmesine basýlýnca ise sadece [Link]() metotuyla secilmiº olan text
actionPerforned metotu üzerinden T2 Yazým Alanýna (TextArea) aktarýlmaktadýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java swing JTextArea sýnýfý awt deki TextArea sýnýfýnýn benzeridir. Sýnýfýn kurucu
metodlarýnýn tanýmý

public JTextArea();

public JTextArea(int rows,int cols);

public JTextArea(Document doc);

public JTextArea(Document doc, String Text, int satýrsayýsý int sütun sayýsý);

public JTextArea(String Text)

public JTextArea(String Text,int satýrsayýsý int sütun sayýsý)

ºeklindedir.

JTextArea sýnýfýný kullanan Bir örnek problem verelim:

Program 7.16 TextAreaTesti1 [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

public class TextAreaTesti1SWF_2000 extends JFrame

implements ActionListener,TextListener

private JTextArea T1,T2;

private JButton kopye;

public TextAreaTesti1SWF_2000()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
super("JTextAreaTesti");

Container c=getContentPane();

[Link](new FlowLayout());

[Link]([Link]);

//bos textField

String s="buraya denemek icin\nyazý yazýldý\n\t sonrada bu yazý aktarýldý";

//not \n satýrbaºý kontrol

// \t bir sonraki tab setine git

Box b=[Link]();

T1=new JTextArea(s,10,15);

[Link](new JScrollPane(T1));

kopye=new JButton("Kopye >>>");

[Link](this);

[Link](kopye);

[Link](kopye);

T2=new JTextArea(10,15);

[Link](false);

[Link](new JScrollPane(T2));

[Link](b);

public void actionPerformed(ActionEvent e)

// T1 penceresinden seçilen yazýyý

// kopye düðmesine basýldýðýnda T2 penceresine aktar

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void textValueChanged(TextEvent e)

//Birinci pencereye yeni yazý yazýldýðýnda ikinci pencereye aktar

TextComponent kaynak=(TextComponent)([Link]());

[Link]([Link]());

public static void main(String[] args)

TextAreaTesti1SWF_2000 pencere= new TextAreaTesti1SWF_2000();

[Link](new BasicWindowMonitor());

[Link](600,200);

[Link](true);

[Link]

ªekil 7.14 TextAreaTesti1 SWF .java programý sonuçlarýnýn JFrame penceresindede


görünümü

7.6 AWT CHOICE , SWING JCOMBOBOX SEÇIM SINIFLARI

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
awt kütüphanesi Choice (Seçim) sýnýfý birden fazla maddeden seçim yapýlmasý gerektiðinde
kullanýlan bir sýnýftýr.
Choice sýnýfýnýn kurucu metotu ve diger metotlarýnýn listesi aºaðýda verilmiºtir :

public Choice() // Kurucu metot


public String getItem(int indeks)
Ýndeksteki seçimi verir
public synchronised void add(String s)
verilen Stringi Choice listesine ekler.
public synchronised String getSelectedItem()
Fareyle seçilmiº olan liste elemanýný verir
public synchronised String insert(String s, int indeks)
verilen stringi listeye indeks sýrasýndaki madde olarak ekle
public synchronised void remove(String s)
verilen stringi listeden siler

Choice (Seçim) sýnýfýný bir programda kullanalým :

Problem 7.17 Choice sýnýfýnýn kullanýmý, [Link]

import [Link].*;
import [Link];
import [Link].*;

public class ChoiceTesti extends Applet


{
private Choice F;
private TextField T;
public void init()
{
F=new Choice();
[Link]("MonoSpaced"); // Courier
[Link]("SansSerif"); // Helvetica
[Link]("Serif"); // Times
T=new TextField([Link](0),30);
[Link](false);
[Link](new Font([Link](0),[Link],12));
[Link](new FontIsmiKontrolu(T));

[Link](new TextFieldKontrolu(T));
add(F);
add(T);
}
}

class FontIsmiKontrolu implements ItemListener


{
private Component C;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public FontIsmiKontrolu(Component C)
{
this.C=C;
}

public void itemStateChanged(ItemEvent e)


{
[Link](new Font([Link]().toString(),

[Link]().getStyle(),
[Link]().getSize()));
}
}

class TextFieldKontrolu implements ItemListener


{
private TextField T;

public TextFieldKontrolu(TextField T)
{
this.T=T;
}

public void itemStateChanged(ItemEvent e)


{
Choice C=(Choice)[Link]();
[Link]("Indeks : "+ [Link]()+"; Font : "+[Link]());
}}

Choice seçimlerini yukarýdaki [Link] de de görüleceði gibi aktarýlýrken ItemListener


ve ItemEvent kullanýlmýºtýr. Bu metotla kullanýlmasý gereken method ItemStateChanged
metotu dur.

[Link]

Sekil 7.15 [Link] programýnýn sonuçlarýnýn appletde görülmesi

Java swing sýnýfýnda Choice sýnýfýnýn benzeri Jchoice sýnýfý mevcut deðildir. Onun yerini
JComboBox sýnýfý almýºtýr

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JComboBox sýnýfýnýn Kurucu metodlarý :

public JComboBox();

public JComboBox(ComboBoxModel m);

public JComboBox(Object obj[]);

public JComboBox(Vector v);

ºeklindedir. Vector geliºmiº bir boyutlu deðiºken türüdür detaylarý 11 inci bölüm, geliºmiº
java bilgi iºleme yapýlarý kýsmýnda verilmiºtir.

ComboBox Jcomponent sýnýfýndan türetilmiºtir. ActionListener, ItemSelectable,


ListDataListener ve Accessible sýnýflarýný implement eder. JComboBox sýnýfý, seçilen sýnýfý
size veren veya seçilme opsiyonunu tanýmlayan ºu sýnýflarý barýndýrýr :

getSelectedItem() : bu noktadaki Object deðerini çaðýrýr.

getSelectedIndex() : bu noktanýn indeks deðerini çaðýrýr

getSelectedObjects() : birden fazla seçim yapýldýðýnda tüm seçilen object listesini iletir.

setSelectedIndex(int pozisyon) : pozisyon indeksini seçer

setSelectedItem(Object nesne) nesne ‘yi seçer

Problem 7.18 JComboBox sýnýfýnýn kullanýmý, [Link]

import [Link].*;

import [Link].*;

import [Link].*;

public class JComboBoxTestiSWF extends JFrame

private JComboBox F;

private JTextField T;

public JComboBoxTestiSWF()

super("JComboBox örneði");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Container co=getContentPane();

String Liste[]={"MonoSpaced","SansSerif","Serif"};

F=new JComboBox(Liste);

T=new JTextField((String)[Link](0));

[Link](false);

[Link](new Font((String)[Link](0),[Link],12));

[Link](new FontIsmiKontrolu(T));

[Link](new TextFieldKontrolu(T));

[Link](F,[Link]);

[Link](T,[Link]);

public static void main(String[] args)

JComboBoxTestiSWF pencere= new JComboBoxTestiSWF();

[Link](new BasicWindowMonitor());

[Link](300,150);

//[Link]();

[Link](true);

class FontIsmiKontrolu implements ItemListener

private Component C;

public FontIsmiKontrolu(Component C)

this.C=C;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void itemStateChanged(ItemEvent e)

[Link](new Font([Link]().toString(),

[Link]().getStyle(),

[Link]().getSize()));

class TextFieldKontrolu implements ItemListener

private JTextField T;

public TextFieldKontrolu(JTextField T)

this.T=T;

public void itemStateChanged(ItemEvent e)

JComboBox C=(JComboBox)[Link]();

[Link]("Indeks : "+ [Link]()+"; Font : "+[Link]());

}}

[Link]

Sekil 7.16 JComboBoxTestiSWF .java programýnýn sonuçlarýnýn appletde görülmesi

7.7 AWT, CHECKBOX VE CHECKBOXGROUP VE SWING JCHECKBOX VE


JRADIOBUTTON SINIFLARI

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
awt sýnýfýnda yer alan Check box ve CheckBoxGroup sýnýflarý çesitli opsiyonlar arasýndan
seçim yapabilme olasýlýðýný saðlayan sýnýflardýr.

Kurucu metotlarý :

Public CheckBox(String s)
Tek bir kare kontrol kutusu oluºturur. Kontrol kutusu baºta boºtur
Public CheckBox(String s, CheckBoxGroup c,boolean durum)
Tekbir daire ºeklinde kontrol kutusu oluºturur ve bu kontrol kutusunu CheckBoxGroup
nesnesine ilave eder.
Public CheckboxGroup()
CheckboxGroup nesnesini oluºturur bu gruba checkboxlar ilave edilebilir

CheckBox kullanýmýný anlamak amacýyla [Link] programýna göz atalým :

Problem 7.19 [Link], CheckBox kullaným test programý

import [Link];
import [Link].*;
import [Link].*;

public class CheckBoxTesti extends Applet implements ItemListener


{
private TextField T;
private Checkbox Kalin,Italic;

public void init()


{
setBackground([Link]);
//bos textField
T=new TextField("Buradaki yazinin degismesini izleyiniz");
add(T);
Kalin=new Checkbox("Kalin");
[Link](this);
add(Kalin);
Italic=new Checkbox("Italik");
[Link](this);
add(Italic);
}

public void itemStateChanged(ItemEvent e)

{
int KalinAyari;
if([Link]())
{KalinAyari=[Link];}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else
{KalinAyari=[Link];}
int ItalicAyari;
if([Link]())
{ItalicAyari=[Link];}
else
{ItalicAyari=[Link];}
[Link](new Font("Serif",KalinAyari+ItalicAyari,14));
}
}

[Link]

ªekil 7.17 [Link] programýnýn sonuçlarýnýn appletde görülmesi

ªimdi de checkBoxGroup programýnýn çalýºmasýný ornekleyen RadioButtonTesti programýna


göz atalým. Burada guruplanmýº olan checkbox’lardan sadece bir tanesini seçme izni
verilmiºtir.

Problem 7.20 : [Link] programý

import [Link];
import [Link].*;
import [Link].*;

public class RadiobuttonTesti extends Applet implements ItemListener


{
private TextField T;
private Font NormalFont,KalinFont,ItalicFont,KalinItalicFont;
private Checkbox Normal,Kalin,Italic,KalinItalic;
private CheckboxGroup fontGurubu;

public void init()


{
setBackground([Link]);
//bos textField
T=new TextField("Buradaki yazinin degismesini izleyiniz");
add(T);
fontGurubu=new CheckboxGroup();

Normal=new Checkbox("Normal",fontGurubu,true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);
add(Normal);
Kalin=new Checkbox("Kalin",fontGurubu,true);
[Link](this);
add(Kalin);
Italic=new Checkbox("Italik",fontGurubu,true);
[Link](this);
add(Italic);
KalinItalic=new Checkbox("Kalin Italik",fontGurubu,true);
[Link](this);
add(KalinItalic);
NormalFont=new Font("Serif",[Link],14);
KalinFont=new Font("Serif",[Link],14);
ItalicFont=new Font("Serif",[Link],14);
KalinItalicFont=new Font("Serif",[Link]+[Link],14);
[Link](NormalFont);
}

public void itemStateChanged(ItemEvent e)


{
int KalinAyari;
if([Link]()== Normal)
{[Link](NormalFont);}
else if([Link]()== Kalin)
{[Link](KalinFont);}
else if([Link]()== Italic)
{[Link](ItalicFont);}
else if([Link]()== KalinItalic)
{[Link](KalinItalicFont);}
}
}

[Link]

ªekil 7.18 [Link] programý sonuçlarýnýn applette gösterilmesi

Swing gurubundaki ayný iºler için kullandýðýmýz sýnýflar JCheckBox, JRadioButton ve


JButtonGroup sýnýflarýdýr.

JCheckBox sýnýfýnýn kurucu metodlarý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public JCheckBox()

public JCheckBox(Icon resim)

public JCheckBox(Icon resim,boolean kutuiºareti)

public JCheckBox(String yazý)

public JCheckBox(String yazý, boolean kutuiºareti )

public JCheckBox(String yazý, Icon resim )

public JCheckBox(String yazý, , Icon resim ,boolean kutuiºareti )

Burada da daha önceki JLabel, JButton gibi sýnýflarda gördüðümüz gibi yazýnýn yanýnda
resim yerleºtirme seçimimiz de mevcuttur. Buradaki örnek problemde bir önceki problemin
aynýsý JcheckBox ile çözülmüºtür.

Problem 7.21 [Link], JCheckBox kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

public class CheckBoxTestiSWF extends JFrame implements ItemListener

private JTextField T;

private JCheckBox Kalin,Italik;

int KalinAyari=[Link];;

int ItalikAyari=[Link];

public CheckBoxTestiSWF()

super("check box örneði");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Container c=getContentPane();

[Link]([Link]);

//[Link](new FlowLayout());

JPanel Check=new JPanel();

[Link](new GridLayout(0,1));

//bos textField

Kalin=new JCheckBox("Kalýn");

[Link]('K');

[Link](false);

[Link](this);

[Link](Kalin);

Italik=new JCheckBox("Ýtalik");

[Link]('Ý');

[Link](false);

[Link](this);

[Link](Italik);

[Link](Check,[Link]);

T=new JTextField("Buradaki yazýnýn deðiºmesini izleyiniz");

[Link](new Font("Serif",KalinAyari+ItalikAyari,20));

[Link](T,[Link]);

public void itemStateChanged(ItemEvent e)

Object kutu=[Link]();

if(Kalin==kutu && [Link]()==[Link])

{KalinAyari=[Link];}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if(Kalin==kutu && [Link]()==[Link])

{KalinAyari=[Link];}

if(Italik==kutu && [Link]()==[Link])

{ItalikAyari=[Link];}

else if(Italik==kutu && [Link]()==[Link])

{ItalikAyari=[Link];}

[Link](new Font("Serif",KalinAyari+ItalikAyari,20));

public static void main(String[] args)

CheckBoxTestiSWF pencere= new CheckBoxTestiSWF();

[Link](new BasicWindowMonitor());

[Link](400,100);

[Link](true);

[Link]

ªekil 7.19 [Link] programýnýn sonuçlarýnýn JFrame’de görülmesi

Java swing JRadioButton sýnýfý JcheckBox tanýmýna benzerdir. Kurucu metodlarý :

public JRadioButton()

public JRadioButton(Icon resim)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public JRadioButton(Icon resim,boolean kutuiºareti)

public JRadioButton(String yazý)

public JRadioButton(String yazý, boolean kutuiºareti )

public JRadioButton(String yazý, Icon resim )

public JRadioButton(String yazý, , Icon resim ,boolean kutuiºareti )

Burada JRadioButton sýnýfýna ilave olarak bir tane daha ilave olarak bir tane daha yardýmcý
sýnýf kullanacaðýz. Bu sýnýf ButtonGroup sýnýfýdýr. Bu sýnýf düðmeleri bir gurup altýnda
toplayarak sadece bir tanesinin basýlý durumda olmasý iºlevini kontrol eder. Bu sýnýfýn tanýmý :

public class ButtonGroup extends Object implements Serializable

protected Vector düðmeler;

public ButtonGroup();

public void add(AbstractButton ab);

public Enumeration getElements();

public ButtonModel getSelection();

public boolean isSelected(ButtonModel bm);

public void remove(AbstractButton ab);

public void setSelected(ButtonModel bm,boolean b);

ºeklindedir. ªimdi yine bir öncekine benzer bir örnekte JradioButton ve ButtonGroup
sýnýflarýnýn birarada kullanýmýný görelim.

Problem 7.22 RadioButtonTestiSWF .java, JRadioButton kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class RadioButtonTestiSWF extends JFrame implements ItemListener

private JTextField T;

private JRadioButton normal,kalin,italik,kalinitalik;

private ButtonGroup gurup;

int KalinAyari=[Link];;

int ItalikAyari=[Link];

public RadioButtonTestiSWF()

super("Radio Button örneði");

Container c=getContentPane();

[Link]([Link]);

JPanel Check=new JPanel();

[Link](new GridLayout(4,0));

//bos textField

gurup=new ButtonGroup();

normal=new JRadioButton("Normal");

[Link]('N');

[Link](true);

[Link](this);

[Link](normal);

[Link](normal);

kalin=new JRadioButton("Kalýn");

[Link]('K');

[Link](false);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](kalin);

[Link](kalin);

italik=new JRadioButton("Ýtalik");

[Link]('t');

[Link](false);

[Link](this);

[Link](italik);

[Link](italik);

kalinitalik=new JRadioButton("Kalýn-Ýtalik");

[Link]('a');

[Link](false);

[Link](this);

[Link](kalinitalik);

[Link](kalinitalik);

[Link](Check,[Link]);

T=new JTextField("Buradaki yazýnýn deðiºmesini izleyiniz");

[Link](new Font("Serif",KalinAyari+ItalikAyari,20));

[Link](T,[Link]);

public void itemStateChanged(ItemEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Object kutu=[Link]();

if(kutu==normal)

KalinAyari=[Link];

ItalikAyari=[Link];

else if(kutu==kalin)

KalinAyari=[Link];

ItalikAyari=[Link];

else if(kutu==italik)

KalinAyari=[Link];

ItalikAyari=[Link];

else if(kutu==kalinitalik)

KalinAyari=[Link];

ItalikAyari=[Link];

[Link](new Font("Serif",KalinAyari+ItalikAyari,20));

repaint();

public static void main(String[] args)

RadioButtonTestiSWF pencere= new RadioButtonTestiSWF();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new BasicWindowMonitor());

[Link](400,100);

[Link](true);

[Link]

ªekil 7.20 [Link] programýnýn sonuçlarýnýn JFrame’de görülmesi

Son olarak bu guruptan JToggleButton sýnýfýna deðinelim. JToggleButton sýnýfý iºlevsel


olarak JcheckBox sýnýfýnýn aynýdýr. Sadece basýlým alaný düðme(button) ºeklindedir.
JcheckBox için verdiðimiz programýn JToggleButton’a dönüºtürülmüº ºekli aºaðýda
verilmiºtir.

Problem 7.23 ToggleButtonTestiSWF .java, JToggleButton kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

public class ToggleButtonSWF extends JFrame implements ItemListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private JTextField T;

private JToggleButton Kalin,Italik;

int KalinAyari=[Link];;

int ItalikAyari=[Link];

public ToggleButtonSWF()

super("ToggleButton örneði");

Container c=getContentPane();

[Link]([Link]);

//[Link](new FlowLayout());

JPanel Check=new JPanel();

[Link](new GridLayout(0,1));

//bos textField

Kalin=new JToggleButton("Kalýn");

[Link]('K');

[Link](false);

[Link](this);

[Link](Kalin);

Italik=new JToggleButton("Ýtalik");

[Link]('t');

[Link](false);

[Link](this);

[Link](Italik);

[Link](Check,[Link]);

T=new JTextField("Buradaki yazýnýn deðiºmesini izleyiniz");

[Link](new Font("Serif",KalinAyari+ItalikAyari,20));

[Link](T,[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public void itemStateChanged(ItemEvent e)

Object kutu=[Link]();

if(Kalin==kutu && [Link]()==[Link])

{KalinAyari=[Link];}

else if(Kalin==kutu && [Link]()==[Link])

{KalinAyari=[Link];}

if(Italik==kutu && [Link]()==[Link])

{ItalikAyari=[Link];}

else if(Italik==kutu && [Link]()==[Link])

{ItalikAyari=[Link];}

[Link](new Font("Serif",KalinAyari+ItalikAyari,20));

public static void main(String[] args)

ToggleButtonSWF pencere= new ToggleButtonSWF();

[Link](new BasicWindowMonitor());

[Link](400,100);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.21 ToggleButtonTestiSWF .java programýnýn sonuçlarýnýn JFrame’de görülmesi

7.8 MOUSE(FARE) KONTROLU

Modern bilgisayarlarda bilgisayar iºlemlerinin çok büyük bir kýsmý mouse (fare) ile kontrol
edilir. Javada gurubunda temel fare kontrollarýný saðlayan sýnýflar MouseListener ve
MouseMotionListener sýnýflarýdýr.

Bu sýnýflarýn en çok kullanýlan metotlarý ºunlardýr :

1. MouseListener Metotlarý :

public void mousePressed(MouseEvent e)


bir mouse düðmesi basýlýnca çaðýrýlýr
public void mouseClicked(MouseEvent e)
bir mouse düðmesi basýlýp býrakýlýrsa çaðýrýlýr.
public void mouseReleased(MouseEvent e)
Bir mouse düðmesi basýlý olarak mouse çekildikten sonra düðme býrakýlýnca çaðýrýlýr.
public void mouseEntered(MouseEvent e)
mouse pencere içine girince çaðýrýlýr.
public void mouseExited(MouseEvent e)
mouse pencere çerçevesinin dýºýndaysa çaðýrýlýr.

2. MouseMotionListener Metotlarý

public void mouseDragged(MouseEvent e)


Mouse düðmesi basýlý iken mouse hareket ettirilirse çaðýrýlýr
public void mouseMoved(MouseEvent e)
Mouse hareket ederse çaðýrýlýr.

Bu metotlarýn kullanýmlarýný göstermek amacýyla [Link] programý aºaðýda verilmiºtir.


Bu program awt Applet programý olarak hazýrlanmýºtýr.

Program 7.24 : [Link] programý

import [Link];
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class FareTesti extends Applet


implements MouseListener, MouseMotionListener
{
private int nx,ny=-10;
private String s="";

public void init()


{
addMouseListener(this);
addMouseMotionListener(this);
}

public void paint(Graphics g)


{
[Link](s+"["+nx+","+ny+"]",nx,ny);
}

public void degerleriGir(String e,int x,int y)


{
s=e;
nx=x;
ny=y;
repaint();
}

//fare dinleyicisinin dinledikleriyle ilgili cikti metotlari


public void mouseClicked(MouseEvent e)
{ degerleriGir("Kliklendi",[Link](),[Link]()); }
public void mousePressed(MouseEvent e)
{ degerleriGir("Basildi",[Link](),[Link]()); }

public void mouseReleased(MouseEvent e)


{ degerleriGir("Birakildi",[Link](),[Link]()); }
public void mouseEntered(MouseEvent e)
{ showStatus("Fare applet alani icinde"); }
public void mouseExited(MouseEvent e)
{ showStatus("Fare applet alani disinda"); }
//MouseMotionListener (fare hareket dinleyicisi) metotlari
public void mouseDragged(MouseEvent e)
{ degerleriGir("basilip cekiliyor",[Link](),[Link]()); }
public void mouseMoved(MouseEvent e)
{ degerleriGir("hareket halinde",[Link](),[Link]()); }

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.22 [Link] applet çýktýsý

Ayný programýn JFrame’de yazýlmýº bir benzeri aºaðýda sunulmuºtur.

Problem 7.25 [Link], Fare(Mouse) kontrol sýnýflarý kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

public class FareTestiSWF extends JFrame

implements MouseListener, MouseMotionListener

private int nx,ny=-10;

private String s="";

private JLabel altbar;

public FareTestiSWF()

super("Fare Testi");

altbar=new JLabel();

getContentPane().add(altbar,[Link]);

addMouseListener(this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
addMouseMotionListener(this);

public void degerleriGir(String e,int x,int y)

s=e;

nx=x;

ny=y;

[Link](e+"["+x+" , "+y+"] ");

repaint();

//fare dinleyicisinin dinledikleriyle ilgili cikti metodlari

public void mouseClicked(MouseEvent e)

{ degerleriGir("Kliklendi",[Link](),[Link]()); }

public void mousePressed(MouseEvent e)

{ degerleriGir("Basýldý",[Link](),[Link]()); }

public void mouseReleased(MouseEvent e)

{ degerleriGir("Býrakýldý",[Link](),[Link]()); }

public void mouseEntered(MouseEvent e)

{ setTitle("Fare applet alaný içinde"); }

public void mouseExited(MouseEvent e)

{ setTitle("Fare applet alaný dýºýnda");

degerleriGir("Fare applet alaný dýºýnda",[Link](),[Link]());

//MouseMotionListener (fare hareket dinleyicisi) metotlari

public void mouseDragged(MouseEvent e)

{ degerleriGir("basilip cekiliyor",[Link](),[Link]()); }

public void mouseMoved(MouseEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{ degerleriGir("hareket halinde",[Link](),[Link]()); }

public static void main(String[] args)

FareTestiSWF pencere= new FareTestiSWF();

[Link](new BasicWindowMonitor());

[Link](350,150);

[Link](true);

[Link]

ªekil 7.23 [Link] JFrame penceresi çýktýsý

7.9 SWING JTABLE SINIFI

JTable ºu ana kadar gördüðümüz sýnýflara göre daha kompleks bir yapý arzeder, fakat
oldukça kullanýºlý bir yapýdýr ve sadece swing kütüphanesinde tanýmlanmýºtýr.

JTable sýnýfýnýn kurucu sýnýflarý :

public JTable();

public JTable(TableModel tm);

public JTable(TableModel tm, TableColumnModel tcm);

public JTable(TableModel tm, TableColumnModel tcm, ListSelectionModel lm);

public JTable(int satýrsayýsý,int sütunsayýsý);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public JTable(Object[][] tablogirdisi ,Object[] tablobaºlýðýgirdisi);

public JTable(Vector tablogirdisi ,Vector tablobaºlýðýgirdisi);

ºeklindedir. Kurucu metodlarda girdi olarak görünen TableModel sýnýfý

public interface TableModel{

public abstract void addTableModelListener(TableModelListener l);

public abstract Class getColumnClass(int sütun);

public abstract int getColumnCount();

public abstract String getColumnName(int Column);

public abstract int getRowCount();

public abstract Object getValueAt(int satýr, int sütun);

public abstract boolean isCellEditable(int satýr, int sütun);

public abstract void removeTableModelListener(TableModelListener l);

public abstract void setValueAt(Object [Link] satýr,int sütun);

görüldüðü gibi bu sýnýf interface olduðundan bu sýnýftan türetilen sýnýflarýn bu sýnýftaki tüm
metodlarý tanýmlamalarý gerekir. Bu yüzden AbstractTableModel gibi Table Model’den
türetilen sýnýflar üzerinden yeni sýnýfýn türetilmesine gidilebilir.

public abstract class AbstractTableModel implements TableModel

public AbstractTableModel();

public abstract void addTableModelListener(TableModelListener l);

public int findColumn(String ColumnName);

public void fireTableCellUpdated(int satýr,int sütun);

public void fireTableChanged(TableModelEvent e);

public void fireTableDataChanged();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void fireTableRowsDeleted(int satýr,int sütun);

public void fireTableRowsInserted(int satýr,int sütun);

public void fireTableRowsUpdated(int satýr,int sütun);

public void fireTableStructureChanged();

public abstract Class getColumnClass(int sütun);

public abstract String getColumnName(int Column);

public abstract boolean isCellEditable(int satýr, int sütun);

public abstract void removeTableModelListener(TableModelListener l);

public abstract void setValueAt(Object [Link] satýr,int sütun);

Örnek problemlerde önce AbstractTableModel’den türetilen ve Tablonun giriº deðerlerini


veren TableModel sýnýfý yaratýlmýº, sonra bu sýnýf tabloda girdi olarak kullanýlmýºtýr.

Problem 7.26 tableSWF_2000.java, TableModel , JTable ve TableModelListener sýnýflarý


kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

class TableModel extends AbstractTableModel implements TableModelListener

Object[][] veri={{"satýr bir - sütun bir","satýr bir - sütun iki"},

{"satýr iki - sütun bir","satýr iki - sütun iki"}};

String[] baslik={"sütun bir","sütun iki"};

public TableModel()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

addTableModelListener(this);

public int getRowCount() {return [Link];}

public int getColumnCount() {return [Link];}

public Object getValueAt(int satir,int sutun) {return veri[satir][sutun];}

public String getColumnName(int c) {return baslik[c];}

public void setValueAt(Object val, int row, int col)

veri[row][col] = val;

// Deðiºimin olduðunu göster:

fireTableDataChanged();

public void tableChanged(TableModelEvent e)

String s="Tablodaki deðer deðiºtirildi ";

[Link](null,s,"Tablodaki deðer deðiºtirildi",

JOptionPane.WARNING_MESSAGE);

public boolean isCellEditable(int row, int col) {return true;}

public class tableSWF_2000 extends JFrame

private Container c;

public tableSWF_2000()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
super("Tablo örneði");

c=getContentPane();

[Link](new BorderLayout());

setSize(300,300);

addWindowListener(new BasicWindowMonitor());

TableModel tm=new TableModel();

JTable jt=new JTable(tm);

JScrollPane jsp=new JScrollPane(jt);

[Link](jsp,[Link]);

f=new JTextField();

[Link](f,[Link]);

//=====================================================

public static void main(String[] args)

tableSWF_2000 pencere= new tableSWF_2000();

[Link](true);

[Link]

ªekil 7.24 26 tableSWF_2000 .java JFrame ve JoptionPane penceresi çýktýsý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Problem 7.27 table1SWF_2000 .java, TableModel , JTable ve TableModelListener sýnýflarý
kullaným test programý

// JTable örneði

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

// The TableModel controls all the data:

class DataModel extends AbstractTableModel {

Object[][] data = {

{"bir", "iki", "üç", "dört"},

{"beº", "altý", "yedi", "sekiz"},

{"dokuz", "on", "onbir", "oniki"},

};

String[] baslik={"sütun 1","sütun 2","sütun 3","sütun 4"};

// Tablo dinleme metodu ve sýnýfý : Tabloda bir deðiºiklik yapýldýðýnda

// JOption pane ile yeni deðiºikliði göster

class TML implements TableModelListener {

public void tableChanged(TableModelEvent e) {

String s="";

for(int i = 0; i < [Link]; i++)

for(int j = 0; j < data[0].length; j++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s+=data[i][j] + " ";

s+="\n";

[Link](null,s,"Tablodaki data deðiºtirildi",

JOptionPane.PLAIN_MESSAGE);

//kurucu metod

DataModel()

addTableModelListener(new TML());

public int getColumnCount() {return data[0].length;}

public int getRowCount() { return [Link];}

public Object getValueAt(int row, int col) {return data[row][col];}

public String getColumnName(int c) {return baslik[c];}

public void setValueAt(Object val, int row, int col)

data[row][col] = val;

// Deðiºimin olduðunu göster:

fireTableDataChanged();

public boolean

isCellEditable(int row, int col) {

return true;

};

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class table1SWF_2000 extends JFrame {

public table1SWF_2000()

{ super("Tablo örneði");

Container c=getContentPane();

[Link](new BorderLayout());

JTable table = new JTable(new DataModel());

JScrollPane jsp=new JScrollPane(table);

[Link](jsp, [Link]);

public static void main(String args[]) {

table1SWF_2000 pencere= new table1SWF_2000();

[Link](300,300);

[Link](new BasicWindowMonitor());

[Link](true);

[Link]

ªekil 7.25 table1SWF_2000.java JFrame ve JOPtionPane çýktýsýn görünümü

7.10 AWT, LIST SINIFI VE JAVA SWING JLIST SINIFI , LÝSTEDEN SEÇÝM

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu gurup aslýnda bölüm 7.6 da tanýmlanan awt Choice , swing JcomboBox seçim sýnýflarýnýn
bir devamý niteliðindedir.

List ve Jlist sýnýflarý bir listeden seçim yapmaya ve bu seçim sonucu gerekli iºlemleri
oluºturmaya yarar. List sýnýfý ItemListener ve ActionListener sýnýf implementlerini kullanýr.
Örnek programýmýzda Listeden seçilen renge göre arkaplan rengi deðiºmektedir.

Program 7.28 [Link] programý

import [Link];
import [Link].*;
import [Link].*;

public class ListTesti extends Applet implements ActionListener,ItemListener


{
private List renkListesi;
private String renkIsmi[]={"Siyah","Mavi","Cam Gobegi","Koyu Gri","Gri",
"Yesil","Acik gri","Mor","Portakal","Pembe","Kirmizi","Beyaz","Sari"};
private Color C[]={[Link],[Link],[Link],[Link],
[Link],[Link],[Link],[Link],[Link],
[Link],[Link],[Link],[Link]};

public void init()


{
//Ekranda 5 isim g”r�lebilecel bir liste ac
//ayn� ismi birden fazla tekrarlama
renkListesi=new List(5,false);
[Link](this);
[Link](this);
//listeye ekle

for(int i=0;i<[Link];i++)

{
[Link](renkIsmi[i]);
}
add(renkListesi);
}
public void actionPerformed(ActionEvent e)
{
setBackground(C[[Link]()]);
repaint();
}

public void itemStateChanged(ItemEvent e)


{
showStatus([Link]()+"; indeks : "+
[Link]());
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 7.26 [Link] programý sonuçlarýn appletviewer da görünümü

List sýnýfýnýn swing grubundaki paraleli daha geliºmiº bir liste kullanma metodu JList
metodudur. Jlist metodu pencereye ilave edilirken direk olarak ilave edilmez, JscrollPane alt
pencere programý üzerinden ilave edilir. Ayný zamanda dinleme metodu olarak
ListSelectionListener metodu kullanýlýr. Bu metod java swing kütüphanesi [Link]
de tanýmlanmýºtýr.

JList metoduyla bir seçim yapýldýðý gibi birden fazla seçim yapmakta mümkündür.

JList metodunun kurucu metodlarý :

public JList();

public JList(ListModel lm);

public JList(Object o[]);

public JList(Vector v);

dir.

Seçimde kullanýlan bazý önemli metodlarý :

public int GetSelectedIndex() : seçilen (veya en son seçilen) elemanýn indisini verir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int[] getSelectedIndices() : seçilen elemanlarýn (birden fazla olabilir) indislerini boyut
üzerinden aktarýr

public Object getSelectedValue() : son seçilen elemandaki deðeri Object olarak aktarýr.

public object[] getSelectedValues() : seçilen elemanlardaki deðerleri boyutlu object olarak


aktarýr

void setSelectionMode(int mode) : tek eleman mý seçileceðini yoksa çok sayýda eleman mý
seçileceðini belirler. Girdi int deðiºkeni

ListSelectionModel.SINGLE_SELECTION (tek eleman seçimi)

ListSelectionModel .INTERVAL_SELECTION (bir gurup seçimi)

ListSelectionModel .MULTIPLE_INTERVAL_SELECTION (birden fazla gurup seçimi)

Deðerlerinden birini alabilir.

Public void setVisibleRowCount(int sayý) : listenin kaç elemanýnýn görüntüleneceðini verir.

Listenin kenar kayma çubuklarý, listenin içinde yer alacaðý JScrollPane penceresi tarafýndan
oluºturulur.

JScrollPane metodunun kurucu metodlarý

public JScrollPane();

public JScrollPane(int düºeyçubukçeºidi,int yatayçubukçeºidi);

public JScrollPane(Component pencere);

public JScrollPane(Component pencere ,int düºeyçubukçeºidi,int yatayçubukçeºidi);

Buradaki pencere JScrollPane’in içinde yeralacaðý container’ý gösterir. Düºeyçubukçeºidi

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS : her zaman düºey kaydýrma çubuðu


tanýmla

JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED : sadece gerektiði zaman zaman


düºey kaydýrma çubuðu tanýmla

JScrollPane.VERTICAL_SCROLLBAR_NEVER : hiçbir zaman düºey kaydýrma çubuðu


tanýmlama

Deðerlerini alýr. Yatayçubukçeºidi ise

JScrollPane. HORIZONTAL _SCROLLBAR_ALWAYS : her zaman yatay kaydýrma çubuðu


tanýmla

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JScrollPane. HORIZONTAL _SCROLLBAR_AS_NEEDED : sadece gerektiði zaman yatay
kaydýrma çubuðu tanýmla

JScrollPane. HORIZONTAL _SCROLLBAR_NEVER : hiçbir zaman yatay kaydýrma çubuðu


tanýmlama

Deðerlerini alýr.

Birkaç örnek problemle Jlist sýnýfýný vermetye çalýºalým. Ýlk örnek yukarýdaki JcomboBox
problemlerin ayný iºlemini yapmaktadýr. Listeden yapýlan seçime göre JtextField alanýndaki
fontu deðiºtirecektir. Listenin iki elemanýnýn görülmesi müsadesi verilmiºtir. Liste tek seçimli
listedir.

Problem 7.29 JListTestiSWF .java, JList sýnýfý kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class JListTestiSWF extends JFrame implements ListSelectionListener

private JList F;

private JTextField T;

public JListTestiSWF()

super("JList ve JScrollPane örneði");

Container co=getContentPane();

String Liste[]={"MonoSpaced","SansSerif","Serif"};

F=new JList(Liste);

[Link](2);

[Link](ListSelectionModel.SINGLE_SELECTION);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](0);

T=new JTextField((String)[Link]());

[Link](false);

[Link](new Font((String)[Link](),[Link],12));

[Link](this);

JScrollPane sp=new JScrollPane(F);

[Link](sp,[Link]);

[Link](T,[Link]);

public void valueChanged(ListSelectionEvent e)

[Link](new Font((String)[Link](),

[Link]().getStyle(),

[Link]().getSize()));

[Link]("Indeks : "+ [Link]()+" Font : "+[Link]());

public static void main(String[] args)

JListTestiSWF pencere= new JListTestiSWF();

[Link](new BasicWindowMonitor());

[Link](300,200);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 7.27 [Link] programý sonuçlarýn JFrame penceresinde görünümü

Bu örnekte ise listeden yapacaðýmýz seçime göre arka plan rengini deðiºtiriyoruz. Bu
program yukarýda verilen List programýnýn oldukça benzeridir. Listede dört elemanýn
görülmesi izni verilmiºtir. Liste tek seçimli bir listedir.

Problem 7.30 JlistTesti1SWF .java, JList sýnýfý kullaným test programý

import [Link].*; // java swing sinifini cagir

import [Link].*;

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import BasicWindowMonitor;

import renk;

public class JListTesti1SWF extends JFrame implements ListSelectionListener

// Renk secme ornegi

private String renkler[]={"siyah","Mavi","camgöbeði","Koyu Gri","Gri",

"Yeºil","Açýk gri","mor","Portakal","Pembe","Kýrmýzý","beyaz","sarý"};

private renk re[]={[Link],[Link],[Link],[Link],

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link],[Link],[Link],[Link],[Link],[Link],

[Link],[Link],[Link]};

JList renklistesi;

Color r=[Link];

Container c;

// pencereyi baslatma metodu

public JListTesti1SWF()

super("JListTesti1 renk seçici");

c=getContentPane();

[Link](new FlowLayout()) ;

renklistesi=new JList(renkler);

[Link](4);

[Link](ListSelectionModel.SINGLE_SELECTION);

[Link](new JScrollPane(renklistesi));

[Link](this);

// girdi alanindaki olan olaylari dinleme metodu

public void valueChanged(ListSelectionEvent e)

r=re[[Link]()];

if(r==null)

r=[Link];

[Link](r);

repaint();

//=====================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args)

JListTesti1SWF pencere= new JListTesti1SWF();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

[Link]

ªekil 7.28 [Link] programý sonuçlarýn JFrame penceresinde görünümü

Diðer bir Liste kullanma örneði : Bu örnekte Listeye JtextField üzerinden ilave yapabiliyoruz
ve çýkarabiliyoruz. Örnek Java döküman kütüphanesinden alýnýp adapte edilmiºtir.

Problem 7.31 [Link], JList sýnýfý kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class ListDemoSWF extends JFrame implements ListSelectionListener {

private JList list;

private DefaultListModel listModel;

private static final String hireString = "ݺe al";

private static final String fireString = "ݺten at";

private JButton fireButton;

private JTextField employeeName;

public ListDemoSWF() {

super("ListDemo");

listModel = new DefaultListModel();

[Link]("Turhan Çoban");

[Link]("Ýrfan Çoban");

[Link]("Birsen Çeliker");

[Link]("Nurhan Erel");

//Listeyi oluºtur ve scrollPane'e yerleºtir

list = new JList(listModel);

[Link](ListSelectionModel.SINGLE_SELECTION);

[Link](0);

[Link](this);

JScrollPane listScrollPane = new JScrollPane(list);

JButton hireButton = new JButton(hireString);

[Link](hireString);

[Link](new HireListener());

fireButton = new JButton(fireString);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](fireString);

[Link](new FireListener());

employeeName = new JTextField(10);

[Link](new HireListener());

String name = [Link]([Link]()).toString();

[Link](name);

//Create a panel that uses FlowLayout (the default).

JPanel buttonPane = new JPanel();

[Link](employeeName);

[Link](hireButton);

[Link](fireButton);

Container contentPane = getContentPane();

[Link](new BorderLayout());

[Link](listScrollPane, [Link]);

[Link](buttonPane, [Link]);

class FireListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

//Bu metod hala listede seçilebilecek eleman kalmýºsa çaðýrýlýr.

int index = [Link]();

[Link](index);

int size = [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//Listede eleman kalmadý iºten atmayý durdur

if (size == 0) {

[Link](false);

//seçimi düzenle

} else {

if (index == [Link]())

index--;

[Link](index);

class HireListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

//Eðer yeni isim girilmemiºse

if ([Link]().equals("")) {

[Link]().beep();

return;

int index = [Link]();

int size = [Link]();

if (index == -1 || (index+1 == size)) {

[Link]([Link]());

[Link](size);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} else {

[Link]([Link](), index+1);

[Link](index+1);

public void valueChanged(ListSelectionEvent e) {

if ([Link]() == false) {

if ([Link]() == -1) {

[Link](false);

[Link]("");

} else {

[Link](true);

String name = [Link]().toString();

[Link](name);

public static void main(String s[])

JFrame frame = new ListDemoSWF();

[Link](new BasicWindowMonitor());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

[Link](true);

[Link]

ªekil 7.29 [Link] programý sonuçlarýn JFrame penceresinde görünümü

Listelerin sadece tek seçim deðil ayný zamanda birden fazla seçim yapmak içinde
kullanýldýðýndan bahsetmiºtik. Aºaðýdaki örnekte listeden Liste türü deðiºkeninde yaptýðýmýz
deðiºikliðe göre bir veya birden fazla seçim yapabiliyoruz . Bu program hem JFrame hem de
Japplet olarak çalýºabilmektedir.

Problem 7.32 [Link], JList sýnýfý kullaným test programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class ListSelectionDemo extends JApplet {

JTextArea output;

JList list;

JTable table;

String newline = "\n";

ListSelectionModel listSelectionModel;

private boolean inAnApplet = true;

//bazý sistemlerde ana kurucu metod olmayýnca hata verebileceði

// için tanýmlandý.

public ListSelectionDemo()

this(true);

public ListSelectionDemo(boolean inAnApplet) {

[Link] = inAnApplet;

if (inAnApplet) {

getRootPane().putClientProperty("defeatSystemEventQueueCheck",

[Link]);

public void init() {

String[] listData = { "bir", "iki", "üç", "dört",

"beº", "altý", "yedi" };

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String[] columnNames = { "Fransýzca", "Ýngilizce", "Italyanca" };

String[][] tableData = {{"un", "obe", "uno" },

{"deux", "two", "due" },

{"trois", "three", "tre" },

{ "quatre", "four", "quattro"},

{ "cinq", "five", "cinque" },

{ "six", "six", "sei" },

{ "sept", "seven", "sette" } };

list = new JList(listData);

listSelectionModel = [Link]();

[Link](

new SharedListSelectionHandler());

JScrollPane listPane = new JScrollPane(list);

table = new JTable(tableData, columnNames);

[Link](listSelectionModel);

JScrollPane tablePane = new JScrollPane(table);

//Kontrol alanýný JPAnel olarak oluºtur (FlowLayout kullan)

JPanel controlPane = new JPanel();

String[] modes = { "SINGLE_SELECTION",

"SINGLE_INTERVAL_SELECTION",

"MULTIPLE_INTERVAL_SELECTION" };

final JComboBox comboBox = new JComboBox(modes);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](2);

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

String newMode = (String)[Link]();

if ([Link]("SINGLE_SELECTION")) {

[Link](

ListSelectionModel.SINGLE_SELECTION);

} else if ([Link]("SINGLE_INTERVAL_SELECTION")) {

[Link](

ListSelectionModel.SINGLE_INTERVAL_SELECTION);

} else {

[Link](

ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

[Link]("----------"

+ "Liste seçim türü: " + newMode

+ "----------" + newline);

});

[Link](new JLabel("Liste Türü :"));

[Link](comboBox);

//Çýktý alaný oluºtur

output = new JTextArea(10, 40);

[Link](false);

JScrollPane outputPane = new JScrollPane(output,

ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//JFrame'i Split pane kullanarak ikiye böl

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);

getContentPane().add(splitPane, [Link]);

//

JPanel topHalf = new JPanel();

[Link](new BoxLayout(topHalf, BoxLayout.X_AXIS));

JPanel listContainer = new JPanel(new GridLayout(1,1));

[Link]([Link](

"Türkçe Liste"));

[Link](listPane);

JPanel tableContainer = new JPanel(new GridLayout(1,1));

[Link]([Link](

"Tablo"));

[Link](tablePane);

[Link](new Dimension(300, 100));

[Link]([Link](5,5,0,5));

[Link](listContainer);

[Link](tableContainer);

[Link](new Dimension(400, 50));

[Link](new Dimension(400, 110));

[Link](topHalf);

JPanel bottomHalf = new JPanel(new BorderLayout());

[Link](controlPane, [Link]);

[Link](outputPane, [Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//XXX: the next line is necessary if bottomHalf is a scroll pane:

//[Link](new Dimension(400, 50));

[Link](new Dimension(450, 135));

[Link](bottomHalf);

public static void main(String[] args) {

JFrame frame = new JFrame("Listeden seçme örneði");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {

[Link](0);

});

ListSelectionDemo listDemo = new ListSelectionDemo(false);

[Link]();

[Link](listDemo);

[Link]();

[Link](true);

class SharedListSelectionHandler implements ListSelectionListener {

public void valueChanged(ListSelectionEvent e) {

ListSelectionModel lsm = (ListSelectionModel)[Link]();

int firstIndex = [Link]();

int lastIndex = [Link]();

boolean isAdjusting = [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("Seçilen indeks bölgesi: "

+ firstIndex + " - " + lastIndex

+ "; isAdjusting " + isAdjusting

+ "; Listeden seçilen indeks sayýsý:");

if ([Link]()) {

[Link](" <none>");

} else {

// Find out which indexes are selected.

int minIndex = [Link]();

int maxIndex = [Link]();

for (int i = minIndex; i <= maxIndex; i++) {

if ([Link](i)) {

[Link](" " + i);

[Link](newline);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.30 [Link] programý sonuçlarýn JFrame penceresinde görünümü
(not bu program hem applet hem frame olark görüntülenebilir)

7.11 SWING JMENU

Window türü programlamaya alýºýk olan herkes menu kullanmaya da alýºýktýr. Menuler
pencerenin tepesinden açýlan ve çeºitli görevler yüklenen komponentlerdir. Java swing
menu’leri temel olarak JMenuBar, JMenu ve JMenuItem sýnýflarýndan oluºur. Ayrýca
menulerde JcheckBoxMenuItem, JradioButtonMenuItem gibi alt elemanlar da bulunabilir.

JmenuBar kurucu metodu :

Public JmenuBar();

ªeklindedir.

Bazý önemli metodlarý :

public JMenu add(JMenu menu); : menu ilave eder

public Component getComponent();

public Component getComponentAtIndex(int indeks);

public Insets getMargin();

public Jmenu getMenu(int)

public int getMenuCount();

public SingleSelectionModel getSelectionModel();

public MenuElement[] getSubElements();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
protected void paintBorder(Graphics g);

public void processMouseEvent(MouseEvent e,MouseElement


path[],MouseSelectionManager mgr);

public void setBorderPainted(boolean b);

public void setHelpMenu(Jmenu menu);

public void setMargin(Insets in);

pubic void setSelected(Component c);

Jmenu kurucu metodlarý :

public JMenu();

public JMenu(String Label);

public JMenu(String label,boolean menudenayýr);

Bazý önemli JMenu metodlarý :

public JMenuItem add(Action act);

public JMenuItem add(JMenuItem item);

public Component add(Component c);

public void add(String Jlabel);

public void addMenuListener(MenuListener l);

public void addSeperator();

public JMenuItem getItem(int pos);

public int getItemCount();

public Component getMenuComponent(int pos);

public int getMenuComponentCount();

public Component[] getMenuComponents(public MenuElement[] getSubElements();

public JMenuItem insert(JMenuItem item,int pos);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void insert(String etiket,int pos);

public void remove(int pos);

public void remove(MenuItem item);

public void removeAll();

public void removeMenuListener(MenuListener l);

public void setAccelerator(KeyStroke s);

public void setDealy(int delay);

public void setMenuLocation(int x,int y);

public void setPopUpMenuVisible(boolean b)

public void setSelected(boolean b);

JMenuItem kurucu metodlarý :

public JMenuItem();

public JMenuItem(Icon resim);

public JMenuItem(String Label);

public JMenuItem(String Label,int mnemonic);

public JMenuItem(String Label,Icon resim);

bazý metodlarý :

publci Component getComponent();

public menuElement[] getSubElements();

JCheckBoxMenuItem, JMenuItem sýnýfýnýn bir alt sýnýfý olarak oluºturulmuºtur. Davranýºý


JCheckBox sýnýfý gibidir. Kurucu metodlarý :

public JCheckBoxMenuItem();

public JCheckBoxMenuItem(Icon resim);

public JCheckBoxMenuItem(String Label);

public JCheckBoxMenuItem(String Label,Icon resim);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public JCheckBoxMenuItem(String Label,Boolean seçildimi);

public JCheckBoxMenuItem(String Label,Icon resim, Boolean seçildimi);

JRadioButtonMenuItem’ da JMenuItem’ýn alt sýnýfý olarak oluºturulmuºtur. Kurucu metodlarý :

public JRadioButtonMenuItem ();

public JRadioButtonMenuItem (Icon resim);

public JRadioButtonMenuItem (String Label);

public JRadioButtonMenuItem (String Label,Icon resim);

ªimdi bu metodlarý kullanan bir örnek menu oluºturalým. Örnek menu sadece menu yapýsýný
göstermek amaçlý olduðundan fazla bir eyem yamamaktadýr. Gerçek programlarýnýzda
gerekli eylemleri yereºtirebilirsiniz.

Problem 7.33 [Link], JMenu,JmenuBar,JMenuItem,JCheckBoxMenuItem ve


JRadioButtonMenuItem sýnýflarý kullaným test programý

import [Link].*;

import [Link].*;

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];

/*

* Menu Demo

*/

public class MenuDemo extends JFrame

implements ActionListener, ItemListener {

JTextArea output;

JScrollPane scrollPane;

String newline = "\n";

public MenuDemo() {

JMenuBar menuBar;

JMenu menu, submenu;

JMenuItem menuItem;

JRadioButtonMenuItem rbMenuItem;

JCheckBoxMenuItem cbMenuItem;

addWindowListener(new BasicWindowMonitor());

//Add regular components to the window, using the default BorderLayout.

Container contentPane = getContentPane();

output = new JTextArea(5, 30);

[Link](false);

scrollPane = new JScrollPane(output);

[Link](scrollPane, [Link]);

//Create the menu bar.

menuBar = new JMenuBar();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
setJMenuBar(menuBar);

//Build the first menu.

menu = new JMenu("Menu Listesi");

[Link]('M');

[Link]().setAccessibleDescription(

"Programdaki sadece bu Menunun alt listeleri mevcuttur");

[Link](menu);

//a group of JMenuItems

menuItem = new JMenuItem("Sadece yazý olan bir menu elemaný",

KeyEvent.VK_T);

[Link]('S'); //used constructor instead

[Link]([Link](

KeyEvent.VK_1, ActionEvent.ALT_MASK));

[Link]().setAccessibleDescription(

"Bu sadece bir örnek olduðundan bu eleman bir ºey yapmýyor");

[Link](this);

[Link](menuItem);

menuItem = new JMenuItem("Yazý ve resim",

new ImageIcon("images/[Link]"));

[Link](KeyEvent.VK_B);

[Link](this);

[Link](menuItem);

menuItem = new JMenuItem(new ImageIcon("images/[Link]"));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]('d');

[Link](this);

[Link](menuItem);

//a group of radio button menu items

[Link]();

ButtonGroup group = new ButtonGroup();

rbMenuItem = new JRadioButtonMenuItem("radio düðmesi menu elemaný");

[Link](true);

[Link]('r');

[Link](rbMenuItem);

[Link](this);

[Link](rbMenuItem);

rbMenuItem = new JRadioButtonMenuItem("ikinci bir radyo düðmesi");

[Link]('i');

[Link](rbMenuItem);

[Link](this);

[Link](rbMenuItem);

//a group of check box menu items

[Link]();

cbMenuItem = new JCheckBoxMenuItem("check box menu elemaný");

[Link]('c');

[Link](this);

[Link](cbMenuItem);

cbMenuItem = new JCheckBoxMenuItem("ikinci bir check box menu elemaný");

[Link]('k');

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](cbMenuItem);

//a submenu

[Link]();

submenu = new JMenu("Alt menu");

[Link]('A');

menuItem = new JMenuItem("Alt menude bir eleman");

[Link]([Link](

KeyEvent.VK_2, ActionEvent.ALT_MASK));

[Link](this);

[Link](menuItem);

menuItem = new JMenuItem("Alt menude ikinci bir eleman");

[Link](this);

[Link](menuItem);

[Link](submenu);

//Build second menu in the menu bar.

menu = new JMenu("Ýknci bir Menu");

[Link]('n');

[Link]().setAccessibleDescription(

"Bu menu hiç bir ºey yapmaz ve alt elemaný yoktur");

[Link](menu);

public void actionPerformed(ActionEvent e) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JMenuItem source = (JMenuItem)([Link]());

String s = "Action event kaydedildi"

+ newline

+" Event kaynaðý: " + [Link]()

+ " (sýnýfýn adý " + getClassName(source) + ")";

[Link](s + newline);

public void itemStateChanged(ItemEvent e) {

JMenuItem source = (JMenuItem)([Link]());

String s = "Item event kaydedildi."

+ newline

+" Event kaynaðý: " + [Link]()

+ " (sýnýfýn adý " + getClassName(source) + ")"

+ newline

+" New state: "

+ (([Link]() == [Link]) ?

"seçildi":"seçim iptal edildi");

[Link](s + newline);

// Sýnýfýn adýný verir

protected String getClassName(Object o) {

String classString = [Link]().getName();

int dotIndex = [Link](".");

return [Link](dotIndex+1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String[] args) {

MenuDemo window = new MenuDemo();

[Link]("MenuDemo");

[Link](450, 260);

[Link](true);

[Link]

ªekil 7.31 [Link] programý sonuçlarýn JFrame penceresinde görünümü

7.12 SWING JSLIDER SINIFI VE JPANEL TEMEL ÇÝZÝM ELEMANI (PANELÝ)

JSlider sýnýfý bir deðiºkenin deðerini verilen sýnýrlar içerisinde deðiºtirmeye yarayan bir grafik
kullanýcý arayüz sýnýfýdýr. JSlider sýnýfýnýn kurucu metodlarý :

public JSlider();

public JSlider(BoundedRAngeModel brm);

public JSlider(int konum);

public JSlider(int minimumdeðer, int maksimumdeðer);

Problem 7.34 ovalPanelSWP .java, JPanel sýnýfý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import yildizSW;

import [Link].*;

import renk;

public class ovalPanelSWP extends JPanel

int xi,yi,yaricap;

public ovalPanelSWP(int xi1, int yi1,int yaricap1)

xi=xi1;

yi=yi1;

yaricap=(yaricap1 >= 0 ? yaricap1:10);

public void setOvalPanelSWP(int xi1, int yi1,int yaricap1)

xi=xi1;

yi=yi1;

yaricap=(yaricap1 >= 0 ? yaricap1:10);

repaint();

public void paintComponent(Graphics g)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](g);

[Link]([Link]);

Graphics2D g2=(Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

Ellipse2D elips1=new [Link](xi,yi,yaricap,yaricap);

[Link](elips1);

Problem 7.35 ovalPanelTestSWP_2000 .java, JSlider sýnýfý test program

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import BasicWindowMonitor;

import ovalPanelSWP;

import [Link].*;

public class ovalTestSWF_2000 extends JFrame implements ChangeListener

// Renk secme ornegi

private ovalPanelSWP p;

private JSlider cap;

Color r=[Link];

Container c;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// pencereyi baslatma metodu

public ovalTestSWF_2000()

super("JSlider Testi");

c=getContentPane();

p=new ovalPanelSWP(30,30,30);

cap=new JSlider([Link],0,200,10);

[Link](20);

[Link](true);

[Link](true);

[Link](this);

[Link](p,[Link]);

[Link](cap,[Link]);

// girdi alanindaki olan olaylari dinleme metodu

public void stateChanged(ChangeEvent e)

[Link](30, 30,[Link]());

repaint();

//=====================================================

public static void main(String[] args)

ovalTestSWF_2000 pencere= new ovalTestSWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 7.32 ovalPanelTestSWP_2000 .java programý sonuçlarýn JFrame penceresinde


görünümü

Bu programda uyguladýðýmýz bir çizim ºekline daha detaylý göz atalým. Daire JPanel sýnýfýnda
çizilmiºtir. Daireyi çizmek için ovalPanelSWP sýnýfýný yarattýk. JPanel sýnýfýnda kurucu
metodlarýmýzý herhangi bir sýnýfta olduðu gibi tanýmladýk ve public void
paintComponent(Graphics g) metodu ve Graphics sýnýfý üzerinden çizimimizi tanýmladýk.
Tekrar çizdirmek için repaint() metodunu kullandýk. Ýkinci JFrame proramýmýzda

private ovalPanelSWP p;

p=new ovalPanelSWP(30,30,30);

Container c;

c=getContentPane();

[Link](p,[Link]);

komutlarýný kullanarak panelimizi ana panele monte ettik. StateChanged event metodundaki

[Link](30, 30,[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
komutuyla da çapýný deðiºtirip

repaint();

komutuyla tekrar çizdirdik.

Panel programýnda

[Link](RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALI
AS_ON);

komutu kullanýldýðýndan dairenin oldukça düzgün çizilmiº olduðuna dikkatinizi çekeriz.

7.13 FLOWLAYOUT SINIFI KULLANARAK GUI FORMATLANMASI

Grafik arayüz programlarýnýn daha düzgün bir ºekilde gösterilmesi amacýyla Layout sýnýflarý
kullanýlýr. awt grafik interface’inde default deðer olarak kullanýlan Layout sýnýfý FlowLayout
sýnýfýdýr. Swing arayüz programlarýnda ise BorderLayout sýnýfý default olarak kullanýlar.

Flow layout sýnýfý grafik ortamýna (Panel, Applet, Frame, Jpanel, Japplet, JFrame vs.) alt
elemanlarý yerleºtirirken soldan saða doðru akleme (add) sýrasýyla yerleºtirir. Penceredeki
yer bittiyse bir alt satýra geçer.

Kurucu metotu ºu ºekillerde tanýmlanýr :

public Flowlayout()
public Flowlayout(int formatbolgesi)

format bölgesi deðiºkeni

[Link],

[Link] veya

[Link]

deðerlerini alabilir. Bu deðerlere göre içerdiði elemanlarý saða ortaya veya sola yerleºtirir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public Flowlayout(int formatbolgesi,int yatay_bosluk,int dikey_bosluk);

formatbolgesi [Link], [Link] veya [Link] deðerlerini


alabilir.

Yatay_bosluk pixel olarak yatay posisyonda elemanlar arasýnda kalan boslugu gosterir.
Dikey bosluk ise dikey dogrultudaki pixel olarak boºluktur.

Küçuk bir örnek problemle FlowLayout kullanýmýný daha açýk hale getirebiliriz.

Program 7.36 : [Link] programý

import [Link];
import [Link].*;
import [Link].*;
public class FlowLayoutTesti extends Applet implements ActionListener
{
private Button B[];
public void init()
{
B=new Button[3];
B[0]=new Button("Sol");
B[1]=new Button("Orta");
B[2]=new Button("Sag");
for(int i=0;i<[Link];i++)
{
B[i].addActionListener(this);
add(B[i]);
}
}
public void actionPerformed(ActionEvent e)
{
int pozisyon=[Link];;
if([Link]()==B[0])
{
pozisyon=[Link];
}
else if([Link]()==B[1])

{
pozisyon=[Link];
}
else if([Link]()==B[2])
{
pozisyon=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
setLayout(new FlowLayout(pozisyon));
validate();
}
}

[Link]

ªekil 7.33 FlowLayout sýnýfý ve sonuçlarýnýn Appletde görülmesi

Ayný programýn bir de swing JFrame versiyonunu inceleyelim.

Program 7.37 : FlowLayoutTestiSWF_2000.java programý

import [Link].*;

import [Link].*;

import [Link].*;

public class FlowLayoutTestiSWF_2000 extends JFrame implements ActionListener

private JButton B[];

private Container c;

public FlowLayoutTestiSWF_2000()

super("Flow Layout formatlama Grafik ara yüz (GUI) testi");

c=getContentPane();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new FlowLayout());

B=new JButton[3];

B[0]=new JButton("Sol");

B[1]=new JButton("Orta");

B[2]=new JButton("Sað");

for(int i=0;i<[Link];i++)

B[i].addActionListener(this);

[Link](B[i]);

public void actionPerformed(ActionEvent e)

int pozisyon=[Link];;

if([Link]()==B[0])

pozisyon=[Link];

else if([Link]()==B[1])

pozisyon=[Link];

else if([Link]()==B[2])

pozisyon=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new FlowLayout(pozisyon));

[Link]();

public static void main(String[] args)

FlowLayoutTestiSWF_2000 pencere= new FlowLayoutTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

[Link]

ªekil 7.34 FlowLayout sýnýfý ve sonuçlarýnýn JFrame penceresinde görülmesi

7.14 BORDERLAYOUT SINIFI KULLANARAK GUI FORMATLANMASI

BorderLayout sýnýfý GUI elemanlarýný beº bolgeye ayýrarak guruplar, kuzey(NORTH),


güney(SOUTH), dogu(EAST),Batý(WEST),orta(CENTER), Kuzey Appletin üst ýsmý anlamýna
gelir. Bu sýnýf swing grafik kütüphanesinde default formatlama sýnýfý olarak seçilmiºtir.
BorderLayout sýnýfýnýn kurucu metotlarý ºunlardýr :

public BorderLayout()
public BorderLayout(int yatay_bosluk,int dikey_bosluk);
yatay_bosluk ve dikey_basluk pixel olarak alýnýr. GUI elemanlarýnýn arasýndaki bosluk
miktarýný tanýmlar.

ªimdi bir örnekle sýnýfý açýklamaya çalýºalým.

Program 7.38 : [Link] Programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];
import [Link].*;

import [Link].*;

public class BorderLayoutTesti extends Applet implements ActionListener


{
private Button B[];
private String S[]={"Kuzeyi Gizle","Guneyi Gizle","Doguyu Gizle",
"Batiyi Gizle","Ortayi Gizle"};
public void init()
{
setLayout(new BorderLayout(5,5));
B=new Button[5];
for(int i=0;i<[Link];i++)
{
B[i]=new Button(S[i]);
B[i].addActionListener(this);
}
add(B[0],[Link]);
add(B[1],[Link]);
add(B[2],[Link]);
add(B[3],[Link]);
add(B[4],[Link]);
}
public void actionPerformed(ActionEvent e)
{
for(int i=0;i<[Link];i++)
{
if([Link]()==B[i])
B[i].setVisible(false);
else B[i].setVisible(true);
}
validate();
}
}

ªekil 7.11.1 [Link] programý

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.35 [Link] programýnýn sonuçlarýnýn applette görulmesi

Program 7.39 : BorderLayoutTestiSWF_2000.java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class BorderLayoutTestiSWF_2000 extends JFrame implements ActionListener

private JButton B[];

private String S[]={"Kuzeyi Gizle","Güneyi Gizle","Doðuyu Gizle",

"Batýyý Gizle","Ortayý Gizle"};

private Container c;

public BorderLayoutTestiSWF_2000()

super("Border Layout formatlama Grafik ara yüz (GUI) testi");

c=getContentPane();

[Link](new BorderLayout(5,5));

B=new JButton[5];

for(int i=0;i<[Link];i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

B[i]=new JButton(S[i]);

B[i].addActionListener(this);

[Link](B[0],[Link]);

[Link](B[1],[Link]);

[Link](B[2],[Link]);

[Link](B[3],[Link]);

[Link](B[4],[Link]);

public void actionPerformed(ActionEvent e)

for(int i=0;i<[Link];i++)

if([Link]()==B[i])

B[i].setVisible(false);

else B[i].setVisible(true);

[Link]();

public static void main(String[] args)

BorderLayoutTestiSWF_2000 pencere= new BorderLayoutTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 7.36 BorderLayoutTestiSWF_2000.java programýnýn sonuçlarýnýn JFrame


penceresinde görulmesi

7.15 GRIDLAYOUT SINIFI KULLANARAK GUI FORMATLANMASI

GridLayout sýnýfý pencereyi (Applet,Japplet,Panel,JPAnel,Frame,JFrame vs.) eºit boyutta


gridlere böler ve her grid elemanýnýn içine bir GUI yerleºtirilebilmesine olanak saðlar.
GridLayout sýnýfýnýn kurucu metotlarý ºöyledir :

public GridLayout(int satýrlar,int sütunlar)


publicGridLayout(int satýrlar,int sütunlar,int yatay_bosluk,int dikey_bosluk);
yatay_bosluk ve dikey_basluk pixel olarak alýnýr. GUI elemanlarýnýn arasýndaki bosluk
miktarýný tanýmlar.

ªimdi bir örneklerle bu sýnýfý açýklamaya çalýºalým.

Program 7.40 [Link] programý

import [Link];
import [Link].*;
import [Link].*;

public class GridLayoutTesti extends Applet


{
private Button B[];

private String S[]={"1","2","3",


"4","5","6"};
public void init()
{
setLayout(new GridLayout(3,2,5,5));
B=new Button[6];
for(int i=0;i<[Link];i++)
{
B[i]=new Button(S[i]);
add(B[i]);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 7.17 [Link] programý sonuçlarýnýn applette görulmesi

Programýn birde JFrame eºdeðerini inceleyelim.

Program 7.41 : GridLayoutTestiSWF_2000.java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class GridLayoutTestiSWF_2000 extends JFrame implements ActionListener

private JButton B[];

private String S[]={"Düðme 1","Düðme 2","Düðme 3",

"Düðme 4","Düðme 5","Düðme 6"};

private Container c;

public GridLayoutTestiSWF_2000()

super("Grid Layout formatlama Grafik ara yüz (GUI) testi");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
c=getContentPane();

[Link](new GridLayout(3,2,5,5));

B=new JButton[6];

for(int i=0;i<[Link];i++)

B[i]=new JButton(S[i]);

B[i].addActionListener(this);

[Link](B[i]);

public void actionPerformed(ActionEvent e)

for(int i=0;i<[Link];i++)

if([Link]()==B[i])

B[i].setVisible(false);

else B[i].setVisible(true);

[Link]();

public static void main(String[] args)

GridLayoutTestiSWF_2000 pencere= new GridLayoutTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 7.38 GridLayoutTestiSWF_2000.java programý sonuçlarýnýn JFRame’de görülmesi

7.16 JTABBEDPANE SINIFI KULLANILARAK FORMATLAMA

JTabbedPane sadece swing sýnýfýnda kullanýlabilir. Deðiºik sayfalar halinde bir grafik
arayüzü çaðýrýr. Bu sayfalardan istenilen seçilerek kullanýlabilir. Her sayfa baðýmsýz bir grafik
ortamý oluºturur.

Program 7.42 : JTabbedPaneTestiSWF_2000.java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class JTabbedPaneTestiSWF_2000 extends JFrame implements ActionListener

private JButton B[];

private String S[]={"Düðme 1","Düðme 2","Düðme 3",

"Düðme 4","Düðme 5","Düðme 6"};

private Container c;

public JTabbedPaneTestiSWF_2000()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
super("JTabbedPane formatlama Grafik ara yüz (GUI) testi");

c=getContentPane();

[Link](new BorderLayout(5,5));

B=new JButton[6];

JTabbedPane jtp=new JTabbedPane();

for(int i=0;i<[Link];i++)

B[i]=new JButton(S[i]);

B[i].addActionListener(this);

[Link](S[i],B[i]);

[Link](jtp);

public void actionPerformed(ActionEvent e)

for(int i=0;i<[Link];i++)

if([Link]()==B[i])

B[i].setText(S[i]+" düðmeye basýldý");

else B[i].setText(S[i]);

[Link]();

public static void main(String[] args)

JTabbedPaneTestiSWF_2000 pencere= new JTabbedPaneTestiSWF_2000();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

[Link]

ªekil 7.39 JTabbedPaneTestiSWF_2000.java programý sonuçlarýnýn JFrame’de görülmesi

7.17 JSPLITPANE SINIFI KULLANILARAK FORMATLAMA

JSplitPane ekraný ikiye böler. Bu ikiye bölme iºlemlerini yineleyerek istediðimiz alt parçalarý
oluºturabiliriz. JSplitPane ile bölünen alt parçalar fare ile çekilerek büyütülüp küçültülebilir.
Örnek problemdeki

c=getContentPane();

[Link](new BorderLayout(5,5));

B=new JButton[4];

jsp=new JSplitPane[3];

for(int i=0;i<[Link];i++)

B[i]=new JButton(S[i]);

B[i].addActionListener(this);

jsp[0]=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,B[0],B[1]);

jsp[1]=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,B[2],B[3]);

jsp[2]=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,jsp[0],jsp[1]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](jsp[2]);

kod parçacýðýnda ekraný önce B[0] ve B[1] düðmelerini yerleºtirdiðimimiz yatay iki parçaya,
sonra B[2] ve B[3] düðmelerini yerleºtirdiðimz iki yatay parçaya böldükten sonra bu parçalarý
(jsp[0] ve jsp[1]) iki düºey parçaya ayýrýyoruz. Böylece birbirinden baðýmsýz dört ayrý alt parça
(split) oluºturuyoruz.

Program 7.43 : JSplitPaneTestiSWF_2000.java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class JSplitPaneTestiSWF_2000 extends JFrame implements ActionListener

private JButton B[];

private String S[]={"Düðme 1","Düðme 2","Düðme 3","Düðme 4"};

private Container c;

JSplitPane jsp[];

public JSplitPaneTestiSWF_2000()

super("JSplitPane formatlama Grafik ara yüz (GUI) testi");

c=getContentPane();

[Link](new BorderLayout(5,5));

B=new JButton[4];

jsp=new JSplitPane[3];

for(int i=0;i<[Link];i++)

B[i]=new JButton(S[i]);

B[i].addActionListener(this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
jsp[0]=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,B[0],B[1]);

jsp[1]=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,B[2],B[3]);

jsp[2]=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,jsp[0],jsp[1]);

[Link](jsp[2]);

public void actionPerformed(ActionEvent e)

for(int i=0;i<[Link];i++)

if([Link]()==B[i])

B[i].setText(S[i]+" düðmeye basýldý");

else B[i].setText(S[i]);

[Link]();

public static void main(String[] args)

JSplitPaneTestiSWF_2000 pencere= new JSplitPaneTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.40 JSplitPaneTestiSWF_2000.java programý sonuçlarýnýn JFrame’de görülmesi

7.18 JSCROLLPANE SINIFI KULLANILARAK FORMATLAMA

JscrollPane sýnýfýný Jlist sýnýfýný incelerken görmüºtük. Bu formatlama sýnýfý Scrollbar adýný
verdiðimiz yatay ve düºey kaydýrma çubuklarý yardýmýyla küçük bir pencereye sýðmayacak
kadar büyükolan grafiklerin kullanýlmasýný saðlar.

Program 7.44 : JScrollPaneTestiSWF_2000.java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class JScrollPaneTestiSWF_2000 extends JFrame implements ActionListener

private JButton B[];

private String S[]={"Düðme 1","Düðme 2","Düðme 3","Düðme 4",

"Düðme 5","Düðme 6","Düðme 7","Düðme 8","Düðme 9","Düðme 10","Düðme 11",

"Düðme 12","Düðme 13","Düðme 14","Düðme 15","Düðme 16"};

private Container c;

JScrollPane jscroll;

JPanel jsp;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public JScrollPaneTestiSWF_2000()

super("JScrollPane formatlama Grafik ara yüz (GUI) testi");

c=getContentPane();

[Link](new BorderLayout(5,5));

B=new JButton[16];

jsp=new JPanel();

for(int i=0;i<[Link];i++)

B[i]=new JButton(S[i]);

B[i].addActionListener(this);

[Link](B[i]);

jscroll=new JScrollPane(jsp);

[Link](jscroll,[Link]);

public void actionPerformed(ActionEvent e)

for(int i=0;i<[Link];i++)

if([Link]()==B[i])

B[i].setText(S[i]+" düðmeye basýldý");

else B[i].setText(S[i]);

[Link]();

public static void main(String[] args)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JScrollPaneTestiSWF_2000 pencere= new JScrollPaneTestiSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,200);

[Link](true);

[Link]

ªekil 7.41 JScrollPaneTestiSWF_2000.java programý sonuçlarýnýn JFrame’de görülmesi

7.19 PANEL VE JPANEL SINIFI

Daha kompleks formatlamalara gereksinme duyulduðunda panel sýnýfýný kullanabiliriz. Panel


sýnýfý applete yerleºtirebileceðimiz alt bolgeler oluºturur. Hemen bir ornekle paneli nasýl
kulandýðýmýzý açýklamaya çalýºalým.

Program 7.45 [Link] programý

import [Link];
import [Link].*;
import [Link].*;

public class Paneltesti extends Applet


{
private Panel buttonPanel;
private Button buttons[];
public void init()
{
buttonPanel=new Panel();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
buttons=new Button[5];
[Link](new GridLayout(1,[Link]));
for(int i=0;i<[Link];i++)
{
buttons[i]=new Button("Button "+(i+1));
[Link](buttons[i]);
}
setLayout(new BorderLayout());
add(buttonPanel,[Link]);
}
}

07042JPG

ªekil 7.42 [Link] programý ve sonuçlarýnýn applette görulmesi

JPanel sýnýfýný daha önce çeºitli alýºtýrmalarda zaten kullanmýºtýk. JPanel’i formatlama
iºleminde ayný Panel sýnýfýnda olduðu gibi bir alt formatlama elemaný olarak kullanabiliriz.
Zaten bütün swing programlarýnýn temeli de JPanel sýnýfýdýr. Swing gurubunda bir üstteki
problemin aynýsýný JApplet olarak yineledik. Awt penceresi ve swing penceresi arasýndaki en
önemli farkýn awt de add terimini appletin bir alt terimi gibi kullanabilirken, swingde
getContentPane() deyimiyle ana JPanel’i çaðýrmak ve çizimleri bunun üzerine yapmak
olduðunu bir kere daha yineleyelim.

Program 7.46 : [Link] Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class PaneltestiSWA extends JApplet

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private JPanel buttonPanel;

private JButton buttons[];

public void init()

buttonPanel=new JPanel();

buttons=new JButton[5];

[Link](new GridLayout(1,[Link]));

for(int i=0;i<[Link];i++)

buttons[i]=new JButton("Düðme "+(i+1));

[Link](buttons[i]);

Container c=getContentPane();

[Link](new BorderLayout());

[Link](buttonPanel,[Link]);

07043JPG

ªekil 7.43 [Link] programý ve sonuçlarýnýn JAppletde appletviewer ile


görulmesi

ªu ana kadarki format örneklerinde anlatýmý basitleºtirmek amacýyla hep düðmeler (button)
kullandýk. ªimdi de baºka bir problemde Panel sýnýfýnýn kullanýlmasýna bakalým :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 7.47 : [Link] programý

import [Link].*;
import [Link];
import [Link].*;

public class PolinomunKokleri extends Applet implements ActionListener


{
// polinom a*x^2+b*x+c=0
private Panel YaziPaneli;
Label prompt1;
Label prompt2;
Label prompta;
TextField inputa; //
Label promptb; //
TextField inputb; //
Label promptc; //
TextField inputc; //
double a,b,c; //polinomun katsayilari
double delta=0.0; //determinant
double x1,x2; //kokler
public void init()
{
setBackground([Link]);
YaziPaneli=new Panel();
[Link](new Font("Serif",[Link],12));
[Link]( new GridLayout(4,2) );
prompt1=new Label("a*x^2+b*x+c = 0");
prompt2=new Label("Polinomunun kokleri");

prompta=new Label(" a : ");


inputa =new TextField(5);
[Link](this);
promptb=new Label(" b : ");
inputb =new TextField(5);
[Link](this);
promptc=new Label(" c : ");
inputc =new TextField(5);
[Link](this);
[Link](prompt1);
[Link](prompt2);
[Link](prompta);
[Link](inputa);
[Link](promptb);
[Link](inputb);
[Link](promptc);
[Link](inputc);
add(YaziPaneli);
}

public void paint(Graphics g)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]);
[Link](new Font("Serif",[Link],14));
[Link]("Polinomun Kokleri: ",70,175);
[Link]([Link]);
[Link](new Font("Serif",[Link],12));
if(delta<0)
{
[Link]("Kok 1 :"+(-b/2.0/a)+"+ i* "+[Link](- delta)/2.0/a,100,190 );
[Link]("Kok 2 :"+(-b/2.0/a)+"- i* "+[Link](-delta)/2.0/a,100,205);
}
if(delta==0)
{
[Link]("Kok 1 :"+(-b/2.0/a),100,190 );
[Link]("Kok 2 :"+(-b/2.0/a),100,205 );
}
if(delta0)
{
x1=-b/2.0/a+[Link](delta)/20/a;
x2=-b/2.0/[Link](delta)/2.0/a;
[Link]("Kok 1 :"+x1,100,190 );
[Link]("Kok 2 :"+x2,100,205);
}
}
public void actionPerformed( ActionEvent e)
{
Double sayi1=new Double([Link]() );
Double sayi2=new Double([Link]() );
Double sayi3=new Double([Link]() );
a=[Link]();
b=[Link]();
c=[Link]();
delta=b*b-4.0*a*c;
repaint();
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.44 Ýkinci dereceden denklemin koklerini hesaplayan [Link] programý
ve sonuçlarýnýn applette görulmesi

ªimdi ayný problemi JPanel kullanarak Japplet içinde gerçekleºtirelim.

Program 7.48 : [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

public class PolinomunKokleriSWA extends JApplet implements ActionListener

// polinom a*x^2+b*x+c=0

private JPanel YaziPaneli;

JLabel prompt1;

JLabel prompt2;

JLabel prompta;

JTextField inputa; //

JLabel promptb; //

JTextField inputb; //

JLabel promptc; //

JTextField inputc; //

JTextArea cikti;

double a,b,c; //polinomun katsayilari

double delta=0.0; //determinant

double x1,x2; //kokler

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void init()

Container c=getContentPane();

cikti=new JTextArea();

[Link]([Link]());

setBackground([Link]);

YaziPaneli=new JPanel();

[Link](new Font("Serif",[Link],12));

[Link]( new GridLayout(4,2) );

prompt1=new JLabel("a*x^2+b*x+c = 0");

prompt2=new JLabel("Polinomunun kokleri");

prompta=new JLabel(" a : ");

inputa =new JTextField();

[Link](this);

promptb=new JLabel(" b : ");

inputb =new JTextField();

[Link](this);

promptc=new JLabel(" c : ");

inputc =new JTextField();

[Link](this);

[Link](prompt1);

[Link](prompt2);

[Link](prompta);

[Link](inputa);

[Link](promptb);

[Link](inputb);

[Link](promptc);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](inputc);

[Link](YaziPaneli,[Link]);

[Link](cikti,[Link]);

public String toString()

String s="";

s=s+"Polinomun Kokleri: \n";

if(delta<0)

s+= "Kok 1 :"+(-b/2.0/a)+"+ i* "+[Link](- delta)/2.0/a+"\n";

s+= "Kok 2 :"+(-b/2.0/a)+"- i* "+[Link](-delta)/2.0/a+"\n";

if(delta==0)

s+= "Kok 1 :"+(-b/2.0/a)+"\n";

s+= "Kok 2 :"+(-b/2.0/a)+"\n";

if(delta>0)

x1=-b/2.0/a+[Link](delta)/20/a;

x2=-b/2.0/[Link](delta)/2.0/a;

s+= "Kok 1 :"+x1+"\n";

s+= "Kok 2 :"+x2+"\n";

return s;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed( ActionEvent e)

Double sayi1=new Double([Link]() );

Double sayi2=new Double([Link]() );

Double sayi3=new Double([Link]() );

a=[Link]();

b=[Link]();

c=[Link]();

delta=b*b-4.0*a*c;

[Link](toString());

repaint();

[Link]

ªekil 7.45 Ýkinci dereceden denklemin koklerini hesaplayan [Link]


programý ve sonuçlarýnýn applette görulmesi

7.20 JOPTIONPANE SINIFI

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªu ana kadar gördüðümüz sýnýflar grafik arayüzü dizayný yapmaya yarayan sýnýflardý. Java
swing gurubunda ayný zamanda kullanýlmaya hazýr bir çok grafik arayüzleri tanýmlanmýºtýr.
Bunlarýn en çok kullanýlaný, ve bu kitapta da ºu ana kadar yoðun olarak kullanageldiðimiz
JOPtionPane sýnýfýdýr. Bu sýnýfýn ana gayesi pop-up mesaj ve girdi ortamý saðlamaktýr.
JoptionPane sýnýfýný programýmýzda kurucu metod kullanarak kurmamýz gerekmez. Temel
olarak direk statik metodlarýný çaðýrýrýz. JoptionPane panelinde genellikle bir resim,bir yazý
alaný, bir girdi alaný (JtextField alaný), birde Seçilebilen düðmeler bulunur.

JoptionPane’in girdi/çýktý olarak kullanýlabilen baºlýca metodlarý ºunlardýr :

public static String showInputDialog(Object mesaj)

public static String showInputDialog(Component anapencere,Object mesaj)

public static String showInputDialog(Component anapencere,Object mesaj,String baºlýk,int


mesajtürü)

public static String showInputDialog(Component anapencere,Object mesaj,String baºlýk,int


mesajtürü, Icon resim, Object[] listeseçmedeðerleri, Object giriºdeðeri)

public static String showInternalInputDialog(Component anapencere,Object mesaj)

public static String showInternalInputDialog(Component anapencere,Object mesaj, String


baºlýk,int mesajtürü)

public static String showInternalInputDialog(Component anapencere,Object mesaj,String


baºlýk,int mesajtürü, Icon resim, Object[] listeseçme deðerleri,, Object giriºdeðeri)

public static void showMessageDialog(Component anapencere,Object mesaj);

public static void showMessageDialog(Component anapencere,Object mesaj,String baºlýk,int


mesajtürü);

public static void showMessageDialog(Component anapencere,Object mesaj,String baºlýk,int


mesajtürü, Icon resim);

public static void showInternalMessageDialog(Component anapencere,Object mesaj);

public static void showInternalMessageDialog(Component anapencere,Object mesaj,String


baºlýk,int mesajtürü);

public static void showInternalMessageDialog(Component anapencere,Object mesaj,String


baºlýk,int mesajtürü, Icon resim);

public static int showConfirmDialog(Component anapencere,Object mesaj);

public static int showConfirmDialog(Component anapencere,Object mesaj,String baºlýk,int


mesajtürü);

public static int showConfirmDialog(Component anapencere,Object mesaj,String baºlýk,int


opsiyontürü,int mesajtürü);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static int showConfirmDialog(Component anapencere,Object mesaj,String baºlýk,int
opsiyontürü,int mesajtürü,Icon resim);

public static int showInternalConfirmDialog(Component anapencere,Object mesaj);

public static int showInternalConfirmDialog(Component anapencere,Object mesaj,String


baºlýk,int mesajtürü);

public static int showInternalConfirmDialog(Component anapencere,Object mesaj,String


baºlýk,int opsiyontürü,int mesajtürü);

public static int showInternalConfirmDialog(Component anapencere,Object mesaj,String


baºlýk,int opsiyontürü,int mesajtürü,Icon resim);

public static int showOptionDialog(Component anapencere,Object mesaj,String baºlýk,int


opsiyontürü,int mesajtürü,Icon resim, Object[] listeseçmedeðerleri,Object listedekiilkdeðer);

public static int showInternalOptionDialog(Component anapencere,Object mesaj,String


baºlýk,int opsiyontürü,int mesajtürü,Icon resim, Object[] listeseçmedeðerleri,Object
listedekiilkdeðer);

mesajtürü deðiºkeni (int) alabildiði deðerler ºunlardýr :

JOptionPane.ERROR_MESSAGE

JOptionPane.INFORMATION_MESSAGE

JOptionPane.PLAIN_MESSAGE

JOptionPane.QUESTION_MESSAGE

JOptionPane.WARNING_MESSAGE

Opsiyon türü deðiºkeni

JOptionPane.DEFAULT_OPTION : Sadece OK düðmesi verir

JOptionPane.OK_CANCEL_OPTION : Ok ve Cancel(iptal et) düðmesi verir

JOptionPane.YES_NO_CANCEL_OPTION : “Yes (evet) ve No(hayýr) ve Cancel(Ýptal


et) düðmeleri verir

JOptionPane.YES_NO_OPTION : “Yes (evet) ve No(hayýr) düðmeleri verir

OptionDialog kullanýldýðýnda Metod bir integer deðer gönderir

JOptionPane.CANCEL_OPTION

JOptionPane.CLOSED_OPTION

JOptionPane.NO_OPTION

JOptionPane.OK_OPTION

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JOptionPane.YES_OPTION

JOptionPane.UNINITILIZED_VALUE dur.

Program 7.49 : [Link] Programý

import [Link].*;

import [Link].*;

public class JOptionPane1

public static void main(String[] args)

Object[] o=new Object[]{"Turhan","Meral","Ýrfan","Hatice","Osman",

"Nurhan","Birsen","Ali","Veli","Mustafa","Ahmet","Mehmet","Ayhan"};

ImageIcon resim=new ImageIcon("images/Kuº.gif");

[Link](null,"Lütfen bir isim seçin : ",

"JOptionPane örnek 1",JOptionPane.QUESTION_MESSAGE,resim,o,"Turhan");

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.46 [Link] programý sonucunun JoptionPane çýktýsýnda görülmesi

7.21 SWING, JCOLORCHOOSER SINIFI

JcolorChooser’da JoptionPane gibi kullanýlmaya hazýr bir dialog sýnýfýdýr. Renk seçmeye
yarar ve renk seçilmesi gereken her yerde kullanýlabilir. Bir önceki bölümdeki bir alýºtýrmada
bu özelliði kullanmýºtýk. Ýkinci bir örnekle pekiºtirelim :

Program 7.50 : ColorChooserDemo .java Programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class ColorChooserDemo extends JFrame {

public ColorChooserDemo() {

super("ColorChooser Renk seçici");

//Pencerenin tepesinde bir JLabel açalým

final JLabel etiket = new JLabel("Java Programlama diline Hoº geldiniz!",

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]);

[Link]([Link]);

[Link]([Link]);

[Link](true);

[Link](new Font("SansSerif", [Link], 24));

[Link](new Dimension(100, 65));

JPanel etiketPaneli = new JPanel(new BorderLayout());

[Link](etiket, [Link]);

[Link]([Link]("etiket"));

//JColorChooser sýnýfýný çaðýrýp rengi deðiºtir

final JColorChooser tcc = new JColorChooser([Link]());

[Link]().addChangeListener(

new ChangeListener() {

public void stateChanged(ChangeEvent e) {

Color newColor = [Link]();

[Link](newColor);

);

[Link]([Link](

"Yazý Rengini Seçiniz"));

//Add the components to the demo frame

Container c = getContentPane();

[Link](etiketPaneli, [Link]);

[Link](tcc, [Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static void main(String[] args) {

JFrame frame = new ColorChooserDemo();

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

[Link]();

[Link](true);

[Link]

ªekil 7.47 [Link] programý sonucunun JFrame çýktýsýnda görülmesi

7.22 JFILECHOOSER SINIFI

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JFileChooser’da JcolorChooser gibi hazýr bir program demetidir. Bilgisayardan bir dosyayý
seçme ileminde yararlanýlýr. Dosya prosesleri konusunda Java Girdi çýktý programlanmasý
bölümüne bakýnýz.

Program 7.51 : FileChooserDemo .java Programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class FileChooserDemo extends JFrame {

static private final String newline = [Link]("[Link]");

public FileChooserDemo() {

super("FileChooser Dosya seçme örneði");

final JTextArea log = new JTextArea(5,20);

[Link](new Insets(5,5,5,5));

JScrollPane logScrollPane = new JScrollPane(log);

//dosya seçiciyi yarat

final JFileChooser fc = new JFileChooser();

//aç düðmesi yarat

ImageIcon openIcon = new ImageIcon("images/[Link]");

JButton acmaDugmesi = new JButton("Dosya aç", openIcon);

[Link](new ActionListener() {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e) {

int returnVal = [Link]([Link]);

if (returnVal == JFileChooser.APPROVE_OPTION) {

File file = [Link]();

//gerçek dosyanýn açýlma yeri.

[Link]("Dosya açýlýyor: " + [Link]() + "." + newline);

} else {

[Link]("Dosyanýn açýlmasý kullanýcý tarafýndan iptal edildi." + newline);

});

//kaydet düðmesi yarat

ImageIcon saveIcon = new ImageIcon("images/[Link]");

JButton kayýtDugmesi = new JButton("Dosya kaydet", saveIcon);

kayý[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

int returnVal = [Link]([Link]);

if (returnVal == JFileChooser.APPROVE_OPTION) {

File file = [Link]();

//gerçek dosyanýn kaydedilme yeri..

[Link]("Kaydediliyor : " + [Link]() + "." + newline);

} else {

[Link]("Dosyanýn kaydedilmesi kullanýcý tarafýndan iptal edildi" + newline);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

});

//Güzel bir görünüm için aç ve kapa düðmelerini ayrý bir panele yerleºtir.

JPanel buttonPanel = new JPanel();

[Link](acmaDugmesi);

[Link](kayýtDugmesi);

//Düðmeleri pencereye ekle

Container c = getContentPane();

[Link](buttonPanel, [Link]);

[Link](logScrollPane, [Link]);

public static void main(String s[]) {

JFrame frame = new FileChooserDemo();

[Link](new BasicWindowMonitor());

[Link]();

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.48 [Link] programý sonucunun JFrame çýktýsýnda görülmesi

[Link]

ªekil 7.49 [Link] programý dosya açýcýsýnýn JFileChooser çýktýsýnda


görülmesi

7.23 JAVA JAR (JAVA ARCHIVES - JAVA ARªÝVÝ) YAPILARININ KULLANIMI

JAR çeºitli sýnýf ve ilgili dosyalarý bir arada bir pakete dönüºtürmek için geliºtirilmiº bir
teknolojidir. JAR teknolojisi peogramlarýn taºýnmasýný ve yeniden yüklenmesini daha kolay bir
hale getirir. Ayný zamanda JAR dosyasýnýn içindeki elementler sýkýºtýrýlmýº halde
bulunduklarýndan daha az yer kaplarlar. Bu yüzden bir JAR dosyasýnýn internet üzerinden
aktarýlmasý, açýk dosyalarýn tek tek aktarýlmasýndan daha kýsa süren bir prosestir.

Yeni JAR dosyalarýný oluºturmak için :

eðer [Link] dosyasýný oluºturmak ve bu dosyaya [Link], [Link] ve [Link]


dosyalarýný aktarmak istersek :

jar cf [Link] [Link] [Link] [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Alýºtýrma 5deki H7AL1 örneði için JAR dosyasý oluºturmak istersek :

jar cf [Link] [Link] [Link] [Link] [Link]

komutunu kullanabiliriz. Problemi incelediðnizde JAR dosyasýnýn içine ilave edilen tüm
sýnýflarýn bu problemle direk olarak ilgili olduðunu görebilirsiniz.

jar dosyasýnýn içindeki dosyalara bakmak için :

jar tf [Link]

jar dosyasý içindeki dosyalarýn listesini almak için :

jar xf [Link]

jar dosyasýný applet içinden çalýºtýrmak için html içinde :

<applet code=[Link] archive="[Link]"


width=width height=height
</applet

komutu kullanýlýr. Örnek olarak yine alýºtýrma 5 de kullanýlan jar dosyasýnýn html dosyasýný
verebiliriz.

<HTML
<HEAD
<TITLE yildiz cizim ornegi</TITLE
</HEAD
<BODY
<H3yildiz cizim ornegi </H3
<applet code=[Link] archive="[Link]" width=600 height=500
</applet

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
</BODY
</HTML

Jar komutuyla kullanýlan kontrol karakterleri Tablo 7.1 de verilmiºtir.

Tablo 7.1 Jar kontrol komut karekterleri ve anlamlarý

c Yeni arºiv yarat

f Listedeki ilk ismi arºiv dosyasýnýn ismi olarak tanýmla

m Listedeki ikinci ismi arºiv dosyasýnýn ismi olarak tanýmla

t arºiv içeriðini listele

x dosyalar arºivden geri çaðýrýlacaktýr. eðer listede sadece bir isim varsa
bunu jar dosyasý olarak alýr ve içindeki tüm dosyalarý listeler, eðer ilk simden sonra
komutta baºka isimler yer alýyorsa, sadece bu isimleri (eðer jarda mevcutsa) listeler.

0 sýkýºtýrma kullanma

7.24 ALIªTIRMALAR

1. [Link] programýný ve bir önceki bölümde incelediðimiz cizgiciz programýný


birleºtirerek fareyi kullanarak ekrana cizgi çizdiriniz (cizginin baslangic ve bitis noktalarý fare
tarafindan belirlenecektir)

2. [Link] programýný ve gecen hafta incelediðimiz drawRect metotunu birleºtirerek


fareyi kallanarak ekrana dikdortrtgen çizdiriniz (dikdortgenin baslangic ve bitis noktalarý fare
tarafindan belirlenecektir)

1. [Link] programýný ve gecen hafta incelediðimiz drawOval metotunu


birleºtirerek fareyi kallanarak ekrana daire çizdiriniz (dairenin merkezi ve capý fare tarafindan
belirlenecektir)

Resimli bir JcheckBox örneði. Java döküman kütüphanesinden alýnýp adapte edilen bu
programda 16 resimden birisi JCheckBox kullanýlarak yapýlan seçime göre JLAbel
kullanýlarak gösteriliyor.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 7.52 : CheckBoxDemo .java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class CheckBoxDemo extends JPanel {

JCheckBox chinButton;

JCheckBox glassesButton;

JCheckBox hairButton;

JCheckBox teethButton;

/*

* Dört deðiºik seçim imkaný tanýmlanmýºtýr.

* Bu seçimler 16 deðiºik dosyadaki resimlerden birini çaðýrmaktadýr.

* resim isimleri "[Link]" ºeklinde olup

* buradaki XXXX 16 seçimden birini gösterir.

* seçim olasýlýklarý

---- // hiçbirºey seçilmemiº

c--- // bir seçim

-g--

--h-

---t

cg-- // iki seçim

c-h-

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
c--t

-gh-

-g-t

--ht

-ght // üç seçim

c-ht

cg-t

cgh-

cght // dört seçim

seçimlerin anlamlarý :

c : çene

g : gözlük

h : saç

t : diº

*/

StringBuffer choices;

JLabel pictureLabel;

public CheckBoxDemo() {

// Create the check boxes

chinButton = new JCheckBox("Çene");

[Link]('e');

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
glassesButton = new JCheckBox("Gözlük");

[Link]('G');

[Link](true);

hairButton = new JCheckBox("Saç");

[Link]('S');

[Link](true);

teethButton = new JCheckBox("Diº");

[Link]('D');

[Link](true);

// listener programlarýný çaðýr

CheckBoxListener myListener = new CheckBoxListener();

[Link](myListener);

[Link](myListener);

[Link](myListener);

[Link](myListener);

// orijinal olarak dörtlü resmi seç

choices = new StringBuffer("cght");

// JLAbel'i resimli olarak oluºtur

pictureLabel = new JLabel(new ImageIcon(

"images/geek/geek-"

+ [Link]()

+ ".gif"));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]());

// CheckBoxlarý JPanel'e yerleºtir.

JPanel checkPanel = new JPanel();

[Link](new GridLayout(0, 1));

[Link](chinButton);

[Link](glassesButton);

[Link](hairButton);

[Link](teethButton);

setLayout(new BorderLayout());

add(checkPanel, [Link]);

add(pictureLabel, [Link]);

setBorder([Link](20,20,20,20));

/** check box'larý dinle. */

class CheckBoxListener implements ItemListener {

public void itemStateChanged(ItemEvent e) {

int index = 0;

char c = '-';

Object source = [Link]();

if (source == chinButton) {

index = 0;

c = 'c';

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} else if (source == glassesButton) {

index = 1;

c = 'g';

} else if (source == hairButton) {

index = 2;

c = 'h';

} else if (source == teethButton) {

index = 3;

c = 't';

if ([Link]() == [Link])

c = '-';

[Link](index, c);

[Link](new ImageIcon(

"images/geek/geek-"

+ [Link]()

+ ".gif"));

[Link]([Link]());

public static void main(String s[])

JFrame frame = new JFrame("Resimli CheckBox örneði");

[Link](new BasicWindowMonitor());

[Link](new CheckBoxDemo());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

[Link](true);

[Link]

ªekil 7.50 CheckBoxDemo .java çýktýsýnýn JFrame’de görülmesi

2. ªirin bir JComboBox örneði : Listeden yapýlan seçime göre resim deðiºecektir. Bu
programda java döküman kütüphanesinden alýnýp türkçeye adapte edilmiºtir.

Program 7.53 : ComboBoxDemo .java Programý

import [Link].*;

import [Link].*;

import [Link].*;

public class ComboBoxDemo extends JPanel {

JLabel picture;

public ComboBoxDemo() {

String[] petStrings = { "Kuº", "Kedi", "Köpek", "Tavºan", "Domuz" };

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// combo box yarat ve domuzu seç,

JComboBox petList = new JComboBox(petStrings);

[Link](4);

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb = (JComboBox)[Link]();

String petName = (String)[Link]();

[Link](new ImageIcon("images/" + petName + ".gif"));

});

// Resmi JLabel'a yükle

picture = new JLabel(new ImageIcon("images/" +

petStrings[[Link]()] +

".gif"));

[Link]([Link](10,0,0,0));

// tercih edilen boy olarak en büyük resmin boyu seçildi.

// bu deðer daha sonra program tarafýndan deðiºtirilecektir.

[Link](new Dimension(177, 122+10));

setLayout(new BorderLayout());

add(petList, [Link]);

add(picture, [Link]);

setBorder([Link](20,20,20,20));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String s[])

JFrame frame = new JFrame("ComboBoxDemo");

[Link](new BasicWindowMonitor());

[Link]().add(new ComboBoxDemo(), [Link]);

[Link]();

[Link](true);

[Link]

ªekil 7.51 ComboBoxDemo .java çýktýsýnýn JFrame’de görülmesi

5. Appletin alt bölgesinde(SOUTH) iki sýra, her sýrada beºer dügmeden on düðme bulunan
bir applet oluºturunuz..
Appletin tepesinde bir TextField oluºturunuz. Her dügmeye basýldýðýnda textfieldde degiºik
bir yazý görünsün. Yazýlarý 2x5 lik bir String deðiºkeninden okuyarak Text fielde yükleyiniz.

Program 7.16 [Link] programý

import [Link];
import [Link].*;
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class Panel10 extends Applet implements ActionListener
{
private Panel buttonPanel;
private Button buttons[];
String s[]=
{"Birinci Butona Basildi",
"Ikinci Butona Basildi",
"Ucuncu Butona Basildi",
"Dorduncu Butona Basildi",
"Besinci Butona Basildi",
"Altinci Butona Basildi",
"Yedinci Butona Basildi",
"Sekizinci Butona Basildi",
"Dokuzunccu Butona Basildi",
"Onuncu Butona Basildi"};
TextField T;
public void init()
{
T=new TextField(s[0]);

buttonPanel=new Panel();
buttons=new Button[10];
[Link](new GridLayout(2,[Link]/2));
for(int i=0;i<[Link];i++)
{
buttons[i]=new Button("Button "+(i+1));
buttons[i].addActionListener(this);
[Link](buttons[i]);
}
setLayout(new BorderLayout());
add(buttonPanel,[Link]);
add(T,[Link]);
}

public void actionPerformed(ActionEvent e)


{
for(int i=0;i<[Link];i++)
{ if([Link]()==buttons[i]) [Link](s[i]);}
validate();
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.52 [Link] çýktýsý

4. [Link] programýný incele ve çalýºtýr.

Program 7.54 [Link]

import [Link];

import [Link].*;

import [Link].*;

import yildiz;

import renk;

public class H7AL1 extends Applet implements ActionListener,ItemListener

int n1,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label renk1;

Label renk2;

private String Renkler[]={"kirmizi","mavi","siyah","camgobegi","koyugri","gri","yesil","acikgri",

"mor","portakal","pembe","beyaz","sari","acikmavi","lacivert"};

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private List renkListesi,arkaPlanRenkListesi;

private renk
r[]={[Link],[Link],[Link],[Link],[Link],[Link],[Link],[Link]
ikgri,[Link],

[Link],[Link],[Link],[Link],[Link],[Link]};

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Panel p,p1;

public void init(){

//not : init metodunda tum degiskenlerin ilk degerleri verilmelidir.

setBackground([Link]);

p=new Panel();

[Link](new GridLayout(3,4));

[Link]([Link]);

//3*4 tablo p paneli haz�rland�

p1=new Panel();

[Link](new GridLayout(1,4));

[Link]([Link]);

renkListesi=new List(3,false);

arkaPlanRenkListesi=new List(3,false);

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

[Link](kutugir5);

renk1=new Label("renk : ");

renk2=new Label("arka plan rengi :");

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](renk1);

[Link](renkListesi);

[Link](renk2);

[Link](arkaPlanRenkListesi);

//elemanlar p ve p1 paneline p ve p1 paneli de aplete eklendi

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

for(int i=0;i<[Link];i++)

[Link](Renkler[i]);

[Link](Renkler[i]);

add(p,[Link]);

add(p1,[Link]);

public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

int indeks=[Link]();

if(indeks!=-1)

setBackground(r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

repaint();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void itemStateChanged(ItemEvent e)

showStatus(" renk: "+ [Link]()+" arka plan: "+

[Link]());

public void paint(Graphics g)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

else

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

yildiz.drawYildiz1(g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.53 [Link] çýktýsý

5. H7AL1_2000.java programýný incele ve çalýºtýr.

Program 7.54 H7AL1_2000.java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import yildizSW;

import yildizPanelSWP;

import renk;

public class H7AL1_2000 extends JApplet implements ActionListener,

ListSelectionListener

int n1,xi1,yi1,yaricap1;

double aci1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
renk renk; //sinifin adi renk, nesne adi renk

JLabel kutu1;

JLabel kutu2;

JLabel kutu3;

JLabel kutu4;

JLabel kutu5;

JLabel renk2;

private String Renkler[]={"kirmizi","mavi","siyah","camgobegi",

"koyugri","gri","yesil","acikgri","mor","portakal","pembe","beyaz",

"sari","acikmavi","lacivert"};

private JList arkaPlanRenkListesi;

private renk r[]={[Link],[Link],[Link],[Link],

[Link],[Link],[Link],[Link],[Link],[Link],

[Link],[Link],[Link],[Link],[Link]};

JTextField kutugir1;

JTextField kutugir2;

JTextField kutugir3;

JTextField kutugir4;

JTextField kutugir5;

JPanel p,p1,p2;

yildizPanelSWP yp;

Container c;

public void init(){

//not : init metodunda tüm deðiºkenlerin ilk deðerleri verilmelidir.

c=getContentPane();

setBackground([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
p=new JPanel();

[Link](new GridLayout(3,4));

[Link]([Link]);

//3*4 tablo p paneli hazýrlandý

p1=new JPanel();

[Link](new GridLayout(1,4));

[Link]([Link]);

arkaPlanRenkListesi=new JList(Renkler);

[Link](3);

[Link](ListSelectionModel.SINGLE_SELECTION);

kutu1=new JLabel("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new JTextField(3);

[Link](kutugir1);

kutu2=new JLabel("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new JTextField(3);

[Link](kutugir2);

kutu3=new JLabel("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new JTextField(3);

[Link](kutugir3);

kutu4=new JLabel("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new JTextField(3);

[Link](kutugir4);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutu5=new JLabel("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new JTextField(3);

[Link](kutugir5);

renk2=new JLabel("arka plan rengi :");

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

//elemanlar p ve p1 paneline p ve p1 paneli de aplete eklendi

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

JScrollPane aprl=new JScrollPane(arkaPlanRenkListesi);

[Link](renk2);

[Link](aprl);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
yp=new yildizPanelSWP(xi1,yi1,yaricap1,n1,aci1);

JPanel p2=new JPanel();

[Link](new GridLayout(2,1));

[Link](p);

[Link](p1);

[Link](p2,[Link]);

[Link](yp,[Link]);

public void actionPerformed(ActionEvent e)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

[Link](xi1,yi1,yaricap1,n1,aci1);

[Link](r[indeks]);

repaint();

public void valueChanged(ListSelectionEvent e)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

repaint();

[Link]

ªekil 7.54 H7AL1_2000.java çýktýsý

6. [Link] programýný incele ve çalýºtýr. Bu program fare kullanarak yýldýzý


çizdirmektedir. Fare’yi sol klik ettiðimiz noktayý merkez olarak almakta, fareyi sürüdüðümüz
nokta ve açýyý çizdirme açýsý olarak almakta fare düðmesini býraktýðýmýz noktada yýldýz çapýný
almakta ve yýlsýzý çizmektedir. Renkler girdi listelerinden deðiºtirilebilir.

Program 7.55 [Link], Fare testi

import [Link];

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import yildiz;

import renk;

public class H7AL2 extends Applet

implements ActionListener,ItemListener,MouseListener,MouseMotionListener

int n1,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label renk1;

Label renk2;

private String Renkler[]={"kirmizi","mavi","siyah","camgobegi","koyugri","gri","yesil","acikgri",

"mor","portakal","pembe","beyaz","sari","acikmavi","lacivert"};

private List renkListesi,arkaPlanRenkListesi;

private renk
r[]={[Link],[Link],[Link],[Link],[Link],[Link],[Link],[Link]
ikgri,[Link],

[Link],[Link],[Link],[Link],[Link],[Link]};

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Panel p,p1;

public void init(){

//not : init metodunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

setBackground([Link]);

p=new Panel();

[Link](new GridLayout(3,4));

[Link]([Link]);

//3*4 tablo p paneli haz�rland�

p1=new Panel();

[Link](new GridLayout(1,4));

[Link]([Link]);

renkListesi=new List(3,false);

arkaPlanRenkListesi=new List(3,false);

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

[Link](kutugir5);

renk1=new Label("renk : ");

renk2=new Label("arka plan rengi :");

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](renk1);

[Link](renkListesi);

[Link](renk2);

[Link](arkaPlanRenkListesi);

//elemanlar p ve p1 paneline p ve p1 paneli de aplete eklendi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

addMouseListener(this);

addMouseMotionListener(this);

for(int i=0;i<[Link];i++)

[Link](Renkler[i]);

[Link](Renkler[i]);

add(p,[Link]);

add(p1,[Link]);

public void actionPerformed(ActionEvent e)

int indeks=[Link]();

if(indeks!=-1)

setBackground(r[indeks]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

repaint();

public void itemStateChanged(ItemEvent e)

showStatus(" X : "+ xi1+" Y : "+yi1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void paint(Graphics g)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

else

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

yildiz.drawYildiz1(g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

public void mouseClicked(MouseEvent e)

public void mousePressed(MouseEvent e)

xi1=[Link]();

yi1=[Link]();

[Link](""+xi1);

[Link](""+yi1);

showStatus("merkez : X : "+ xi1+" Y : "+yi1);

public void mouseReleased(MouseEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int xi2=[Link]();

int yi2=[Link]();

yaricap1=(int)[Link]((xi1-xi2)*(xi1-xi2)+(yi1-yi2)*(yi1-yi2));

aci1=-Math.atan2((yi2-yi1),(xi2-xi1))*180.0/[Link]-90;

[Link](""+yaricap1);

[Link](""+aci1);

showStatus(" X : "+ xi1+" Y : "+yi1+" yaricap : "+yaricap1);

repaint();

public void mouseEntered(MouseEvent e)

public void mouseExited(MouseEvent e)

public void mouseMoved(MouseEvent e)

showStatus(" X : "+ [Link]()+" Y : "+[Link]());

public void mouseDragged(MouseEvent e)

showStatus(" X : "+ [Link]()+" Y : "+[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 7.55 [Link] çýktýsý

7. H7AL3. java programýný incele bu program yýldýz çizdirmektedir. Yýldýzýn rengi


scrollbar kullanýlarak deðiºtirilmektedir. Appleti çalýºtýr.

Program 7.56 [Link] programý.

import [Link];

import [Link].*;

import [Link].*;

import yildiz;

import renk;

public class H7AL3 extends Applet implements ActionListener,AdjustmentListener

int n1,xi1,yi1,yaricap1;

double aci1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label bos1;

Label bos2;

Label bos3;

Label renk1;

Label kirmizi;

Label mavi;

Label yesil;

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Scrollbar kutukirmizi;

Scrollbar kutumavi;

Scrollbar kutuyesil;

public void init(){

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//not : init metodunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

Panel p=new Panel();

[Link](new GridLayout(5,4));

//5*4 tablo p paneli haz�rland�

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kutugir5);

bos1=new Label(" ");

bos2=new Label(" ");

bos3=new Label(" ");

renk1=new Label("renk");

kirmizi=new Label("kirmizi");

mavi=new Label("mavi");

yesil=new Label("yesil");

kutukirmizi=new Scrollbar([Link],255,1,0,255);

kutumavi=new Scrollbar([Link],200,1,0,255);

kutuyesil=new Scrollbar([Link],0,1,0,255);

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](bos1);

[Link](bos2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](bos3);

[Link](kirmizi);

[Link](yesil);

[Link](mavi);

[Link](renk1);

[Link](kutukirmizi);

[Link](kutumavi);

[Link](kutuyesil);

//elemanlar p paneline p paneli de aplete eklendi

add(p,[Link]);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

public void actionPerformed(ActionEvent e)

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

repaint();

public void adjustmentValueChanged(AdjustmentEvent e)

int kirmizi1=[Link]();

int mavi1=[Link]();

int yesil1=[Link]();

renk=new renk(kirmizi1,mavi1,yesil1);

repaint();

public void paint(Graphics g)

[Link](renk);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

yildiz.drawYildiz1(g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 7.56 Yýldýz çizdiren ve scrollbar kullanarak renk kontrolu yapan [Link] çýktýsý

8. [Link] programý cardLayout layout düzenleyicisini kullanmaktadýr. Bu düzenleyici


appleti çeºitli sayfalar ºeklinde düzenlemektedir. Programý ve cardLayout layout düzenleme
sistemini inceleyiniz.

Program 7.57 : [Link], cardLayout sistemini kullanan yýldýz çizme appleti

import [Link];

import [Link].*;

import [Link].*;

import yildiz;

import renk;

public class H7AL4 extends Applet implements ActionListener,AdjustmentListener

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//card menager Layout kullan�m�

private CardLayout c;

private Panel p,p1,p2,p3,p4;

int n1,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Button B1,B2,B3,B4;

Label kutu1;

Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label bos1;

Label bos2;

Label bos3;

Label renk1;

Label kirmizi;

Label mavi;

Label yesil;

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Scrollbar kutukirmizi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Scrollbar kutumavi;

Scrollbar kutuyesil;

public void init(){

//not : init metodunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

c=new CardLayout();

p=new Panel();

[Link](c);

p1=new Panel();

p2=new Panel();

p3=new Panel();

p4=new Panel();

[Link](new GridLayout(1,4));

[Link](new GridLayout(1,4));

[Link](new GridLayout(1,4));

[Link](new GridLayout(2,4));

//5*4 tablo p paneli haz�rland�

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

[Link](kutugir5);

bos1=new Label(" ");

bos2=new Label(" ");

bos3=new Label(" ");

renk1=new Label("renk");

kirmizi=new Label("kirmizi");

mavi=new Label("mavi");

yesil=new Label("yesil");

kutukirmizi=new Scrollbar([Link],255,1,0,255);

kutumavi=new Scrollbar([Link],200,1,0,255);

kutuyesil=new Scrollbar([Link],0,1,0,255);

xi1=300;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](bos1);

[Link](bos2);

[Link](bos3);

[Link](kirmizi);

[Link](yesil);

[Link](mavi);

[Link](renk1);

[Link](kutukirmizi);

[Link](kutumavi);

[Link](kutuyesil);

//elemanlar p paneline p paneli de aplete eklendi

[Link](p1,[Link]);

[Link](p2,[Link]);

[Link](p3,[Link]);

[Link](p4,[Link]);

B1=new Button("<<");

B2=new Button("<");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
B3=new Button(">");

B4=new Button(">>");

add(B1);

add(B2);

add(B3);

add(B4);

add(p,[Link]);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

public void actionPerformed(ActionEvent e)

//sayfa se‡imi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link]()==B1)

[Link](p);

else if([Link]()==B2)

[Link](p);

else if([Link]()==B3)

[Link](p);

else if([Link]()==B4)

[Link](p);

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double aci1i=new Double([Link]());

aci1=[Link]();

repaint();

public void adjustmentValueChanged(AdjustmentEvent e)

int kirmizi1=[Link]();

int mavi1=[Link]();

int yesil1=[Link]();

renk=new renk(kirmizi1,mavi1,yesil1);

repaint();

public void paint(Graphics g)

[Link](renk);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

yildiz.drawYildiz1(g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.57 [Link], cardLayout sistemini kullanan yýldýz çizme appleti

9. Appletde fare kullanarak çizgi çizdiren [Link] programýný inceleyiniz.

Program 7.58 [Link]

import [Link];

import [Link].*;

import [Link].*;

import renk;

public class H7AL5 extends Applet

implements ActionListener,ItemListener,MouseListener,MouseMotionListener

renk renk; //sinifin adi renk, nesne adi renk

Label renk1;

Label renk2;

private String Renkler[]={"kirmizi","mavi","siyah","camgobegi","koyugri","gri","yesil","acikgri",

"mor","portakal","pembe","beyaz","sari","acikmavi","lacivert"};

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private List renkListesi,arkaPlanRenkListesi;

private renk
r[]={[Link],[Link],[Link],[Link],[Link],[Link],[Link],[Link]
ikgri,[Link],

[Link],[Link],[Link],[Link],[Link],[Link]};

Panel p,p1;

int xi1,yi1,xi2,yi2;

int ii;

public void init(){

//not : init metodunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

setBackground([Link]);

p=new Panel();

[Link](new GridLayout(3,4));

[Link]([Link]);

//3*4 tablo p paneli haz�rland�

p1=new Panel();

[Link](new GridLayout(1,4));

[Link]([Link]);

renkListesi=new List(3,false);

arkaPlanRenkListesi=new List(3,false);

xi1=0;

yi1=0;

xi2=0;

yi2=0;

renk1=new Label("renk : ");

renk2=new Label("arka plan rengi :");

renk=new renk(255,200,0);

[Link](renk1);

[Link](renkListesi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](renk2);

[Link](arkaPlanRenkListesi);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

addMouseListener(this);

addMouseMotionListener(this);

for(int i=0;i<[Link];i++)

[Link](Renkler[i]);

[Link](Renkler[i]);

add(p1,[Link]);

public void actionPerformed(ActionEvent e)

int indeks=[Link]();

if(indeks!=-1)

setBackground(r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

repaint();

public void itemStateChanged(ItemEvent e)

showStatus(" X : "+ xi1+" Y : "+yi1);

public void paint(Graphics g)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

else

[Link]([Link]);

[Link](xi1,yi1,xi2,yi2);

public void update(Graphics g) { paint(g); }

public void mouseClicked(MouseEvent e)

xi1=[Link]();

yi1=[Link]();

showStatus("merkez : X : "+ xi1+" Y : "+yi1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void mousePressed(MouseEvent e)

xi1=[Link]();

yi1=[Link]();

showStatus("merkez : X : "+ xi1+" Y : "+yi1);

public void mouseReleased(MouseEvent e)

xi2=[Link]();

yi2=[Link]();

showStatus("merkez : X : "+ xi2+" Y : "+yi2);

repaint();

public void mouseEntered(MouseEvent e)

public void mouseExited(MouseEvent e)

showStatus("mouse applet disina cikti");

public void mouseMoved(MouseEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

public void mouseDragged(MouseEvent e)

[Link]

ªekil 7.58 Appletde fare kullanarak ºekil çizdiren [Link] applet görüntüsü

10. [Link], Alýºtýrma H7AL2'de yýldýz çizilmiº ve mouse'u basýp çekip býrakarak yeni
yýldýz oluºturulmuºtur. Ayný iºlemi yapan, fakat eºkenar çokken çizen programý oluºturunuz.

Program 7.59 [Link]

import [Link];

import [Link].*;

import [Link].*;

import eskenarcokgen;

import renk;

public class H7O1 extends Applet

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
implements ActionListener,ItemListener,MouseListener,MouseMotionListener

int n1,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label renk1;

Label renk2;

private String Renkler[]={"kirmizi","mavi","siyah","camgobegi","koyugri","gri","yesil","acikgri",

"mor","portakal","pembe","beyaz","sari","acikmavi","lacivert"};

private List renkListesi,arkaPlanRenkListesi;

private renk
r[]={[Link],[Link],[Link],[Link],[Link],[Link],[Link],[Link]
ikgri,[Link],

[Link],[Link],[Link],[Link],[Link],[Link]};

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Panel p,p1;

public void init(){

//not : init metodunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

setBackground([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
p=new Panel();

[Link](new GridLayout(3,4));

[Link]([Link]);

//3*4 tablo p paneli haz�rland�

p1=new Panel();

[Link](new GridLayout(1,4));

[Link]([Link]);

renkListesi=new List(3,false);

arkaPlanRenkListesi=new List(3,false);

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

[Link](kutugir5);

renk1=new Label("renk : ");

renk2=new Label("arka plan rengi :");

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](renk1);

[Link](renkListesi);

[Link](renk2);

[Link](arkaPlanRenkListesi);

//elemanlar p ve p1 paneline p ve p1 paneli de aplete eklendi

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

addMouseListener(this);

addMouseMotionListener(this);

for(int i=0;i<[Link];i++)

[Link](Renkler[i]);

[Link](Renkler[i]);

add(p,[Link]);

add(p1,[Link]);

public void actionPerformed(ActionEvent e)

int indeks=[Link]();

if(indeks!=-1)

setBackground(r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

repaint();

public void itemStateChanged(ItemEvent e)

showStatus(" X : "+ xi1+" Y : "+yi1);

public void paint(Graphics g)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

public void mouseClicked(MouseEvent e)

public void mousePressed(MouseEvent e)

xi1=[Link]();

yi1=[Link]();

[Link](""+xi1);

[Link](""+yi1);

showStatus("merkez : X : "+ xi1+" Y : "+yi1);

public void mouseReleased(MouseEvent e)

int xi2=[Link]();

int yi2=[Link]();

yaricap1=(int)[Link]((xi1-xi2)*(xi1-xi2)+(yi1-yi2)*(yi1-yi2));

aci1=-Math.atan2((yi2-yi1),(xi2-xi1))*180.0/[Link]-90;

[Link](""+yaricap1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](""+aci1);

showStatus(" X : "+ xi1+" Y : "+yi1+" yaricap : "+yaricap1);

repaint();

public void mouseEntered(MouseEvent e)

public void mouseExited(MouseEvent e)

public void mouseMoved(MouseEvent e)

showStatus(" X : "+ [Link]()+" Y : "+[Link]());

public void mouseDragged(MouseEvent e)

showStatus(" X : "+ [Link]()+" Y : "+[Link]());

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.59 Appletde ºekil çokgen çizdiren [Link] applet çýktýsý

11. [Link], Choice kullanarak eskenarcokken veya yildiz çizebilen applet programýný
oluºturunuz.

Program 7.60 [Link], choice kullanýmý

import [Link];

import [Link].*;

import [Link].*;

import yildiz;

import renk;

public class H7O3 extends Applet

implements ActionListener,AdjustmentListener,ItemListener

int n1,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

//Label bos1;

//Label bos2;

Label bos3;

Label renk1;

Label kirmizi;

Label mavi;

Label yesil;

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Scrollbar kutukirmizi;

Scrollbar kutumavi;

Scrollbar kutuyesil;

Checkbox c1,c2;

public void init(){

//not : init metodunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

c1=new Checkbox("YILDIZ CIZ");

c2=new Checkbox("ESKENAR COKGEN CIZ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Panel p=new Panel();

[Link](new GridLayout(5,4));

//5*4 tablo p paneli haz�rland�

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

[Link](kutugir5);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//bos1=new Label(" ");

//bos2=new Label(" ");

bos3=new Label(" ");

renk1=new Label("renk");

kirmizi=new Label("kirmizi");

mavi=new Label("mavi");

yesil=new Label("yesil");

kutukirmizi=new Scrollbar([Link],255,1,0,255);

kutumavi=new Scrollbar([Link],200,1,0,255);

kutuyesil=new Scrollbar([Link],0,1,0,255);

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](c1);

[Link](c2);

[Link](bos3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kirmizi);

[Link](yesil);

[Link](mavi);

[Link](renk1);

[Link](kutukirmizi);

[Link](kutumavi);

[Link](kutuyesil);

//elemanlar p paneline p paneli de aplete eklendi

add(p,[Link]);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

public void actionPerformed(ActionEvent e)

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

aci1=[Link]();

repaint();

public void adjustmentValueChanged(AdjustmentEvent e)

//renk de§iŸtirildiginde

int kirmizi1=[Link]();

int mavi1=[Link]();

int yesil1=[Link]();

renk=new renk(kirmizi1,mavi1,yesil1);

repaint();

public void itemStateChanged(ItemEvent e)

//Choice komutu de§iŸtirildi§inde

repaint();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void paint(Graphics g)

if ([Link]()==0)

[Link](renk);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

else if ([Link]()==1)

[Link](renk);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.60 Appletde choice kullanarak çokgen veya yýldýz çizdiren [Link] applet çýktýsý

12. [Link], Checkbox kullanarak eskenarcokken veya yildiz veya herikisinide bir arada
çizebilen (yýldýzýn köºelerinden geçen bir eskenar cokken) applet programýný oluºturunuz.

Program 7.61 [Link]

import [Link];

import [Link].*;

import [Link].*;

import yildiz;

import eskenarcokgen;

import renk;

public class H7O3 extends Applet implements ActionListener,ItemListener

int n1,xi1,yi1,yaricap1;

double aci1;

renk renk; //sinifin adi renk, nesne adi renk

Label kutu1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Label kutu2;

Label kutu3;

Label kutu4;

Label kutu5;

Label renk1;

Label renk2;

private String Renkler[]={"kirmizi","mavi","siyah","camgobegi","koyugri","gri","yesil","acikgri",

"mor","portakal","pembe","beyaz","sari","acikmavi","lacivert"};

private List renkListesi,arkaPlanRenkListesi;

private renk
r[]={[Link],[Link],[Link],[Link],[Link],[Link],[Link],[Link]
ikgri,[Link],

[Link],[Link],[Link],[Link],[Link],[Link]};

TextField kutugir1;

TextField kutugir2;

TextField kutugir3;

TextField kutugir4;

TextField kutugir5;

Panel p,p1;

Checkbox c1,c2;

public void init(){

//not : init metotunda t�m de§iŸkenlerin ilk de§erleri verilmelidir.

setBackground([Link]);

c1=new Checkbox("YILDIZ CIZ");

c2=new Checkbox("ESKENAR COKGEN CIZ");

[Link](true);

[Link](false);

p=new Panel();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new GridLayout(3,4));

[Link]([Link]);

//3*4 tablo p paneli haz�rland�

p1=new Panel();

[Link](new GridLayout(1,4));

[Link]([Link]);

renkListesi=new List(3,true);

arkaPlanRenkListesi=new List(3,true);

kutu1=new Label("xi noktasini giriniz :");

[Link](kutu1);

kutugir1=new TextField(3);

[Link](kutugir1);

kutu2=new Label("yi noktasini giriniz :");

[Link](kutu2);

kutugir2=new TextField(3);

[Link](kutugir2);

kutu3=new Label("kose sayisini giriniz :");

[Link](kutu3);

kutugir3=new TextField(3);

[Link](kutugir3);

kutu4=new Label("yaricapi giriniz :");

[Link](kutu4);

kutugir4=new TextField(3);

[Link](kutugir4);

kutu5=new Label("aciyi giriniz (derece) :");

[Link](kutu5);

kutugir5=new TextField(3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](kutugir5);

[Link](c1);

[Link](c2);

renk1=new Label("renk : ");

renk2=new Label("arka plan rengi :");

xi1=300;

yi1=300;

n1=5;

yaricap1=100;

aci1=0;

[Link](""+xi1);

[Link](""+yi1);

[Link](""+n1);

[Link](""+yaricap1);

[Link](""+aci1);

renk=new renk(255,200,0);

[Link](renk1);

[Link](renkListesi);

[Link](renk2);

[Link](arkaPlanRenkListesi);

//elemanlar p ve p1 paneline p ve p1 paneli de aplete eklendi

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

for(int i=0;i<[Link];i++)

[Link](Renkler[i]);

[Link](Renkler[i]);

[Link](0);

[Link](3);

int indeks=[Link]();

setBackground(r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

add(p,[Link]);

add(p1,[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e)

int indeks=[Link]();

if(indeks!=-1)

setBackground(r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

[Link](r[indeks]);

Integer xi1i=new Integer([Link]());

xi1=[Link]();

Integer yi1i=new Integer([Link]());

yi1=[Link]();

Integer n1i=new Integer([Link]());

n1=[Link]();

Integer yaricapi=new Integer([Link]());

yaricap1=[Link]();

Double aci1i=new Double([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
aci1=[Link]();

repaint();

public void itemStateChanged(ItemEvent e)

showStatus(" renk: "+ [Link]()+" arka plan: "+

[Link]());

repaint();

public void paint(Graphics g)

int indeks=[Link]();

if(indeks!=-1)

[Link](r[indeks]);

else

[Link]([Link]);

if ( [Link]() && [Link]() )

[Link](r[indeks]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

else if ( [Link]())

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link](r[indeks]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

else if ([Link]())

[Link](r[indeks]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]([Link]);

[Link](g,xi1,yi1,n1,yaricap1,aci1/180.0*[Link]);

[Link]

ªekil 7.61 Appletde checkBox kullanarak çokgen ve/veya yýldýz çizdiren [Link] applet
çýktýsý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
13. [Link], [Link](alýºtýrma 12) programýnýn aynýsýný oluºturunuz, ancak renk
seçimini Scrollbar ile yapýnýz.

14. H7OD3_2000

JSlider kullanarak çizdiðiniz bir yýldýzýn çapýný büyütüp küçülten H7OD3_2000 programýný
yazýnýz.

[Link], ovalTestSWF_2000.java, [Link],[Link]

Program 7.62 [Link]

import [Link].*;

import [Link].*;

import yildizSW;

import renk;

public class yildizPanelSWP extends JPanel

int xi,yi,yaricap;

int n;

double aci;

public yildizPanelSWP(int xi1, int yi1,int yaricap1,int n1,double aci1)

xi=xi1;

yi=yi1;

yaricap=yaricap1;

aci=aci1;

n=n1;

public void setYildizPanelSWP(int xi1, int yi1,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int yaricap1,int n1,double aci1)

xi=xi1;

yi=yi1;

yaricap=yaricap1;

aci=aci1;

n=n1;

repaint();

public void paintComponent(Graphics g)

[Link](g);

[Link]([Link]);

[Link](g,xi,yi,n,yaricap,aci/180.0*[Link]);

[Link]([Link]);

yildizSW.drawYildiz1(g,xi,yi,n,yaricap,aci/180.0*[Link]);

Program 7.63 H7OD3_2000.java

import [Link].*; // java swing sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

import [Link].*; // java pencereyi dinleme sinifini cagir

import BasicWindowMonitor;

import ovalPanelSWP;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H7OD3_2000 extends JFrame implements ChangeListener

// Renk secme ornegi

private yildizpanelSWP p;

private JSlider cap;

Color r=[Link];

Container c;

// pencereyi baslatma metodu

public H7OD3_2000()

super("JSlider Testi");

c=getContentPane();

p=new yildizpanelSWP(0);

cap=new JSlider([Link],0,200,10);

[Link](10);

[Link](true);

[Link](this);

[Link](p,[Link]);

[Link](cap,[Link]);

// girdi alanindaki olan olaylari dinleme metodu

public void stateChanged(ChangeEvent e)

[Link]([Link]());

repaint();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//=====================================================

public static void main(String[] args)

H7OD3_2000 pencere= new H7OD3_2000();

[Link](new BasicWindowMonitor());

[Link](400,400);

[Link](true);

[Link]

ªekil 7.62 H7OD3_2000.java program çýktýsýnýn JFrame penceresinde görünümü

15. H7OD4_2000

Düðme (Button) kontrolü ile yýldýz vetya oval çizdirecek bir program yazýnýz. Yýldýz
düðmesine basýlýnca ekrana yýldýz gelsin, oval düðmesine basýlýnca ekrana oval gelsin

Program 7.63 [Link]

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class yildizovalPanelSWP extends JPanel

int anahtar;

int xi,yi,yaricap;

int n;

double aci;

public yildizovalPanelSWP(int xi1, int yi1,int yaricap1,int n1,double aci1)

anahtar=1;

xi=xi1;

yi=yi1;

yaricap=yaricap1;

aci=aci1;

n=n1;

public void setYildizOvalPanelSWP(int xi1, int yi1,

int yaricap1,int n1,double aci1,int an)

anahtar=an;

xi=xi1;

yi=yi1;

yaricap=yaricap1;

aci=aci1;

n=n1;

repaint();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void setAnahtar(int an)

anahtar=an;

public void paintComponent(Graphics g)

[Link](g);

[Link]([Link]);

if(anahtar==1)

[Link](g,xi,yi,n,yaricap,aci/180.0*[Link]);

[Link]([Link]);

yildizSW.drawYildiz1(g,xi,yi,n,yaricap,aci/180.0*[Link]);

else if(anahtar==2)

Graphics2D g2=(Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

Ellipse2D elips1=new [Link](xi,yi,yaricap,yaricap);

[Link](elips1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 7.64 H7OD4_2000 .java

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

import yildizovalPanelSWP;

public class H7OD4_2000 extends JFrame implements ActionListener

private JButton B1,B2;

private yildizovalPanelSWP p;

private Container c;

public H7OD4_2000()

super("düðme - yýldýz - oval seçim testi");

c=getContentPane();

JPanel p1=new JPanel();

[Link](new GridLayout(1,2));

B1=new JButton("yýldýz");

[Link](this);

[Link](B1);

B2=new JButton("Oval");

[Link](this);

[Link](B2);

[Link](p1,[Link]);

int x=(int)([Link]()/2.0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int y=(int)([Link]()/2.0);

int r=(int)([Link](x*x+y*y)/3.0);

p=new yildizovalPanelSWP(x,y,r,5,0);

[Link](p,[Link]);

public void actionPerformed(ActionEvent e)

int x=(int)([Link]()/2.0);

int y=(int)([Link]()/2.0);

int r=(int)([Link](x*x+y*y)/3.0);

if([Link]()==B1)

{[Link](x,y,r,5,0,1);}

else if([Link]()==B2)

{[Link](x-r,y-r,2*r,5,0,2);}

public static void main(String[] args)

H7OD4_2000 pencere= new H7OD4_2000();

[Link](new BasicWindowMonitor());

[Link](250,200);

[Link](true);

[Link] - [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.63 ªekil -7.64 H7OD4_2000.java program çýktýsýnýn JFrame penceresinde görünümü

17 swing ve awt karºýlaºtýrmalý örnekler 1

ªu ana kadar çeºitli örneklerde hem swing hem de awt olarak verdiðimiz örneklerle iki grafik
sistemindeli farklýlýk ve benzerlikleri belirtmeye çalýºtýk. ªimdi özellikle bu karºýlaºtýrmayý
çeºitli uygulama problemleri olarak göreceðiz. Bu örnekteki problemler temel olarak java
döküman kütüphanesinden alýnmýºtýr. Ýlk örneðimiz TextEventDemo awt de yazýlmýº bir
applet programý. TextArea penceresine giren her harfte TextEvent yardýmýyla kontrollar
yapýyoruz.

Program 7.65 : TextEventDemo (awt)

/*

* awt applet programý

*/

import [Link];

import [Link].*;

import [Link].*;

public class TextEventDemo extends Applet

implements ActionListener {

TextField textField;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
TextArea textArea;

TextArea displayArea;

public void init() {

Button button = new Button("Sil");

[Link](this);

textField = new TextField(20);

[Link](new MyTextActionListener());

[Link](new MyTextListener("Text Field"));

textArea = new TextArea(5, 20);

[Link](new MyTextListener("Text Area"));

displayArea = new TextArea(5, 20);

[Link](false);

//GridbagLayout oldukça kompleks formatlamaya izin verir

GridBagLayout gridbag = new GridBagLayout();

GridBagConstraints c = new GridBagConstraints();

setLayout(gridbag);

[Link] = [Link];

[Link] = 1.0;

Panel leftPanel = new Panel();

[Link](new BorderLayout());

[Link]("North", textField);

[Link]("Center", textArea);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] = 2;

[Link](leftPanel, c);

add(leftPanel);

[Link] = 1.0;

[Link] = [Link];

[Link] = 1;

[Link](displayArea, c);

add(displayArea);

[Link] = 0.0;

[Link](button, c);

add(button);

[Link]();

class MyTextListener implements TextListener {

String preface;

String newline;

public MyTextListener(String source) {

newline = [Link]("[Link]");

preface = source

+ " yazý deðiºti."

+ newline

+ " ilk on harf: \"";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void textValueChanged(TextEvent e) {

TextComponent tc = (TextComponent)[Link]();

String s = [Link]();

try {

s = [Link](0, 10);

} catch (StringIndexOutOfBoundsException ex) {

[Link](preface + s + "\"" + newline);

if ([Link]()) {

[Link]([Link].MAX_VALUE);

class MyTextActionListener implements ActionListener {

/** Textfielddeki yazýyý döndürür */

public void actionPerformed(ActionEvent e) {

int selStart = [Link]();

int selEnd = [Link]();

[Link]([Link](),

selStart, selEnd);

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
/** düðmeye basýlýnca... */

public void actionPerformed(ActionEvent e) {

[Link]("");

[Link]();

[Link]

ªekil 7.65 [Link] sýnýfýnýn çýktý programýnýn awt applet’te görülmesi

18 swing ve awt karºýlaºtýrmalý örnekler 2 : [Link]

Program 7.66 [Link] (swing) test programý

/*

* Swing versiyonu

*/

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

import [Link];

import [Link];

import [Link];

import [Link].*;

public class TextEventDemoSW extends JApplet

implements ActionListener {

JTextField textField;

JTextArea textArea;

JTextArea displayArea;

public void init() {

JButton button = new JButton("Sil");

[Link](this);

textField = new JTextField(20);

[Link](new MyTextActionListener());

[Link]().addDocumentListener(new MyDocumentListener("Text Field"));

textArea = new JTextArea();

[Link]().addDocumentListener(new MyDocumentListener("Text Area"));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JScrollPane scrollPane = new JScrollPane(textArea);

[Link](new Dimension(200, 75));

displayArea = new JTextArea();

[Link](false);

JScrollPane displayScrollPane = new JScrollPane(displayArea);

[Link](new Dimension(200, 75));

JPanel contentPane = new JPanel();

GridBagLayout gridbag = new GridBagLayout();

GridBagConstraints c = new GridBagConstraints();

[Link](gridbag);

[Link] = [Link];

[Link] = 1.0;

JPanel leftPanel = new JPanel();

[Link](new BorderLayout());

[Link](textField, [Link]);

[Link](scrollPane, [Link]);

[Link] = 2;

[Link](leftPanel, c);

[Link](leftPanel);

[Link] = 1.0;

[Link] = [Link];

[Link] = 1;

[Link](displayScrollPane, c);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](displayScrollPane);

[Link] = 0.0;

[Link](button, c);

[Link](button);

[Link]();

setContentPane(contentPane);

class MyDocumentListener implements DocumentListener {

String preface;

String newline;

public MyDocumentListener(String source) {

newline = [Link]("[Link]");

preface = source

+ " yazý deðiºtirildi."

+ newline

+ " Ýlk on karekter: \"";

public void insertUpdate(DocumentEvent e) {

update(e);

public void removeUpdate(DocumentEvent e) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
update(e);

public void changedUpdate(DocumentEvent e) {

public void update(DocumentEvent e) {

Document doc = (Document)[Link]();

int length = [Link]();

String s = null;

try {

s = [Link](0, (length > 10) ? 10 : length);

} catch (BadLocationException ex) {

[Link](preface + s + "\"" + newline);

class MyTextActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

int selStart = [Link]();

int selEnd = [Link]();

[Link]([Link](),

selStart, selEnd);

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e) {

[Link]("");

[Link]();

[Link]

ªekil 7.66 [Link] sýnýfýnýn çýktý programýnýn swing JApplet’te görülmesi

18 swing ve awt karºýlaºtýrmalý örnekler 3 : Birim dönüºtürme örneði :


[Link]

Birim dönüºtürme örneði :

Tablo AWT ve Swing birim dönüºtürme programlarý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
AWT Converter (birim dönüºtürücü)
Swing Converter (birim dönüºtürücü)

[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]

Program 7.67 [Link] AWT programý

/*

* 1.1 version.

*/

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

public class Converter extends Applet {

ConversionPanel metricPanel, usaPanel;

Unit[] metricDistances = new Unit[3];

Unit[] usaDistances = new Unit[4];

/**

* Create the ConversionPanels (one for metric, another for U.S.).

* I used "U.S." because although Imperial and U.S. distance

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* measurements are the same, this program could be extended to

* include volume measurements, which aren't the same.

*/

public void init() {

//Use a GridLayout with 2 rows, as many columns as necessary,

//and 5 pixels of padding around all edges of each cell.

setLayout(new GridLayout(2,0,5,5));

//Create Unit objects for metric distances, and then

//instantiate a ConversionPanel with these Units.

metricDistances[0] = new Unit("Centimeters", 0.01);

metricDistances[1] = new Unit("Meters", 1.0);

metricDistances[2] = new Unit("Kilometers", 1000.0);

metricPanel = new ConversionPanel(this, "Metric System",

metricDistances);

//Create Unit objects for U.S. distances, and then

//instantiate a ConversionPanel with these Units.

usaDistances[0] = new Unit("Inches", 0.0254);

usaDistances[1] = new Unit("Feet", 0.305);

usaDistances[2] = new Unit("Yards", 0.914);

usaDistances[3] = new Unit("Miles", 1613.0);

usaPanel = new ConversionPanel(this, "U.S. System", usaDistances);

//Add both ConversionPanels to the Converter.

add(metricPanel);

add(usaPanel);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

/**

* Does the conversion from metric to U.S., or vice versa, and

* updates the appropriate ConversionPanel.

*/

void convert(ConversionPanel from) {

ConversionPanel to;

if (from == metricPanel)

to = usaPanel;

else

to = metricPanel;

double multiplier = [Link]() / [Link]();

[Link](multiplier * [Link]());

/** Draws a box around this panel. */

public void paint(Graphics g) {

Dimension d = getSize();

[Link](0,0, [Link] - 1, [Link] - 1);

/**

* Puts a little breathing space between

* the panel and its contents, which lets us draw a box

* in the paint() method.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
*/

public Insets getInsets() {

return new Insets(5,5,5,5);

/** Executed only when this program runs as an application. */

public static void main(String[] args) {

//Create a new window.

Frame f = new Frame("Converter Applet/Application");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {

[Link](0);

});

//Create a Converter instance.

Converter converter = new Converter();

//Initialize the Converter instance.

[Link]();

//Add the Converter to the window and display the window.

[Link]("Center", converter);

[Link](); //Resizes the window to its natural size.

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 7.68 [Link] AWT programý

/*

* 1.1 version.

*/

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

public class ConversionPanel extends Panel

implements ActionListener,

AdjustmentListener,

ItemListener {

TextField textField;

Choice unitChooser;

Scrollbar slider;

int max = 10000;

int block = 100;

Converter controller;

Unit[] units;

ConversionPanel(Converter myController, String myTitle, Unit[] myUnits) {

//Initialize this ConversionPanel to use a GridBagLayout.

GridBagConstraints c = new GridBagConstraints();

GridBagLayout gridbag = new GridBagLayout();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
setLayout(gridbag);

//Save arguments in instance variables.

controller = myController;

units = myUnits;

//Set up default layout constraints.

[Link] = [Link];

//Add the label. It displays this panel's title, centered.

Label label = new Label(myTitle, [Link]);

[Link] = [Link]; //It ends a row.

[Link](label, c);

add(label);

//Add the text field. It initially displays "0" and needs

//to be at least 10 columns wide.

textField = new TextField("0", 10);

[Link] = 1.0; //Use maximum horizontal space...

[Link] = 1; //The default value.

[Link](textField, c);

add(textField);

[Link](this);

//Add the pop-up list (Choice).

unitChooser = new Choice();

for (int i = 0; i < [Link]; i++) { //Populate it.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](units[i].description);

[Link] = 0.0; //The default value.

[Link] = [Link]; //End a row.

[Link](unitChooser, c);

add(unitChooser);

[Link](this);

//Add the slider. It's horizontal, and it has the maximum

//value specified by the instance variable max. Its initial

//and minimum values are the default (0). A click increments

//the value by block units.

slider = new Scrollbar([Link]);

[Link](max + 10);

[Link](block);

[Link] = 1; //The default value.

[Link](slider, c);

add(slider);

[Link](this);

/**

* Returns the multiplier (units/meter) for the currently

* selected unit of measurement.

*/

double getMultiplier() {

int i = [Link]();

return units[i].multiplier;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

/** Draws a box around this panel. */

public void paint(Graphics g) {

Dimension d = getSize();

[Link](0,0, [Link] - 1, [Link] - 1);

/**

* Puts a little breathing space between

* the panel and its contents, which lets us draw a box

* in the paint() method.

* We add more pixels to the right, to work around a

* Choice bug.

*/

public Insets getInsets() {

return new Insets(5,5,5,8);

/**

* Gets the current value in the text field.

* It's guaranteed to be the same as the value

* in the scroller (subject to rounding, of course).

*/

double getValue() {

double f;

try {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
f = (double)[Link]([Link]()).doubleValue();

} catch ([Link] e) {

f = 0.0;

return f;

public void actionPerformed(ActionEvent e) {

setSliderValue(getValue());

[Link](this);

public void itemStateChanged(ItemEvent e) {

[Link](this);

/** Respond to the slider. */

public void adjustmentValueChanged(AdjustmentEvent e) {

[Link]([Link]([Link]()));

[Link](this);

/** Set the values in the slider and text field. */

void setValue(double f) {

setSliderValue(f);

[Link]([Link]((float)f));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
/** Set the slider value. */

void setSliderValue(double f) {

int sliderValue = (int)f;

if (sliderValue > max)

sliderValue = max;

if (sliderValue < 0)

sliderValue = 0;

[Link](sliderValue);

Program 7.69 [Link] AWT programý

/*

* 1.1 version.

*/

public class Unit {

String description;

double multiplier;

Unit(String description, double multiplier) {

super();

[Link] = description;

[Link] = multiplier;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String toString() {

String s = "Meters/" + description + " = " + multiplier;

return s;

Program 7.70 [Link] SWING programý

/*

* 1.1+Swing version.

*/

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class Converter {

ConversionPanel metricPanel, usaPanel;

Unit[] metricDistances = new Unit[3];

Unit[] usaDistances = new Unit[4];

final static boolean COLORS = false;

final static boolean DEBUG = false;

final static String LOOKANDFEEL = null;

ConverterRangeModel dataModel = new ConverterRangeModel();

JPanel mainPane;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
/**

* Create the ConversionPanels (one for metric, another for U.S.).

* I used "U.S." because although Imperial and U.S. distance

* measurements are the same, this program could be extended to

* include volume measurements, which aren't the same.

* Put the ConversionPanels into a frame, and bring up the frame.

*/

public Converter() {

//Create Unit objects for metric distances, and then

//instantiate a ConversionPanel with these Units.

metricDistances[0] = new Unit("Centimeters", 0.01);

metricDistances[1] = new Unit("Meters", 1.0);

metricDistances[2] = new Unit("Kilometers", 1000.0);

metricPanel = new ConversionPanel(this, "Metric System",

metricDistances,

dataModel);

//Create Unit objects for U.S. distances, and then

//instantiate a ConversionPanel with these Units.

usaDistances[0] = new Unit("Inches", 0.0254);

usaDistances[1] = new Unit("Feet", 0.305);

usaDistances[2] = new Unit("Yards", 0.914);

usaDistances[3] = new Unit("Miles", 1613.0);

usaPanel = new ConversionPanel(this, "U.S. System",

usaDistances,

new FollowerRangeModel(dataModel));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//Create a JPanel, and add the ConversionPanels to it.

mainPane = new JPanel();

if (COLORS) {

[Link]([Link]);

[Link](new GridLayout(2,1,5,5));

[Link]([Link](5,5,5,5));

[Link](metricPanel);

[Link](usaPanel);

resetMaxValues(true);

public void resetMaxValues(boolean resetCurrentValues) {

double metricMultiplier = [Link]();

double usaMultiplier = [Link]();

int maximum = [Link];

if (metricMultiplier > usaMultiplier) {

maximum = (int)([Link] *

(usaMultiplier/metricMultiplier));

if (DEBUG) {

[Link]("in Converter resetMaxValues");

[Link](" metricMultiplier = "

+ metricMultiplier

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
+ "; usaMultiplier = "

+ usaMultiplier

+ "; maximum = "

+ maximum);

[Link](maximum);

if (resetCurrentValues) {

[Link](maximum);

private static void initLookAndFeel() {

String lookAndFeel = null;

if (LOOKANDFEEL != null) {

if ([Link]("Metal")) {

lookAndFeel = [Link]();

} else if ([Link]("System")) {

lookAndFeel = [Link]();

} else if ([Link]("Mac")) {

lookAndFeel = "[Link]";

//PENDING: check!

} else if ([Link]("Windows")) {

lookAndFeel = "[Link]";

} else if ([Link]("Motif")) {

lookAndFeel = "[Link]";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

if (DEBUG) {

[Link]("About to request look and feel: "

+ lookAndFeel);

try {

[Link](lookAndFeel);

} catch (ClassNotFoundException e) {

[Link]("Couldn't find class for specified look and feel:"

+ lookAndFeel);

[Link]("Did you include the L&F library in the class path?");

[Link]("Using the default look and feel.");

} catch (UnsupportedLookAndFeelException e) {

[Link]("Can't use the specified look and feel ("

+ lookAndFeel

+ ") on this platform.");

[Link]("Using the default look and feel.");

} catch (Exception e) {

[Link]("Couldn't get specified look and feel ("

+ lookAndFeel

+ "), for some reason.");

[Link]("Using the default look and feel.");

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static void main(String[] args) {

initLookAndFeel();

Converter converter = new Converter();

//Create a new window.

JFrame f = new JFrame("Converter");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {

[Link](0);

});

//Add the JPanel to the window and display the window.

//We can use a JPanel for the content pane because

//JPanel is opaque.

[Link]([Link]);

if (COLORS) {

//This has no effect, since the JPanel completely

//covers the content pane.

[Link]().setBackground([Link]);

[Link](); //Resizes the window to its natural size.

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 7.71 [Link] SWING programý

/*

* 1.1+Swing version.

*/

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

public class ConversionPanel extends JPanel {

DecimalField textField;

JComboBox unitChooser;

JSlider slider;

ConverterRangeModel sliderModel;

Converter controller;

Unit[] units;

String title;

final static boolean DEBUG = false;

final static boolean COLORS = false;

final static int MAX = 10000;

ConversionPanel(Converter myController, String myTitle,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Unit[] myUnits,

ConverterRangeModel myModel) {

if (COLORS) {

setBackground([Link]);

setBorder([Link](

[Link](myTitle),

[Link](5,5,5,5)));

//Save arguments in instance variables.

controller = myController;

units = myUnits;

title = myTitle;

sliderModel = myModel;

//Add the text field. It initially displays "0" and needs

//to be at least 10 columns wide.

NumberFormat numberFormat = [Link]();

[Link](2);

textField = new DecimalField(0, 10, numberFormat);

[Link]([Link]());

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

[Link]([Link]());

});

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//Add the combo box.

unitChooser = new JComboBox();

for (int i = 0; i < [Link]; i++) { //Populate it.

[Link](units[i].description);

[Link](0);

[Link](units[0].multiplier);

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

//Set new maximums for the sliders.

int i = [Link]();

[Link](units[i].multiplier);

[Link](false);

});

//Add the slider.

slider = new JSlider(sliderModel);

[Link](new ChangeListener() {

public void stateChanged(ChangeEvent e) {

[Link]([Link]());

});

//Make the textfield/slider group a fixed size.

JPanel unitGroup = new JPanel() {

public Dimension getMinimumSize() {

return getPreferredSize();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public Dimension getPreferredSize() {

return new Dimension(150,

[Link]().height);

public Dimension getMaximumSize() {

return getPreferredSize();

};

if (COLORS) {

[Link]([Link]);

[Link]([Link](

0,0,0,5));

[Link](new BoxLayout(unitGroup,

BoxLayout.Y_AXIS));

[Link](textField);

[Link](slider);

setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

add(unitGroup);

add(unitChooser);

[Link](TOP_ALIGNMENT);

[Link](TOP_ALIGNMENT);

/**

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* Returns the multiplier (units/meter) for the currently

* selected unit of measurement.

*/

public double getMultiplier() {

return [Link]();

public double getValue() {

return [Link]();

Program 7.72 [Link] SWING programý

/*

* 1.1+Swing version. (NOTYET)

*/

public class Unit {

String description;

double multiplier;

Unit(String description, double multiplier) {

super();

[Link] = description;

[Link] = multiplier;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String toString() {

String s = "Meters/" + description + " = " + multiplier;

return s;

Program 7.73 [Link] SWING programý

/*

* 1.1+Swing version.

*/

import [Link].*;

import [Link].*;

/**

* Based on the source code for DefaultBoundedRangeModel,

* this class stores its value as a double, rather than

* an int. The minimum value and extent are always 0.

**/

public class ConverterRangeModel implements BoundedRangeModel {

protected ChangeEvent changeEvent = null;

protected EventListenerList listenerList = new EventListenerList();

protected int maximum = 10000;

protected int minimum = 0;

protected int extent = 0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
protected double value = 0.0;

protected double multiplier = 1.0;

protected boolean isAdjusting = false;

final static boolean DEBUG = false;

public ConverterRangeModel() {

public double getMultiplier() {

if (DEBUG) {

[Link]("In ConverterRangeModel getMultiplier");

return multiplier;

public void setMultiplier(double multiplier) {

if (DEBUG) {

[Link]("In ConverterRangeModel setMultiplier");

[Link] = multiplier;

fireStateChanged();

public int getMaximum() {

if (DEBUG) {

[Link]("In ConverterRangeModel getMaximum");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return maximum;

public void setMaximum(int newMaximum) {

if (DEBUG) {

[Link]("In ConverterRangeModel setMaximum");

setRangeProperties(value, extent, minimum, newMaximum, isAdjusting);

public int getMinimum() {

return (int)minimum;

public void setMinimum(int newMinimum) {

[Link]("In ConverterRangeModel setMinimum");

//Do nothing.

public int getValue() {

if (DEBUG) {

[Link]("In ConverterRangeModel getValue");

return (int)getDoubleValue();

public void setValue(int newValue) {

if (DEBUG) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("In ConverterRangeModel setValue");

setDoubleValue((double)newValue);

public double getDoubleValue() {

if (DEBUG) {

[Link]("In ConverterRangeModel getDoubleValue");

return value;

public void setDoubleValue(double newValue) {

if (DEBUG) {

[Link]("In ConverterRangeModel setDoubleValue");

setRangeProperties(newValue, extent, minimum, maximum, isAdjusting);

public int getExtent() {

return (int)extent;

public void setExtent(int newExtent) {

//Do nothing.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean getValueIsAdjusting() {

return isAdjusting;

public void setValueIsAdjusting(boolean b) {

setRangeProperties(value, extent, minimum, maximum, b);

public void setRangeProperties(int newValue,

int newExtent,

int newMin,

int newMax,

boolean newAdjusting) {

[Link]("In ConverterRangeModel setRangeProperties");

setRangeProperties((double)newValue,

newExtent,

newMin,

newMax,

newAdjusting);

public void setRangeProperties(double newValue,

int unusedExtent,

int unusedMin,

int newMax,

boolean newAdjusting) {

if (DEBUG) {

[Link]("setRangeProperties(): "

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
+ "newValue = " + newValue

+ "; newMax = " + newMax);

if (newMax <= minimum) {

newMax = minimum + 1;

if (DEBUG) {

[Link]("maximum raised by 1 to " + newMax);

if ([Link](newValue) > newMax) { //allow some rounding error

newValue = newMax;

if (DEBUG) {

[Link]("value lowered to " + newMax);

boolean changeOccurred = false;

if (newValue != value) {

if (DEBUG) {

[Link]("value set to " + newValue);

value = newValue;

changeOccurred = true;

if (newMax != maximum) {

if (DEBUG) {

[Link]("maximum set to " + newMax);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

maximum = newMax;

changeOccurred = true;

if (newAdjusting != isAdjusting) {

maximum = newMax;

isAdjusting = newAdjusting;

changeOccurred = true;

if (changeOccurred) {

fireStateChanged();

/*

* The rest of this is event handling code copied from

* DefaultBoundedRangeModel.

*/

public void addChangeListener(ChangeListener l) {

[Link]([Link], l);

public void removeChangeListener(ChangeListener l) {

[Link]([Link], l);

protected void fireStateChanged() {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Object[] listeners = [Link]();

for (int i = [Link] - 2; i >= 0; i -=2 ) {

if (listeners[i] == [Link]) {

if (changeEvent == null) {

changeEvent = new ChangeEvent(this);

((ChangeListener)listeners[i+1]).stateChanged(changeEvent);

Program 7.74 [Link] SWING programý

/*

* 1.1+Swing version.

*/

import [Link].*;

import [Link].*;

public class FollowerRangeModel extends ConverterRangeModel

implements ChangeListener {

ConverterRangeModel dataModel;

public FollowerRangeModel(ConverterRangeModel dataModel) {

[Link] = dataModel;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

public void stateChanged(ChangeEvent e) {

fireStateChanged();

public int getMaximum() {

int modelMax = [Link]();

double multiplyBy = [Link]()/multiplier;

if (DEBUG) {

[Link]("In FollowerRangeModel getMaximum");

[Link](" [Link] = " + modelMax

+ "; multiply by " + multiplyBy

+ "; result: " + modelMax*multiplyBy);

return (int)(modelMax * multiplyBy);

public void setMaximum(int newMaximum) {

[Link]((int)(newMaximum *

(multiplier/[Link]())));

public int getValue() {

return (int)getDoubleValue();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void setValue(int newValue) {

setDoubleValue((double)newValue);

public double getDoubleValue() {

return [Link]()

* [Link]()

/ multiplier;

public void setDoubleValue(double newValue) {

[Link](

newValue * multiplier

/ [Link]());

public int getExtent() {

return [Link]();

public void setExtent(int newExtent) {

[Link](newExtent);

public void setRangeProperties(int value,

int extent,

int min,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int max,

boolean adjusting) {

double multiplyBy = multiplier/[Link]();

[Link](value*multiplyBy,

extent, min,

(int)(max*multiplyBy),

adjusting);

Program 7.75 [Link] SWING programý

import [Link].*;

import [Link].*;

import [Link];

import [Link].*;

public class DecimalField extends JTextField {

private NumberFormat format;

public DecimalField(double value, int columns, NumberFormat f) {

super(columns);

setDocument(new FormattedDocument(f));

format = f;

setValue(value);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public double getValue() {

double retVal = 0.0;

try {

retVal = [Link](getText()).doubleValue();

} catch (ParseException e) {

// This should never happen because insertString allows

// only properly formatted data to get in the field.

[Link]().beep();

[Link]("getValue: could not parse: " + getText());

return retVal;

public void setValue(double value) {

setText([Link](value));

Program 7.76 [Link] SWING programý

import [Link].*;

import [Link].*;

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link];

public class FormattedDocument extends PlainDocument {

private Format format;

public FormattedDocument(Format f) {

format = f;

public Format getFormat() {

return format;

public void insertString(int offs, String str, AttributeSet a)

throws BadLocationException {

String currentText = getText(0, getLength());

String beforeOffset = [Link](0, offs);

String afterOffset = [Link](offs, [Link]());

String proposedResult = beforeOffset + str + afterOffset;

try {

[Link](proposedResult);

[Link](offs, str, a);

} catch (ParseException e) {

[Link]().beep();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("insertString: could not parse: " + proposedResult);

public void remove(int offs, int len) throws BadLocationException {

String currentText = getText(0, getLength());

String beforeOffset = [Link](0, offs);

String afterOffset = [Link](len + offs, [Link]());

String proposedResult = beforeOffset + afterOffset;

try {

if ([Link]() != 0)

[Link](proposedResult);

[Link](offs, len);

} catch (ParseException e) {

[Link]().beep();

[Link]("remove: could not parse: " + proposedResult);

Program 7.77 [Link] SWING programý

/*

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* Swing versiyonu.

*/

import [Link].*;

import [Link].*;

public class FollowerRangeModel extends ConverterRangeModel

implements ChangeListener {

ConverterRangeModel dataModel;

public FollowerRangeModel(ConverterRangeModel dataModel) {

[Link] = dataModel;

[Link](this);

public void stateChanged(ChangeEvent e) {

fireStateChanged();

public int getMaximum() {

int modelMax = [Link]();

double multiplyBy = [Link]()/multiplier;

if (DEBUG) {

[Link]("In FollowerRangeModel getMaximum");

[Link](" [Link] = " + modelMax

+ "; multiply by " + multiplyBy

+ "; result: " + modelMax*multiplyBy);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return (int)(modelMax * multiplyBy);

public void setMaximum(int newMaximum) {

[Link]((int)(newMaximum *

(multiplier/[Link]())));

public int getValue() {

return (int)getDoubleValue();

public void setValue(int newValue) {

setDoubleValue((double)newValue);

public double getDoubleValue() {

return [Link]()

* [Link]()

/ multiplier;

public void setDoubleValue(double newValue) {

[Link](

newValue * multiplier

/ [Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int getExtent() {

return [Link]();

public void setExtent(int newExtent) {

[Link](newExtent);

public void setRangeProperties(int value,

int extent,

int min,

int max,

boolean adjusting) {

double multiplyBy = multiplier/[Link]();

[Link](value*multiplyBy,

extent, min,

(int)(max*multiplyBy),

adjusting);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 7.67 AWT Converter (birim dönüºtürücü)

[Link]

ªekil 7.68 Swing Converter (birim dönüºtürücü)

19 awt –swing karºýlaºtýrmalý örnekler 4 : awt List örneði : [Link]

bu programýn swing eºdeðeri ana metinde verilmiºti. ªimdi de swing versiyonuna göz atalým

Program 7.78 [Link] AWT programý

/*

* awt versiyonu

*/

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link];

public class ListDemo extends Applet

implements ActionListener,

ItemListener {

TextArea output;

List turkce, italyanca;

String newline;

public void init() {

newline = [Link]("[Link]");

//Build

turkce = new List(4, true); //prefer 4 items visible

[Link]("bir");

[Link]("iki");

[Link]("üç");

[Link]("dört");

[Link]("beº");

[Link]("altý");

[Link]("yedi");

[Link](this);

[Link](this);

//Build second list, which allows one selection at a time.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
italyanca = new List(); //Defaults to none visible, only one selectable

[Link]("uno");

[Link]("due");

[Link]("tre");

[Link]("quattro");

[Link]("cinque");

[Link]("sei");

[Link]("sette");

[Link](this);

[Link](this);

//Add lists to the Applet.

GridBagLayout gridBag = new GridBagLayout();

setLayout(gridBag);

//Can't put text area on right due to GBL bug

//(can't span rows in any column but the first).

output = new TextArea(10, 40);

[Link](false);

GridBagConstraints tc = new GridBagConstraints();

[Link] = [Link];

[Link] = 1.0;

[Link] = 1.0;

[Link] = 2;

[Link](output, tc);

add(output);

GridBagConstraints lc = new GridBagConstraints();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] = [Link];

[Link] = [Link]; //end row

[Link](turkce, lc);

add(turkce);

[Link](italyanca, lc);

add(italyanca);

public void actionPerformed(ActionEvent e) {

List list = (List)([Link]());

String language = (list == turkce) ?

"turkce" : "italyanca";

[Link]("Action event oluºtu "

+ [Link]() + "\" "

+ language + " dilinde." + newline);

public void itemStateChanged(ItemEvent e) {

List list = (List)([Link]());

String language = (list == turkce) ?

"turkce" : "italyanca";

int index = ((Integer)([Link]())).intValue();

if ([Link]() == [Link]) {

[Link]("item #"

+ index + " seçildi "

+ [Link](index) + " "

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
+ language + " dilinde. " + newline);

} else { //the item was deselected

[Link]("item #"

+ index + " iptal edildi "

+ [Link](index) + "\") "

+ language + " dilinde. " + newline);

[Link]

ªekil 7.69 [Link] (awt)

20. bu program ListDialogu tanýmlamakta ve kullanmaktadýr.

Program 7.79 [Link] AWT programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import BasicWindowMonitor;

public class ListDialog extends JDialog {

private static ListDialog dialog;

private static String value = "";

private JList list;

public static void initialize(Component comp,

String[] possibleValues,

String title,

String labelText) {

Frame frame = [Link](comp);

dialog = new ListDialog(frame, possibleValues,

title, labelText);

public static String showDialog(Component comp, String initialValue) {

if (dialog != null) {

[Link](initialValue);

[Link](comp);

[Link](true);

} else {

[Link]("ListDialog hatasý");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return value;

private void setValue(String newValue) {

value = newValue;

[Link](value, true);

private ListDialog(Frame frame, Object[] data, String title,

String labelText) {

super(frame, title, true);

//buttons

JButton cancelButton = new JButton("Ýptal et");

final JButton setButton = new JButton("seç");

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

[Link](false);

});

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

[Link] = (String)([Link]());

[Link](false);

});

getRootPane().setDefaultButton(setButton);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// ana dialog kýsmý

list = new JList(data);

[Link](ListSelectionModel.SINGLE_INTERVAL_SELECTION);

[Link](new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

if ([Link]() == 2) {

[Link]();

});

JScrollPane listScroller = new JScrollPane(list);

[Link](new Dimension(250, 80));

[Link](new Dimension(250, 80));

[Link](LEFT_ALIGNMENT);

JPanel listPane = new JPanel();

[Link](new BoxLayout(listPane, BoxLayout.Y_AXIS));

JLabel label = new JLabel(labelText);

[Link](list);

[Link](label);

[Link]([Link](new Dimension(0,5)));

[Link](listScroller);

[Link]([Link](10,10,10,10));

JPanel buttonPane = new JPanel();

[Link](new BoxLayout(buttonPane, BoxLayout.X_AXIS));

[Link]([Link](0, 10, 10, 10));

[Link]([Link]());

[Link](cancelButton);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link](new Dimension(10, 0)));

[Link](setButton);

Container contentPane = getContentPane();

[Link](listPane, [Link]);

[Link](buttonPane, [Link]);

pack();

public static void main(String[] args) {

String[] names = {"Turhan", "Meral", "Nurhan", "Ýrfan", "Birsen", "Selin", "Osman",


"Hatice", "Hayati", "Arzu", "Yaðmur", "Bulut"};

JFrame f = new JFrame("Bebek ismini seçiniz");

[Link](new BasicWindowMonitor());

JLabel intro = new JLabel("Seçilen isim :");

final JLabel name = new JLabel("Turhan");

[Link](name);

[Link]([Link]);

JButton button = new JButton("Yeni bir isim seçiniz...");

[Link](f, names, "Ýsim seçme dialoðu",

"bebekler isim listesi :");

[Link](new ActionListener()

public void actionPerformed(ActionEvent e)

String selectedName = [Link](null,[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](selectedName);

});

JPanel contentPane = new JPanel();

[Link](contentPane);

[Link](new BoxLayout(contentPane, BoxLayout.Y_AXIS));

[Link]([Link](20,20,20,20));

[Link](intro);

[Link](name);

[Link]([Link](new Dimension(0,10)));

[Link](button);

[Link](JComponent.CENTER_ALIGNMENT);

[Link](JComponent.CENTER_ALIGNMENT);

[Link](JComponent.CENTER_ALIGNMENT);

[Link]();

[Link](true);

[Link]

ªekil 7.70 [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
20. bu program iºlem takip çubuk grafiði olan progressMonitor tanýmlamakta ve
kullanmaktadýr.

Program 7.80 : [Link]

import [Link].*;
import [Link].*;

import [Link].*;

public class ProgressMonitorDemo extends JFrame {

public final static int ONE_SECOND = 1000;

private ProgressMonitor progressMonitor;


private Timer timer;
private JButton startButton;
private LongTask task;
private JTextArea taskOutput;
private String newline;

public ProgressMonitorDemo() {
super("ProgressMonitorDemo");
newline = [Link]("[Link]");

task = new LongTask();

//create the demo's UI


startButton = new JButton("Start");
[Link]("start");
[Link](new ButtonListener());

taskOutput = new JTextArea(5, 20);


[Link](new Insets(5,5,5,5));
[Link](false);

JPanel contentPane = new JPanel();


[Link](new BorderLayout());
[Link](startButton, [Link]);
[Link](new JScrollPane(taskOutput), [Link]);
[Link]([Link](20, 20, 20, 20));
setContentPane(contentPane);

//create a timer
timer = new Timer(ONE_SECOND, new TimerListener());
}

//the actionPerformed method in this class


//is called each time the Timer "goes off"
class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if ([Link]() || [Link]()) {
[Link]();
[Link]();
[Link]().beep();
[Link]();
[Link](true);
} else {
[Link]([Link]());
[Link]([Link]());
[Link]([Link]() + newline);
[Link]([Link]().getLength());
}
}
}

//the actionPerformed method in this class


//is called when the user presses the start button
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
progressMonitor = new ProgressMonitor([Link],
"Running a Long Task",
"", 0, [Link]());
[Link](0);
[Link](2 * ONE_SECOND);

[Link](false);
[Link]();
[Link]();
}
}

public static void main(String[] args) {

JFrame frame = new ProgressMonitorDemo();

[Link](new WindowAdapter() {
public void windowClosing(WindowEvent e) {[Link](0);}
});

[Link]();
[Link](true);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bu program detaylý bir dosya seçme sistemi tanýmlamaktadýr.

Program 7.81 : [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class FileChooserDemo extends JFrame {

static private final String newline = [Link]("[Link]");

public FileChooserDemo() {

super("FileChooserDemo");

//Create the log first, because the action listeners

//need to refer to it.

final JTextArea log = new JTextArea(5,20);

[Link](new Insets(5,5,5,5));

JScrollPane logScrollPane = new JScrollPane(log);

//Create a file chooser

final JFileChooser fc = new JFileChooser();

//Create the open button

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ImageIcon openIcon = new ImageIcon("images/[Link]");

JButton openButton = new JButton("Open a File...", openIcon);

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

int returnVal = [Link]([Link]);

if (returnVal == JFileChooser.APPROVE_OPTION) {

File file = [Link]();

//this is where a real application would open the file.

[Link]("Opening: " + [Link]() + "." + newline);

} else {

[Link]("Open command cancelled by user." + newline);

});

//Create the save button

ImageIcon saveIcon = new ImageIcon("images/[Link]");

JButton saveButton = new JButton("Save a File...", saveIcon);

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

int returnVal = [Link]([Link]);

if (returnVal == JFileChooser.APPROVE_OPTION) {

File file = [Link]();

//this is where a real application would save the file.

[Link]("Saving: " + [Link]() + "." + newline);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} else {

[Link]("Save command cancelled by user." + newline);

});

//For layout purposes, put the buttons in a separate panel

JPanel buttonPanel = new JPanel();

[Link](openButton);

[Link](saveButton);

//Add the buttons and the log to the frame

Container contentPane = getContentPane();

[Link](buttonPanel, [Link]);

[Link](logScrollPane, [Link]);

public static void main(String s[]) {

JFrame frame = new FileChooserDemo();

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

[Link]();

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bu program detaylý bir dosya seçme sistemi tanýmlamaktadýr.

Program 7.82 : [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class FileChooserDemo2 extends JFrame {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
static private String newline = [Link]("[Link]");

public FileChooserDemo2() {

super("FileChooserDemo2");

//Create the log first, because the action listener

//needs to refer to it.

final JTextArea log = new JTextArea(5,20);

[Link](new Insets(5,5,5,5));

JScrollPane logScrollPane = new JScrollPane(log);

JButton sendButton = new JButton("Attach...");

[Link](new ActionListener() {

public void actionPerformed(ActionEvent e) {

JFileChooser fc = new JFileChooser();

[Link](new ImageFilter());

[Link](new ImageFileView());

[Link](new ImagePreview(fc));

int returnVal = [Link]([Link], "Attach");

if (returnVal == JFileChooser.APPROVE_OPTION) {

File file = [Link]();

[Link]("Attaching file: " + [Link]()

+ "." + newline);

} else {

[Link]("Attachment cancelled by user." + newline);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

});

Container contentPane = getContentPane();

[Link](sendButton, [Link]);

[Link](logScrollPane, [Link]);

public static void main(String s[]) {

JFrame frame = new FileChooserDemo2();

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

[Link]();

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bu program detaylý bir dosya seçme sistemi tanýmlamaktadýr.

Program 7.83 : [Link]

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class TreeDemo extends JFrame {

private JEditorPane htmlPane;

private static boolean DEBUG = false;

private URL helpURL;

//Optionally play with line styles. Possible values are

//"Angled", "Horizontal", and "None" (the default).

private boolean playWithLineStyle = false;

private String lineStyle = "Angled";

public TreeDemo() {

super("TreeDemo");

//Create the nodes.

DefaultMutableTreeNode top = new DefaultMutableTreeNode("The Java Series");

createNodes(top);

//Create a tree that allows one selection at a time.

final JTree tree = new JTree(top);

[Link]().setSelectionMode

(TreeSelectionModel.SINGLE_TREE_SELECTION);

//Listen for when the selection changes.

[Link](new TreeSelectionListener() {

public void valueChanged(TreeSelectionEvent e) {

DefaultMutableTreeNode node = (DefaultMutableTreeNode)

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if (node == null) return;

Object nodeInfo = [Link]();

if ([Link]()) {

BookInfo book = (BookInfo)nodeInfo;

displayURL([Link]);

if (DEBUG) {

[Link]([Link] + ": \n ");

} else {

displayURL(helpURL);

if (DEBUG) {

[Link]([Link]());

});

if (playWithLineStyle) {

[Link]("[Link]", lineStyle);

//Create the scroll pane and add the tree to it.

JScrollPane treeView = new JScrollPane(tree);

//Create the HTML viewing pane.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
htmlPane = new JEditorPane();

[Link](false);

initHelp();

JScrollPane htmlView = new JScrollPane(htmlPane);

//Add the scroll panes to a split pane.

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);

[Link](treeView);

[Link](htmlView);

Dimension minimumSize = new Dimension(100, 50);

[Link](minimumSize);

[Link](minimumSize);

[Link](100); //XXX: ignored in some releases

//of Swing. bug 4101306

//workaround for bug 4101306:

//[Link](new Dimension(100, 100));

[Link](new Dimension(500, 300));

//Add the split pane to this frame

getContentPane().add(splitPane);

private class BookInfo {

public String bookName;

public URL bookURL;

public String prefix = "file:"

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
+ [Link]("[Link]")

+ [Link]("[Link]");

public BookInfo(String book, String filename) {

bookName = book;

try {

bookURL = new URL(prefix + filename);

} catch ([Link] exc) {

[Link]("Attempted to create a BookInfo "

+ "with a bad URL: " + bookURL);

bookURL = null;

public String toString() {

return bookName;

private void initHelp() {

String s = null;

try {

s = "file:"

+ [Link]("[Link]")

+ [Link]("[Link]")

+ "[Link]";

if (DEBUG) {

[Link]("Help URL is " + s);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

helpURL = new URL(s);

displayURL(helpURL);

} catch (Exception e) {

[Link]("Couldn't create help URL: " + s);

private void displayURL(URL url) {

try {

[Link](url);

} catch (IOException e) {

[Link]("Attempted to read a bad URL: " + url);

private void createNodes(DefaultMutableTreeNode top) {

DefaultMutableTreeNode category = null;

DefaultMutableTreeNode book = null;

category = new DefaultMutableTreeNode("Books for Java Programmers");

[Link](category);

//original Tutorial

book = new DefaultMutableTreeNode(new BookInfo

("The Java Tutorial: Object-Oriented Programming for the Internet",

"[Link]"));

[Link](book);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//Tutorial Continued

book = new DefaultMutableTreeNode(new BookInfo

("The Java Tutorial Continued: The Rest of the JDK",

"[Link]"));

[Link](book);

//JFC Swing Tutorial

book = new DefaultMutableTreeNode(new BookInfo

("The JFC Swing Tutorial: A Guide to Constructing GUIs",

"[Link]"));

[Link](book);

//Arnold/Gosling

book = new DefaultMutableTreeNode(new BookInfo

("The Java Programming Language", "[Link]"));

[Link](book);

//FAQ

book = new DefaultMutableTreeNode(new BookInfo(

"The Java FAQ", "[Link]"));

[Link](book);

//Chan/Lee

book = new DefaultMutableTreeNode(new BookInfo

("The Java Class Libraries: An Annotated Reference",

"[Link]"));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](book);

//Threads

book = new DefaultMutableTreeNode(new BookInfo

("Concurrent Programming in Java: Design Principles and Patterns",

"[Link]"));

[Link](book);

category = new DefaultMutableTreeNode("Books for Java Implementers");

[Link](category);

//VM

book = new DefaultMutableTreeNode(new BookInfo

("The Java Virtual Machine Specification",

"[Link]"));

[Link](book);

//Language Spec

book = new DefaultMutableTreeNode(new BookInfo

("The Java Language Specification",

"[Link]"));

[Link](book);

public static void main(String[] args) {

JFrame frame = new TreeDemo();

[Link](new WindowAdapter() {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void windowClosing(WindowEvent e) {[Link](0);}

});

[Link]();

[Link](true);

ªimdi bir grafik çizim programýna bakalým. Swing ve Graph2D olarak yazýlmýº olan bu
program bir dosyadan ([Link]) okuduðu veriye göre grafik çizmektedir.
Örneðin [Link] dosyasýnda

Baºlýk

x ekseni

y ekseni

[Link] 20 0 0 0

[Link] 3 0 0 255

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
deðerleri varsa Plot baºlýðý olarak “Baslýk”, x exseni yazýsý olarak “x ekseni”, y ekseni yazýsý
baºlýðý olarak “y ekseni”, toplam veri dosyasý olarak 2, veri dosyasý isimleri “[Link]” ve “[Link]”,
çizim ºekilleri 20 ve 3 ve renkler 00 255 ve 0 0 0 kullanmaktadýr.

Önce Plot ºekillerini tanýmalyan [Link] programýna göz atalým

Program 7.84 : [Link]

//======================================================

// Numerical Analysis package in java

// PlotShapes class

// This class convert graphic draw methods to

// plot coordinates and gives additional plotting methods

// Dr. Turhan Coban

// =====================================================

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class PlotShapesSW

Graphics2D g;

int xabsmin,yabsmin;

int absheight,abswidth;

double xmin,xmax,ymin,ymax;

Font f;

final static float dash1[] = {10.0f};

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
final static BasicStroke dashed = new BasicStroke(10.0f,

BasicStroke.CAP_BUTT,

BasicStroke.JOIN_MITER,

10.0f, dash1, 0.0f);

public PlotShapesSW(Graphics2D gi,int xabsmini ,int yabsmini,

int absheighti,int abswidthi,

double xmini,double xmaxi,

double ymini,double ymaxi)

// xabsmin : absulute stating point x axis

// yabsmin : absolute starting point y axis

// absheight : absoulute height of plotting window

// abswidth : absolute width of plotting window

// xmin : minimum x value (real number)

// xmax : maximum x value (real number)

// ymin : minimum y value (real number)

// ymax : maximum y value (real number)

// g : graphic object that actual drawing is done through

g=gi;

//Font fonts[]=[Link]().getAllFonts();

//f=fonts[2].deriveFont([Link],12);

//[Link](f);

xabsmin=xabsmini;

yabsmin=yabsmini;

absheight=absheighti;

abswidth=abswidthi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
xmin=xmini;

xmax=xmaxi;

ymin=ymini;

ymax=ymaxi;

public void drawLine(int plottype,double x1,double y1,double x2,double y2)

// draw a line from (x1,y1) to (x2,y2)

if(plottype==0) //draw a continuous line

[Link](new [Link]( (int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight),

(int)(xabsmin+(x2-xmin)/(xmax-xmin)*abswidth),

(int)(yabsmin+absheight-(y2-ymin)/(ymax-ymin)*absheight)));

} //end of drawLine

public void drawChar(char ch,double x1,double y1)

// draws a single character at (x1,y1)

char ch1[]=new char[1];

ch1[0]=ch;

int h=[Link]().getHeight();

int w=h-2;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](ch1,0,1,

(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth)-(int)(abswidth/200.0),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+h/2);

} //end of [Link]

public void drawChars(char ch[],int firstspace,int numberofchars,

double x1,double y1)

// draws a character array from space firstspace to (firstspace+numberofchars)

// starting at (x1,y1)

int h=[Link]().getHeight();

int w=h-2;

//[Link](ch,firstspace,numberofchars,

// (int)((xabsmin+(x1-xmin)/(xmax-xmin)*abswidth)+abswidth/80.0),

// (int)((yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+h/2));

[Link](ch,firstspace,numberofchars,

(int)((xabsmin+(x1-xmin)/(xmax-xmin)*abswidth)+abswidth/80.0),

(int)((yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)));

} //end of [Link]

public void drawString(String s,double x1,double y1)

//draws a String at (x1,y1)

int h=[Link]().getHeight();

int w=h-2;

[Link](s,

(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));

} //end of [Link]

public void drawRect(double x1,double y1,int rectwidth,int rectheight)

// draw a rectangle starting at (x1,y1)

// with dimensions of (rectwidth,rectheight)

[Link](new [Link]((int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-
rectwidth/2),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight-rectheight/2),

rectwidth,rectheight));

}//end of drawRect

public void drawEllipse(double x1,double y1,int width,int height)

// draw an oval with the centre of (x1,y1)

// with dimension of (width,height)

[Link](new [Link]((int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-width/2),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight-height/2),

width,height));

}//end of drawRect

public void drawPolygon(double x1,double y1,int radius,int side)

//draw a polygon of n sides n=3(trinagle),n=4(dimond)....

double Pi=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int xvalues[]=new int[side+1];

int yvalues[]=new int[side+1];

GeneralPath polygon=new GeneralPath(GeneralPath.WIND_EVEN_ODD,

[Link]);

double angle_increase;

double angle;

angle_increase=2.0*Pi/side;

angle=Pi/2.0;

for(int i=0;i<side;i++)

xvalues[i]= (int)([Link](xabsmin+(x1-xmin)/

(xmax-xmin)*abswidth+radius*[Link](angle)));

yvalues[i]= (int)([Link](yabsmin+absheight-(y1-ymin)/

(ymax-ymin)*absheight-radius*[Link](angle)));

if(i==0)

xvalues[side]=xvalues[i];yvalues[side]=yvalues[i];

[Link](xvalues[0],yvalues[0]);

else

[Link](xvalues[i],yvalues[i]);

[Link](polygon);

}//end of drawPolygon

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void drawXTic(int ticNumber,double ticHeight,int ticSide)

//draw a series of x axis tics

double dtic=(xmax-xmin)/ticNumber;

double x1=xmin;

double y1=ymin;

if(ticSide==0)

for(int i=0;i<=ticNumber;i++)

drawLine(0,x1,y1,x1,(y1-ticHeight));

x1=x1+dtic;

else

for(int i=0;i<=ticNumber;i++)

drawLine(0,x1,y1,x1,(y1+ticHeight));

x1=x1+dtic;

public void drawYTic(int ticNumber,double ticWidth,int ticSide)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//draw a series of y axis tics

double dtic=(ymax-ymin)/ticNumber;

double x1=xmin;

double y1=ymin;

if(ticSide==0)

for(int i=0;i<=ticNumber;i++)

drawLine(0,x1,y1,(x1-ticWidth),y1);

y1=y1+dtic;

else

for(int i=0;i<=ticNumber;i++)

drawLine(0,x1,y1,(x1+ticWidth),y1);

y1=y1+dtic;

public void drawXGrid(int ticNumber)

//draw x gridlies |||||||

double dtic=(xmax-xmin)/ticNumber;

double x1=xmin;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<=ticNumber;i++)

drawLine(0,x1,ymin,x1,ymax);

x1=x1+dtic;

public void drawYGrid(int ticNumber)

//draw y gridlines =====

double dtic=(ymax-ymin)/ticNumber;

double y1=ymin;

for(int i=0;i<=ticNumber;i++)

drawLine(0,xmin,y1,xmax,y1);

y1=y1+dtic;

public void drawXNumbers(int ticNumber)

//draw x numbers

double dtic=(xmax-xmin)/ticNumber;

double x1=xmin;

double y1=ymin;

String s;

s=" ";

for(int i=0;i<=ticNumber;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

s=[Link]([Link](x1*100.0)/100.00);

[Link](s,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)+(int)(abswidth/20.0));

x1=x1+dtic;

public void drawYNumbers(int ticNumber)

// draw y numbers

double dtic=(ymax-ymin)/ticNumber;

double x1=xmin;

double y1=ymin;

String s;

s=" ";

for(int i=0;i<=ticNumber;i++)

s=[Link]([Link](y1*100)/100.0)+" ";

[Link](s,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth-abswidth/10.0),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));

y1=y1+dtic;

public void drawXLabel(String xLabel)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

// draw x labels

double x1=xmin+(xmax-xmin)/2.0;

double y1=ymin;

[Link](xLabel,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)

+(int)(abswidth/12.0));

public void drawYLabel(String yLabel)

// draw y labels

double x1=xmin-(xmax-xmin)/6.0;

double y1=ymax-(ymax-ymin)/3.0;

int n=[Link]();

char ch[]=new char[n];

[Link](0,n,ch,0);

//AffineTransform at=[Link](3.0*[Link]/2.0,

//(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

//(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));

//[Link](at);

//[Link](yLabel,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

//(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));

//at=[Link]([Link]/2.0,

//(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

//(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight));

//[Link](at);

for(int i=0;i<n;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

drawChar(ch[i],x1,y1);

y1=y1-(ymax-ymin)/30;

public void drawLabel(String Label)

//draw graphic label

double x1=xmin+(xmax-xmin)/2.0;

double y1=ymax;

[Link](Label,(int)(xabsmin+(x1-xmin)/(xmax-xmin)*abswidth),

(int)(yabsmin+absheight-(y1-ymin)/(ymax-ymin)*absheight)-(int)(abswidth/40.0));

public void

drawPlotLines(int i,int plottype[],double x[][],double y[][],int n[],char ch[])

int j;

//draw lines

if((plottype[i] >= 0) && (plottype[i] < 10) )

switch ( i )

case 1 : [Link](new BasicStroke(1.0f) ); break;

case 2 : [Link](new BasicStroke(2.0f) ); break;

case 3 : [Link](dashed); break;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

for(j=0;j<n[i]-1;j++)

if((x[i][j]>=xmin && x[i][j]<=xmax )

&& (y[i][j]>=ymin && y[i][j]<=ymax))

if((x[i][j+1]>=xmin && x[i][j+1]<=xmax) &&

(y[i][j+1]>=ymin && y[i][j+1]<=ymax))

drawLine(0,x[i][j],y[i][j],x[i][j+1],y[i][j+1]);

else if(x[i][j+1]>xmax)

double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);

double a=y[i][j]-b*x[i][j];

drawLine(0,x[i][j],y[i][j],xmax,(a+b*xmax));

else if(y[i][j+1]>ymax)

double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);

double a=y[i][j]-b*x[i][j];

drawLine(0,x[i][j],y[i][j],(ymax-a)/b,ymax);

else if(x[i][j+1]>xmax && y[i][j+1]>ymax)

double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);

double a=y[i][j]-b*x[i][j];

drawLine(0,x[i][j],y[i][j],(ymax-a)/b,(a+b*xmax));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

else if((x[i][j+1]>=xmin && x[i][j+1]<=xmax )

&& (y[i][j+1]>=ymin && y[i][j+1]<=ymax))

if(x[i][j]<xmin)

double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);

double a=y[i][j+1]-b*x[i][j+1];

drawLine(0,xmin,(a+b*xmin),x[i][j+1],y[i][j+1]);

if(y[i][j]<ymin)

double b=(y[i][j+1]-y[i][j])/(x[i][j+1]-x[i][j]);

double a=y[i][j+1]-b*x[i][j+1];

drawLine(0,(ymin-a)/b,ymin,x[i][j+1],y[i][j+1]);

}//end of for(j=0

[Link](new BasicStroke(1.0f));

}//end of if(plottype

//draw characters

else if(plottype[i]==10)

for(j=0;j<n[i];j++)

if((x[i][j]>=xmin && x[i][j]<=xmax )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
&& (y[i][j]>=ymin && y[i][j]<=ymax))

{ drawChar(ch[i],x[i][j],y[i][j]); }

}//end of for(j=0;

}//end else if(plottype[i]==10)

//draw rectangles

else if(plottype[i]==20)

for(j=0;j<n[i];j++)

if((x[i][j]>=xmin && x[i][j]<=xmax )

&& (y[i][j]>=ymin && y[i][j]<=ymax))

{ drawRect(x[i][j],y[i][j],abswidth/100,abswidth/80); }

}//end of for(j=0;

}//end else if(plottype[i]==20)

//draw circle

else if(plottype[i]==21)

for(j=0;j<n[i];j++)

if((x[i][j]>=xmin && x[i][j]<=xmax )

&& (y[i][j]>=ymin && y[i][j]<=ymax))

{ drawEllipse(x[i][j],y[i][j],abswidth/100,abswidth/80); }

}//end of for(j=0;

}//end else if(plottype[i]==21)

else if(plottype[i]>=22 && plottype[i]<=27)

for(j=0;j<n[i];j++)

{ if((x[i][j]>=xmin && x[i][j]<=xmax )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
&& (y[i][j]>=ymin && y[i][j]<=ymax))

{drawPolygon(x[i][j],y[i][j],5,(plottype[i]-(int)(abswidth/20.0)));}

}//end of for(j=0;

}//end else if(plottype[i]==21..27)

Burada tanýmlanan ºekil, çizgi vs gerçek plot koordinat sistemini kullanmakta ve pencere
koordinat sistemiyle gerçek koordinat sistemleri arasýnda otomatik dönüºüm yapmaktadýr.

Program 7.85 : [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

import [Link].*;

public class Plot2D extends JPanel implements Printable

public Plot p1;

final static Color bg = [Link];

final static Color fg = [Link];

final static Color red = [Link];

final static Color white = [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
final static BasicStroke stroke = new BasicStroke(1.0f);

final static BasicStroke boldStroke = new BasicStroke(2.0f);

public Plot2D()

//Initialize drawing colors

setBackground([Link]);

setForeground([Link]);

try{

p1=new Plot();

} catch(IOException ioe) {[Link]("IOExceptionin opening plot");}

public void yenidanPlotDatasiOku()

try{

p1=new Plot();

} catch(IOException ioe) {[Link]("IOExceptionin opening plot");}

public void yenidenciz()

repaint();

public void yazdir()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

PrinterJob printJob = [Link]();

[Link](this);

if ([Link]()) {

try {

[Link]();

} catch (Exception ex) {[Link]();}

public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {

if (pi >= 1) {

return Printable.NO_SUCH_PAGE;

drawShapes((Graphics2D)g);

return Printable.PAGE_EXISTS;

public void drawShapes(Graphics2D g2)

Dimension d=getSize();

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

int gridWidth = [Link];

int gridHeight = [Link];

int rowspacing=(int)([Link]/100.0);

int columnspacing=(int)([Link]/50.0);

int rectWidth=gridWidth-columnspacing;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int rectHeight=gridHeight-rowspacing;

[Link]=(int)(0.25*rectWidth);

[Link]=(int)(0.2*rectHeight);

[Link]=(int)(0.65*rectWidth);

[Link]=(int)(0.7*rectHeight);

//[Link](RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);

[Link](stroke);

[Link](fg);

[Link]([Link],[Link],[Link],[Link]);

PlotShapesSW ps=new PlotShapesSW(g2,[Link],[Link],

[Link],[Link],[Link],[Link],[Link],[Link]);

if([Link]!=0)

[Link]([Link]);

if([Link]!=0)

[Link]([Link]);

int i,j;

for(i=0;i<[Link];i++)

// Select plot colors

[Link](new Color([Link][i],[Link][i],[Link][i]));

[Link](i,[Link],p1.x,p1.y,p1.n,[Link]);

}//end of for(i=0

[Link](fg);

[Link]([Link],([Link])/80.0,0);

[Link]([Link],([Link])/80.0,0);

[Link]([Link]);

[Link]([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]);

[Link]([Link]);

[Link]([Link]);

public void paintComponent(Graphics g)

[Link](g);

Graphics2D g2 = (Graphics2D) g;

drawShapes(g2);

bu program plot ºekillerini Plot oluºturacak ºekilde bir araya koymaktadýr.

Program 7.85 : PlotWindowSWF_2000.java

//======================================================

// Numerical Analysis package in java

// Plot (Çizim ) programý

// Dr. Turhan Coban

// =====================================================

/*

* Swing version.

*/

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import Plot2D;

import PlotShapesSW;

import BasicWindowMonitor;

public class PlotWindowSWF_2000 extends JFrame implements ItemListener,ActionListener

boolean inAnApplet = true;

final static String KONTROLPANEL = "Kontrol sayfasý";

final static String PLOTPANEL = "Plot sayfasý ";

Plot2D jta;

JLabel promptXmin; // Label prompt in Xmin field

JLabel promptXmax; // Label prompt in Xmax field

JLabel promptYmin; // Label prompt in Ymin field

JLabel promptYmax; // Label prompt in Ymax field

JLabel promptLabel; // Label prompt Plot Label

JLabel promptXLabel; // Label prompt Plot XLabel

JLabel promptYLabel; // Label prompt Plot YLabel

JLabel promptXntic; // Label prompt in Xmin field

JLabel promptYntic; // Label prompt in Xmax field

JLabel promptXgridon; // Label prompt in Ymin field

JLabel promptYgridon; // Label prompt in Ymax field

JTextField inputXmin; // input field Xmin

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JTextField inputXmax; // input field Xmax

JTextField inputYmin; // input field Ymin

JTextField inputYmax; // input field Ymax

JTextField inputLabel; // input field Label

JTextField inputXLabel; // input field XLabel

JTextField inputYLabel; // input field YLabel

JTextField inputXntic; // input field xntic

JTextField inputYntic; // input field yntic

JCheckBox inputXgridon; // input field xgridon

JCheckBox inputYgridon; // input field ygridon

JButton printButton;

public PlotWindowSWF_2000()

super("Plot çizimi");

Container contentPane = getContentPane();

JTabbedPane tabbedPane = new JTabbedPane();

promptXmin=new JLabel("Xmin ");

inputXmin=new JTextField(5);

promptXmax=new JLabel("Xmax ");

inputXmax=new JTextField(5);

promptYmin=new JLabel("Ymin ");

inputYmin=new JTextField(5);

promptYmax=new JLabel("Ymax ");

inputYmax=new JTextField(5);

//*******

promptLabel=new JLabel(" Plot baºlýðý : ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
promptXLabel=new JLabel(" x ekseni baºlýðý : ");

promptYLabel=new JLabel(" y ekseni baºlýðý : ");

inputLabel=new JTextField(30);

inputXLabel=new JTextField(30);

inputYLabel=new JTextField(30);

//*******

promptXntic=new JLabel("X tik no");

inputXntic=new JTextField(5);

promptYntic=new JLabel("Y tik no");

inputYntic=new JTextField(5);

promptXgridon=new JLabel("X grid (küçük kare)");

inputXgridon=new JCheckBox(" ");

promptYgridon=new JLabel("Y grid (küçük kare)");

inputYgridon=new JCheckBox(" ");

//*******

JPanel pane1 = new JPanel()

public Dimension getPrefferedSize()

Dimension size=[Link]();

[Link]=800;

return size;

};

JPanel mpane=new JPanel();

[Link](new GridLayout(1,8));

[Link](promptXmin);

[Link](inputXmin);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](promptXmax);

[Link](inputXmax);

[Link](promptYmin);

[Link](inputYmin);

[Link](promptYmax);

[Link](inputYmax);

[Link](mpane,[Link]);

JPanel xpane=new JPanel();

[Link](new GridLayout(1,8));

[Link](promptXntic);

[Link](inputXntic);

[Link](promptYntic);

[Link](inputYntic);

[Link](promptXgridon);

[Link](inputXgridon);

[Link](promptYgridon);

[Link](inputYgridon);

[Link](xpane,[Link]);

//********

JPanel lpane=new JPanel();

[Link](new GridLayout(3,2));

[Link](promptLabel);

[Link](inputLabel);

[Link](promptXLabel);

[Link](inputXLabel);

[Link](promptYLabel);

[Link](inputYLabel);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](lpane,[Link]);

//*********

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

jta=new Plot2D();

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]);

[Link]([Link]);

[Link]([Link]);

printButton=new JButton("Yazdýr");

JPanel pane2 = new JPanel();

[Link](new BorderLayout());

[Link](jta);

[Link](printButton,[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](PLOTPANEL, pane2);

[Link](KONTROLPANEL, pane1);

[Link]( tabbedPane, [Link]);

public void itemStateChanged(ItemEvent e)

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

Object source=[Link]();

if(source==inputXgridon)

if ([Link]() == [Link])

[Link]=0;

else

[Link]=1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if(source==inputYgridon)

if ([Link]() == [Link])

[Link]=0;

else

[Link]=1;

[Link]([Link]);

[Link]([Link]);

[Link]([Link]);

[Link]();

public void actionPerformed(ActionEvent e)

if ([Link]()==printButton )

[Link]();

Double valXmin=new Double([Link]());

[Link]=[Link]();

Double valXmax=new Double([Link]());

[Link]=[Link]();

Double valYmin=new Double([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]=[Link]();

Double valYmax=new Double([Link]());

//*****

Integer valXntic=new Integer([Link]());

[Link]=[Link]();

Integer valYntic=new Integer([Link]());

[Link]=[Link]();

//*****

[Link]=[Link]();

[Link]=[Link]();

[Link]=[Link]();

[Link]=[Link]();

[Link]();

public static void main(String[] args)

PlotWindowSWF_2000 pencere= new PlotWindowSWF_2000();

[Link](new BasicWindowMonitor());

[Link](600,600);

[Link](true);

Asýl Plot’ý çizen bu programdadýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
8. JAVADA HATA ANALÝZÝ VE YAKALANMASI

8.1 HATA ANALÝZÝ

Javada diðer dillerden farklý olarak dil yapýsýnýn içinde hatalarý yakalamak için oldukça
geliºmiº bir sistem mevcuttur. Eger javada kontrol edilmemiº bir hata oluºursa program durur
ve hatayý yazar. Biz hata oluºtuðunda hata kontrol sisteminde hatayý kontrol edip programý
çalýºtýrmaya devam edebiliriz. Javadaki hata kontrol bloðu ºu ºekilde yazýlýr :

try { java deyimleri;


java kaynaklarýndan herhangi birini kullanan deyimler
}
catch( herhangibirtürException e1)
{ exception kontrol deyimleri }
catch( diðerherhangibirtürException e1)
{ exception kontrol deyimleri }
finally
{
deyimler
java kaynaðýný serbest býrakma deyimleri
}

Javadaki Exception türleri aºaðýdaki tabloda verilmiºtir :

Tablo 8.1 : Java hata ve exception listesi

[Link] hata listesi

AbstractMethodError
ClassCircularityError
ClassFormatError
Error
ExceptionInInitializerError
IllegalAccessError
IncompatibleClassChangeError

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
InstantiationError
InternalError
LinkageError
NoClassDefFoundError
NoSuchFieldError
NoSuchMethodError
OutOfMemoryError
StackOverflowError
ThreadDeath
UnknownError
UnsatisfiedLinkError
VerifyError
VirtualMachineError

[Link] Exception listesi

ArithmeticException
ArrayIndexOutOfBoundsException
ArrayStoreException
ClassCastException
ClassNotFoundException
CloneNotSupportedException
Exception
IllegalAccessException
IllegalArgumentException
IllegalMonitorStateException
IllegalStateException
IllegalThreadStateException
IndexOutOfBoundsException
InstantiationException
InterruptedException
NegativeArraySizeException
NoSuchFieldException
NoSuchMethodException
NullPointerException
NumberFormatException
RuntimeException
SecurityException
StringIndexOutOfBoundsException

[Link] exception listesi

EmptyStackException
MissingResourceException
NoSuchElementException
TooManyListenersException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] exception listesi

CharConversionException
EOFException
FileNotFoundException
IOException
InterruptedIOException
InvalidClassException
InvalidObjectException
NotActiveException
NotSerializableException
ObjectStreamException
OptionalDataException
StreamCorruptedException
SyncFailedException
UTFDataFormatException
UnsupportedEncodingException
WriteAbortedException

Java hata oluºtuðununda hatanýn oluºtuðu metotun giriºinde kullanýlan throws kelimesini
takip eden Exception sýnýfýyla ayný exception gurubunu yaºýyan try-catch gurubuna aktarýr.

Bu metotun içinde gerekli noktada (hatanýn oluºacaðý ºartda) throw deyimi kullanýlarak hata
oluºtuðu aktarýlýr ve bu aktarým try-catch gurubu tarafýndan yakalanýr ve iºleme alýnýr.

Hata kontrolunu daha iyi açýklayabilmek amacýyla bir örnek vermek istiyoruz.
SifiraBölünmeException sinifinda yeni bir hata kontrol sinifi yaratiyoruz. Bu sinif ve java
kütüphanesinde mevcut olan tamsayý format hatasý (NumberFormatException)
sifirebolmetesti programýnda test edilmiºtir. Sonuçlar applet çýktýlarýnda görülmektedir. Eðer
bu hatalar kontrol edilmeseydi, java programý hata vererek çalýºmasýný durdururdu.

Programdaki hata kontrol deyimleri kalýn harfle verilmiºtir. Hata kontrol bloðu ise italik olarak
verilmiºtir.

Problem 8.1 [Link] programý, sýsýra bolme hatasý tanýmlar

public class sifiraBolunmeException


extends ArithmeticException
{

public sifiraBolunmeException()
{
super("sifira bolmeye calistiniz ");
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Problem 8.2 Bizim tarafýmýzdan oluºturulan [Link] hata
kontrolü ve sayý formatý hata kontrolü (NumberFormatException) yapan
[Link] programý

import [Link];
import [Link].*;
import [Link].*;
import [Link];
import sifiraBolunmeException;

public class sifirebolmetesti extends Applet implements ActionListener


{
private Label L1,L2;
private TextField T1,T2;
private int sayi1,sayi2;
private double sonuc;

public void init()


{
sayi1=0;
sayi2=1;
L1=new Label("Payi gir : ");
L2=new Label("Paydayi gir : ");
T1=new TextField(10);
T2=new TextField(10);
[Link](this);
add(L1);
add(T1);
add(L2);
add(T2);
}

public double bol(int s1,int s2) throws sifiraBolunmeException


{
if(s2==0) throw new sifiraBolunmeException();
return (double) s1/s2;
}

public void actionPerformed(ActionEvent e)


{
DecimalFormat hassaslik3=new DecimalFormat("#.000");
try{
sayi1=[Link]([Link]());
sayi2=[Link]([Link]());
[Link]("");
[Link]("");
sonuc=bol(sayi1,sayi2);
showStatus(sayi1+" / "+sayi2+" = "+[Link](sonuc));
}
catch(NumberFormatException nfe)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{showStatus("iki tam sayi girmelisiniz.");}
catch(sifiraBolunmeException sbh)
{showStatus([Link]());}
}
}

[Link], [Link],[Link]

ªekil 8.1-3 sýfý[Link] appletinde sýfýra bolme ve tamsayý hata mesajlarýnýn


görünümü

Programlarda da görüldüðü gibi hata programýn calismasýna engel olmaksýzýn kullanýcýya


bildirilmektedir. Bu program gurubunda once ArithmeticException sýnýfýndan
sýfýraBolunmeException sýnýfý türetilmiºtir. Sonra programýn içindeki

public double bol(int s1,int s2) throws sifiraBolunmeException


{
if(s2==0) throw new sifiraBolunmeException();
return (double) s1/s2;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
metotunda metotun once throws sifiraBolunmeException deyimiyle exception gondereceði
bildirilmiº, ve metotun içinde

if(s2==0) throw new sifiraBolunmeException();

deyimiyle exception ( hata deðiºkeni) gönderilmiºtir. Gönderilen hata deðiºkeni (exception)

try{
sayi1=[Link]([Link]());
sayi2=[Link]([Link]());
[Link]("");
[Link]("");
sonuc=bol(sayi1,sayi2);
showStatus(sayi1+" / "+sayi2+" = "+[Link](sonuc));
}
catch(NumberFormatException nfe)
{showStatus("iki tam sayi girmelisiniz.");}
catch(sifiraBolunmeException sbh)
{showStatus([Link]());}
}
}

gurubu tarafýndan yakalanmýº, ve eðer sýfýr hatasý varsa

catch(sifiraBolunmeException sbh) deyimi tarafýndan yakalanmiº ve

showStatus("iki tam sayi girmelisiniz."); iºlemini çaðýrmýºtý bu iºlem sonunda applet


sifiraBolunmeException sýnýfýnýn toString metotunu kullanarak

sifiraBolunmeException:sýfýra bolmeye calýstýnýz

mesajýný vermiºtir. Ayrýca yukardaki program parçacýðýnda da görüldüðü gibi programýmýz


ayný zamanda NumberFormatException nfe terimiyle integer olan rakamýmýzýn integer
olarak gönderilip gönderilmediðini kontrol etmektedir. Bu exception java kütüphanesindeki
parsInt metotu tarafýndan gönderilmektedir.

8.2 ALIªTIRMALAR

1. H6O1java Hata (Exception) kontrolu programý. gercekSayiException ve


bayagikesirException tanýmlanmýºtýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] programýnýnda gercek sayi girildiginde hata(Exception) vermek
için gerceksayiException tanýmlanmýºtýr. [Link] programýndaki

public bayagikesir(double npay,double npayda) throws gercekSayiException


{
//*** tanimlayiniz
}

kurucu metotunu bu exception'i kullanacak ºekilde oluºturunuz. [Link] programýnýn


benzeri [Link] programýnda bayagikesir yerine bayagikesir1 kullanarak exception
yapinizi kontrol ediniz.

Problem 8.3 : gercekSayiException, gercek sayý hata taným programý

public class gercekSayiException extends NumberFormatException

public gercekSayiException()

super("gercek sayi girdiniz tam sayi girmelisiniz");

Problem 8.4 : bayagikesirException , bayaðý kesir sýfýra bölme hata taným programý

class bayagikesirException extends Exception

public bayagikesirException()

super("Bayagi kesir paydasinin degeri 0.");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Problem 8.5 : [Link], hata kontrollü bayagikesir sýnýfý

//===========================================

// bayagikesir sinifi tanimi

// Dr. Turhan Coban

//===========================================

import [Link].*;

import bayagikesirException;

import gercekSayiException;

// sinif bayagikesir

// bu sinif bayagikesir sayilarin matematik

// islemlerini tanimlar

//

class bayagikesir {

// sinif degiskenleri

int pay;

int payda;

// kurucu metodlar

public bayagikesir()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
pay=0;

payda=1;

public bayagikesir(int npay,int npayda)

pay=npay;

payda=npayda;

public bayagikesir(double npay,double npayda) throws gercekSayiException

//*** tanimlayiniz

double tmp1,tmp2;

tmp1=(int)npay;

tmp2=(int)npayda;

if (tmp1!=npay) throw new gercekSayiException();

else if (tmp2!=npayda) throw new gercekSayiException();

else

pay=(int)tmp1;

payda=(int)tmp2;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public bayagikesir(int numer)

pay=numer;

payda=1;

public bayagikesir(bayagikesir c )

pay=[Link]();

payda=[Link]();

// giriŸ - ‡�k�Ÿ metotlar�

public int enbuyukortakbolen()

int n=pay;

int m=payda;

// iki tam sayinin en buyuk ortak bolenini hesaplar

if(n==0)

return m;

if(m==0)

return n;

while(m != n)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if(n>m)

n=n-m;

else

m=m-n;

return n;

public void sadelestir() throws bayagikesirException

//sadelestir

int isaret=1;

if(pay<0)

isaret=-isaret;

pay=-pay;

if(payda<0)

isaret=-isaret;

payda=-payda;

if(payda==0) {throw new bayagikesirException();}

int ebob=enbuyukortakbolen();

ebob=[Link](ebob);

pay=isaret*pay/ebob;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
payda=payda/ebob;

public int Pay()

return pay;

public int Payda()

return payda;

public void payGir(int r)

pay=r;

public void paydaGir(int i)

payda=i;

public void bayagikesirGir(bayagikesir sag)

pay=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
payda=[Link]();

public void bayagikesirGir(int nr,int ni)

pay=nr;

payda=ni;

public void bayagikesirGir(int nr)

pay=nr;

payda=1;

public void bayagikesirGir(double d) throws bayagikesirException

// tam sayinin bayagikesir esitini y�kle

// eh birazc�k yaklas�m var tabi

bayagikesirGir((int)d*10000,10000);

sadelestir();

public double toDouble()

//bayagikesir sayinin gercek sayi esidi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return ((double)pay/(double)payda);

public static bayagikesir BayagikesireCevir(double d) throws bayagikesirException

// tam sayinin bayagikesir esiti

// eh birazc�k yaklas�m var tabi

bayagikesir b=new bayagikesir();

[Link]((int)d*10000,10000);

[Link]();

return b;

public void topla(bayagikesir sag) throws bayagikesirException

//ikinci bir bayagikesirle topla

pay = pay*[Link]() + [Link]()*payda;

payda = payda*[Link]();

sadelestir();

public void topla(int sag) throws bayagikesirException

//bir gercek say�yla topla

pay = pay + sag*payda;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sadelestir();

public void cikar(bayagikesir sag) throws bayagikesirException

//ikinci bir bayagikesirle topla

pay = pay*[Link]() - [Link]()*payda;

payda = payda*[Link]();

sadelestir();

public void cikar(int sag) throws bayagikesirException

//bir gercek say�yla topla

pay = pay - sag*payda;

sadelestir();

public void carp(bayagikesir sag ) throws bayagikesirException

//bir bayagikesir sayiyla carp

pay = pay*[Link]();

payda = payda*[Link]();

sadelestir();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void carp(int sag ) throws bayagikesirException

//bir gercek sayiyla carp

pay = pay*sag;

sadelestir();

public void bol(bayagikesir sag ) throws bayagikesirException

//bir bayagikesir say�yla bol

pay = pay*[Link]();

payda = payda*[Link]();

sadelestir();

public void bol(int sag ) throws bayagikesirException

//bir Pay say�yla bol

payda = payda*sag;

sadelestir();

public static bayagikesir topla(bayagikesir sol, bayagikesir sag) throws bayagikesirException

// iki bayagikesir say�n�n toplam�n� return deyimiyle bayagikesir olarak

// aktar�r

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int r1= [Link]() * [Link]() + [Link]() * [Link]();

int i1= [Link]()* [Link]();

bayagikesir sonuc;

sonuc=new bayagikesir(r1,i1);

[Link]();

return sonuc;

public static bayagikesir topla(bayagikesir sol, int sag) throws bayagikesirException

// bir bayagikesir ve bir Pay say�n�n toplam�n� return deyimiyle bayagikesir olarak

// aktar�r

int r1=[Link]() + sag*[Link]();

int i1=[Link]();

bayagikesir sonuc;

sonuc=new bayagikesir(r1,i1);

[Link]();

return sonuc;

public static bayagikesir topla(int sol, bayagikesir sag) throws bayagikesirException

// bir bayagikesir ve bir Pay say�n�n toplam�n� return deyimiyle bayagikesir olarak

// aktar�r

int r1=[Link]() + sol*[Link]();

int i1=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bayagikesir sonuc;

sonuc=new bayagikesir(r1,i1);

[Link]();

return sonuc;

//===================================

public static bayagikesir cikar(bayagikesir sol, bayagikesir sag) throws bayagikesirException

// iki bayagikesir say�n�n toplam�n� return deyimiyle bayagikesir olarak

// aktar�r

int r1= [Link]() * [Link]() - [Link]() * [Link]();

int i1= [Link]()* [Link]();

bayagikesir sonuc;

sonuc=new bayagikesir(r1,i1);

[Link]();

return sonuc;

public static bayagikesir cikar(bayagikesir sol, int sag) throws bayagikesirException

// bir bayagikesir ve bir Pay say�n�n toplam�n� return deyimiyle bayagikesir olarak

// aktar�r

int r1=[Link]() - sag*[Link]();

int i1=[Link]();

bayagikesir sonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sonuc=new bayagikesir(r1,i1);

[Link]();

return sonuc;

public static bayagikesir cikar(int sol, bayagikesir sag) throws bayagikesirException

// bir bayagikesir ve bir Pay say�n�n toplam�n� return deyimiyle bayagikesir olarak

// aktar�r

int r1=[Link]() - sol*[Link]();

int i1=[Link]();

bayagikesir sonuc;

sonuc=new bayagikesir(r1,i1);

[Link]();

return sonuc;

//===================================

public static bayagikesir carp(bayagikesir sol, bayagikesir sag) throws bayagikesirException

{ // iki bayagikesir sayinin carpimini aktar

bayagikesir sonuc;

sonuc=new bayagikesir([Link]()*[Link](),[Link]()*[Link]());

[Link]();

return sonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static bayagikesir carp(bayagikesir sol, int sag) throws bayagikesirException

{ // bir bayagikesir ve bir double sayinin carpimini aktar

bayagikesir sonuc;

sonuc=new bayagikesir([Link]()*sag,[Link]());

[Link]();

return sonuc;

public static bayagikesir carp(int sol, bayagikesir sag) throws bayagikesirException

{ // bir bayagikesir ve bir double sayinin carpimini aktar

bayagikesir sonuc;

sonuc=new bayagikesir([Link]()*sol,[Link]());

[Link]();

return sonuc;

public static bayagikesir bol(bayagikesir sol, bayagikesir sag) throws bayagikesirException

{ // iki bayagikesir sayinin b”l�mlerini aktar

double a=[Link]()*[Link]()+[Link]()*[Link]();

bayagikesir sonuc;

sonuc=new bayagikesir((int)([Link]()*[Link]()),(int)([Link]()*[Link]()));

[Link]();

return sonuc;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static bayagikesir bol(bayagikesir sol, int sag) throws bayagikesirException

{ // bayagikesir say�y� double say�ya bol

bayagikesir sonuc;

sonuc=new bayagikesir([Link](),([Link]()*sag));

[Link]();

return sonuc;

public boolean kucuktur(bayagikesir sol,bayagikesir sag)

// less then comparison of two bayagikesir numbers

return ([Link]() < [Link]());

public boolean kucuktur_esittir(bayagikesir sol,bayagikesir sag)

// less then and esittir comparison of two bayagikesir numbers

return ([Link]() <= [Link]());

public boolean buyuktur(bayagikesir sol,bayagikesir sag)

// buyuktur then comparison of two bayagikesir numbers

return [Link]() > [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean buyuktur_esittir(bayagikesir sol,bayagikesir sag)

// buyuktur then and esittir comparison of two bayagikesir numbers

return [Link]() >= [Link]();

public boolean esittir(bayagikesir sol,bayagikesir sag)

// esittir comparison of two bayagikesir numbers

return [Link]() == [Link]();

public boolean esit_degildir(bayagikesir sol,bayagikesir sag)

// not esittir comparison of two bayagikesir numbers

return [Link]() != [Link]();

public static String toString(bayagikesir value)

String b="";

if([Link]([Link]())!=1)

b=b+"( "+[Link]()+" / "+[Link]()+" )";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else

b=b+[Link]()+" ";

return b;

public String toString()

// yazima haz�r bayagikesir formda String de§iskeni iletir.

String b="";

if([Link](Payda())!=1)

b=b+"( "+pay+" / "+Payda()+" )";

else

b=b+Pay()+" ";

return b;

};

//bayagikesir sinifinin taniminin sonu

Problem 8.6 : bayagikesirException, bayaðý kesir sýfýra bölme hata test programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

/bu sinif sinif degiskeni kompleksi boyutlu olarak çcagirir.

//not buradaki bayagikesir sinifi [Link] programi

//tarafindan yaratilmistir.

import [Link].*; //java girdi cikti sinifini cagir

import bayagikesir;

class H6O1

public static void main(String args[]) throws IOException

Text cin=new Text();

double n1,n2;

[Link]("toplam bayagi kesir sayisi, n = ");

int n=[Link]();

bayagikesir sayi[]=new bayagikesir[n];

bayagikesir toplam=new bayagikesir();

int i;

for(i=0;i<[Link];i++)

try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("bir bayagikesir giriniz : ");

n1=[Link]();

n2=[Link]();

sayi[i]=new bayagikesir(n1,n2);

catch (gercekSayiException e)

[Link]([Link]());

i--;

for(i=0;i<[Link];i++)

try{

[Link](sayi[i]);

catch (bayagikesirException e)

[Link]([Link]());

[Link]("Toplam = "+[Link]());

try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]);

catch (bayagikesirException e)

[Link]([Link]());

[Link]("Ortalama = "+[Link]());

2. H8AL1_2000, Bayagikesir hata kontrolu programý çýktýsý, JoptionPane kullanýyor.

import [Link];

import [Link].*; //java girdi cikti sinifini cagir

import bayagikesir;

class H8AL1_2000

public static void main(String args[]) throws IOException

Text cin=new Text();

double n1,n2;

[Link]("toplam bayagi kesir sayisi, n = ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n=[Link]();

bayagikesir sayi[]=new bayagikesir[n];

bayagikesir toplam=new bayagikesir();

int i;

String s="";

for(i=0;i<[Link];i++)

try{

[Link]("bir bayagikesir giriniz : ");

n1=[Link]();

n2=[Link]();

sayi[i]=new bayagikesir(n1,n2);

catch (gercekSayiException e)

[Link](null,[Link](),"Gerçek Sayý Hatasý",

JOptionPane.ERROR_MESSAGE);

i--;

catch (bayagikesirException e)

[Link](null,[Link](),"Bayaðý kesir Hatasý",

JOptionPane.ERROR_MESSAGE);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(i=0;i<[Link];i++)

try{

[Link](sayi[i]);

catch (bayagikesirException e)

[Link](null,[Link](),"Bayaðý kesir Hatasý",

JOptionPane.ERROR_MESSAGE);

s+="Ortalama = "+[Link]();

try{

[Link]([Link]);

catch (bayagikesirException e)

[Link](null,[Link](),"Bayaðý kesir Hatasý",

JOptionPane.ERROR_MESSAGE);

s+="Ortalama = "+[Link]();

[Link](null,s,

"Bayaðý kesir Ortalamasý",JOptionPane.PLAIN_MESSAGE);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](0);

9. PARALEL KULLANIM (MULTITHREADING) , GERÇEK ZAMAN UYGULAMALARI,


ANÝMASYON

9.1 PARALEL KULLANIM(MULTITHREADING) VE GERÇEK ZAMAN


PROGRAMLANMASI

ݺlemleri tek tek sýrayla ve iyi bir ºekilde yapabilseydik belki de çok mükemmel sonuçlar
alabilirdik. Fakat Dünyadaki hemen hemen hiçbirºey tek tek sýrayla çalýºmaz. Ýnsan vücudu
da dahil bir çok doðal sistem paralel olarak çalýºýr. Yani bir iºlem yapýlýrken parelelinde diðer
bir iºlem yapýlmaya devam eder. Bizim ºu anda kullandýðýmýz bilgisayarlarýn büyük bir
bölümü tek bir iºlemciye(processor) sahiptir. Birden fazla iºlemciye sahip paralel
bilgisayarlarda, her bir iºlemcide bir iº tanýmlayarak paralel kullaným mümkündür. Fakat tek
iºlemcili sistemler için(seri bilgisayar) yazýlmýº olan program dilleri genel olarak birden fazla
iºlemin ayný anda yapýlmasýna izin vermezler. Modern bilgisayar dilleri arasýnda sadece Ada
ve Java dilleri bir iºlemcide birden fazla iºlemin (programýn) ayný anda kullanýlmasýna izin
verir. C++ dili birden fazla programýn ayný anda kullanýlmasýna izin vermez. Bu yüzden tek
kullanýmlý bir programlama dilidir.

Parelel Kullaným(Multithreading) Tek bir iºlemcinin birden fazla program tarafýndan


kullanýlmasýdýr. Bu kullaným CPU (merkez program iºlemcisi) adýný verdiðimiz temel
bilgisayar iºlem ünitesinin çeºitli programlar tarafýndan ortaklaºa kullanýlmasý prensibine göre
yapýlýr. Bilgisayar CPU zamaný küçük parçalara bölünerek her parçada ayrý bir bilgisayar
programýnýn çalýºmasý ve diðer bilgisayar programlarýnýn beklemesi saðlanýr. Programlar
küçük paketçikler halinde program iºlemcisine gönderilir ve sonuçlar tekrar hafýzaya aktarýlýr.
Sonra ikinci bir program parçacýðý iºlemci belleðine gönderilir. Modern seri bilgisayarlarda
cache adý verilen bu program parçacýklarý çalýºýrken diðer program parçacýklarýný tutabilen
hizli hafýza birimleri de bulunur.Tüm bu kontrollarý ve birden fazla programýn tek iºlemcide
çalýºma iºlemini java dilinde doðrudan programlayabiliriz.

CPU nun Parelel kullanýmý Runnable interface’i veya abstract Thread sýnýfýni kullanarak
gerçekleºtirilir. Aºaðýda Bu iki yolu kullanarak bir digital saat programý oluºturulmuºtur. Bu
programlarda saat sadece tek bir program olmasýna raðmen bilgisayarýn belleðinde eðer
devamlý çalýºtýrýlacak olursa baºka hiçbir programýn çalýºtýrýlamýyacaðý düºünülerek paralel
kullanýmlý olarak verilmiºtir.

Zaman içinde programlarý bilgisayarda kontrollu yapýda kullanmak ayný zamanda bize gerçek

zaman programlama olasýlýklarýný da sunar. Paralel ve gerçek zaman kullanýmý javayý

kuvvetli bir modern programlama dili yapan en önemli özelliklerden biridir.

Program 9.1 [Link] sýnýfýnýn thread sýnýfýndan türemiº olarak yazýlýmý.

import [Link];
import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import [Link];
import [Link].*;

class saatThread extends Thread


{
Applet a;
public saatThread(Applet ai)
{a=ai;}

public void run()


{
while(true)
{
[Link]();
try {[Link](1000);}
catch(InterruptedException e)
{[Link]([Link]());}
}
}
}

public class saat extends Applet


{
Font F;
Date D;
DateFormat df;
Locale tr;
saatThread r;

public void init()


{
F=new Font("TimesRoman",[Link],24);
tr=new Locale("tr","TR");
D=new Date();
df= [Link]([Link],tr);
r=new saatThread(this);
[Link]();
}

public void paint(Graphics g)


{
[Link](D);
D=new Date();
[Link](F);
try
{
[Link]([Link](),10,50);
}
catch(NullPointerException e){}
}
}

Program 9.2 [Link] sýnýfýnýn thread sýnýfýndan türemiº olarak yazýlýmý.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link];

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

class saatThreadSWF extends Thread

JFrame a;

public saatThreadSWF(JFrame ai)

{a=ai;}

public void run()

while(true)

[Link]();

[Link]();

try {[Link](1000);}

catch(InterruptedException e)

{[Link]([Link]());}

public class saatSWF extends JFrame

JLabel jb;

Font F;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Date D;

saatThreadSWF r;

GregorianCalendar takvim;

public saatSWF()

super("Digital Saat extends Thread");

Container cc=getContentPane();

jb=new JLabel("");

F=new Font("TimesRoman",[Link],24);

[Link](F);

// Türkiye standart (Greenwitch zamanýna göre iki saat ileride)

String[] ids = [Link](+2 * 60 * 60 * 1000);

SimpleTimeZone pdt = new SimpleTimeZone(+2 * 60 * 60 * 1000, ids[0]);

takvim=new GregorianCalendar(pdt);

D=new Date();

[Link](D);

r=new saatThreadSWF(this);

[Link](jb);

[Link]();

public void paint(Graphics g)

D=new Date();

[Link](D);

String s=" ["+

[Link]([Link]) +" / "+

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link])+" / "+

[Link]([Link]) +" ] "+

[Link](Calendar.HOUR_OF_DAY)+" : "+

[Link]([Link])+" : "+

[Link]([Link]);

[Link](s);

public static void main(String[] args)

saatSWF pencere= new saatSWF();

[Link](new BasicWindowMonitor());

[Link](400,100);

[Link](true);

[Link]

ªekil 9.1 [Link] digital saat JFRame çýktýsý

Program 9.3 [Link] sýnýfýnýn Runnable interface’i ile yazýlýmý ve applet çýktýsý

import [Link];
import [Link];
import [Link];
import [Link];

public class saat extends Applet implements Runnable{ Font theFont=new


Font("TimesRoman",[Link],24);

Date theDate;
Thread runner;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void start()
{
if(runner==null)
{
runner=new Thread(this);
[Link]();
}
}

public void stop()


{
if(runner!=null)
{
[Link]();
runner=null;
}
}

public void run()


{

while(true)
{
theDate=new Date();
repaint();
try {[Link](1000);}
catch(InterruptedException e) {}
}
}

public void paint(Graphics g)


{
[Link](theFont);
try
{
[Link]([Link](),10,50);
}
catch(NullPointerException e){}
}
}

[Link]

ªekil 9.2 [Link] appletinde saat theradinin iºletilmesi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 9.4 saatRunnableSWF sýnýfýnýn Runnable interface’i ile yazýlýmý

import [Link];
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
public class saatRunnableSWF extends JFrame implements Runnable
{
JLabel jb;
Font F;
Date D;
saatThreadSWF r;
GregorianCalendar takvim;
Thread runner;
public saatRunnableSWF()
{
super("Digital Saat Runnable implement Thread");
Container cc=getContentPane();
jb=new JLabel("");
F=new Font("TimesRoman",[Link],24);
[Link](F);
// Türkiye standart (Greenwitch zamanýna göre iki saat ileride)
String[] ids = [Link](+2 * 60 * 60 * 1000);
SimpleTimeZone pdt = new SimpleTimeZone(+2 * 60 * 60 * 1000, ids[0]);
takvim=new GregorianCalendar(pdt);
D=new Date();
[Link](D);
setBackground([Link]);
r=new saatThreadSWF(this);
[Link](jb);
[Link]();
}
public void start()
{
if(runner==null)
{
runner=new Thread(this);
[Link]();
}
}
public void run()
{
while(true)
{
repaint();
try {[Link](1000);}
catch(InterruptedException e)
{[Link]([Link]());}
}
}
public void paint(Graphics g)
{
D=new Date();
[Link](D);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String s=" ["+
[Link]([Link]) +" / "+
[Link]([Link])+" / "+
[Link]([Link]) +" ] "+
[Link](Calendar.HOUR_OF_DAY)+" : "+
[Link]([Link])+" : "+
[Link]([Link]);
[Link](s);
}
public static void main(String[] args)
{
saatRunnableSWF pencere= new saatRunnableSWF();
[Link](new BasicWindowMonitor());
[Link](400,100);
[Link](true);
}
}

Programlardan da görüldüðü gibi thread adý verilen ve bilgisayar belleðinde diðer


programlarla beraber çalýºmasýný istediðimiz program parçacýklarýný java programýnýn içinde
baºlatabiliriz(start), kontrol edebiliriz veya durdurabiliriz(stop). Program parçacýðýnýn
çalýºmadan bekleyeceði sureyi de sleep metotunu kullanarak ayarlýyabiliriz.

9.2 PARALEL PROGRAM KULLANIMIDA HAFIZA SÝNKRONÝZASYONU

Ýkinci olarak biraz daha karýºýk bir örneðe göz atalým. Bu örnekte, iki tane program bilgisayar
belleginde ayný anda çalýºacaktýr. Birinci program ikinci programla ortak olarak kullanýlan bir
bilgisayar int hafýza noktasýna sýrasýyla birden ona kadar deðiºen bir rakam yazacak, ikinci
program da ayný noktadan (OrtakHucreden) yazýlan deðeri okuyacaktýr.

Program 9.5 [Link] programý

class OrtakHucre{ public static void main(String args[])


{
TutInteger h=new TutInteger();
UretInteger p=new UretInteger(h);
KullanInteger c= new KullanInteger(h);
[Link]();
[Link](); }

class UretInteger extends Thread


{
private TutInteger pTut;
public UretInteger(TutInteger h)
{
pTut=h;
}

public void run()


{
for(int count=0; count<10; count++)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](count);
[Link]("OrtakInteger "+count+" degerini uretti");
try{
sleep( (int) ([Link]()*5000 ) );
}
catch(InterruptedException e)
{
[Link]("Exeption "+[Link]());
}
}
}
}

class KullanInteger extends Thread


{
private TutInteger cTut;
public KullanInteger(TutInteger h)
{
cTut=h;
}
public void run()
{
int Intdegeri=0;
while (Intdegeri !=9)
{
try{
sleep( (int) ([Link]()*5000));
}
catch(InterruptedException e)
{
[Link]("Exeption "+[Link]());
}
Intdegeri=[Link]();
[Link]("Kullan Integer"+Intdegeri+" degerini okudu");
}
}}

class TutInteger{ private int OrtakInt; public void setOrtakInt(int Intdegeri)


{
OrtakInt=Intdegeri;
}
public int getOrtakInt()
{
return OrtakInt;
}
}

program sonucundaki çýktý :

OrtakInteger 0 degerini uretti


OrtakInteger 1 degerini uretti
OrtakInteger 2 degerini uretti
Kullan Integer2 degerini okudu
OrtakInteger 3 degerini uretti

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
OrtakInteger 4 degerini uretti
OrtakInteger 5 degerini uretti
Kullan Integer5 degerini okudu
Kullan Integer5 degerini okudu
OrtakInteger 6 degerini uretti
OrtakInteger 7 degerini uretti
Kullan Integer7 degerini okudu
OrtakInteger 8 degerini uretti
OrtakInteger 9 degerini uretti
Kullan Integer9 degerini okudu

Program 9.6 Runnable interface’i ile çaliºan [Link] sýnýfý

import [Link].*;
import [Link].*;
import [Link].*;//runnable interfacei kullanarak

class UretInteger implements Runnable


{
private TutInteger pTut;
private Thread thread;

public UretInteger(TutInteger h)
{
pTut=h;
thread = new Thread(this);
[Link]();
}

public void run() {


for(int count=0; count < 10; count++) {
[Link](count);
[Link]("Ortak Integer " + count+" Olarak olusturuldu");
try {
[Link]((int)([Link]()*3000));
}

catch(InterruptedException exception) {
[Link]("Exception " + [Link]());
}
}
}
}

class KullanInteger implements Runnable


{
private TutInteger cTut;
private Thread thread;

public KullanInteger(TutInteger h) {
cTut = h;
thread= new Thread(this);
[Link]();
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void run() {
int Intdegeri=0;
while(Intdegeri != 9) {
try {
[Link]((int)([Link]()*3000));
}
catch(InterruptedException e) {
[Link]("Exception " + [Link]());
}
Intdegeri = [Link]();
[Link]("Kullan Integer " + Intdegeri+"degerini yakaladi");
}
}
}

class TutInteger {
private int OrtakInt;
public void setOrtakInt(int Intdegeri) {OrtakInt = Intdegeri;}
public int getOrtakInt() { return OrtakInt;}
}

public class OrtakHucreR {


public static void main(String[] args) {
TutInteger h= new TutInteger();
new UretInteger(h);
new KullanInteger(h);
}
}

Program 9.7 Buffer ile uyum saðlanmýº [Link] sýnýfý

import [Link].*;
import [Link];
import [Link];

public class OrtakHucreBuf extends Applet


{
private TextArea cikti;

public void init()


{
setLayout(new BorderLayout());
cikti = new TextArea();
add(cikti,[Link]);
}

public void start()


{
Tutinteger h=new Tutinteger(cikti);
Uretinteger p=new Uretinteger(h);
Consumeinteger c= new Consumeinteger(h);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();
[Link]();
}
}

class Uretinteger extends Thread


{
private Tutinteger pTut;
private TextArea cikti;

public Uretinteger(Tutinteger h)
{
pTut=h;
}

public void run()


{
for(int count=0; count<10; count++)
{
[Link](count);

try{
sleep( (int) ([Link]()*500 ) );
}
catch(InterruptedException e)
{
[Link]("Hata : "+[Link]());
}
}
}
}

class Consumeinteger extends Thread


{
private Tutinteger cTut;

public Consumeinteger(Tutinteger h)
{
cTut=h;
}

public void run()


{
int intdegeri;

intdegeri=[Link]();

while (intdegeri !=9)


{
try{
sleep( (int) ([Link]()*500));
}
catch(InterruptedException e)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("Hata "+[Link]());
}
intdegeri=[Link]();

}
}
}

class Tutinteger
{
private int Ortakint[] = {9,9,9,9,9};
private boolean writeable = true;
private boolean okunabilir = false;
private int YerelOku =0, YerelYaz=0;
private TextArea cikti;

public Tutinteger(TextArea out)


{
cikti = out;
}

public synchronized void setOrtakint(int intdegeri)


{
while (!writeable)
{
try{

[Link](" Beklemede "+intdegeri);


wait();
}
catch (InterruptedException e)
{
[Link]("Hata :"+[Link]() );
}
}

Ortakint[YerelYaz]=intdegeri;
okunabilir = true;
[Link]("\n Uretilen "+intdegeri+" Yazilan "+YerelYaz);
YerelYaz = ++YerelYaz % 5;

[Link]("\t yazilan hucre "+YerelYaz+"\t okunan hucre "+YerelOku);

printBuffer(cikti, Ortakint);

if(YerelYaz==YerelOku)
{
writeable=false;
[Link]("\nDEPOLAMA YERLER˜ DOLU ");
}
notify();
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public synchronized int getOrtakint()
{
int intdegeri;
while (!okunabilir)
{
try{
[Link](" KULLANMAK iCiN BEKLiYOR ");
wait();
}
catch (InterruptedException e)
{
[Link]("hata:"+[Link]() );
}
}

writeable=true;
intdegeri=Ortakint[YerelOku];

[Link]("\n Kullanilan "+intdegeri+" Okundugu Hucre "+YerelOku);


YerelOku = ++YerelOku % 5;
[Link]("\t yazilan h�cre "+YerelYaz+"\t okunan hucre "+YerelOku);

printBuffer(cikti, Ortakint);
if (YerelOku==YerelYaz)
{okunabilir=false;
[Link]("\niNTEGER DEPOSU BOS");
}

notify();

return intdegeri;
}

public void printBuffer(TextArea out,int buf[])


{
[Link]("\t depo: ");
for(int i=0; i<[Link]; i++)
[Link](" "+buf[i]);
}
}

Buffer ile uyum saðlanmýº [Link] sýnýfý çýktýsý

Uretilen 0 Yazilan 0 yazilan hucre 1 okunan hucre 0 depo: 0 9 9 9 9


Kullanilan 0 Okundugu Hucre 0 yazilan hucre 1 okunan hucre 1 depo: 0 9 9 9 9
INTEGER DEPOSU BOS
Uretilen 1 Yazilan 1 yazilan hucre 2 okunan hucre 1 depo: 0 1 9 9 9
Kullanilan 1 Okundugu Hucre 1 yazilan hucre 2 okunan hucre 2 depo: 0 1 9 9 9
INTEGER DEPOSU BOS
Uretilen 2 Yazilan 2 yazilan hucre 3 okunan hucre 2 depo: 0 1 2 9 9
Uretilen 3 Yazilan 3 yazilan hucre 4 okunan hucre 2 depo: 0 1 2 3 9
Kullanilan 2 Okundugu Hucre 2 yazilan hucre 4 okunan hucre 3 depo: 0 1 2 3 9
Uretilen 4 Yazilan 4 yazilan hucre 0 okunan hucre 3 depo: 0 1 2 3 4
Kullanilan 3 Okundugu Hucre 3 yazilan hucre 0 okunan hucre 4 depo: 0 1 2 3 4

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Uretilen 5 Yazilan 0 yazilan hucre 1 okunan hucre 4 depo: 5 1 2 3 4
Uretilen 6 Yazilan 1 yazilan hucre 2 okunan hucre 4 depo: 5 6 2 3 4
Uretilen 7 Yazilan 2 yazilan hucre 3 okunan hucre 4 depo: 5 6 7 3 4
Kullanilan 4 Okundugu Hucre 4 yazilan hucre 3 okunan hucre 0 depo: 5 6 7 3 4
Kullanilan 5 Okundugu Hucre 0 yazilan hucre 3 okunan hucre 1 depo: 5 6 7 3 4
Uretilen 8 Yazilan 3 yazilan hucre 4 okunan hucre 1 depo: 5 6 7 8 4
Kullanilan 6 Okundugu Hucre 1 yazilan hucre 4 okunan hucre 2 depo: 5 6 7 8 4
Uretilen 9 Yazilan 4 yazilan hucre 0 okunan hucre 2 depo: 5 6 7 8 9
Kullanilan 7 Okundugu Hucre 2 yazilan hucre 0 okunan hucre 3 depo: 5 6 7 8 9
Kullanilan 8 Okundugu Hucre 3 yazilan hucre 0 okunan hucre 4 depo: 5 6 7 8 9
Kullanilan 9 Okundugu Hucre 4 yazilan hucre 0 okunan hucre 0 depo: 5 6 7 8 9
INTEGER DEPOSU BOS

Problem 9.8 Uyum saglanmýº [Link] sýnýfý

class OrtakHucreSyn
{
public static void main(String args[])
{
TutInteger h=new TutInteger();
UretInteger p=new UretInteger(h);
KullanInteger c= new KullanInteger(h);

[Link]();
[Link]();
}
}

class UretInteger extends Thread


{
private TutInteger pTut;

public UretInteger(TutInteger h)
{
pTut=h;
}

public void run()


{
for(int count=0; count<10; count++)
{
[Link](count);
[Link]("UretInteger OrtakInteger degerini"+count+"olarak olusturdu");

try{
sleep( (int) ([Link]()*3000 ) );
}
catch(InterruptedException e)
{
[Link]("Exeption "+[Link]());
}
}
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class KullanInteger extends Thread
{
private TutInteger cTut;

public KullanInteger(TutInteger h)
{
cTut=h;
}

public void run()


{
int Intedegeri=0;

while (Intedegeri !=9)


{
try{
sleep( (int) ([Link]()*3000));
}
catch(InterruptedException e)
{
[Link]("Exeption "+[Link]());
}
Intedegeri=[Link]();
[Link]("KullanInteger "+Intedegeri+" yakalad�");
}
}
}

class TutInteger
{
private int OrtakInt;
private boolean Yazilabilir = true;

public synchronized void setOrtakInt(int Intedegeri)


{
while (!Yazilabilir)
{
try{
wait();
}
catch (InterruptedException e)
{
[Link]("Exception:"+[Link]() );
}
}

OrtakInt=Intedegeri;
Yazilabilir=false;
notify();

public synchronized int getOrtakInt()


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
while (Yazilabilir)
{
try{
wait();
}
catch (InterruptedException e)
{
[Link]("Exception:"+[Link]() );
}
}

Yazilabilir=true;
notify();

return OrtakInt;
}
}

Uyum saglanmýº [Link] sýnýfý sonuçlarý

UretInteger OrtakInteger degerini 0 olarak olusturdu


KullanInteger 0 yakaladý
UretInteger OrtakInteger degerini 1 olarak olusturdu
KullanInteger 1 yakaladý
UretInteger OrtakInteger degerini 2 olarak olusturdu
KullanInteger 2 yakaladý
UretInteger OrtakInteger degerini 3 olarak olusturdu
KullanInteger 3 yakaladý
UretInteger OrtakInteger degerini 4 olarak olusturdu
KullanInteger 4 yakaladý
UretInteger OrtakInteger degerini 5 olarak olusturdu
KullanInteger 5 yakaladý
UretInteger OrtakInteger degerini 6 olarak olusturdu
KullanInteger 6 yakaladý
UretInteger OrtakInteger degerini 7 olarak olusturdu
KullanInteger 7 yakaladý
UretInteger OrtakInteger degerini 8 olarak olusturdu
KullanInteger 8 yakaladý
UretInteger OrtakInteger degerini 9 olarak olusturdu
KullanInteger 9 yakaladý

Programlardan da görüleceði gibi UretInteger sýnýfý (thread’i) TutInteger sýnýfýný kullanarak


yeni bir integer degeri yaratmakta ve KullanInteger sýnýfý da bu deðeri ortak hafýzadan
okumaktadýr. Burada orijinal programlarda iki thread’in çaliºma sýralarýnýn sýrayla gitmamesi
problemi çýkmýºtýr. Bazen UretInteger programý birden fazla çalýºmakta bazende
KullanInteger programý birden fazla çalýºmaktadýr. Bunu onlemek için OrtakHucreSync
programýnda TutInteger sýnýfýnýn içinde Uyum kontrolü yapýlmýºtýr. boolean yazýlabilir
deðiºkenini bir trafik iºareti gibi kullanýp UretInteger ve TutInteger threat programlarýnýn
sýrasýyla iºleme girmesi, bu arada diðerinin beklemesi saðlanmýºtýr. Buradaki zorluk. Bazen
bir programýn çok fazla bekleyebilmesi olasýlýðýdýr. Bunu engellemek içinde OrtakHucreBuf
programýnda yazmak için bir yerýne beº integer yeri tanýmlanmýº, ve okutma ve yazma
iºlemlerinde iki ayrý kontrol boolean deyimi kullanýlmýºtýr.

9.3 ALIªTIRMALAR

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1. daha önce tanýmladýðýmýz [Link] (problem 6.19) programýný da kullanarak burada
analog bir saat tanýmý yapýlmýºtýr. Analog saat her saniyede bir çalýºmakta ve kendini tekrar
çizmektedir. Programý inceleyiniz.

Program 9.9 : [Link] programý, yildizCiz2Thread be analogSaat sýnýflarý


programý

import [Link];
import [Link].*;
import [Link].*;
import yildiz;
import polar;
import [Link].*;

class yildizCiz2Thread extends Thread


{
Applet a;
public yildizCiz2Thread(Applet ai)
{
a=ai;
}

public void run()


{
while(true)
{
[Link]();
try {[Link](1000);}
catch(InterruptedException e)
{[Link]([Link]());}
}
}
} //yýldýzciz2Thread sýnýfýnýn sonu

public class analogSaat extends Applet


{
yildizCiz2Thread y;
double aci1,aci2,aci3;
Date c;
polar p;
public void init()
{
c=new Date();
p=new polar();
setBackground([Link]);
aci1=-[Link]()/60.0*[Link]*2;
aci2=-[Link]()/60.0*[Link]*2;
aci3=-([Link]()%12)/12.0*[Link]*2+aci2/12.0;
y=new yildizCiz2Thread(this);
[Link]();
}

public void paint(Graphics g)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try{
[Link]([Link]);
[Link](g,200,200,170);
[Link]([Link]);
[Link](g,200,200,16,160,aci2,0);
[Link]([Link]);
[Link](g,200,200,8,110,aci3,0);
[Link]([Link]);
[Link](g,200,200,10,60,aci1,0);
[Link]([Link]);
[Link](g,200,200,165);
[Link](g,200,200,170);
[Link](g,200,200,16,160,aci2,0);
[Link](g,200,200,8,110,aci3,0);
yildiz.drawYildiz1(g,200,200,10,60,aci1);
aci1-=[Link]/30.0;
aci2-=[Link]/1800.0;
aci3-=[Link]/21600.0;
for(int i=0;i<12;i++)
{
[Link](165,[Link]*i/6);
[Link]([Link]);
if(i==0||i==3||i==6||i==9||i==12)
{
[Link](g,(int)([Link]()+200),(int)([Link]()),5,20,0);
[Link]([Link]);
yildiz.drawYildiz1(g,(int)([Link]()+200),(int)([Link]()),5,20,0);
}
else
{
[Link]([Link]);
[Link](g,(int)([Link]()+200),(int)([Link]()),15,10,0);
//yildiz.drawYildiz1(g,(int)([Link]()+200),(int)([Link]()),15,10,0);

}
}

}
catch(NullPointerException e){}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 9.3 [Link] appleti

Ayný programýn Swing JFrame versiyonu :

Program 9.10 : [Link] JFrame programý, analog saati swing Frame


olarak tanýmlar

import [Link].*;
import [Link].*;
import [Link].*;
import yildizSW;
import polar;
import [Link].*;

class yildizCiz2ThreadSWF extends Thread


{
JFrame a;
public yildizCiz2ThreadSWF(JFrame ai)
{a=ai;}

public void run()


{
while(true)
{
[Link]();
try {[Link](1000);}
catch(InterruptedException e)
{[Link]([Link]());}
}
}
} //yýldýzciz2Thread sýnýfýnýn sonu

public class analogSaatSWF extends JFrame


{
yildizCiz2ThreadSWF y;
double aci1,aci2,aci3;
Date c;
polar p;
public analogSaatSWF()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
super("Analog Saat");
c=new Date();
// Türkiye standart (Greenwitch zamanýna göre iki saat ileride)
String[] ids = [Link](+2 * 60 * 60 * 1000);
if ([Link] == 0)
[Link](0);
SimpleTimeZone pdt = new SimpleTimeZone(+2 * 60 * 60 * 1000, ids[0]);
GregorianCalendar takvim=new GregorianCalendar(pdt);
[Link](c);
p=new polar();
setBackground([Link]);
aci1=-[Link]([Link])/60.0*[Link]*2;
aci2=-[Link]([Link])/60.0*[Link]*2;
aci3=-(([Link]([Link]))%12)/12.0*[Link]*2+aci2/12.0;
y=new yildizCiz2ThreadSWF(this);
[Link]();
}

public void paint(Graphics g)


{
try{
[Link]([Link]);
[Link](g,200,200,170);
[Link]([Link]);
[Link](g,200,200,16,160,aci2,0);
[Link]([Link]);
[Link](g,200,200,8,110,aci3,0);
[Link]([Link]);
[Link](g,200,200,10,60,aci1,0);
[Link]([Link]);
[Link](g,200,200,165);
[Link](g,200,200,170);
[Link](g,200,200,16,160,aci2,0);
[Link](g,200,200,8,110,aci3,0);
yildizSW.drawYildiz1(g,200,200,10,60,aci1);
aci1-=[Link]/30.0;
aci2-=[Link]/1800.0;
aci3-=[Link]/21600.0;
for(int i=0;i<12;i++)
{
[Link](165,[Link]*i/6);
[Link]([Link]);
if(i==0||i==3||i==6||i==9||i==12)
{
[Link](g,(int)([Link]()+200),(int)([Link]()),5,20,0);
[Link]([Link]);
yildizSW.drawYildiz1(g,(int)([Link]()+200),(int)([Link]()),5,20,0);
}
else
{
[Link]([Link]);
[Link](g,(int)([Link]()+200),(int)([Link]()),15,10,0);
//yildiz.drawYildiz1(g,(int)([Link]()+200),(int)([Link]()),15,10,0);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}
catch(NullPointerException e){}
}
public static void main(String[] args)
{
analogSaatSWF pencere= new analogSaatSWF();
[Link](new BasicWindowMonitor());
[Link](400,400);
[Link](true);
}
}

[Link]

ªekil 9.4 [Link] JFrame çýktýsý

Ayný programýn swing Japplet versiyonu :

Program 9.11 : [Link] JApplet programý, analog saati swing Applet


olarak tanýmlar
import [Link].*;
import [Link].*;
import [Link].*;
import yildizSW;
import polar;
import [Link].*;
class yildizCiz2ThreadSWA extends Thread
{
JApplet a;
public yildizCiz2ThreadSWA(JApplet ai)
{
a=ai;
}
public void run()
{
while(true)
{
[Link]();
try {[Link](1000);}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch(InterruptedException e)
{[Link]([Link]());}
}
}
} //y�ld�zciz2Thread s�n�f�n�n sonu
public class analogSaatSWA extends JApplet
{
yildizCiz2ThreadSWA y;
double aci1,aci2,aci3;
Date c;
polar p;
public void init()
{
// Türkiye standart (Greenwitch zamanýna göre iki saat ileride)
String[] ids = [Link](+2 * 60 * 60 * 1000);
if ([Link] == 0)
[Link](0);
SimpleTimeZone pdt = new SimpleTimeZone(+2 * 60 * 60 * 1000, ids[0]);
GregorianCalendar takvim=new GregorianCalendar(pdt);
c=new Date();
[Link](c);
p=new polar();
setBackground([Link]);
aci1=-[Link]([Link])/60.0*[Link]*2;
aci2=-[Link]([Link])/60.0*[Link]*2;
aci3=-(([Link]([Link]))%12)/12.0*[Link]*2+aci2/12.0;
y=new yildizCiz2ThreadSWA(this);
[Link]();
}
public void paint(Graphics g)
{
try{
[Link]([Link]);
[Link](g,200,200,170);
[Link]([Link]);
[Link](g,200,200,16,160,aci2,0);
[Link]([Link]);
[Link](g,200,200,8,110,aci3,0);
[Link]([Link]);
[Link](g,200,200,10,60,aci1,0);
[Link]([Link]);
[Link](g,200,200,165);
[Link](g,200,200,170);
[Link](g,200,200,16,160,aci2,0);
[Link](g,200,200,8,110,aci3,0);
yildizSW.drawYildiz1(g,200,200,10,60,aci1);
aci1-=[Link]/30.0;
aci2-=[Link]/1800.0;
aci3-=[Link]/21600.0;
for(int i=0;i<12;i++)
{
[Link](165,[Link]*i/6);
[Link]([Link]);
if(i==0||i==3||i==6||i==9||i==12)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](g,(int)([Link]()+200),(int)([Link]()),5,20,0);
[Link]([Link]);
yildizSW.drawYildiz1(g,(int)([Link]()+200),(int)([Link]()),5,20,0);
}
else
{
[Link]([Link]);
[Link](g,(int)([Link]()+200),(int)([Link]()),15,10,0);
//yildiz.drawYildiz1(g,(int)([Link]()+200),(int)([Link]()),15,10,0);
}
}
}
catch(NullPointerException e){}
}
}
2. [Link] programýný inceleyiniz.

Program 9.12 : [Link] programý

import [Link].*;
import [Link].*;
import [Link].*;

class isikKontroluThread extends Thread


{
Applet a;
public double zaman=12.0;

public isikKontroluThread(Applet ai)


{
a=ai;
}

public void run()


{
while(true)
{
[Link]();
//12 saniye bekle
try {[Link]((int)(zaman*1000));}
catch(InterruptedException e)
{[Link]([Link]());}
}
}

public void setZaman(double zi)


{
zaman=zi;
}

public double getZaman()


{
return zaman;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public class trafikIsigi extends Applet implements ActionListener


{
isikKontroluThread yik;
private char which_light='y';
private Button light_switch;
private static int x=10;
private static int y= 40;
private static int h=360;
private static int w=100;
private static int radius=40;
private static int hight_diff=30;
TextField t1;
Label l1,l2;
public void init() {

light_switch = new Button("Switch");


light_switch.setForeground([Link]);
light_switch.setBackground([Link]);
t1=new TextField("12");
l1=new Label("isik yanma zamani : ");
l2=new Label("saniye");
add(light_switch);
add(l1);
add(t1);
add(l2);
light_switch.addActionListener(this);
[Link](this);
yik=new isikKontroluThread(this);
[Link]();
}

public void paint(Graphics g) {


[Link]([Link]);
[Link](x,y,w,h);
[Link]([Link]);
[Link](x-1,y-1,w+2,h+2);
[Link](x-2,y-2,w+4,h+4);
switch(which_light) {
case 'r':
which_light='g';
[Link]([Link]);
[Link](x+10,y+hight_diff,radius*2,radius*2);
[Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
[Link]([Link]);
[Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
break;
case 'y':
which_light='r';
[Link]([Link]);
[Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
[Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
[Link]([Link]);
[Link](x+10,y+hight_diff,radius*2,radius*2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
break;
case 'g':
which_light='y';
[Link]([Link]);
[Link](x+10,y+hight_diff,radius*2,radius*2);
[Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
[Link]([Link]);
[Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
repaint(1000);
}
}

public void actionPerformed(ActionEvent e)


{
if([Link]()==light_switch)
{
repaint();
try {[Link](1000);} catch (Exception exc) {}
}
else if([Link]()==t1)
{
Double i1=new Double([Link]());
[Link]([Link]());
}
}
}

Program 9.13 : trafikIsigiSWP .java JPanel programý, trafik ýºýðý panelini tanýmlar

import [Link].*;
import [Link].*;
import yildizSW;
import [Link].*;
import renk;
public class trafikIsigiSWP extends JPanel
{
private char which_light='y';
private static int x=10;
private static int y= 40;
private static int h=360;
private static int w=100;
private static int radius=40;
private static int hight_diff=30;
public trafikIsigiSWP()
{
which_light='y';
}
public trafikIsigiSWP(char l)
{
which_light=l;
}
public void setIsik( char l)
{
which_light=l;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public char getIsik()
{
return which_light;
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
[Link](RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
[Link]([Link]);
Rectangle2D dikdortgen1=new [Link](x,y,w,h);
[Link](dikdortgen1);
[Link]([Link]);
Rectangle2D dikdortgen2=new [Link](x-1,y-1,w+2,h+2);
[Link](dikdortgen2);
Rectangle2D dikdortgen3=new [Link](x-2,y-2,w+4,h+4);
[Link](dikdortgen3);
Rectangle2D dikdortgen4=new [Link](x-4,y-4,w+8,h+8);
[Link]([Link]);
[Link](dikdortgen3);
Ellipse2D elips1=new [Link](x+10,y+hight_diff,radius*2,radius*2);
Ellipse2D elips2=new [Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
Ellipse2D elips3=new [Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
switch(which_light) {
case 'r':
which_light='g';
[Link]([Link]);
[Link](elips1);
[Link](elips2);
[Link]([Link]);
[Link](elips3);
break;
case 'y':
which_light='r';
[Link]([Link]);
[Link](elips2);
[Link](elips3);
[Link]([Link]);
[Link](elips1);
break;
case 'g':
which_light='y';
[Link]([Link]);
[Link](elips3);
[Link](elips1);
[Link]([Link]);
[Link](elips2);
break;
//repaint(2000);
}
}
}

Program 9.14 : trafikIsigiSWF .java JFrame programý, trafik ýºýðý tanýmlar ve çalýºtýrýr

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import [Link].*;
import [Link].*;
public class trafikIsigi1SWF extends JFrame implements ActionListener
{
isikKontroluThread1 yik;
JButton light_switch;
JTextField t1,t2;
JLabel l0,l1,l2,l3,l4;
trafikIsigi1SWP ti1;
Container c;
public trafikIsigi1SWF()
{
c=getContentPane();
JPanel p1=new JPanel();
[Link](new GridLayout(2,4));
yik=new isikKontroluThread1(this);
[Link]();
ti1=new trafikIsigi1SWP(yik);
light_switch = new JButton("Iºýðý deðiºtir");
light_switch.setForeground([Link]);
light_switch.setBackground([Link]);
t1=new JTextField(""+[Link]());
t2=new JTextField(""+[Link]());
l0=new JLabel(" ");
l1=new JLabel("yesil isik yanma zamani : ");
l2=new JLabel("saniye ");
l3=new JLabel("kirmizi isik yanma zamani : ");
l4=new JLabel("saniye ");
[Link](light_switch);
[Link](l1);
[Link](t1);
[Link](l2);
[Link](l0);
[Link](l3);
[Link](t2);
[Link](l4);
light_switch.addActionListener(this);
[Link](this);
[Link](this);
[Link](p1,[Link]);
[Link](ti1,[Link]);
}
public void actionPerformed(ActionEvent e)
{
if([Link]()==light_switch)
{
repaint();
}
else if([Link]()==t1)
{
Double i1=new Double([Link]());
[Link]([Link]());
}
else if([Link]()==t2)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
Double i1=new Double([Link]());
[Link]([Link]());
}
}
public static void main(String[] args)
{
trafikIsigi1SWF pencere= new trafikIsigi1SWF();
[Link](new BasicWindowMonitor());
[Link](300,600);
[Link](true);
}
}

[Link]

ªekil 9.5 [Link] çýktýsý

4. H8O1

trafikIsigi programýný inceleyiniz. Bu programda yeºil ve kýrmýzýnýn ayný sürede yandýðýný


göreceksiniz. (sarý 1 saniye yanmaktadýr.) Yeºil ve
kýrmýzýnýn ayrý ayrý sürelerde yanmasýný saðlayýnýz. Yanma sürelerini TextField alanýndan
kontrol ediniz.

Program 9.15 [Link] programý trafik ýºýðý kontrolu

import [Link].*;
import [Link].*;
import [Link].*;

class isikKontroluThread extends Thread


{
Applet a;
public double yesilZaman;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double kirmiziZaman;
public double sariZaman;
public char hangi_isik;

public isikKontroluThread(Applet ai)


{
a=ai;
yesilZaman=8.0;
kirmiziZaman=4.0;
sariZaman=1.0;
hangi_isik='y';
}

public void run()


{
while(true)
{
try {
if(hangi_isik=='r')
{
[Link]((int)(yesilZaman*1000));
}
else if(hangi_isik=='g')
{
[Link]((int)(sariZaman*1000));
}
else if(hangi_isik=='y')
{
[Link]((int)(kirmiziZaman*1000));
}
[Link]();
}
catch(InterruptedException e)
{[Link]([Link]());}
}
}

public void setYesilZaman(double zi)


{
yesilZaman=zi;
}

public void setKirmiziZaman(double zi)


{
kirmiziZaman=zi;
}

public double getYesilZaman()


{
return yesilZaman;
}

public double getKirmiziZaman()


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return kirmiziZaman;
}

public char getIsik()


{
return hangi_isik;
}

public void setIsik(char hi)


{
hangi_isik=hi;
}

public class H8O1 extends Applet implements ActionListener


{
isikKontroluThread yik;
private Button light_switch;
private static int x=10;
private static int y= 40;
private static int h=360;
private static int w=100;
private static int radius=40;
private static int hight_diff=30;
TextField t1;
TextField t2;
Label l1,l2,l3,l4;
public void init()
{
yik=new isikKontroluThread(this);
[Link]();
light_switch = new Button("Switch");
light_switch.setForeground([Link]);
light_switch.setBackground([Link]);
t1=new TextField(""+[Link]());
t2=new TextField(""+[Link]());
l1=new Label("yesil isik yanma zamani : ");
l2=new Label("saniye");
l3=new Label("kirmizi isik yanma zamani : ");
l4=new Label("saniye");
add(light_switch);
add(l1);
add(t1);
add(l2);
add(l3);
add(t2);
add(l4);
light_switch.addActionListener(this);
[Link](this);
[Link](this);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void paint(Graphics g) {
[Link]([Link]);
[Link](x,y,w,h);
[Link]([Link]);
[Link](x-1,y-1,w+2,h+2);
[Link](x-2,y-2,w+4,h+4);
switch([Link]()) {
case 'r':
[Link]('g');
[Link]([Link]);
[Link](x+10,y+hight_diff,radius*2,radius*2);
[Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
[Link]([Link]);
[Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
break;
case 'y':
[Link]('r');
[Link]([Link]);
[Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
[Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
[Link]([Link]);
[Link](x+10,y+hight_diff,radius*2,radius*2);
break;
case 'g':
[Link]('y');
[Link]([Link]);
[Link](x+10,y+hight_diff,radius*2,radius*2);
[Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
[Link]([Link]);
[Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
break;
}
}

public void actionPerformed(ActionEvent e)


{
if([Link]()==t1)
{
Double i1=new Double([Link]());
[Link]([Link]());
}
else if([Link]()==t2)
{
Double i1=new Double([Link]());
[Link]([Link]());
}
else if([Link]()==light_switch)
{
repaint();
try {[Link](1000);} catch (Exception exc) {}
}
}
}

Program 9.16 [Link], Jpanel trafik ýºýðý panelleri

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import [Link].*;
import yildizSW;
import [Link].*;
import renk;

public class trafikIsigi1SWP extends JPanel


{
private static int x=10;
private static int y= 40;
private static int h=360;
private static int w=100;
private static int radius=40;
private static int hight_diff=30;
private isikKontroluThread1 yik;
public trafikIsigi1SWP(isikKontroluThread1 ikt)
{
yik=ikt;
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
[Link](RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
[Link]([Link]);
Rectangle2D dikdortgen1=new [Link](x,y,w,h);
[Link](dikdortgen1);
[Link]([Link]);
Rectangle2D dikdortgen2=new [Link](x-1,y-1,w+2,h+2);
[Link](dikdortgen2);
Rectangle2D dikdortgen3=new [Link](x-2,y-2,w+4,h+4);
[Link](dikdortgen3);
Rectangle2D dikdortgen4=new [Link](x-4,y-4,w+8,h+8);
[Link]([Link]);
[Link](dikdortgen3);
Ellipse2D elips1=new [Link](x+10,y+hight_diff,radius*2,radius*2);
Ellipse2D elips2=new [Link](x+10,y+hight_diff*2+radius*2,radius*2,radius*2);
Ellipse2D elips3=new [Link](x+10,y+hight_diff*3+radius*4,radius*2,radius*2);
switch([Link]()) {
case 'r':
[Link]('g');
[Link]([Link]);
[Link](elips1);
[Link](elips2);
[Link]([Link]);
[Link](elips3);
break;
case 'y':
[Link]('r');
[Link]([Link]);
[Link](elips2);
[Link](elips3);
[Link]([Link]);
[Link](elips1);
break;
case 'g':

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]('y');
[Link]([Link]);
[Link](elips3);
[Link](elips1);
[Link]([Link]);
[Link](elips2);
break;
}
}
}

Program 9.17 [Link], JFrame e trafik ýºýðý programý

import [Link].*;
import [Link].*;
import [Link].*;
public class trafikIsigi1SWF extends JFrame implements ActionListener
{
isikKontroluThread1 yik;
JButton light_switch;
JTextField t1,t2;
JLabel l0,l1,l2,l3,l4;
trafikIsigi1SWP ti1;
Container c;
public trafikIsigi1SWF()
{
c=getContentPane();
JPanel p1=new JPanel();
[Link](new GridLayout(2,4));
yik=new isikKontroluThread1(this);
[Link]();
ti1=new trafikIsigi1SWP(yik);
light_switch = new JButton("Iºýðý deðiºtir");
light_switch.setForeground([Link]);
light_switch.setBackground([Link]);
t1=new JTextField(""+[Link]());
t2=new JTextField(""+[Link]());
l0=new JLabel(" ");
l1=new JLabel("yesil isik yanma zamani : ");
l2=new JLabel("saniye ");
l3=new JLabel("kirmizi isik yanma zamani : ");
l4=new JLabel("saniye ");
[Link](light_switch);
[Link](l1);
[Link](t1);
[Link](l2);
[Link](l0);
[Link](l3);
[Link](t2);
[Link](l4);
light_switch.addActionListener(this);
[Link](this);
[Link](this);
[Link](p1,[Link]);
[Link](ti1,[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
public void actionPerformed(ActionEvent e)
{
if([Link]()==light_switch)
{
repaint();
}
else if([Link]()==t1)
{
Double i1=new Double([Link]());
[Link]([Link]());
}
else if([Link]()==t2)
{
Double i1=new Double([Link]());
[Link]([Link]());
}
}
public static void main(String[] args)
{
trafikIsigi1SWF pencere= new trafikIsigi1SWF();
[Link](new BasicWindowMonitor());
[Link](300,600);
[Link](true);
}
}

[Link]

ªekil 9.6 [Link] trafik ýºýðý kontrol programý JFrame çýktýsý

3. H8O2

Birbirinden baðýmsýz çalýºan iki trafik ýºýðýný iki ayrý ýºýk olarak simule edin. Bu ýsýklardan
birincisinde yesil veya sarý yanarken ikincisinde kýrmýzý yansýn, ikincisinde yeºil veya sarý
yanarken birincisinde kýrmýzý yansýn. Kýrmýzý ve yeºil süreleri ayný olmayabilir, fakat birbirinin

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
tersi olacaktýr. Örneðin birinci ýºýkta 6 saniye kýrmýzý, 10 saniye yeºil, 1 saniye sarý yanýyorsa,
ikinci ýºýkta 11 saniye kýrmýzý, 5 saniye yeºil, 1 saniye sarý yanacaktýr. Birinci ýºýk sarýdan
kýrmýzýya geçtiði anda ikinci ýºýk yeºil yanacaktýr.

Program 9.18 : [Link] programý

/Title: 8. Hafta Odevi


//Version: 1.1
//Copyright: Copyright (c) 1999
//Author: Hasan Er
//Company: Gebze Yuksek Teknoloji Enstitusu
//Description:
// version 1.1 Turhan Coban tarafýndan paint metotu
// degistirilmistir.

import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;

public class IkiTrafikIsigi extends Applet implements ActionListener

{
int bekleyen = 0;
boolean kontrolEdenVar = false;
IkiIsikKontroluThread yik[] = new IkiIsikKontroluThread[2];
char which_light[]= new char[] {'r', 'r'};
TextField t1, t2;
Label l1,l2,l3,l4;

public void init()


{
t1=new TextField("12");
t2=new TextField("12");
l1=new Label("kirmizi isik yanma zamani : ");
l2=new Label("saniye");
l3=new Label("yesil isik yanma zamani : ");
l4=new Label("saniye");
add(l1);
add(t1);
add(l2);
add(l3);
add(t2);
add(l4);
[Link](this);
[Link](this);
for(int i=0;i<2;i++)
{
yik[i]=new IkiIsikKontroluThread( this, i);
yik[i].start();
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public synchronized void kontrolAl()
{
try
{
if ( kontrolEdenVar )
{
bekleyen++;
wait();
}
else
{
kontrolEdenVar = true;
}
}
catch ( InterruptedException interruptedEx)
{ [Link]();}
}

public synchronized void kontrolBirak()


{
if ( bekleyen0 )
{
notify();
bekleyen--;
}
else
{
kontrolEdenVar = false;
}
}

public void paintIsik(Graphics g,int xi,int yi,int c)


{
int h1=360;
int w1=100;
int radius=40;
int hight_diff=30;
[Link]([Link]);
[Link](xi,yi,w1,h1);
[Link]([Link]);
[Link](xi-1,yi-1,w1+2,h1+2);
[Link](xi-2,yi-2,w1+4,h1+4);
switch(which_light[c])
{
case 'g':
[Link]([Link]);
[Link](xi+10,yi+hight_diff,radius*2,radius*2);
[Link](xi+10,yi+hight_diff*2+radius*2,radius*2,radius*2);
[Link]([Link]);
[Link](xi+10,yi+hight_diff*3+radius*4,radius*2,radius*2);
break;
case 'r':
[Link]([Link]);
[Link](xi+10,yi+hight_diff*2+radius*2,radius*2,radius*2);
[Link](xi+10,yi+hight_diff*3+radius*4,radius*2,radius*2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]);
[Link](xi+10,yi+hight_diff,radius*2,radius*2);
break;
case 'y':
[Link]([Link]);
[Link](xi+10,yi+hight_diff,radius*2,radius*2);
[Link](xi+10,yi+hight_diff*3+radius*4,radius*2,radius*2);
[Link]([Link]);
[Link](xi+10,yi+hight_diff*2+radius*2,radius*2,radius*2);
break;
}
}

public void paint(Graphics g)


{
paintIsik(g,10,40,0);
paintIsik(g,210,40,1);
}

public void actionPerformed(ActionEvent e)


{
if([Link]()==t1)
{
Double i1=new Double([Link]());
for ( int i=0; i<[Link]; i++)
yik[i].setKirmiziZaman([Link]());
}
else if([Link]()==t2)
{
Double i1=new Double([Link]());
for ( int i=0; i<[Link]; i++)
yik[i].setYesilZaman([Link]());
}
}
}

Program 9.19 : [Link] programý

//Title: 8. Hafta Ödevi


//Version:
//Copyright: Copyright (c) 1999
//Author: Hasan Er
//Company: Gebze Yüksek Teknoloji Enstitüsü
//Description:

public class IkiIsikKontroluThread extends Thread {

double kirmiziZaman = 12.0;


double yesilZaman = 12.0;

IkiTrafikIsigi ti;
int isikNo;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public IkiIsikKontroluThread(IkiTrafikIsigi tiparam, int isikNo)
{
ti = tiparam;
[Link] = isikNo;
}

public void run()


{
char which = '\0';
try {
[Link]( (int)( [Link]()*1000 ) );
}
catch( InterruptedException interruptedEx ) {
[Link]();
}
while(true)
{
which = ti.which_light[ isikNo ];
//12 saniye bekle
try {
switch ( which ) {
case 'y' : ti.which_light[ isikNo ] = 'r';
[Link]();
break;
case 'g' : ti.which_light[ isikNo ] = 'y';
[Link]();
[Link]( 1000 );
[Link]();
break;
case 'r' : [Link]();
ti.which_light[ isikNo ] = 'g';
[Link]();
[Link]((int)(yesilZaman*1000));
break;
}
}
catch(InterruptedException e)
{[Link]([Link]());}
}
}

public void setKirmiziZaman(double zi)


{
kirmiziZaman=zi;
}

public double getKirmiziZaman()


{
return kirmiziZaman;
}

public void setYesilZaman(double zi)


{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
yesilZaman=zi;
}

public double getYesilZaman()


{
return yesilZaman;
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 9.7 sinkronize olarak çalýºan iki trafik ýºýðý

4. H8OD2_2000

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
10 m3 boyutunda bir depomuz var. Bu depoya birinci pompa su doldurmakta, ikinci pompa is
suyu boºaltmaktadýr. Pompalarýn debileri deðiºtirilebilmektedir, ve kullanýcý tarafýndan
gerektiðinde elle açýlýp kapatýlabilmektedir. Depo tamamen boºalýrsa boºaltan pompa
otomatik olarak durdurulacaktýr. Depo tamamen dolarsa dolduran pompa otamatik olarak
durdurulacaktýr. Bu prosesi gerçek zamanda simule eden iki pompa ve bir depodan oluºan
bir sistem oluºturunuz, sonuçlarý belli zaman aralýklarýyla ekrana yazdýrýnýz (pompa1,
pompa2 debileri ve depodaki su miktarý ve baºlangýçtan itibaren geçen zaman) veya bir
grafik çýktý üzerinden simulasyon çýktýsýný oluºturunuz. (ayný deðerleri grafik çýktýda
gösteriniz) Depodaki su miktarýný bir ortak double deðeri olarak düºünebiliriz.

Program 9.20 : H8OD2_2000.java programý

class H8OD2_2000

public static void main(String args[])

havuz h=new havuz();

Pompa1 p1 = new Pompa1(h);

Pompa2 p2 = new Pompa2(h);

[Link]();

[Link]();

class Pompa1 extends Thread

private havuz pTut;

private double debi;

public Pompa1(havuz h)

pTut=h;

public void run()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

while(true)

while((debi = [Link](([Link]()*5))) == 0);

[Link](debi);

try{

sleep( (int) ([Link]()*3000 ) );

catch(InterruptedException e)

[Link]("Exeption "+[Link]());

class Pompa2 extends Thread

private havuz cTut;

private double debi;

public Pompa2(havuz h)

cTut=h;

public void run()

while (true)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

try{

sleep( (int) ([Link]()*3000));

catch(InterruptedException e)

[Link]("Exeption "+[Link]());

while((debi = [Link](([Link]()*5))) == 0);

[Link](debi);

class havuz

private double OrtakSu = 0.0;

private boolean pompa1 = true;

private boolean pompa2 = false;

private final double kapasite = 10.0;

public synchronized void ekleSu(double suMiktari)

while (!pompa1)

try{

wait();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch (InterruptedException e)

[Link]("Exception:"+[Link]() );

OrtakSu += suMiktari;

if (OrtakSu >= kapasite){

pompa1 = false;

[Link]("Pompa1'in debisi " + suMiktari + " dir. Depo Dolu!!! (10).");

OrtakSu = kapasite;

else

[Link]("Pompa1'in debisi " + suMiktari + " dir. Depo daki su miktari :" + OrtakSu);

pompa2 = true;

notify();

public synchronized void cikarSu(double suMiktari)

while (!pompa2)

try{

wait();

catch (InterruptedException e)

[Link]("Exception:"+[Link]() );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

OrtakSu -= suMiktari;

if (OrtakSu <= 0)

pompa2=false;

[Link]("Pompa2'in debisi " + suMiktari + " dir. Depo Bos!!! (0).");

OrtakSu = 0;

else

[Link]("Pompa2'in debisi " + suMiktari + " dir. Depo daki su miktari :" + OrtakSu);

pompa1 = true;

notify();

1. AWT Animasyon örneði

Bu problemde animasyon’un thread kullanarak nasýl yapýlacaðýný göreceðiz. Aslýnda kavram


yeni deðil aslýnda ºu ana kadar bu bölümde yaptýðýmýz tüm uygulamalar bir animasyon. Bu
program java döküman kütüphanesinden alýnmýºtýr.

Program 9.21 : [Link] programý

/*

* awt animasyon

*/

import [Link].*;

import [Link].*;

/*

* Arthur van Hoff'un animasyon örneði.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* Bu örnek tüm animasyonlar için örnek olarak kullanýlabilir.

*/

public class AnimatorApplication extends Frame

implements Runnable {

int frameNumber = -1;

int delay;

Thread animatorThread;

boolean frozen = false;

AnimatorApplication(int fps, String windowTitle) {

super(windowTitle);

delay = (fps > 0) ? (1000 / fps) : 100;

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

if (frozen) {

frozen = false;

startAnimation();

} else {

frozen = true;

stopAnimation();

});

addWindowListener(new WindowAdapter() {

public void windowIconified(WindowEvent e) {

stopAnimation();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void windowDeiconified(WindowEvent e) {

startAnimation();

public void windowClosing(WindowEvent e) {

[Link](0);

});

public void startAnimation() {

if (frozen) {

//Hiç bir ºey yapmanýz gerekmez

//

} else {

//Animasyon baºlýyor...

if (animatorThread == null) {

animatorThread = new Thread(this);

[Link]();

public void stopAnimation() {

//Animasyon tread'ini durdur

animatorThread = null;

public void run() {

//Önce bu thread'in önceliðini düºürüyoruz,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// böylece öbür programlara engel olmaz

[Link]().setPriority(Thread.MIN_PRIORITY);

//Baºlama zamanýný hatýrla

long startTime = [Link]();

//hangi thread olduðumuzu hatýrla

Thread currentThread = [Link]();

//gerçek zaman animasyon döngüsü

while (currentThread == animatorThread) {

//Animasyon ekranýndaki rakamý artýr

frameNumber++;

//rakamý göster

repaint();

//beklemeye al

try {

startTime += delay;

[Link]([Link](0,

[Link]()));

} catch (InterruptedException e) {

break;

//animasyon ekranýný çiz

public void paint(Graphics g) {

[Link]("Frame " + frameNumber, 5, 50);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String args[]) {

AnimatorApplication animator = null;

int fps = 10;

// saniyedeki çerçeve sayýsýný hesapla

if ([Link] > 0) {

try {

fps = [Link](args[0]);

} catch (Exception e) {}

animator = new AnimatorApplication(fps, "Animasyon awt");

[Link](200, 60);

[Link](true);

[Link]();

[Link]

ªekil 9.8 awt animasyon örneði

2. swing Animasyon örneði

Bu örnek problemde bir öncekinin temel olarak aynýsý, sadece swing kullanýlmýº hali

Program 9.22 : [Link] programý

/*

* Swing versiyonu

*/

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

/*

* Arthur van Hoff'un animasyon örneði.

* Bu örnek tüm animasyonlar için örnek olarak kullanýlabilir.

*/

public class AnimatorApplicationSW extends JFrame

implements Runnable {

AnimappPanel animappPanel;

int frameNumber = -1;

int delay;

Thread animatorThread;

boolean frozen = false;

AnimatorApplicationSW(int fps, String windowTitle) {

super(windowTitle);

delay = (fps > 0) ? (1000 / fps) : 100;

animappPanel = new AnimappPanel();

getContentPane().add(animappPanel);

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

if (frozen) {

frozen = false;

startAnimation();

} else {

frozen = true;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
stopAnimation();

});

addWindowListener(new WindowAdapter() {

public void windowIconified(WindowEvent e) {

stopAnimation();

public void windowDeiconified(WindowEvent e) {

startAnimation();

public void windowClosing(WindowEvent e) {

[Link](0);

});

public void startAnimation() {

if (frozen) { }

else {

//animasyonu baºlat

if (animatorThread == null) {

animatorThread = new Thread(this);

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void stopAnimation() {

//animasyon treadini durdur.

animatorThread = null;

public void run() {

//önceliði düºür.

[Link]().setPriority(Thread.MIN_PRIORITY);

//baºlama zamaný

long startTime = [Link]();

//thread tanýmý

Thread currentThread = [Link]();

//animasyon döngüsü

while (currentThread == animatorThread) {

//animasyon çerçevesini bir artýr

frameNumber++;

//göster

repaint();

//geciktir

try {

startTime += delay;

[Link]([Link](0,

[Link]()));

} catch (InterruptedException e) {

break;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

class AnimappPanel extends JPanel {

public AnimappPanel() {}

//animasyon çerçevesini çiz

public void paintComponent(Graphics g) {

[Link](g);

[Link]("Frame " + frameNumber, 5, 50);

public static void main(String args[]) {

AnimatorApplicationSW animator = null;

int fps = 10;

// Get frames per second from the command line argument

if ([Link] > 0) {

try {

fps = [Link](args[0]);

} catch (Exception e) {}

animator = new AnimatorApplicationSW(fps,"Animasyon swing versiyonu");

[Link](200, 60);

[Link](true);

[Link]();

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 9.9 swing animasyon örneði

3. zaman ayarlý swing Animasyon örneði

Program 9.23 : [Link] programý

/*

* Tam anlamýyla swing'e dönüºtürülmüº animasyon

*/

import [Link].*;

import [Link].*;

import [Link].*;

/*

* Arthur van Hoff'un animasyon örneðinden yazýlmýºtýr.

*/

public class AnimatorApplicationTimer extends JFrame

implements ActionListener {

int frameNumber = -1;

int delay;

boolean frozen = false;

JLabel label;

Timer timer;

AnimatorApplicationTimer(int fps, String windowTitle) {

super(windowTitle);

delay = (fps > 0) ? (1000 / fps) : 100;

timer = new Timer(delay, this);

[Link](0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](true);

addWindowListener(new WindowAdapter() {

public void windowIconified(WindowEvent e) {

stopAnimation();

public void windowDeiconified(WindowEvent e) {

startAnimation();

public void windowClosing(WindowEvent e) {

[Link](0);

});

Container contentPane = getContentPane();

[Link](new MouseAdapter() {

public void mousePressed(MouseEvent e) {

if (frozen) {

frozen = false;

startAnimation();

} else {

frozen = true;

stopAnimation();

});

label = new JLabel("Frame ", [Link]);

[Link](label, [Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public void startAnimation() {

if (frozen) {

} else {

[Link]();

public void stopAnimation() {

[Link]();

public void actionPerformed(ActionEvent e) {

frameNumber++;

[Link]("Frame " + frameNumber);

public static void main(String args[]) {

AnimatorApplicationTimer animator = null;

int fps = 10;

if ([Link] > 0) {

try {

fps = [Link](args[0]);

} catch (Exception e) {}

animator = new AnimatorApplicationTimer(fps, "zamaný ayarlanabilen swing animasyonu");

[Link]();

[Link](true);

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

ªekil 9.10 zaman ayarlý swing animasyon örneði

BÖLÜM 10 JAVA GÝRDÝ - ÇIKTI PROGRAMLANMASI


10.1 JAVANIN I/O (GÝRDÝ ÇIKTI ) KÜTÜPHANESÝNDE YER ALAN SINIFLAR VE
ÝNTERFACE’LER
Javadaki tüm girdi çýktý programlamasý veri akýº (stream) kavramýna dayanýr. Veri akýºýný bir
su akýºý veya bir kablolu sistem üzerinden bilgi akýºý gibi düºünebiliriz. Javada sadece dosya
deðil yazýcý, scanner gibi herhangi bir kaynaða veri iletmek istediðimizde bu veri akýº
sistemini kullanýrýz. Javada oldukça geniº bir veri akýº kütüphanesi bulunmaktadýr.
[Link] kütüphanesinde yer alan girdi çýktý programlama sýnýflarý ºunlardýr :

InputStream
FilterInputStream
LineNumberInputStream
BufferedInputStream
DataInputStream
PushbackInputStream
ByteArrayInputStream
FileInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
StringBufferInputStream
OutputStram
ByteArrayOutputStream
FileOutputStream
FilterOutputStream
BufferedOutputStream
DataOutputStream
PrintStream
ObjectOutputStream
PipedOutputStream
ObjectStreamClass
StreamTokenizer
Reader
FileReader
BufferedReader
LineNumberReader
CharArrayReader
FilterReader
PushbackReader
InputStreamReader

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
FileReader
PipedReader
StringReader
Writer
BufferedWriter
CharArrayWriter
FilterWriter
OutputStreamWriter
PipedWriter
PrintWriter
StringWriter
File
FileDescriptor
RandomAccessFile

Bu sýnýflarýn hepsinin genel görevi javaya girdi saðlamak ve çýktý almaktýr. Burada bunlardan
bir kýsmýnýn iºlevlerini ve nasýl çalýºtýklarýný inceleyeceðiz. Önce temel ana sýnýflarýn
bazýlarýnýn tanýmlarýna daha detaylý
bakalým. InputStream sýnýfý byte türü yazý okuma sýnýfýdýr. Tüm byte türü bilgi akýº kanalý
sýnýflarýnýn ana sýnýfýdýr. Tanýmý :
public abstract class InputStream extends Object
{
public InputStream();
public int available() throws IOException;
public void close() throws IOException;
public synchronized void mark(int readlimit);
public boolean markSupported();
public abstract int read() throws IOException;
public int read(byte b[]) throws IOException;
public int read(byte b[],int off,int len) throws IOException;
public synchronized void reset() throws IOException;
public long skip(long n) throws IOException;
}
InputStream sýnýfýnýn byte türü yazma pareleli olan OutputStream sýnýfýnýn tanýmý ise :
public abstract class OutputStream extends Object
{
public outputStream();
public void close() throws IOException;
public void flush() throws IOException;
public abstract void write(int b) throws IOException;
public void write(byte b[]) throws IOException;
public void write(byte b[],int baºlamanoktasý,int uzunluk) throws IOException;
}
Abstract sýnýf Reader, InputStream sýnýfýna olduça yakýndýr, yalnýz data transferinde byte
yerine char kullanýr, böylece girdi çýktýda unicode stream kullanabilme olasýlýðý yakalar.
public abstract class Reader extends Object
{
protected Reader();
protected Reader(Object o);
public abstract void close() throws IOException;
public void mark(int readlimit) throws IOException;
public boolean markSupported() ;
public abstract int read() throws IOException;
public int read(char c[]) throws IOException;
public int read(char c[],int baºlamanoktasý,int uzunluk) throws IOException;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean ready() throws IOException;
public void reset() throws IOException;
public long skip(long n) throws IOException;
}
Abstract sýnýf Writer da Output straem sýnýfýna eºdeðerdir. Fakat ayný readerda olduðu gibi
bu sýnýf da veri akýºýnda char ve string kullanýr.
public abstract class Writer extends Object
{
public outputStream();
public void close() throws IOException;
public void flush() throws IOException;
public abstract void write(int b) throws IOException;
public void write(char c[]) throws IOException;
public void write(char c[],int baºlamanoktasý,int uzunluk) throws IOException;
public void write(String s) throws IOException;
public void write(String s,int baºlamanoktasý,int uzunluk) throws IOException;
}
Bu sýnýflar temel sýnýflardýr. Bunlarýn altýnda yer alan çeºitli sýnýflara aºaðýdaki bölümlerde
daha detaylý bakacaðýz.
10.2 FÝLE (DOSYA) SINIFI
File sýnýfý girdi çýktý iºlemlerini saðlarken, dosya isimleri ve bulunduklarý dizin ile ilgili bilgi
verir.
File sýnýfýnýn tanýmý :
Public class File extends Object implements Serializable, Comparable
{
public static final String pathSeperator;
public static final char pathSeperatorChar;
public static final String seperator;
public static final char seperatorChar;
public File(String dosya_ismi);
public File(String dizin_ismi, String dosya_ismi);
public File(File file_tipi_nesne,String dosya_ismi);
public boolean canRead();
public boolean canWrite();
public boolean compareTo(Object o);
public boolean compareTo(File baºkabirdosya);
public boolean createNewFile();
public static File createTempFile(String isim) throws IOException;
public static File createTempFile(String isim,File dosya) throws IOException;
public boolean delete();
public void deleteOnExit();
public boolean equals(Object o);
public boolean exists(Object o);
public File getAbsooluteFile();
public File getAbsoolutePath();
public File getCanonicalFile() throws IOException;
public File getCanonicalPath() throws IOException;
public String getName();
public String getParent();
public File getParentFile();
public String getPath();
public int hashCode();
public boolean isAbsolute();
public boolean isDirectory();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean isFile();
public boolean isHidden();
public long lastModified();
public long length();
public String[] list();
public String[] list(FilenameFilter filitrefonksiyonu);
public static File[] listRoots();
public boolean mkdir();
public boolean mkdirs();
public boolean renameTo(File yeniisim);
public boolean setLastModified(long nezaman);
public boolean setReadOnly();
public String toString();
public URL toURL() throws MAlformedURLException;
}
Kurucu metotlarýn çaðýrýlmasýna örnek olarak :
File f1=new File(“/”);
File f2=new File(“/”,”[Link]”);
File f3=new File(f1,”[Link]”);
tanýmlarýný verebiliriz. File sýnýfýnda tanýmlanmýº olan Metotlardan bazýlarýnýn tanýmlarý
ºunlardýr. canRead()
Tanýmlanan dosyadan bilgi okunulabilirliðini test eder.
canWrite()
Tanýmlanan dosyaya bilgi yazýlabilirliðini test eder.
delete()
Dosyayý siler
equals(Object)
Dosya ismini Object te verilen dosya ismiyle karºýlaºtýrýr.
exists()
Dosyanýn mevcut olup olmadýðýný kontrol eder.
getAbsolutePath()
Dosyanýn tam dizin ismini ve dosya ismini verir( co/java/prog/[Link]).
getName()
Dosyanýn ismini verir.([Link])
getParent()
Dosyanýn içinde bulunduðu dizinin ismini verir.(prog)
getPath()
dosyanýn ismini ve içinde bulunduðu dizinin ismini verir.(prog/[Link])
isAbsolute()
Dosya isminin mutlak isim olup olmadýðýný kontrol eder.(Eðer dosya ismi
co/java/prog/[Link] olarak verilmiºse true deðeri verir.)
isDirectory()
verilen isimin bir dizin ismi olup olmadýðýný kontrol eder.
isFile()
verilen isimin birdosya isimi olup olamdýðýný kontrol eder.
lastModified()
Dosyanýn en son deðiºtirildiði tarihi verir
length()
Dosyanýn boyutunu Byte olarak verir.
list()
Verilen dizinin içindeki dosyalarýn listesini verir.
list(FilenameFiltre)
Verilen dizinin içindeki Filtre nesnesindeki tanýma uyan dosyalarýn listesini verir.
mkdir()
Yeni bir dizin oluºturur.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
mkdirs()
O anda tanýmlý olan dizinin içine bir alt dizin oluºturur.
renameTo(File)
Dosyanýn ismini deðiºtirir.
toString()
Dosya ve dizin isimleri topluluðunun String deðiºkeni eºdeðerini verir.
File(dosya) sýnfýndaki metodlardan da görülebileceði gibi bu sýnýf dosyadan okuyup yazma
gibi bir iºlem yürütmez. File sýnýfýnýn temel iºlevi girdi çýktý dosyasýnýn adlandýrýlmasý ve
isimle ilgili fonksiyonlara ulaºýlmasýdýr. File sýnýfýnýn bazý metotlarýný ufak bir program içinde
kullanalým.
Program 10.1 . [Link] programý
import [Link].*;
import [Link];
import [Link];
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
public class FileTestiSW
{
public static void main(String args[])
{
//önce JFileChooser kullanarak dosyayý seç, sonra dosya özelliklerini göster.
File f=new File("[Link]");
JFileChooser dosyasec=new JFileChooser();
int onay = [Link](null);
//veya kayýt için int onay = [Link](null);
if(onay==JFileChooser.APPROVE_OPTION)
{
f=[Link]();
}
String s="";
s+="Dosya ismi : "+[Link]()+"\n";
s+="Dizin ismi : "+[Link]()+"\n";
s+="Mutlak Dizin ismi : "+[Link]()+"\n";
s+="Üst Dizin ismi : "+[Link]()+"\n";
s+=[Link]() ? "Mevcut " : " Mevcut deðil "+"\n";
s+=[Link]() ? "Yazýlabilir " : " Yazýlamaz"+"\n";
s+=[Link]() ? "Okunabilir " : " Okunamaz"+"\n";
s+=[Link]() ? "Dizin " : " Dizin degil"+"\n";
s+=[Link]() ? "Dosya " : " Dosya degil"+"\n";
s+=[Link]() ? "Mutlak dizin ismi " : " Mutlak dizin ismi deðil"+"\n";
s+="Son Degisiklik : "+[Link]()+"\n";
s+="Dosya boyutu : "+[Link]()+" Byte"+"\n";

[Link](null,s,"Dosya testi",JOptionPane.PLAIN_MESSAGE);
[Link](0);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 10.2 [Link] programýnýn içindeki dosya seçim penceresi

[Link]

ªekil 10.2 [Link] programýnýn sonuclarý


Burada swing hazýr dosya seçme programý JfileChooser kullanýlarak dosya ismi seçilmiº,
sonar bu dosya ile ilgili çeºitli bilgiler JoptionPane grafik ortamýnda aktarýlmýºtýr.
10.3 ARDIªIK (SEQUENTIAL) DOSYA YARATILMASI
Java bilgi dosyalarýný birbiri ardýsýra gelen byte veya char (unicode) akýºý olarak görür. Her
dosya dosya-bitiº iºaretiyle sonlanýr. Yeni bir dosya açýldýðýnda bu dosyayla ilgili bir nesne
oluºturulur. Yeni bir java programý açýldýðýnda üç akýº nesnesi otomatik olarak açýlýr. Bunlar
[Link] , [Link], [Link] nesneleridir. Eðer kendimiz bir girdi veya çýktý akýº
nesnesi oluºturmak istersek FileInputStream veya FileOutputStream sýnýfý bir nesne
tanýmlýyabiliriz. Akýsýn içindeki deðiºkenleri sadece byte olarak okumak yerine direk olarak
double veya integer gibi deðiºkenler türünden okumak istersek DataInputStream ve
DataOutputStream sýnýflarýný kullanabiliriz. Genel olarak FileOutputStream ve
DataOutputStream sýnýflarýný aºaðýdaki gibi bir arada kullanabiliriz:
DataOutputStream ciktiakimi;
try{ ciktiakimi=new DataOutputStream(new FileOutputStream(“[Link]”));}
catch(IOException e) {[Link](“Dosya acilamadi\n”+[Link]());}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu deyim bize [Link] isimli dosyadan bir fileOutputStream aracýlýðýyla açýlan dosyayý
DataOutputStream’e çevirip gerçek deðiºkenler cinsinden akýº kanalý açar.
DataOutputStream ve FileOutputStream sýnýflarýnýn tanýmlarý :
public class DataOutputStream extends FilterOutputStream implements DataOutput
{
public DataOutputStream(OutputStram o);
protected int written
public void flush()
public final void size()
public synchronized void write(byte[],int baslangýçnoktasý,int uzunluk);
public synchronized void write(int);
public final void writeBoolean(boolean b);
public final void writeBytes(String s)
public final void writeChar(int)
public final void writeChars(String)
public final void writeDouble(double)
public final void writeFloat(float)
public final void writeInt(int)
public final void writeLong(long)
public final void writeShort(int)
public final void writeUTF(String)
}
FileOutputStream ise dosya sýnýfý File ile DataOutputStream sýnýfý arasýndaki gerekli
tanýmlarý saðlar
public class FileOutputStream extends OutputStream
{
public FileOutputStream(File file) throws IOException;
public FileOutputStream(FileDescriptor fd) throws IOException;
public FileOutputStream(String s) throws IOException;
public FileOutputStream(String s, boolean b) throws IOException;
public void close() throws IOException;
protected void finalize() throws IOException;
public void getFD() throws IOException;
public void write(byte[]) throws IOException;
public void write(byte[], int, int) throws IOException;
public void write(int) throws IOException;
public final FileDescriptor getFD() throws IOException;
}
Kanal açýldýktan sonra DataOutputStream sýnýfýnýn metodlarýný kullanarak dosyaya yazý
yazabiliriz. Yazma metodlarýnýn iºlevlerine bir göz atarsak :
write(byte B[] )
byte tipi boyutludeðiºkeni açýlmýº olan DataOutputStream kanalýna yazar.
write(byte B[], int baslangýcindeksi, int indeksboyutu)
byte tipi boyutludeðiºkeni açýlmýº olan DataOutputStream kanalýna yazar.
Baslangiç indeksinden baslar ve indeksboyutu uzunluðundaki kýsmý yazar.
write(int B) int datayý data output stream’e yazar.
writeBoolean(boolean B) Boolean deðiºkeni DataOutputStream’e yazar.
writeByte(int) int deðiºkeni byte olarak DataOutputStream’e yazar.
writeBytes(String) String deðiºkeni byte boyutlu deðiºken olarak DataOutputStream’e
yazar.
writeChar(int) int deðiºkeni char deðiºken olarak DataOutputStream’e yazar.
writeChars(String) String deðiºkeni Char deðiºken olarak DataOutputStream’e yazar.
writeDouble(double) double deðiºkeni double deðiºken olarak DataOutputStream’e yazar.
writeFloat(float) float deðiºkeni float deðiºken olarak DataOutputStream’e yazar.
writeInt(int) float deðiºkeni float deðiºken olarak DataOutputStream’e yazar.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
writeLong(long) long deðiºkeni long deðiºken olarak DataOutputStream’e yazar.
writeShort(int) int deðiºkeni short (short integer) deðiºken olarak DataOutputStream’e
yazar.
writeUTF(String) String deðiºkeni unicode UTF-8 formatý karekter boyutu olarak yazar.
Bu ºekilde yazdýðýmýz bir veri akýºýn okumak için ise :
DataInputStream girdiakimi;
try{
girdiakimi=new DataInputStream(new FileInputStream(“[Link]"));
}
catch(IOException e)
{
[Link]("Dosya acilamadi\n"+[Link]());
[Link](1);
}
tanýmýný kulanabiliriz. Buradaki DataInputStream sýnýfýnýn tanýmý :
public class DataInputStream extends FilterInputStream implements DataInput
{
public DataInputStream(InputStream in);
public DataInputStream(InputStream in);
public final int read(byte b[]) throws IOException;
public final int read(byte b[], int baºlangýçdeðeri, int uzunluk) throws IOException;
public final void readFully(byte b[]) throws IOException;
public final void readFully(byte b[],int baºlangýçdeðeri, int uzunluk) throws IOException;
public final int skipBytes(int n) throws IOException;
public final boolean readBoolean() throws IOException;
public final byte readByte() throws IOException;
public final int readUnsignedByte() throws IOException;
public final short readShort() throws IOException;
public final int readUnsignedShort() throws IOException;
public final char readChar() throws IOException;
public final int readInt() throws IOException;
public final long readLong() throws IOException;
public final float readFloat() throws IOException;
public final double readDouble() throws IOException;
public final String readLine() throws IOException;
public final String readUTF() throws IOException;
public final static String readUTF(DataInput in) throws IOException;
}
ºeklindedir. FileInputStream ise :
public FileInputStream(File file) throws FileNotFoundException
{
public FileInputStream(FileDescriptor fdObj);
public int read() throws IOException;
public int read(byte b[]) throws IOException;
public int read(byte b[],int baºlangýçnoktasý,int uzunluk) throws IOException;
public long skip(long n) throws IOException;
public int available() throws IOException;
public void close() throws IOException;
public final FileDescriptor getFD() throws IOException;
protected void finalize() throws IOException;
}
ºeklinde tanýmlýdýr. DataInputStream metdunun alt okuma metodlarýna biraz daha detaylý
göz atarsak:
read(byte[])

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
byte veri akýºýný direk okur.
read(byte[], int baºlangýçnoktasý, int boyut)
byte veri akýºýný baºlangýçnoktasý indeksinden boyut uzunluðuna kadar okurdirek okur.
readBoolean()
boolean deðiºken (true veya false) okur.
readByte()
8-bit byte integer okur
readChar()
unicode karecter(char) okur
readDouble()
double okur
readFloat()
float okur
readFully(byte[])
byte boyutlu deðiºkenini, byte[] boyutlu girdi deðiºkeninin boyutuna göre okur.
readFully(byte[], int, int)
readInt()
Integer okur
readLine()
Bir satýrý satýrbaºý yap komutuna kadar okur. Java 1.0 komutudur. 1.1 ve üzerinde bazý
okuma hatalarý yaptýðý görüldüðünden kullanýlmamasý tavsiye edilir.
readLong()
Long tamsayý deðiºkeni okur.
readShort()
Short tamsayý deðiºkeni okur
readUnsignedByte()
8-bitlik iºaretsiz tamsayý deðiºkeni okur.
readUnsignedShort()
16-bitlik iºaretsiz tamsayý deðiºkeni okur.
readUTF()
Unicode karekteri okur.
readUTF(DataInput)
Unicode Karakterini (Character) DataInput girdi akýºýndan okur.
skipBytes(int n)
n byte deðeri okumadan atlar.
ªimdi bir örnek problem ile bu yazma ve okuma iºlemine daha yakýndan bir göz atalým.
Program 10.2 de yeni bir dosya açýlmakta, ve dosyaya veri girilmektedir. Program 10.3 de
ayný programýn swing kullanýlarak yazýlmýº versiyonu mevcuttur. Program 10.4 de ise
yaratýlan dosyaya girilen veriler okunmaktadýr.

Program 10.2 [Link] programý


import [Link].*;
import [Link].*;
import [Link].*;
public class ardisikDosyaYarat extends Frame implements ActionListener
{
private TextField hesapIsmiKutusu,isimKutusu,soyIsimKutusu,hesapKutusu;
private Button enter,done;
private DataOutputStream cikti;
private Label H,I,S,P;
public ardisikDosyaYarat()
{
super("Musteri dosyasi Ac");
try{
cikti=new DataOutputStream(new FileOutputStream("[Link]"));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} catch(IOException e)
{ [Link]("Dosya dogru acilamadi\n"+[Link]());
[Link](1);
}
setSize(300,150);
setLayout(new GridLayout(5,2));
H=new Label("Hesap numarasi :");
add(H);
hesapIsmiKutusu=new TextField();
add(hesapIsmiKutusu);
I=new Label("isim : ");
add(I);
isimKutusu=new TextField(20);
add(isimKutusu);
S=new Label("Soyisim : ");
add(S);
soyIsimKutusu=new TextField(20);
add(soyIsimKutusu);
P=new Label("Hesaptaki para : ");
add(P);
hesapKutusu=new TextField(20);
add(hesapKutusu);
enter=new Button("Gir");
[Link](this);
add(enter);
done=new Button("Cikis");
[Link](this);
add(done);
setVisible(true);
}
public void hesapEkle()
{
int accountNumber=0;
Double d;
if(![Link]().equals(""))
{
try{
accountNumber=[Link]([Link]());
if(accountNumber0)
{
[Link](accountNumber);
[Link]([Link]());
[Link]([Link]());
d=new Double([Link]());
[Link]([Link]());
}
[Link]("");
[Link]("");
[Link]("");
[Link]("");
}
catch(NumberFormatException nfe)
{
[Link]("Hesap numarasi tamsayi degisken olamalidir");
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch(IOException io)
{
[Link]("Dosyaya yazarken hata olustu\n"+[Link]());
[Link](1);
}
}
}
public void actionPerformed(ActionEvent e)
{
hesapEkle();
if([Link]()==done)
{
try{ [Link]();}
catch(IOException io)
{
[Link]("Dosya kapatilamadi\n"+[Link]());
}
[Link](0);
}
}
public static void main(String args[])
{
new ardisikDosyaYarat();
}
}
[Link]

ªekil 10.3 [Link] programý ve sonuclarýnýn Frame çýktýsýnda görülmesi


Program 10.3 ardisikDosyaYaratSWF_200.java programý
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
public class ardisikDosyaYaratSWF_2000 extends JFrame implements ActionListener
{
private JTextField hesapIsmiKutusu,isimKutusu,soyIsimKutusu,hesapKutusu;
private JButton enter,done;
private DataOutputStream cikti;
private JLabel H,I,S,P;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Container c;
public ardisikDosyaYaratSWF_2000()
{
super("Müºteri dosyasi Aç");
c=getContentPane();
try{
cikti=new DataOutputStream(new FileOutputStream("[Link]"));
} catch(IOException e)
{ [Link]("Dosya doðru açýlamadý\n"+[Link]());
[Link](1);
}
[Link](new GridLayout(5,2));
H=new JLabel("Hesap numarasi :");
[Link](H);
hesapIsmiKutusu=new JTextField();
[Link](hesapIsmiKutusu);
I=new JLabel("isim : ");
[Link](I);
isimKutusu=new JTextField(20);
[Link](isimKutusu);
S=new JLabel("Soyisim : ");
[Link](S);
soyIsimKutusu=new JTextField(20);
[Link](soyIsimKutusu);
P=new JLabel("Hesaptaki para : ");
[Link](P);
hesapKutusu=new JTextField(20);
[Link](hesapKutusu);
enter=new JButton("Gir");
[Link](this);
[Link](enter);
done=new JButton("Cikis");
[Link](this);
[Link](done);
setVisible(true);
}
public void hesapEkle()
{
int accountNumber=0;
Double d;
if(![Link]().equals(""))
{
try{
accountNumber=[Link]([Link]());
if(accountNumber>0)
{
[Link](accountNumber);
[Link]([Link]());
[Link]([Link]());
d=new Double([Link]());
[Link]([Link]());
}
[Link]("");
[Link]("");
[Link]("");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("");
}
catch(NumberFormatException nfe)
{
[Link]("Hesap numarasi tamsayi degisken olamalidir");
}
catch(IOException io)
{
[Link]("Dosyaya yazarken hata olustu\n"+[Link]());
[Link](1);
}
}
}
public void actionPerformed(ActionEvent e)
{
hesapEkle();
if([Link]()==done)
{
try{ [Link]();}
catch(IOException io)
{
[Link]("Dosya kapatilamadi\n"+[Link]());
}
[Link](0);
}
}
public static void main(String[] args)
{
ardisikDosyaYaratSWF_2000 pencere= new ardisikDosyaYaratSWF_2000();
[Link](300,150);
[Link](new BasicWindowMonitor());
[Link](true);
}
}
[Link]

ªekil 10.4 [Link] programý ve sonuclarýnýn Frame çýktýsýnda görülmesi


Program 10.4 [Link] programý
import [Link].*;
import [Link].*;
import [Link].*;
public class ardisikDosyaOku extends Frame implements ActionListener
{
private TextField accountField,firstNameField,lastNameField,balanceField;
private Button next,done;
private DataInputStream input;
public ardisikDosyaOku()
{
super("Musteri dosyasini oku");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try{
input=new DataInputStream(new FileInputStream("[Link]"));
} catch(IOException e) { [Link]("Dosya acilamadi\n"+[Link]());
[Link](1);
}
setSize(300,150);
setLayout(new GridLayout(5,2));
add(new Label("Hesap Numarasi :"));
accountField=new TextField();
add(accountField);
add(new Label("isim : "));
firstNameField=new TextField(20);
add(firstNameField);
add(new Label("soyisim : "));
lastNameField=new TextField(20);
add(lastNameField);
add(new Label("Hesaptaki para : "));
balanceField=new TextField(20);
add(balanceField);
next=new Button("bir sonraki hesap");
[Link](this);
add(next);
done=new Button("cikis");
[Link](this);
add(done);
setVisible(true);
}
public void readRecord()
{
int account;
String first,last;
double balance;
{
try{
account=[Link]();
first=[Link]();
last=[Link]();
balance=[Link]();
[Link]([Link](account));
[Link](first);
[Link](last);
[Link]([Link](balance));
}
catch(EOFException eof)
{
closeFile();
}
catch(IOException io)
{
[Link]("Dosyay� okurken hata olustu\n"+[Link]());
[Link](1);
}
}
}
public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
if([Link]()==next)
readRecord();
else
closeFile();
}
private void closeFile()
{
try{
[Link]();
[Link](0);
}
catch(IOException e)
{
[Link]("Dosya Kapama Hatasý oluºtu\n"+[Link]());
[Link](1);
}
}
public static void main(String args[])
{
new ardisikDosyaOku();
}
}

[Link]

ªekil 10.4 [Link] programý ve sonuclarýnýn Frame çýktýsýnda görülmesi


[Link] programýnda [Link] dosyasý
try{
cikti=new DataOutputStream(new FileOutputStream("[Link]"));
}
catch(IOException e)
{
[Link]("Dosya dogru acilamadi\n"+[Link]());
[Link](1);
}
gurubunu kullanarak açýlmýºtýr. Bu gurubu File sýnýfýný da kullanarak
File f=new File(“[Link]”);
f=[Link](f);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try{
cikti=new DataOutputStream(new FileOutputStream(f));
}
catch(IOException e)
{ [Link]("Dosya dogru acilamadi\n"+[Link]());
[Link](1);
}

ºeklinde de yaratabilirdik. Ýkinci ºekilde dosyayý tanýmlarken tam dizin ismini de otomatik
olarak tanýmlamýº olurduk.
Dosyanýn okunmasý içinse
try{
input=new DataInputStream(new FileInputStream("[Link]"));
}
catch(IOException e)
{
[Link]("Dosya acilamadi\n"+[Link]());
[Link](1);
}
gurubunu kullandýk. Eðer dosya ismi de deðiºkende dýºarýdan okuduktan sonra ismi File
sýnýfýna yükleyip sonra akýº kanalý açabiliriz.
Dosya ile iºlemler bittikten sonra dosya kapanýr.
private void closeFile()
{
try{
[Link]();
[Link](0);
}
catch(IOException e)
{
[Link]("Dosya Kapama Hatasý oluºtu\n"+[Link]());
[Link](1);
}
}
closeFile() metotu dosya akýºýný kapatmak amacýyla oluºturulmuºtur.
Bu örnekte kullandýðýmýz, DataOutputStream, FileOutputStream, DataInputStream,
FileInputStream girdi çýktý akýº kontrollarý temel olarak daha önce tanýmlarýný vermiº
olduðumuz OutputStream ve InputStream sýnýflarýndan türetilmiº sýnýflardý. Ve temel olarak
byte deðiºken türü üzerinden veri akýºýný saðlamaktadýrlar.
Yine yukarýda tanýmlanmýº olan Reader ve Writer sýnýflarý ise ayný iºlemi char sýnýfý veri akýºý
üzerinden yapmaktadýr ve char sýnfý direk olarak unicode olarak tanýmlandýðýndan
herhangibir hataya sebep vermeden daha iyi bir veri akýºý saðlar. Bu sýnýfýn alt sýnýflarý olarak
tanýmlanan ve yazma iºleminde kullanýlan sýnýflarýn kullanýlmasýna bir göz atalým.
Genel olarak Writer sýnýfýndan türetilen ve en çok kullanýlan Yazma kanalý PrintWriter ,
BufferedWriter, FileWriter veya OutputStreamWriter sýnýflarýnýn beraber kullanýlmasýyla
gerçekleºtirilebilir. Bu sýnýflarýn birlikte kulanýlmalarýný ºu deyimlerle örnekleyebiliriz :
dosya "[Link]" e yazdýrmak için :

PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));

tanýmý kullanýlabilir.
PrintWriter sýnýfýnýn tanýmý :
public class PrintWriter extends Writer
{
public PrintWriter(OutputStream o) ;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public PrintWriter(OutputStream o, boolean b) ;
public PrintWriter(Writer w) ;
public PrintWriter(Writer w, boolean b);
public void flush();
public void close();
public boolean checkError();
protected void setError();
public void write(int c);
public void write(char buf[]);
public void write(String s,int baslamaindeksi,int uzunluk);
public void write(String s);
public void print(boolean b);
public void print(char c);
public void print(int i);
public void print(long l);
public void print(float f);
public void print(double d);
public void print(Object obj);
public void println();
public void println(boolean x);
public void println(char x);
public void println(int x);
public void println(long x);
public void println(float x);
public void println(double x);
public void println(char x[]);
public void println(Object x);
}
PrintWriter sýnýfýnýn mevcut metotlarýnýn iºlevleri ºunlardýr :
checkError() Tüm veriyi gönderir ve hata kontrolu yapar.
close() veri akýº kanalýný kapatýr.
flush() veri akýº kanalýndaki tüm veriyi gönderir (ve bufferi yeni veri için boºaltýr).
print (boolean) boolean deðiºken yazar.
print (char) character deðiºken yazar.
print (char[]) boyutlu chracter deðiºkenleriyazar.
print (double) double yazar.
print (float) float yazar.
print (int) integer yazar.
print (long) long yazar.
print (Object) object sýnýfýnýn tanýmladýðý çýktýyý (object türüne göre deðiºebilir) yazar.
print(String) String yazar
println () satýr sonu yapar alt satýra geçer.
println (boolean) boolean yazar ve satýr sonu yapar alt satýra geçer.
println (char) character yazar ve satýr sonu yapar alt satýra geçer.
println (char[]) boyutlu character deðiºkenleri yazar ve satýr sonu yapar alt satýra geçer.
println (double) double yazar ve satýr sonu yapar alt satýra geçer.
println (float) float yazar ve satýr sonu yapar alt satýra geçer.
println (int) Print an integer, and then finish the line.
println (long) long yazar ve satýr sonu yapar alt satýra geçer.
println (Object) object sýnýfýnýn tanýmladýðý çýktýyý (object türüne göre deðiºebilir) yazar ve
satýr sonu yapar alt satýra geçer.
println(String) String yazar ve satýr sonu yapar alt satýra geçer.
setError() bir hata oluºtuðunu gösterir
write (char[]) boyutlu character deðiºkenlerini yazar

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
write (char[], int, int) boyutlu character deðiºkenlerini birinci integer(tamsayý) boyutundan
ikinci integer boyutuna kadar yazar.
write (int) tek bir character yazar.
write (String) string yazar
write(String, int, int) string deðiºkenini birinci integer(tamsayý) boyutundan ikinci integer
boyutuna kadar yazar.
BufferedWriter sýnýfýnýn tanýmý :
public class BufferedWriter extends Writer
{
public BufferedWriter(Writer cikti);
public BufferedWriter(Writer cikti,int boyut);
public void write(int c) throws IOException;
public void write(char c[],int baºlamaindeksi,int uzunluk) throws IOException;
public void write(String s, int baºlamaindeksi,int uzunluk) throws IOException;
public void newLine() throws IOException;
public void flush() throws IOException;
public void close() throws IOException;
}
ºeklindedir. Yazma verimini arttýrmak için akýºa ilave edilmektedir.
FileWriter sýnýfý ise File sýnýfý ile baðlantýmýzý kuran (dosyayý tanýmlayan sýnýfýmýzdýr.). Writer
sýnýfýnýn altýnda yer alan OutputStreamWriter Sýnýfýnýn alt sýnýfýdýr. tanýmý :
public class FileWriter extends OutputStreamWriter
{
public FileWriter(String fileName) throws IOException;
public FileWriter(String fileName,boolean append) throws IOException;
public FileWriter(File file) throws IOException;
public FileWriter(FileDescriptor fd);
}
OutputStreamWriter sýnýfýnýn tanýmý :
public class OutputStreamWriter extends Writer
{
public OutputStreamWriter(OutputStream o,String enc) throws
UnsupportedEncodingException;
public OutputStreamWriter(OutputStream o);
public String getEncoding();
public void write(int c) throws IOException;
public void write(char c[],int baºlamaindeksi,int uzunluk) throws IOException;
public void write(String str,int baºlamaindeksi,int uzunluk) throws IOException;
public void flush() throws IOException;
public void close() throws IOException;
}
Bu sýnýflarý kullanarak bir yazma kanaý açmak istersek :
PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));
[Link]("hello");
Komutunu kullanabiliriz. Bu komut
hello string deðiºkenini [Link] dosyasýna yazdýrýr.
Dosya veya ekrandan okumak için ise paralel olarak BufferedReader, FileReader ve
InputStreamReader sýnýflarýný kullanabiliriz. BufferedReader sýnýfýnýn tanýmý :
public class BufferedReader extends Reader
{
public BufferedReader(Reader giriº,int boyut);
public BufferedReader(Reader giriº);
public int read(char c[],int off,int len) throws IOException;
public int read() throws IOException;
public String readLine() throws IOException;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public long skip(long n) throws IOException;
public boolean ready() throws IOException;
public boolean markSupported();
public void mark(int readAheadLimit) throws IOException;
public void reset() throws IOException;
public void close() throws IOException;
}
BufferedReader ve FileReader sýnýflarýný birarada kullanarak bir okuma kanalý açabiliriz.
örneðin [Link] dosyasýndan okumak için :

BufferedReader cfin=new BufferedReader(new FileReader("[Link]"));


deyimini kullanabiliriz.

Bu terimleri kullanarak dosyaya yazma ve okumayla ilgili ufak bir örnek verelim

Program 10.5 : [Link] programý


import [Link].*;
class YazOku
{
public static void main (String args[]) throws IOException
{
String s1="ilk deger";
String s2="ilk deger";
String s3="ilk deger";
PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));
[Link]("Merhaba");
[Link]("isminiz nedir");
[Link]("sizinle tanistigima memnun oldum");
[Link]();
BufferedReader cfin=new BufferedReader(new FileReader("[Link]"));
s1=[Link]();
s2=[Link]();
s3=[Link]();
[Link]();
[Link]("s1 = "+s1);
[Link]("s2 = "+s2);
[Link]("s3 = "+s3);
}
}
Program çýktýsý :
s1 = Merhaba
s2 = isminiz nedir
s3 = sizinle tanistigima memnun oldum
dosya [Link] :
Merhaba
isminiz nedir
sizinle tanistigima memnun oldum
ªeklinde olacaktýr. Programýmýz [Link] dosyasýný oluºturup, üç string deðerini yazdýktan sonra
okuma kanalý açarak bu veriyi okudu.
Benzer bir okuma sýnýfý olarak ºu ana kadar kullandýðýmýz Text sýnýfýný da verebiliriz. Aslýnda
Text sýnýfýnýn içeriðine baktýðýmýzda yukarýda verilen sýnýflarýn organize bir ºekilde
kullanýlmasýndan ibaret olduðunu rahatlýkla görebiliriz. Text sýnýfýnýn listesi :
Program 10.6 [Link] programý
//============================================
// Java nümerik analiz paketi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Class Text to read data from screen or file
// and write (by using print) to screen or file
// formatted c printf like comand structure
// Dr. Turhan Coban
//============================================
import [Link].*;
import [Link].*;
class Text
{
BufferedReader in;
/*
---------------------------------------------------
Static routines provided are:
---------------------------------------------------
public static void prompt(String s);
public static int readInt(DataInputStream in);
public static int readInt(BufferedReader in);
public static double readDouble(DataInputStream in);
public static double readDouble(BufferedReader in);
public static String readString(DataInputStream in);
public static String readString(BufferedReader in);
public static char readChar(DataInputStream in);
public static char readChar(BufferedReader in);
----------------------------------------------------
Dynamic routines provided are :
----------------------------------------------------
public void Text()
public void Text(String s1)
public void Text(File f1)
public int readInt();
public double readDouble();
public String readString();
public char readChar();
Sample use :
--------- reading a double--------------
DataInputStream cin=new DataInputStream([Link]);
double number;
number=[Link](cin);
veya
BufferedReader cin=new BufferedReader(new InputStreamReader([Link]));
double number;
number=[Link](cin);
veya
double number;
Text cin=new Text();
number=[Link]();
------ reading data from a file "[Link]"------
DataInputStream fin=new DataInputStream
(new FileInputStream("[Link]"));
double number;
number=[Link](fin);
veya
double number;
BufferedReader fin=new BufferedReader(new FileReader("[Link]"));
double number;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
number=[Link](fin);
veya
double number;
Text cin=new Text("[Link]");
number=[Link]();
------ printing data into a file "[Link]"----
PrintStream fout=new PrintStream(new FileOutputStream("[Link]"));
String a="turhan";
[Link](a);
veya
BufferedWriter fout=new BufferedWriter(new FileWriter("[Link]"));
String a="Turhan");
[Link](a);
----------------------------------------------------
*/
private static StringTokenizer T;
private static String S;
public Text()
{
in=new BufferedReader(new InputStreamReader([Link]));
}
public Text(String s1) throws IOException
{
in=new BufferedReader(new FileReader(s1));
}
public static void prompt (String s) {
[Link](s + " ");
[Link]();
}
public static int readInt (DataInputStream in) throws IOException
{
if (T==null) refresh(in);
while (true)
{
try {
String item = [Link]();
return [Link]([Link]()).intValue();
}
catch (NoSuchElementException e1) { refresh (in);}
catch(NumberFormatException e2)
{ //[Link]("Error in number, try again.");
}
}
}
public int readInt() throws IOException
{
return [Link](in);
}
public String readStringLine() throws IOException
{
return [Link](in);
}
public double readDouble() throws IOException
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return [Link](in);
}
public String readString() throws IOException
{
return [Link](in);
}
public char readChar() throws IOException
{
return [Link](in);
}
public static int readInt (BufferedReader in) throws IOException
{
if (T==null) refresh(in);
while (true)
{
try {
String item = [Link]();
return [Link]([Link]()).intValue();
}
catch (NoSuchElementException e1) { refresh (in);
} catch(NumberFormatException e2)
{ //[Link]("Error in number, try again.");
}
}
}

public static char readChar (DataInputStream in) throws IOException


{
if (T==null) refresh(in);
while (true)
{
try {
return [Link]().charAt(0);
}
catch(NoSuchElementException e1) {refresh (in);}
}
}
public static char readChar (BufferedReader in) throws IOException
{
if (T==null) refresh(in);
while (true)
{
try {
return [Link]().charAt(0);
}
catch(NoSuchElementException e1) {refresh (in);}
}
}
public static double readDouble(DataInputStream in) throws IOException
{
if(T==null) refresh(in);
while (true) {
try {
String item = [Link]();
return [Link] ([Link]()).doubleValue();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} catch(NoSuchElementException e1) {
refresh (in);
} catch(NumberFormatException e2)
{
//[Link]("Error in number, try again.");
}
}
}
public static double readDouble(BufferedReader in) throws IOException
{
if(T==null) refresh(in);
while (true) {
try {
String item = [Link]();
return [Link] ([Link]()).doubleValue();
} catch(NoSuchElementException e1) {
refresh (in);
} catch(NumberFormatException e2)
{
//[Link]("Error in number, try again.");
}
}
}
// this method is deprecated, but still kept for historical reasons
// prefer BufferedReader version
public static String readString(DataInputStream in) throws IOException
{
if(T==null) refresh (in);
while (true) {
try {return [Link]();}
catch (NoSuchElementException e1) {
refresh (in);
}
}
}
public static String readString(BufferedReader in) throws IOException
{
if(T==null) refresh (in);
while (true) {
try {return [Link]();}
catch (NoSuchElementException e1) {
refresh (in);
}
}
}

public static String readStringLine(DataInputStream in) throws IOException


{
//reads a line of strings from DataInputStream in
int ch;
String r = "";
boolean done = false;
while (!done)
{ try
{ ch = [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if (ch < 0 || (char)ch == '\n' || (char)ch == '\0')
done = true;
else
r = r + (char) ch;
}
catch([Link] e)
{ done = true;
}
}
return [Link](0,([Link]()-1));
}
public static String readStringLine(BufferedReader in) throws IOException
{
//reads a line of strings from BufferedReader in
int ch;
String r = "";
boolean done = false;
while (!done)
{ try
{ ch = [Link]();
if (ch < 0 || (char)ch == '\n' || (char)ch == '\0')
done = true;
else
r = r + (char) ch;
}
catch([Link] e)
{ done = true;
}
}
return [Link](0,([Link]()-1));
}
private static void refresh (DataInputStream in) throws IOException
{
String s = [Link]();
if (s==null) throw new EOFException();
T = new StringTokenizer(s);
}
private static void refresh (BufferedReader in) throws IOException
{
String s = [Link]();
if (s==null) throw new EOFException();
T = new StringTokenizer(s);
}
}
Text sýnýfýný kullanarak sequential bilgiyi dosyadan okuyan [Link] programý altta
verilmiºtir.

Program 10.7 [Link] programý


import [Link].*;
import Text;
class YazOku1 {
public static void main (String args[]) throws IOException
{
String s1="bos String";
String s2="bos String";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String s3="Bos String";
String s4="Bos String";
PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));
[Link]("Merhaba");
[Link]("isminiz nedir");
[Link]("Hosgeldiniz");
[Link]();
Text cfin=new Text("[Link]");
s1=[Link]();
s2=[Link]();
s3=[Link]();
s4=[Link]();
[Link]("s1 = "+s1);
[Link]("s2 = "+s2);
[Link]("s3 = "+s3);
[Link]("s4 = "+s4);
}
}
bu programýn çýktýsý :
s1 = Merhaba
s2 = isminiz
s3 = nedir
s4 = Hosgeldiniz
ºeklindedir. Burada görüldüðü gibi her kelime ayrý bir string olarak algýlanmýºtýr. Bu yapýyý
gerçekleºtiren Text sýnýfý içerisinde kullanýlan StringTokenizer sýnýfýdýr.

String item = [Link]();

ifadesiyle okunmakta olan Stringi cümlelere böler.


Ardýºýk dosya okuma örneði olarak [Link], [Link], [Link], gurubunu verebiliriz.
[Link] Atomlarýn bazý fiziksel özelliklerini tanýmlayan bir programdýr. Program atomlarla
ilgili veriyi [Link] dosyasýndan okumaktadýr.

Program 10.8 [Link] programý


//======================================================
// Thermodynamic Package in java
// Class Atom
// Properties of single atom
// -----------------------------------------------------
// Programmer : Dr. Turhan Coban
// TUBITAK Marmara Research Center
// Energy Systems and Environmental Reasearch Institute
// turhan@[Link]
// -----------------------------------------------------
// File Name : [Link]
// This file contains the atom class
// this class sets basic properties of requested atom
// required data is read from [Link]
// [Link] should be copied to the same directory as your
// [Link] file
// =====================================================
import [Link].*;
import [Link].*;
import Text;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class Atom
{
public int number; // atomic number
public String name; // name of the the atom
public String symbol; // symbol of the atom
public double mass; // mass of the atom
public double N; // number of the atoms
BufferedReader fina;
public Atom()
{
//empty constructor
number=0;
symbol="";
name="";
mass=0;
N=1;
}
//=================================================================
public Atom(int anumber,double NN) throws IOException
{
//this constructor will load Atom data from a given atomic number
//and number of atoms
//type
String atom_name;
String atom_symbol;
double atom_mass;
int atom_number;
try{
fina=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File [Link]\n"+[Link]());
[Link](1);
}
try {
while(fina != null)
{
atom_number=[Link](fina);
atom_name= [Link](fina);
atom_symbol= [Link](fina);
atom_mass=[Link](fina);
if(atom_number==anumber)
{
N=NN;
number=atom_number;
name=atom_name;
symbol=atom_symbol;
mass=atom_mass*N;
break;
}
}
} catch(EOFException e_eof) {[Link](); }
}
public Atom(String st1,double NN) throws IOException
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// this constructor will load Atom data from a given atom name
// or atom symbol and number of atoms
// type
String atom_name;
String atom_symbol;
double atom_mass;
int atom_number;
try{
fina=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File [Link]\n"+[Link]());
[Link](1);
}
try {
while(fina != null)
{
atom_number=[Link](fina);
atom_name= [Link](fina);
atom_symbol= [Link](fina);
atom_mass=[Link](fina);
if([Link](atom_name) || [Link](atom_symbol))
{
N=NN;
number=atom_number;
name=atom_name;
symbol=atom_symbol;
mass=atom_mass*N;
break;
}
}
} catch(EOFException e_eof) {[Link](); }
}
public Atom(String st1) throws IOException
{
// this constructor will load Atom data from a given atom name
// or atom symbol and number of atoms
// type
double NN=1;
String atom_name;
String atom_symbol;
double atom_mass;
int atom_number;
try{
fina=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File [Link]\n"+[Link]());
[Link](1);
}
try {
while(fina != null)
{
atom_number=[Link](fina);
atom_name= [Link](fina);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
atom_symbol= [Link](fina);
atom_mass=[Link](fina);
if([Link](atom_name) || [Link](atom_symbol))
{
N=NN;
number=atom_number;
name=atom_name;
symbol=atom_symbol;
mass=atom_mass*N;
break;
}
}
} catch(EOFException e_eof) {[Link](); }
}
public Atom(Atom a)
{
number=[Link];
name=[Link];
symbol=[Link];
mass=[Link];
N=a.N;
}
public Atom(Atom a, double NN)
{
number=[Link];
name=[Link];
symbol=[Link];
mass=[Link];
N=NN;
}
//=================================================================
public void assign(Atom a)
{
number=[Link];
name=[Link];
symbol=[Link];
mass=[Link];
N=a.N;
}
//=================================================================
//boolean equals logical comparisons
public boolean equals(String s)
{
boolean b;
if([Link](s) || [Link](s))
return true;
else
return false;
}
public boolean equals(int n)
{
boolean b;
if(number==n)
return true;
else

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return false;
}
//=================================================================
public String toString()
{
String st=symbol;
if(N != 1.0)
if(N==[Link](N)) st = st + (int)N;
else st = st + N;
return st;
}
}
//=================================================================

Program 10.9 [Link] programý


//======================================================
// Thermodynamic Package in java
// Class Atom Test//Properties of single atom
// Dr. Turhan Coban
// File Name : [Link]
// This file contains the atom class
// this class sets basic properties of requested atom
// required data is read from [Link].
// =====================================================
import [Link].*;
class AtomTest
{
public static void main(String args[]) throws IOException
{
Atom n2=new Atom("N",2);
[Link]([Link]());
int n=8;
Atom o2=new Atom("O",n);
[Link]([Link]());
}
}
//=================================================================

[Link] girdi dosyasý


1 Hydrogen H 1.00794
2 Helium He 4.002602
3 Lithium Li 6.941
4 Berylium Be 9.012182
5 Boron B 10.811
6 Carbon C 12.011
7Nitrogen N 14.00674
8 Oxygen O 15.9994
9 Florine F 18.9984032
10 Neon Ne 20.1797
11 Sodium Na 22.989768
12 Magnesium Mg 24.305
13 Aliminium Al 26.981539
14 Silicon Ag 28.0855
15 Phosphourus P 30.973762
16 Sulphur S 32.066

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
17 Chlorine Cl 35.4527
18 Argon Ar 39.938
19 Potassium K 39.0983
20 Calcium Ca 40.078
21 Scandium Se 44.95591
22 Titanium Ti 47.88
23 Vanadium V 50.9415
24 Chromium Cr 51.9961
25 Manganese Mn 54.93805
26 Iron Fe 55.587
27 Cobalt Co 58.9332
28 Nickel Ni 58.69
29 Copper Cu 63.546
30 Zink Zn 65.39
31 Gallium Ga 69.723
32 Germanium Ge 72.61
33 Arsenic As 74.92159
34 Selenium Si 78.96
35 Bromine Br 79.904
36 Kyrpton Kr 83.8
37 Rubidium Ru 85.4678
38 Strontium Sr 87.62
39 Yttirum Yt 88.90585
40 Zirconium Zr 91.224
41 Niobium Nb 92.90638
42 Molybdenium Mo 95.94
43 Technetium Tc 98
44 Ruthenium Sm 101.007
45 Rhodium Rh 102.9055
46 Palladium Pd 106.42
47 Silver Ag 107.8682
48 Cadmium Cd 112.411
49 Indium In 114.82
50 Tin Sn 118.71
51 Anthimony Sb 121.75
52 Tellerium Te 127.6
53 Iodine I 126.90447
54 Xenon Xe 131.29
55 Cesium Cs 132.90543
56 Barium Ba 137.327
57 Lanthanum La 138.9055
58 Cerium Ce 140.115
59Praseodymium Pr 140.90765
60 Neodymium Nd 144.24
61 Promethium Pm 145
62 Samarium Sc 150.36
63 Europium Eu 151.965
64 Gadolinium Gd 157.25
65 Terbium Tb 158.92534
66 Dysprosium Dy 162.5
67 Holmium Ho 164.93032
68 Erbium Er 167.26
69 Thulium Tm 168.93421
70 Ytterbium Yb 173.04
71 Lutetium Lu 174.967

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
72 Hafnium Hf 178.49
73 Tantalum Ta 180.9479
74 Tungsten W 183.85
75 Rhenium Re 186.207
76 Osmium Os 190.2
77 Iridium Ir 192.22
78 Platinium Pt 195.08
79 Gold Au 196.96654
80 Mercury Hg 200.59
81 Thallium Tl 204.3833
82 Lead Pb 207.2
83 Bismuth Bi 208.98037
84 Polonium Po 209
85 Astatine At 210
86 Radon Rn 222
87 Francium Fr 223
88 Radium Ra 226
89 Actinium Ac 227
90 Thorium Th 232.0381
91 Protactinium Pa 231
92 Uranium U 238.0289
93 Neptunium Np 237
94 Plutonium Pu 244
95 Americium Am 243
96 Curium Cm 247
97 Berkelium Bk 247
98 Californium Cf 251
99 Einsteinium Es 252
100 Fermium Fm 257
101 Mendelevium Md 258
102 Nobelium No 259
103 Lawrencium Lr 260
Program [Link] çýktýsý :
N2
O8
Burada hemen ºunu kaydedelim. Programdan da anlaºýlacaðý gibi [Link] java’yý öðretme
amacýyla hazýrlanmamýºtýr. Gazlarýn termodinamik özelliklerini hesaplayan bir program
gurubunun parçasý olarak hazýrlanmýºtýr.
10.4 RASLANTISAL ULAªIM DOSYASI OKU (RANDOM ACCESS FILE)
Raslantýsal Ulaºým Dosyasýnýn (Random Access File) Ardýºýk Dosya sisteminden temel farký,
Teyp kaydýyla CD kaydý arasýndaki fark gibidir. Ardýºýk dosyalar Teyp kaydý ºeklinde birbiri
ardý sýra gelen bilgilerden oluºur. Raslantýsal Ulaºým sisteminde ise CD gibi herhangi bir
kayýta kayýt numarasý kullanýlarak doðrudan ulaºmak mümkündür. Raslantýsal Ulaºým
dosyasý iºlemleri RandomAccessFile sýnýfý üzerinden yapýlýr. Bu sýnýfýn tanýmý :
public class RandomAccessFile extends Object implements DataOutput, DataInput
{
public RandomAccessFile(String name,String mode) throws IOException
public RandomAccessFile(File file,String mode) throws IOException
public final FileDescriptor getFD() throws IOException
public int read() throws IOException
public int read(byte b[],int off,int len) throws IOException
public int read(byte b[]) throws IOException
public final void readFully(byte b[]) throws IOException
public final void readFully(byte b[],int off,int len) throws IOException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int skipBytes(int n) throws IOException
public void write(int b) throws IOException
public void write(byte b[]) throws IOException
public void write(byte b[],int off,int len) throws IOException;
public long getFilePointer() throws IOException;
public void seek(long pos) throws IOException;
public void seek(long pos) throws IOException;
public long length() throws IOException;
public void close() throws IOException;
public final byte readByte() throws IOException;
public final int readUnsignedByte() throws IOException;
public final short readShort() throws IOException;
public final int readUnsignedShort() throws IOException;
public final char readChar() throws IOException;
public final int readInt() throws IOException;
public final long readLong() throws IOException;
public final float readFloat() throws IOException;
public final double readDouble() throws IOException;
public final String readLine() throws IOException;
public final String readUTF() throws IOException;
public final void writeBoolean(boolean v) throws IOException;
public final void writeByte(int v) throws IOException;
public final void writeShort(int v) throws IOException;
public final void writeChar(int v) throws IOException;
public final void writeInt(int v) throws IOException;
public final void writeLong(long v) throws IOException;
public final void writeFloat(float v) throws IOException;
public final void writeDouble(double v) throws IOException;
public final void writeBytes(String s) throws IOException;
public final void writeChars(String s) throws IOException;
public final void writeUTF(String str) throws IOException;
}
Burada tanýmlanan metodlarýn görevlerine kýsaca bir bakacak olursak :
getFD() : dosya (File) tanýmýný verir
getFilePointer() : Dosyanýn (File) o anda hangi dosya referansýný gösterdiðini belirtir.
length() : Dosyadaki toplam referans sayýsýný verir.
read() : Byte (char deðiºkeni karºýlýðý) olarak dosyadan bilgiyi okur (bir byte).
read(byte[]) : Byte (char deðiºkeni karºýlýðý) olarak dosyadan bilgiyi okur (byte[] deðiºkeninin
boyu kadar) ve byte degiºkenine aktarýr.
read(byte[], int baslangýç_indisi, int indis_boyutu) : Byte (char deðiºkeni karºýlýðý) olarak
dosyadan bilgiyi okur (byte[] deðiºkeninin boyu kadar, baºlangýç indisinden baºlayarak,
indis_boyutu uzunluðunda) ve byte degiºkenine aktarýr.
readBoolean() : boolean deðiºken okur
readByte() : dosyadan integer tipi byte deðiºken (iºaretli 8-bit ) okur.
readChar() : Dosyadan Unicode karekter (character) okur.
readDouble() : Dosyadan double deðiºkeni okur.
readFloat() : Dosyadan float deðiºkeni okur.
readFully(byte[] b) : dosyadan byte olarak okur
readFully(byte[] b, int baslangýç_indisi, int toplam_boy) : dosyadan bte olarak sadece
byte boyutlu deðiºkeninin baºlangýc_indisi’nden baºlamak üzere taplam_boy kadar kýsmýný
okur.
readInt() : Dosyadan int deðiºkeni okur.
readLine() : Dosyadan “\n” = yeni satýr iºaretini veya “\r” satýrbaºý iºaretini veya herikisini
birden arka arkaya görene kadar yazýlan her ºeyi bütün bir satýr olarak okur.
readLong(): Dosyadan Long (Long integer) deðiºkeni okur.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
readShort(): Dosyadan Short (Short integer) deðiºkeni okur.
readUnsignedByte(): ݺaretsiz Byte deðeri okur.
readUnsignedShort(): ݺaretsiz 16 bitlik Short integer deðeri okur.
readUTF() : UTF stringi okur
seek(long) : indisi herhangi bir bilgi gurubu indisine ayarlar.
skipBytes(int n) : n bit input deðerini okumadan atlar
Aºaðýdaki tanýmlar read tanýmlarýna parelel olan write terimleridir.
write(byte[]) : byte boyutlu deðiºkenini yazar.
write(byte[],int baslangýç_indisi, int toplam_boy) : dosyaya byte olarak sadece byte
boyutlu deðiºkeninin baºlangýc_indisi’nden baºlamak üzere taplam_boy kadar kýsmýný yazar.
write(int) : dosyaya byte boyutlu deðiºkenini yazar
writeBoolean(boolean) : dosyaya boolean boyutlu deðiºkenini yazar
writeByte(int) : dosyaya int girdisini byte olarak yazar
writeBytes(String) : dosyaya String girdisini byte boyutlu deðiºkeni olarak yazar
writeChar(int) : dosyaya int girdisini Char olarak yazar
writeChars(String) : dosyaya string girdisini char boyutlu deðiºkeni olarak yazar
writeDouble(double) : dosyaya double girdisini double olarak yazar.
writeFloat(float) : dosyaya float girdisini float olarak yazar
writeInt(int) : dosyaya int girdisini int olarak yazar.
writeLong(long) : dosyaya long(integer) girdisini long(integer) olarak yazar
writeShort(int) : dosyaya integer gidisini short(integer) olarak yazar.
writeUTF(String) : dosyaya String girdisini UTF string olarak yazar.
RandomAccessFile sýnýfýnýn tanýmýndan da görüldüðü gibi b sýnýf DataOutput ve DataInput
sýnýflarýný implement eder. DataOutput ve DataInput sýnýflarýnýný tanýmý :
public interface DataOutput
{
public abstract void write(int b) throws IOException
public abstract void write(byte b[]) throws IOException
public abstract void write(byte b[],int off,int len) throws IOException
public abstract void writeBoolean(boolean v) throws IOException
public abstract void writeByte(int v) throws IOException
public abstract void writeShort(int v) throws IOException
public abstract void writeChar(int v) throws IOException
public abstract void writeInt(int v) throws IOException
public abstract void writeLong(long v) throws IOException
public abstract void writeFloat(float v) throws IOException
public abstract void writeDouble(double v) throws IOException
public abstract void writeBytes(String s) throws IOException
public abstract void writeChars(String s) throws IOException
public abstract void writeUTF(String str) throws IOException
}
public interface DataInput
{
public abstract void readFully(byte b[]) throws IOException
public abstract void readFully(byte b[],int off,int len) throws IOException
public abstract int skipBytes(int n) throws IOException
public abstract boolean readBoolean() throws IOException
public abstract byte readByte() throws IOException
public abstract int readUnsignedByte() throws IOException
public abstract short readShort() throws IOException
public abstract int readUnsignedShort() throws IOException
public abstract int readInt() throws IOException
public abstract long readLong() throws IOException
public abstract float readFloat() throws IOException
public abstract double readDouble() throws IOException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public abstract String readLine() throws IOException
public abstract String readUTF() throws IOException
}
RandomAccessFile Çok daha çabuk ulaºým olanaklarý yaratýr. Raslantýsal Ulaºým dosyasý
örneði olarak aºaðýdaki paketi veriyoruz. Kayit sýnýfý tek bir kayýtýn yazýlýp okunabilmesi için
gerekli olan bilgileri içeriyor. Kayýtlarýn hesap numarasý, isim, soyisim ve hesaptaki paradan
oluºtuðunu kabul ediyoruz. Bütün bu kayýtlarý bir arada yapmak için oku ve yaz metotlarý bu
sýnýfýn içindr tanýmlanmýºtýr. Raslantýsal ulaºým kanalýnýn dosyaya açýlmasý için :
try{
girdi=new RandomAccessFile("[Link]","rw");
} catch(IOException e)
{
[Link]("Dosya acma hatasi\n"+[Link]());
[Link](1);
}
yapýsý kullanbilir. Buradaki “rw” yapýsý dosyaya hem yazý yazýlýp hem okunabileceðini belirtir.
“r” sadece okumak için “w” sadece yazmak için kullanýlýr.
RandomAccessFile içinde yer alan
close() metodu RandomAccessFile (Raslantýsal Ulaºým Dosyasý) kanalýný ve ilgili tüm
sýnýflarý kapatýr. örnek olarak :
private void closeFile()
{
try{
[Link]();
[Link](0);
}
catch(IOException e)
{
[Link]("Error closing filr\n"+[Link]());
[Link](1);
}
}
metotu verilebilir.
ªimdi de örnek programýn listelerini verelim:
Program 10.10 [Link] raslantýsal ulaºým dosyasý kayýt programý
import [Link].*;
public class Kayit
{
private int hesap;
private String soyIsim;
private String Isim;
private double hesaptakiPara;
public void oku(RandomAccessFile dosya) throws IOException
{
//RandomAccessFile = Raslantisal Ulasim dosyasi
hesap=[Link]();
char first[]=new char[15];
for(int i=0;i<[Link];i++)
{ first[i]=[Link](); }
Isim=new String(first);
char last[]=new char[15];
for(int i=0;i<[Link];i++)
{ last[i]=[Link](); }
soyIsim=new String(last);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
hesaptakiPara=[Link]();
}
public void yaz(RandomAccessFile dosya) throws IOException
{
StringBuffer buf;
[Link](hesap);
if(Isim!=null)
buf=new StringBuffer(Isim);
else
buf=new StringBuffer(15);
[Link](15);
[Link]([Link]());
if(soyIsim!=null)
buf=new StringBuffer(soyIsim);
else
buf=new StringBuffer(15);
[Link](15);
[Link]([Link]());
[Link](hesaptakiPara);
}
public void yazhesap(int a) {hesap = a;}
public int okuhesap() {return hesap;}
public void yazIsim(String f){Isim=f;}
public String okuIsim() {return Isim;}
public void yazsoyIsim(String f){soyIsim=f;}
public String okusoyIsim() {return soyIsim;}
public void yazhesaptakiPara(double b) {hesaptakiPara=b;}
public double okuhesaptakiPara() {return hesaptakiPara;}
public static int boyut() {return 72;}
}
Program 10.11 RaslantisalUlasimDosyasiYarat .java programý

import [Link].*;
import [Link].*;
import [Link].*;
import Kayit;
public class RaslantisalUlasimDosyasiYarat
{
private Kayit hesapDosyasi;
private RandomAccessFile girdi;
public RaslantisalUlasimDosyasiYarat()
{
hesapDosyasi = new Kayit();
try{
girdi = new RandomAccessFile("[Link]","rw");
for(int i=0;i<100;i++)
{ [Link](girdi); }
} catch(IOException e)
{
[Link]("Dosya acma hatasi\n"+[Link]());
[Link](1);
}
}
public static void main(String args[])
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
RaslantisalUlasimDosyasiYarat H=
new RaslantisalUlasimDosyasiYarat();
}
}
Program 10.12 RaslantisalUlasimDosyasiYaz .java programý

import [Link].*;
import [Link].*;
import [Link].*;
import Kayit;
public class RaslantisalUlasimDosyasiYaz extends Frame implements ActionListener
{
private TextField hesapAlani,isimAlani,soyisimAlani,hesaptakiParaAlani;
private Button birsonraki,kapat;
private RandomAccessFile girdi;
private Kayit hesapDosyasi;
public RaslantisalUlasimDosyasiYaz()
{
super("Tesadufi ulasim dosyasina yaz");
hesapDosyasi=new Kayit();
try{
girdi=new RandomAccessFile("[Link]","rw");
} catch(IOException e)
{
[Link]("Dosya acma hatasi\n"+[Link]());
[Link](1);
}
setSize(300,150);
setLayout(new GridLayout(5,2));
add(new Label("Hesap numarasi:"));
hesapAlani=new TextField();
add(hesapAlani);
add(new Label("isim : "));
isimAlani=new TextField(20);
add(isimAlani);
add(new Label("Soyisim : "));
soyisimAlani=new TextField(20);
add(soyisimAlani);
add(new Label("Hesaptaki para : "));
hesaptakiParaAlani=new TextField(20);
add(hesaptakiParaAlani);
birsonraki=new Button("Gir");
[Link](this);
add(birsonraki);
kapat=new Button("cikis");
[Link](this);
add(kapat);
setVisible(true);
}
public void addKayit()
{
int accountNumber=0;
Double d;
if(![Link]().equals(""))
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try{
accountNumber=[Link]([Link]());
if(accountNumber0 && accountNumber <=100)
{
[Link](accountNumber);
[Link]([Link]());
[Link]([Link]());
d=new Double([Link]());
[Link]([Link]());
[Link]((long)(accountNumber-1)*[Link]());
[Link](girdi);
}
[Link]("");
[Link]("");
[Link]("");
[Link]("");
}
catch(NumberFormatException nfe)
{
[Link]("Hesap numarasi tamsayi degisken olamalidir");
}
catch(IOException io)
{
[Link]("Dosyaya yazarken hata olustu\n"+[Link]());
[Link](1);
}
}
}
public void actionPerformed(ActionEvent e)
{
addKayit();
if([Link]()==kapat)
{
try{ [Link]();}
catch(IOException io)
{
[Link]("Dosya kapatilamadi\n"+[Link]());
}
[Link](0);
}
}
public static void main(String args[])
{
new RaslantisalUlasimDosyasiYaz();
}
}
Program 10.13 RaslantisalUlasimDosyasiOku .java programý

import [Link].*;
import [Link].*;
import [Link].*;
import Kayit;
public class RaslantisalUlasimDosyasiOku extends Frame implements ActionListener
{
private TextField hesapAlani,isimAlani,soyisimAlani,hesaptakiParaAlani;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private Button birsonraki,kapat;
private RandomAccessFile girdi;
private Kayit hesapDosyasi;
public RaslantisalUlasimDosyasiOku()
{
super("Musteri dosyasini oku");
try{
girdi=new RandomAccessFile("[Link]","r");
} catch(IOException e)
{ [Link]("Dosya acilamadi\n"+[Link]());
[Link](1);
}
hesapDosyasi=new Kayit();
setSize(300,150);
setLayout(new GridLayout(5,2));
add(new Label("Hesap numarasi :"));
hesapAlani=new TextField();
add(hesapAlani);
add(new Label("isim : "));
isimAlani=new TextField(20);
add(isimAlani);
add(new Label("soyisim : "));
soyisimAlani=new TextField(20);
add(soyisimAlani);
add(new Label("Hesaptaki para : "));
hesaptakiParaAlani=new TextField(20);
add(hesaptakiParaAlani);
birsonraki=new Button("bir sonraki hesap");
[Link](this);
add(birsonraki);
kapat=new Button("cikis");
[Link](this);
add(kapat);
setVisible(true);
}
public void okuKayit()
{
int hesap;
String ilk,son;
double balance;
{
try{
do{
[Link](girdi);
} while([Link]()==0);
[Link]([Link]([Link]()));
[Link]([Link]([Link]()));
[Link]([Link]([Link]()));
[Link]([Link]([Link]()));
}
catch(EOFException eof)
{
closeFile();
}
catch(IOException io)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
[Link]("Dosyayý okurken hata olustu\n"+[Link]());
[Link](1);
}
}
}
public void actionPerformed(ActionEvent e)
{
if([Link]()==birsonraki)
okuKayit();
else
closeFile();
}
private void closeFile()
{
try{
[Link]();
[Link](0);
}
catch(IOException e)
{
[Link]("Error closing filr\n"+[Link]());
[Link](1);
}
}
public static void main(String args[])
{
new RaslantisalUlasimDosyasiOku();
}
}
[Link]

ªekil 10.3 [Link] Frame çýktýsý


Yukardaki programýn ilginç bir yönü de Frame sýnýfýný kullanmýº olmasýdýr. Frame ve swing
eºiti JFrame konsol ortamýnda kullanýlabilen grafik ortamý programlamasýdýr. Temel olarak
applet yapýlarýnda kullanýlan heryerde Frame de kullanýlabilir. Frame main programdan
baºlatýlýr. Html dosyasýndan baºlatýlmaz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
10.5 DOSYA SIKIªTIRILMASI (GZIP,GUNZIP,ZIP,UNZIP)
[Link] paketi veri sýkýºtýrmaya yarayan dosyalarýiçerir. Günümüz bilgisayar kullanýmýnda
GZIP ve ZIP adý verilen bu yapýlar ZLIB sýkýºtýrma algoritmasýnda tanýmlanmýºtýr. Bu algoritm
RFC 1950,RFC 1951 ve RFC 1952 dökümanlarýnda tanýmlanmýºtýr. Bu dökümanlara
[Link] adresinden ulaºýlabilir. Kullanma açýsýndan bu dökümanlara
ihtiyacýnýz yoktur. Gerekli programlar java zip paketinde bulunmaktadýr.
GZIP tek bir dosyayý sýkýºtýrarak [Link] ismiyle sýkýºtýrýlmýº dosya oluºturur. Bunun için
GZIPOutputStream dosyasýna bir FileOutptStream açmamýz kafidir. Program 10.4 den de
görüleceði gibi
GZIPOutputStream zipout;
try {
FileOutputStream out = new FileOutputStream(zipname);
zipout = new GZIPOutputStream(out);
}
catch (IOException e) {
[Link](null,"Dosya oluºturma hatasý : " + zipname + ".");
return;
}
deyimi dosyanýn gzip olarak yazýlmasý için gerekli kanalý oluºturur.
Program 10.14 [Link] dosya sýkýºtýrma programý
//dosya: [Link]
import [Link].*;
import [Link].*;
import [Link];
public class GZip {
public static int sChunk = 8192;
public static void main(String[] args) {
if ([Link] != 1) {
[Link](null,"KULLANIM: java GZip girisdosyasi");
return;
}
// çýktý doyasý oluºtur.
String zipname = args[0] + ".gz";
GZIPOutputStream zipout;
try {
FileOutputStream out = new FileOutputStream(zipname);
zipout = new GZIPOutputStream(out);
}
catch (IOException e) {
[Link](null,"Dosya oluºturma hatasý : " + zipname + ".");
return;
}
byte[] buffer = new byte[sChunk];
// dosyayý sýkýºtýr
try {
FileInputStream in = new FileInputStream(args[0]);
int length;
while ((length = [Link](buffer, 0, sChunk)) != -1)
[Link](buffer, 0, length);
[Link]( );
}
catch (IOException e) {
[Link](null,"Dosya sýkýºtýrma hatasý : " + args[0] + ".");
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try { [Link]( ); }
catch (IOException e) {}
}
}
GZIP iºleminin tersini yapmak içinse parelel olarak :
GZIPInputStream zipin;
try {
FileInputStream in = new FileInputStream(zipname);
zipin = new GZIPInputStream(in);
}
catch (IOException e) {
[Link](null,"Dosya açma hatasý : " + zipname + ".");
return;
}
yapýsý kullanýlýr.
Programlarýn çalýºmasý için java isim deyiminden sonra dostya ismini vermek kafidir.
C:\co\java\prog>java Gzip [Link]
veya
C:\co\java\prog >java Gunzip [Link]
gibi.
Program 10.15 [Link] dosya sýkýºtýrýlmýº dosyayý açma programý
//dosya : [Link]
import [Link].*;
import [Link].*;
import [Link];
public class GUnzip {
public static int sChunk = 8192;
public static void main(String[] args) {
if ([Link] != 1) {
[Link](null,"KULLANIM: java GUnzip girisdosyasi");
return;
}
// girdi dosyasýný incele
String zipname, source;
if (args[0].endsWith(".gz")) {
zipname = args[0];
source = args[0].substring(0, args[0].length( ) - 3);
}
else {
zipname = args[0] + ".gz";
source = args[0];
}
GZIPInputStream zipin;
try {
FileInputStream in = new FileInputStream(zipname);
zipin = new GZIPInputStream(in);
}
catch (IOException e) {
[Link](null,"Dosya açma hatasý : " + zipname + ".");
return;
}
byte[] buffer = new byte[sChunk];
// dosyayý aç (decompress)
try {
FileOutputStream out = new FileOutputStream(source);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int length;
while ((length = [Link](buffer, 0, sChunk)) != -1)
[Link](buffer, 0, length);
[Link]( );
}
catch (IOException e) {
[Link](null,"Dosya sýkýºtýrýlmasý açýlma hatasý : " + args[0] + ".");
}
try { [Link]( ); }
catch (IOException e) {}
}
}
ZIP ve UNZIP biraz daha kompleks bir yapýya sahiptir. Çünki bu proseste direktory içindeki
dosyalarýn açýlma iºlemi söz konusudur.
Prosesi izah etmek için önce ZIP iºlemi yapan bir programa göz atalým :
Program 10.16 [Link] dosya sýkýºtýrma programý
// dosya : [Link]
// Turhan Çoban 24.2.2001
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
public class zip {
public static int sChunk = 8192;
public static String[] dosyalistesi(String p)
{
File path=new File(p);
if([Link]())
{
Vector x=new Vector();
File files[];
files=[Link]();
int n=[Link];
int n1=0;
for(int i=0;i<n;i++)
{
if(!files[i].isDirectory())
{
[Link](files[i].toString());
n1++;
}
}
String s1[];
s1=new String[n1];
Enumeration nn=[Link]();
int k=0;
while([Link]())
{
s1[k++]=(String)[Link]();
}
return s1;
}
else
{
String[] s1 = new String[1];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s1[0]=p;
return s1;
}
}
public static void main(String[] args) {
String str="";
FileOutputStream out;
ZipOutputStream zout;
String zipname, source;
String s="KULLANIM: \n"+
"java zip zipdosyasý dosya(veyadirectory)ismi1 dosya(veyadirectory)ismi1...\n"+
" zip dosyasý yarat ve dosya(veya directorylerdeki dosyalarý) sýkýºtýr "+
" alt direktoryler atlanmaktadýr tekrar tanýmla";
// anahtarý kontrol et
if([Link]<1 )
{
String s1="zipdosyasý [Link] tanýmlanmadý lütfen argümanlarý giriniz\n"+s;
[Link](null,s1);
[Link](0);
return;
} // girdi dosyasýný incele
else if([Link]<2)
{
String s1="sýkýºtýrýlacak dosya(veya direktory) isimleri tanýmlanmadý\n"+
" lütfen argümanlarý giriniz\n"+s;
[Link](null,s1);
[Link](0);
return;
}
if (args[0].endsWith(".zip")) {
zipname = args[0];
source = args[0].substring(0, args[0].length( ) - 3);
}
else {
zipname = args[0] + ".zip";
source = args[0];
}
//zip kanalýný tanýmla
try {
out = new FileOutputStream(zipname);
zout=new ZipOutputStream(out);
}
catch (IOException e) {
[Link](null,"Dosya oluºturma hatasý : " + zipname + ".");
return;
}
int k=1;
while(k<[Link])
{
try
{
String ss[];
ss=dosyalistesi(args[k]);
int j=0;
byte[] buffer=new byte[sChunk];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
while(j<[Link])
{
ZipEntry giris=new ZipEntry(ss[j]);
[Link](giris);
try {
FileInputStream in=new FileInputStream(ss[j]);
int length;
while((length=[Link](buffer,0,sChunk))!=-1)
[Link](buffer,0,length);
[Link]();
} //try sonu
catch (IOException e)
{
[Link](null,"Dosya sýkýºtýrma hatasý : " +ss[j] );
} //catch sonu }
str+="ss["+j+"] = "+ss[j]+" "+giris+" iceri girdi\n";
j++;
}//while sonu
} //try sonu
catch(IOException io) {}
k++;
} //while(k< sonu
try{
[Link]();
[Link]();
}
catch(IOException e){}
[Link](null,str);
[Link](0);
}
}
örnek program girdisi :
java zip [Link] c:\co\java\prog\a [Link] c:\co\java\prog\a\b
[Link]

ªekil 10.3 [Link] programýný çýktýsý


ºimdi de ZIP yapýlmýº bir dosyayý açan [Link] programýna bir göz atalým :
Program 10.16 [Link] dosya sýkýºtýrýlmýº dosyayý açma programý
//dosya : [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import [Link].*;
import [Link];
public class Unzip {
public static int sChunk = 8192;
public static void main(String[] args) {
String zipname, source;
String s="";
if ([Link] != 1) {
[Link](null,"KULLANIM: java Unzip girisdosyasi");
[Link](0);
return;
}
// girdi dosyasýný incele
if (args[0].endsWith(".zip")) {
zipname = args[0];
source = args[0].substring(0, args[0].length( ) - 3);
}
else {
zipname = args[0] + ".zip";
source = args[0];
}
s+="zip dosyasý : "+zipname+" içideki sýkýºtýrýlmýº \n";
try {
FileInputStream in = new FileInputStream(zipname);
ZipInputStream zin=new ZipInputStream(in);
byte[] buffer = new byte[sChunk];
// dosyayý aç (decompress
try{
ZipEntry z;
do
{
z=[Link]();
try {
FileOutputStream out = new FileOutputStream([Link]());
int length;
while ((length = [Link](buffer, 0, sChunk)) != -1)
[Link](buffer, 0, length);
[Link]( );
}
catch (IOException e) {
[Link](null,
"Dosya sýkýºtýrma hatasý : " + args[0] + ".");
[Link](0);
}
s+=" "+[Link]()+" \n";
}while(z!=null);
} catch(NullPointerException npe)
{ s+="dosyalarý açýldý";[Link](null,s);
[Link](0);
}
try { [Link](); } catch (IOException e) {}
}
catch(IOException e)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](null,"Dosya açýlma hatasý : " + zipname);
[Link](0);
}
}
}
programý
java unzip [Link]
komutu kullanarak çalýºtýrýrsak :
[Link]

ªekil 10.4 [Link] programýný çýktýsý


Çýktýsýný elde ederiz.
Burada zip dosyasýna ulaºmak için :
FileInputStream in = new FileInputStream(zipname);
ZipInputStream zin=new ZipInputStream(in);
Deyimini kullandýk. Zipli dosyayý okumak için ise :
ZipEntry z;
do
{
z=[Link]();
try {
FileOutputStream out = new FileOutputStream([Link]());
int length;
while ((length = [Link](buffer, 0, sChunk)) != -1)
[Link](buffer, 0, length);
[Link]( );
}
gurubunu kullandýk. Burada temel olarak iki yeni sýnýf kullanýldý. Bunlardan birincisi
ZipInputStream, diðeri ise ZipEntry sýnýflarý idi. ªimdi bu iki sýnýfýn tanýmlarýna göz atalým :
public class ZipInputStream extends InflaterInputStream implements ZipConstants {
private ZipEntry entry;
private CRC32 crc;
private long remaining;
private byte[] tmpbuf ;
private static final int STORED;
private static final int DEFLATED;
private boolean closed ;
private boolean entryEOF;
private void ensureOpen() throws IOException;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public ZipInputStream(InputStream in) ;
public ZipEntry getNextEntry() throws IOException;
public void closeEntry() throws IOException;
public int available() throws IOException ;
public int read(byte[] b, int off, int len) throws IOException;
public long skip(long n) throws IOException ;
public void close() throws IOException;
private ZipEntry readLOC() throws IOException;
private static String getUTF8String(byte[] b, int off, int len) throws IOException;
protected ZipEntry createZipEntry(String name) throws IOException;
private void readEnd(ZipEntry e) throws IOException;
private void readFully(byte[] b, int off, int len) throws IOException;
private static final int get16(byte b[], int off);
private static final long get32(byte b[], int off);
}
ZipOutputStream’in tanýmý ise :
public class ZipOutputStream extends DeflaterOutputStream implements ZipConstants {
private ZipEntry entry;
private Vector entries;
private Hashtable names ;
private CRC32 crc;
private long written;
private long locoff ;
private String comment;
private int method ;
private boolean finished;
private boolean closed = false;
private void ensureOpen() throws IOException
public static final int STORED ;
public static final int DEFLATED;
public ZipOutputStream(OutputStream out)
public void setComment(String comment)
public void setMethod(int method
public void setLevel(int level)
public void putNextEntry(ZipEntry e) throws IOException
public void closeEntry() throws IOException
public void close() throws
private void writeLOC(ZipEntry e) throws IOException
private void writeEXT(ZipEntry e) throws IOException
private void writeCEN(ZipEntry e) throws IOException
private void writeEND(long off, long len) throws IOException
private void writeShort(int v) throws IOException
private void writeInt(long v) throws IOException
private void writeBytes(byte[] b, int off, int len) throws IOException
private static byte[] getUTF8Bytes(String s)
}
ºeklindedir. Ayrýca zip dosyasýnýn içindeki elemanlar ZipEntry sýnýfýnda tanýmlanmaktadýr.
ZipEntry sýnýfý :
public class ZipEntry implements ZipConstants, Cloneable
{
String name;
long time;
long crc ;
long size;
long csize;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int method;
byte[] extra;
String comment;
int flag;
int version;
long offset;
public static final int STORED ;
public static final int DEFLATED;
private static native void initIDs();
public ZipEntry(String name)
public ZipEntry(ZipEntry e
ZipEntry(String name, long jzentry
ZipEntry(long jzentry)
public String getName()
public void setTime(long time)
public long getTime()
public void setSize(long size)
public long getSize()
public long getCompressedSize()
public void setCompressedSize(long csize)
public void setCrc(long crc)
public long getCrc()
public void setMethod(int method)
public int getMethod()
public void setExtra(byte[] extra)
public byte[] getExtra()
public void setComment(String comment)
public String getComment()
public boolean isDirectory()
public String toString()
private static long dosToJavaTime(long dtime)
private static long javaToDosTime(long time)
public int hashCode()
public Object clone()
}
ºeklinde tanýmlanmýºtýr. Burada ºu ana kadar verdiðimiz sýnýf tanýmlarý ile ilgili ºunu
söyliyelim. Tanýmlamalar sadece sýnýf ve deðiºken adlarýný vermektedir, gerçek programý
açtýðýnýzda göreceðiniz koda benzemezler sadece metod isimlerini taºýrlar.
10.6 ALIªTIRMALAR
1. [Link] programýný inceleyiniz. Bu programda sayýlar dosyadan okunup ortalamalarý
hesaplanmaktadýr.
Program 10.14 [Link] programý

import [Link].*;
import Text;
// (c) Ali SAYGIVAR
public class H9O1
{
public static void main(String[] args) throws IOException
{
DataInputStream input;
int[] i= new int[100];
String s1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Text cin= new Text();
[Link]("Lutfen dosya ismini giriniz: ");
s1 = [Link]();
File myfile = new File(s1);
BufferedReader b= new BufferedReader(new FileReader(myfile));
int toplam=0;
boolean EOF=false;
int j=0;
while (!EOF)
{
try
{
i[j]= [Link](b);
toplam+=i[j];
++j;
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
[Link]("Dosyanin icindeki sayilarin adedi: "+j);
[Link]("Ortalama: "+(double)toplam/20);
} //main
} //class
2. [Link] verilen iki sosyayý karºýlaºtýrmaktadýr. Dosya isimleri program kullanýmý
sýrasýnda verilecektir. Örnek :
java Karsilastir [Link] [Link]
Program 10.15 Karsilastir. java programý

import [Link].*;
public class Karsilastir {
//——————————————————————————————————————
// RandomAccessFile örneði
// program main()
//
// dýºarýdan iki tane dosya ismi giriniz
// dosyalarý açar ve içindekileri yükler
// dosyalarý deðerlendirir (karºýlaºtýrýr)
// dosyalarý kapatýr
//———————————————————————————————————
public static void main (String args[]) {
RandomAccessFile fh1 = null;
RandomAccessFile fh2 = null;
int bufsize; // en küçük dosyanýn byutu
long filesize1 = -1;
long filesize2 = -1;
byte buffer1[];
byte buffer2[];
// dýºarýdan okunan veriyi kontrol et
if ([Link] == 0 || args[0].equals("?") ) {
[Link] ("Random Acsess dosya Karºilaºtirma : ");
[Link] ("-----");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] ("KULLANIM : java Karsilastir <dosya1> <dosya2> | ?");
[Link] ();
[Link](0);
}
// birinci dosyayý okumak için aç
try {
fh1 = new RandomAccessFile(args[0], "r");
filesize1 = [Link]();
} catch (IOException ioErr) {
[Link] ("Dosya bulunamadi : " + args[0]);
[Link] (ioErr);
[Link](100);
}
// ikinci dosyayý okumak için aç
try {
fh2 = new RandomAccessFile (args[1], "r");
filesize2 = [Link]();
} catch (IOException ioErr) {
[Link] ("Dosya bulunamadi :" + args[1]);
[Link] (ioErr);
[Link](100);
}
if (filesize1 != filesize2) {
[Link] ("Dosya boyutlari ayni degil! ");
[Link] ("Dosya 1 : " + args[0] + "boyutu " + filesize1 + " bytes");
[Link] ("Dosya 2 : " + args[1] + "boyutu " + filesize2 + " bytes");
}
// iki dosyanýnda içeriðini alabilecek bir yer ayýr
bufsize = (int) [Link](filesize1, filesize2);
buffer1 = new byte [bufsize];
buffer2 = new byte [bufsize];
// dosyalarý toptan oku
try {
[Link] (buffer1, 0, bufsize);
[Link] (buffer2, 0, bufsize);
// ºimdi gelelim asýl iºimize...
for (int i = 0; i < bufsize; i++) {
if (buffer1[i] != buffer2[i]) {
[Link] ("dosyalar index " + i+"de degisiyor");
break;
}
}
} catch (IOException ioErr) {
[Link] ("HATA: dosyalarý icelerken bir hata oluºtu");
[Link] ([Link]());
} finally {
try {
[Link]();
[Link]();
} catch (IOException ignored) {}
}
}
}
3. File sýnýfý uygulamasý : [Link] programý istenilen directory ve alt dirctory dosyalarýný
sýrayla listeler.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 10.16 [Link] programý
//------------------------------------
import [Link].*;
import [Link].*;
public class dir {
static int indentLevel = -1;
dir (String path) {
listPath (new File (path));
}
void listPath (File path) {
File files[]; // directory'dekidosyalarýn listesi
indentLevel++; // sayýlýyor...
// bu directory'deki dosyalarýn listesini hazýrla
files = [Link]();
// Dosya isimlerini sýraya sok
[Link] (files);
for (int i=0, n=[Link]; i < n; i++) {
for (int indent=0; indent < indentLevel; indent++) {
[Link](" ");
}
[Link](files[i].toString());
if (files[i].isDirectory()) {
listPath(files[i]);
}
}
indentLevel--;
}
public static void main (String args[]) {
new dir(args[0]);
}
}
java dir c:\Driver\hpscanner\disk1
komutu sonucu :
C:\Drive\hpscanner\disk1\![Link]
C:\Drive\hpscanner\disk1\![Link]
C:\Drive\hpscanner\disk1\@[Link]
C:\Drive\hpscanner\disk1\@[Link]
C:\Drive\hpscanner\disk1\_inst32i.ex_
C:\Drive\hpscanner\disk1\_isdel.exe
4. [Link] sýnýfý içerisindeki public static String[] dosyalistesi(String p) metodu alt direktoryleri
okumadan atlamaktadýr. Alt direktoryleri de okuyup zipleyecek yeni bir [Link] programý
yazýnýz.
5. Bu problemde gerçek bir bilgisayar programlama örneðine göz atacaðýz. Program 10.8 de
[Link] programýna bakmýºtýk, bu problemde [Link] programý kullanýlarak yazýlmýº
olan [Link] programýna yer vereceðiz. Bu program ideal gazlarýn termodinamik özelliklerin
hesaplamak amacýyla yazýlmýºtýr. Program ideal gazlarýn verilerini [Link] dosyasýndan
akumaktadýr. Gaz isimleri kurucu metod tarafýndan aranan gaz isimlerine uyum saðladýðýnda
program geriye kalan veriyi okumaktadýr. Gazlar atomlardan yapýldýðýndan veride okunan
Atom isimlerine göre Atom özellikleri de bu sýnýfýn kurucu metodunda [Link] dosyasýndan
okunmakta ve deðerlendirilmektedir. Program çýktýsý almak için [Link]
programý da ayrýca verilmiºtir. Burada verilen kod özellikle bu kitap için yazýlmamýºtýr.
Uluslararasý projelerde kullanýldýðýndan açýklamalarý ingilizcedir.
Program 10.16 Gas .java programý
//======================================================
// Thermodynamic Package in java

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Class Gas Properties of perfect gases
// Dr. Turhan Coban
// TUBÝTAK Marmara Research Center
// Energy Systems and Environmental Research Institute
// email : turhan@[Link]
// File Name : [Link]
// This file contains the Gas class
// this class sets basic properties of perfect gases
// required data is read from [Link]
// =====================================================
// Description : This file contains the gas class
// class gas calculates thermophysical properties of
// perfect gasses
// following properties can be calculated
// T() : Temperature degree K
// h(T) : enthalpy KJ/kmol
// hf : formation enthalpy KJ/kg
// ht(T) : total enthalpy KJ/kg (h+hf)
// M : molar mass kg/kmol
// HT(T) : total enthalpy KJ : M*ht(T)
// P() : presuure bar
// s(T,P) : entropy KJ/kmol K
// Cp(T) : specific heat at constant pressure KJ/kmol K
// Cv(T) : specific heat at constant volume KJ/kg K
// gamma(T): adiabatic constant Cp/Cv
// u(T) : Internal energy KJ/kmol
// c(T) : speed of sound m/s
// vis(T) : viscosity Ns/m^2
// k(T) : thermal conductivity KJ/kg K
// DATA FILE DEFINATION
// gas datas are written in the data file "[Link]"
// if gas data is not given in the data file, it can be curve fitted
// and added to the data file. Additional curve fitting programs supplied
// in Numerical Analysis package. Each data has the following form :
//------------------
// gasName
// n_equation M h0 hf sf
// xa[0] xb[0] xc[0] xd[0] tl[0] th[0]
// .........
// xa[n_equation-1] xb[n_equation-1]......th[n_equation-1]
// n_vis
// xvis[0]
// .........
// xvis[n_vis-1]
// n_k
// xk[0]
// .........
// xk[n_k-1]
//-------------------
// unit of the xa : kcal/kmol
// note : if any curvefitting applied for a new gas temperature values
// in K nad enthalpy values in the unit of [Link] should be supply
// for the Cp curve fitting
//============================================================
// VARIABLE IDENTIFICATION

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// all the variables that type is not defined is a double variable
// PROTECTED VARIABLES :
// xa,xb,xc,xd ,tl,th : double pointers. This values used to calculate
// specific heat at constant pressure from the following equation :
// Cp(T) = xa[i]+xb[i]*1e-3*T+xc[i]*1.0e5/T^2+xd[i]*1e-6*T^3
// where tl[i] <= T <= th[i]
// n_equation : number of equations (xa,xb,xc,xd,tl,th) for a gas
// xvis : real pointers to define viscosity according to formula :
// vis(T)=sum(xvis(i)*T^i) , for(i=0;i<n_vis;i++)
// n_vis : number of coefficients in polynomial viscosity curve fitting
// xk :real pointers to define thermal conductivity according to formula
// k(t)=sum(xk(i)*T^i) , for(i=0;i<n_k;i++)
// PUBLIC VARIABLES :
// gasName : name of the gas example : H2O :variable class str
// (class str is defined at file cstr.h and [Link], written by Timotyhy A. Budd)
// M : mol number of the gas example mol number of H2O is 18.016 kg/kmol
// h0 : value of enthalpy at 298 K in the unit of Kcal/kmol
// hf : formation enthalpy at 298 K in the unit of Kcal/kmol
// sf : value of enthalpy at 298 K and 1 bar pressure
// N : molar weight of the gas, kmol
// ierror : integer variable, error flag
//============================================================
import [Link].*;
import Text;
import Atom;
class Gas
{
double xa[],xb[],xc[],xd[],tl[],th[];
int n_equation;
int n_vis;
int n_k;
double xvis[];
double xk[];
int natom;
String gasName;
Atom atomList[];
double M; // molar mass of atom kg/kmol
double h0; // enthalpy at T=298 K
double hf; // enthalpy of formation
double sf; // entropy of formation kJ/kmol K
double N; // moles of gas kmol
int ierror;
BufferedReader fin;
File gasDir;
// definations of class functions
// constructors
//===================================================================
public Gas()
{
//empty constructor
int i;
gasName="******************************";
natom=1;
atomList=new Atom[natom];
M=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
N=1.0;
h0=0;
hf=0;
sf=0;
n_equation=6;
n_vis=10;
n_k=10;
xa=new double[6];
xb=new double[6];
xc=new double[6];
xd=new double[6];
tl=new double[6];
th=new double[6];
xvis=new double[10];
xk=new double[10];
for(i=0;i<n_equation;i++)
{xa[i]=0.0;xb[i]=0.0;xc[i]=0.0;xd[i]=0.0;tl[i]=293.0;th[i]=293.0;}
for(i=0;i<n_vis;i++)
{xvis[i]=0.0;}
for(i=0;i<n_k;i++)
{xk[i]=0.0;}
}
//===================================================================
public Gas(String gName,double Nnew) throws IOException
{
int i;
String aName;
double aN;
ierror=1;
N=Nnew;
String tempGasName="";
try{
fin=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File [Link]\n"+[Link]());
[Link](1);
}
try{
while(fin!=null)
{
tempGasName=[Link](fin);
if ([Link](gName)) {ierror=0;break;}
}
} catch(EOFException e_eof)
{
[Link]("error required gas "+tempGasName+" is not found");
[Link]();return;
}
gasName=gName;
natom=[Link](fin);
atomList=new Atom[natom];
M=0;
for(i=0;i<natom;i++)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
aName=[Link](fin);
aN=[Link](fin);
atomList[i]=new Atom(aName,aN);
M+=atomList[i].mass;
}
n_equation=[Link](fin);
h0=[Link](fin);
hf=[Link](fin);
sf=[Link](fin);
hf*=4.1868;
xa=new double[n_equation];
xb=new double[n_equation];
xc=new double[n_equation];
xd=new double[n_equation];
tl=new double[n_equation];
th=new double[n_equation];
for(i=0;i<n_equation;i++)
{
xa[i]=[Link](fin);
xb[i]=[Link](fin);
xc[i]=[Link](fin);
xd[i]=[Link](fin);
tl[i]=[Link](fin);
th[i]=[Link](fin);
}
n_vis=[Link](fin);
xvis=new double[n_vis];
for(i=0;i<n_vis;i++)
{
xvis[i]=[Link](fin);
}
n_k=[Link](fin);
xk=new double[n_k];
for(i=0;i<n_k;i++)
{
xk[i]=[Link](fin);
}
}
public Gas(String gName) throws IOException
{
double Nnew=1;
int i;
String aName;
double aN;
ierror=1;
N=Nnew;
String tempGasName="";
try{
fin=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File [Link]\n"+[Link]());
[Link](1);
}
try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
while(fin!=null)
{
tempGasName=[Link](fin);
if ([Link](gName)) {ierror=0;break;}
}
} catch(EOFException e_eof)
{
[Link]("error required gas "+tempGasName+" is not found");
[Link]();return;
}
gasName=gName;
//fin>>natom;
natom=[Link](fin);
atomList=new Atom[natom];
M=0;
for(i=0;i<natom;i++)
{
//fin>>aName>>aN;
aName=[Link](fin);
aN=[Link](fin);
atomList[i]=new Atom(aName,aN);
M+=atomList[i].mass;
}
//fin>>n_equation>>h0>>hf>>sf;
n_equation=[Link](fin);
h0=[Link](fin);
hf=[Link](fin);
sf=[Link](fin);
hf*=4.1868;
xa=new double[n_equation];
xb=new double[n_equation];
xc=new double[n_equation];
xd=new double[n_equation];
tl=new double[n_equation];
th=new double[n_equation];
for(i=0;i<n_equation;i++)
{
xa[i]=[Link](fin);
xb[i]=[Link](fin);
xc[i]=[Link](fin);
xd[i]=[Link](fin);
tl[i]=[Link](fin);
th[i]=[Link](fin);
}
n_vis=[Link](fin);
xvis=new double[n_vis];
for(i=0;i<n_vis;i++)
{
xvis[i]=[Link](fin);
}
n_k=[Link](fin);
xk=new double[n_k];
for(i=0;i<n_k;i++)
{
xk[i]=[Link](fin);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}
public String readGasNames() throws IOException
{
String temp1="";
int natom;
String temp=new String("");
String pgasName;
String aName;
double aN;
double ppercent;
int n_equation;
double h0,hf,sf;
double xai,xbi,xci,xdi,tli,thi;
int n_vis,n_k;
double xvisi,xki;
int i;
try{
fin=new BufferedReader(new FileReader("[Link]"));
try {
while(fin!=null)
{
temp1=temp1+[Link](fin)+ " ";
natom=[Link](fin);
for(i=0;i<natom;i++)
{
aName=[Link](fin);
aN=[Link](fin);
}
n_equation=[Link](fin);
h0=[Link](fin);
hf=[Link](fin);
sf=[Link](fin);
for(i=0;i<n_equation;i++)
{
xai=[Link](fin);
xbi=[Link](fin);
xci=[Link](fin);
xdi=[Link](fin);
tli=[Link](fin);
thi=[Link](fin);
}
n_vis=[Link](fin);
for(i=0;i<n_vis;i++)
{
xvisi=[Link](fin);
}
n_k=[Link](fin);
for(i=0;i<n_k;i++)
{
xki=[Link](fin);
}
} //end of while
} catch(EOFException e_eof) {[Link]();}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch(FileNotFoundException fnfe) {[Link]("File [Link] not found");}
return temp1;
}
// ==============================================================
public Gas(Gas g) throws IOException
{
int i;
gasName=[Link];
natom=[Link];
atomList=new Atom[natom];
for(i=0;i<natom;i++)
{
atomList[i]=[Link][i];
}
M=g.M;
N=g.N;
h0=g.h0;
hf=[Link];
sf=[Link];
n_equation=g.n_equation;
n_vis=g.n_vis;
n_k=g.n_k;
xa=new double[n_equation];
xb=new double[n_equation];
xc=new double[n_equation];
xd=new double[n_equation];
tl=new double[n_equation];
th=new double[n_equation];
xvis=new double[n_vis];
xk=new double[n_k];
for(i=0;i<n_equation;i++)
{xa[i]=[Link][i];xb[i]=[Link][i];xc[i]=[Link][i];xd[i]=[Link][i];tl[i]=[Link][i];th[i]=[Link][i];}
for(i=0;i<n_vis;i++)
{xvis[i]=[Link][i];}
for(i=0;i<n_k;i++)
{xk[i]=[Link][i];}
}
//===================================================================
//change/assign new molar mass
// see also * operator for the similar function
public void changeN(double Nnew)
{
N=Nnew;
}
//===================================================================
public String toString()
{
//return the chemical symbol of the gas
String s="";
for(int i=0;i<natom;i++)
s=s+atomList[i].toString();
return s;
}
//===================================================================
public double vis(double T)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
// dynamic viscosity of the gas
double visg=0;
if(n_vis!=0.0)
{
visg=xvis[n_vis-1];
for(int i=n_vis-2;i>=0;i--)
{ visg=visg*T+xvis[i]; }
visg*=1.0e-7;
}
else
visg=0;
return visg;
}
//===================================================================
public double k(double T)
{
// thermal conductivity of the gas
double kg;
if(n_k!=0.0)
{
int nk=n_k-1;
kg=xk[nk];
for(int i=n_k-2;i>=0;i--)
{ kg+=kg*T+xk[i]; }
kg*=1.0e-3;
}
else
kg=0;
return kg;
}
//===================================================================
public double h(double T)
{
// enthalpy KJ/kmol
//integration of function dh=Cp(T)*dT
double hh = - h0;
for(int i=0;i<n_equation;i++)
{
if(((T>th[i]) && (i== (n_equation-1) ) )
|| ((T<tl[i]) && (i== 0 ) ) )
{
hh+= xa[i]*(T- tl[i])
+ xb[i]*1.0e-3/2.0*(T*T-tl[i]*tl[i])
- xc[i]*1e5*(1/T-1/tl[i])
+ xd[i]*1e-6*(T*T*T-tl[i]*tl[i]*tl[i])/3.0;
}
else if((T<= th[i]) && (T> tl[i]))
{
hh+= xa[i]*(T- tl[i])
+ xb[i]*1.0e-3/2.0*(T*T-tl[i]*tl[i])
- xc[i]*1e5*(1/T-1/tl[i])
+ xd[i]*1e-6*(T*T*T-tl[i]*tl[i]*tl[i])/3.0;
}
else if(T>th[i])

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
hh+= xa[i]*(th[i]- tl[i])
+ xb[i]*1.0e-3/2.0*(th[i]*th[i] - tl[i]*tl[i])
- xc[i]*1e5*(1/th[i]-1/tl[i])
+ xd[i]*1e-6*(th[i]*th[i]*th[i]-tl[i]*tl[i]*tl[i])/3.0;
}
}
return (hh*4.1868);
}
//===================================================================
public double ht( double t)
{
return h(t)+hf;
}
//===================================================================
public double H(double t)
{
return h(t)*N;
}
//===================================================================
public double HT(double t)
{
return ht(t)*N;
}
//===================================================================
public double u(double T)
{
// internal energy KJ/kmol
// Integration of function du = Cv(T)*dT
return (h(T) - 8.3145*T);
}
//===================================================================
public double v(double T,double P)
{
// specific volume of the gas m^3/kmol
return 8314.5*T/(P*1e5);
}
public double v(double T)
{
double P=1.0;
// specific volume of the gas m^3/kmol
return 8314.5*T/(P*1e5);
}
//===================================================================
public double c(double t)
{
// speed of sound m/s
return [Link](8314.5/M*t*gamma(t));
}
//===================================================================
public double s(double T, double P)
{
//entropy KJ/kmol K
//integration of function
// ds = Cp(T) * dt/T - R dP/P

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double ss=sf;
for(int i=0;i<n_equation;i++)
{
if( ( T > th[i] && i==n_equation - 1 )
||( T < tl[i] && i==0 ))
{
ss+=xa[i]*[Link](T/tl[i])
+ xb[i]*1.0E-3*(T-tl[i])
- xc[i]*1e5/2.0*(1.0/(T*T) - 1.0/(tl[i]*tl[i]))
+ xd[i]*1e-6/2.0*(T*T-tl[i]*tl[i]);
}
else if((T <= th[i]) && (T > tl[i]))
{
ss+=xa[i]*[Link](T/tl[i])
+ xb[i]*1.0E-3*(T-tl[i])
- xc[i]*1e5/2.0*(1.0/(T*T) - 1.0/(tl[i]*tl[i]))
+ xd[i]*1e-6/2.0*(T*T-tl[i]*tl[i]);
}
else if( T > th[i] )
{
ss+=xa[i]*[Link](th[i]/tl[i])
+ xb[i]*1.0E-3*(th[i]-tl[i])
- xc[i]*1e5/2.0*(1.0/(th[i]*th[i]) - 1.0/(tl[i]*tl[i]))
+ xd[i]*1e-6/2.0*(th[i]*th[i] - tl[i]*tl[i]);
}
}
ss*=4.1868;
return (ss-8.3145*[Link](P));
}
public double S(double T, double P)
{
return s(T,P)*N;
}
public double s(double T)
{
//entropy KJ/kmol K
//integration of function
// ds = Cp(T) * dt/T - R dP/P
double ss=sf;
for(int i=0;i<n_equation;i++)
{
if( ( T > th[i] && i==n_equation - 1 )
||( T < tl[i] && i==0 ))
{
ss+=xa[i]*[Link](T/tl[i])
+ xb[i]*1.0E-3*(T-tl[i])
- xc[i]*1e5/2.0*(1.0/(T*T) - 1.0/(tl[i]*tl[i]))
+ xd[i]*1e-6/2.0*(T*T-tl[i]*tl[i]);
}
else if((T <= th[i]) && (T > tl[i]))
{
ss+=xa[i]*[Link](T/tl[i])
+ xb[i]*1.0E-3*(T-tl[i])
- xc[i]*1e5/2.0*(1.0/(T*T) - 1.0/(tl[i]*tl[i]))
+ xd[i]*1e-6/2.0*(T*T-tl[i]*tl[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
else if( T > th[i] )
{
ss+=xa[i]*[Link](th[i]/tl[i])
+ xb[i]*1.0E-3*(th[i]-tl[i])
- xc[i]*1e5/2.0*(1.0/(th[i]*th[i]) - 1.0/(tl[i]*tl[i]))
+ xd[i]*1e-6/2.0*(th[i]*th[i] - tl[i]*tl[i]);
}
}
ss*=4.1868;
return ss;
}
//===================================================================
public double s0(double T)
{
return s(T);
}
//===================================================================
public double g(double T,double P)
{
return h(T)-T*s(T,P);
}
public double gt(double T,double P)
{
return h(T)+hf-T*s(T,P);
}
public double gt(double T)
{
return h(T)+hf-T*s(T,1);
}
public double g(double T)
{
double P=1.0;
return h(T)-T*s(T,P);
}
public double G(double T,double P)
{
return g(T,P)*N;
}
public double G(double T)
{
return g(T)*N;
}
public double GT(double T)
{
return gt(T)*N;
}
public double GT(double T,double P)
{
return gt(T,P)*N;
}
//===================================================================
public double g0(double T)
{
return h(T)-T*s0(T);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
//===================================================================
public double Cp(double T)
{
//specific heat at constant pressure KJ/kmol K
double cp=0.0;
for (int i=0;i<n_equation;i++)
{
if( ( T > th[i] && i==n_equation - 1 )
||( T < tl[i] && i==0 ))
{
cp=xa[i]+xb[i]*1.0e-3*T+xc[i]*1.0e5/T/T+xd[i]*1.0e-6*T*T;
break;
}
else if((T <= th[i]) && (T > tl[i]) )
{
cp=xa[i]+xb[i]*1.0e-3*T+xc[i]*1.0e5/T/T+xd[i]*1.0e-6*T*T;
break;
}
}
return (cp*4.1868);
}
//===================================================================
public double Cv(double T)
{
//specific heat at constant volume KJ/kmol K
double cv;
cv=Cp(T) - 8.3145;
return cv;
}
//===================================================================
public double gamma(double T)
{
//adiabatic constant
return Cp(T)/Cv(T);
}
//===================================================================
public double T( char name,double y0,double p)
{
// name can have values h : for enthalpy
// u : for internal energy
// s : for entropy
// v : specific volume
// yo : the value of the variable given by variable name
double t=300;
if(name=='v') {t= p*1e5*y0/8.3145e3;}
else
{
double dt=0;
int nmax=400;
double tolerance=1.0e-8;
for(int i=0;i<nmax;i++)
{
// apply newtons method for finding roots of equation
if (name=='h') dt=-( h(t) - y0 ) /Cp(t);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if(name=='u') dt=-( u(t) - y0 ) /Cv(t);
else if(name=='s') dt=-( s(t,p) - y0 ) /(Cp(t)/t);
else { [Link]("wrong name defined please try h,u,s ot v");}
t+=dt;
// if error range is less than tolerance, exit
if([Link](dt)<tolerance) break;
}
}
return t;
}
public double T( char name,double y0)
{
// name can have values h : for enthalpy
// u : for internal energy
// s : for entropy
// v : specific volume
// yo : the value of the variable given by variable name
double t=300;
double p=1.0;
if(name=='v') {t= p*1e5*y0/8.3145e3;}
else
{
double dt=0;
int nmax=400;
double tolerance=1.0e-8;
for(int i=0;i<nmax;i++)
{
// apply newtons method for finding roots of equation
if (name=='h') dt=-( h(t) - y0 ) /Cp(t);
else if(name=='u') dt=-( u(t) - y0 ) /Cv(t);
else if(name=='s') dt=-( s(t,p) - y0 ) /(Cp(t)/t);
else { [Link]("wrong name defined please try h,u,s ot v");}
t+=dt;
// if error range is less than tolerance, exit
if([Link](dt)<tolerance) break;
}
}
return t;
}
//===================================================================
public double P( char name,double y0,double t1)
{
// name can have values v : for specific volume
// s : for entropy
// note : for a perfect gas enthalpy and internal energy
// is not function of pressure
// yo : the value of the variable given by variable name
if(name=='v') return 8.3145e3*t1/y0*1e-5;
else if (name=='s') return [Link]((s(t1,1.0)-y0)/8.3145);
else { [Link]("wrong name defined please try s or v"); return 1.0;}
}
//===================================================================
public double Pr(double t)
{
// Prandtl number

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return Cp(t)*vis(t)/k(t)/M*1e3;
}
//===================================================================
public void assign(Gas g1) throws IOException
{
// assign operator (assigning a new gas to the gas variable)
int i;
ierror=1;
gasName=[Link];
N=g1.N;
n_equation=g1.n_equation;
n_k=g1.n_k;
n_vis=g1.n_vis;
M=g1.M;
h0=g1.h0;
hf=[Link];
sf=[Link];
natom=[Link];
atomList=new Atom[natom];
M=0;
for(i=0;i<natom;i++)
{
atomList[i]=new Atom([Link][i].name,[Link][i].N);
}
xa=new double[n_equation];
xb=new double[n_equation];
xc=new double[n_equation];
xd=new double[n_equation];
tl=new double[n_equation];
th=new double[n_equation];
xvis=new double[n_vis];
xk=new double[n_k];
for(i=0;i<n_equation;i++)
{ xa[i]=[Link][i];
xb[i]=[Link][i];
xc[i]=[Link][i];
xd[i]=[Link][i];
tl[i]=[Link][i];
th[i]=[Link][i];
}
for(i=0;i<n_vis;i++)
{ xvis[i]=[Link][i];}
for(i=0;i<n_k;i++)
{xk[i]=[Link][i];}
}
//===================================================================
public Gas multiply(double Nnew, Gas g1) throws IOException
{
Gas g2=new Gas(g1);
g2.N*=Nnew;
return g2;
}
public boolean equals(Gas g)
{
if([Link]([Link]))

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return true;
else
return false;
}
//=================================================================
}
//=================================================================
Gaz özelliklerinin yer aldýðý bilgi dosyasý [Link] (sadece iki örnek gaz ch4 ve c2h6 için veri
listelenmiºtir.) :
ch4
2
C1
H4
6 0 -17883.1088181 44.4764979459
.569592791684135E+01 .230885866354099E+02 .257021911461535E-03 -
.514500509673528E+02 298. 300.0
.549418872803147 23.348756180407 1.4381268667348 -6.89019972775113 300.0 1000.00
11.8834319588735 9.20574503493484 -21.4292411101953 -1.8024921550441 1000.0
2000.0
23.037791919106 1.1029857730146 -87.1157168947875 -.127020658512245 2000.0
3000.0
22.0766220965729 1.36002847842152 -59.4550709113699 -0.1402094192352699 3000.0
4000.0
25.8471557797976 -0.0210627042222442 -144.63391429225 0.00254109611861818
4000.0 6000.0
4
-.317434898401931E+01
.455271007474814E+00
-.273399388607163E-03
.895312831114117E-07
4
.399296677905716E+01
.551053536678452E-01
.172999763063988E-03
-.657213363465470E-07
c2h6
2
C2
H6
3 0 -20226.42591 54.8394955574
5.255293329509001 29.744079588767550 -1.128964437911497 -4.086756508274219
298.15 600.0
3.855945449740792 35.946345289228690 -1.504708264372915 -10.330104368611350
600.0 1000.0
21.017162073226170 15.065627352784930 -34.594573805677190 -3.233353234903328
1000.0 1473.15
3
-0.492854013060778E+01
0.379062761757185E+00
-0.148297458234132E-03
3
-0.173496859087276E+02
0.117899036192513E+00
0.399524288778580E-04

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 10.17 [Link] : bu program veri çýktýsýnýn bir parçasýdýr, çýktýyý tablo
formunda elde etmemiz amacýyla kullanýlmýºtýr.
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
class GasModel extends AbstractTableModel
{
Object[][] veri={
{"Gas Formula : ","0"," "},
{"M : ","0","kg/kmol"},
{"h, enthalpy : ","0","KJ/kmol"},
{"u, Internal energy : ","0","KJ/kmol"},
{"s, Entropy : ","0","KJ/kmol K"},
{"v, Specific volume : ","0","m^3/kmol"},
{"k, Thermal conductivity : ","0","W/m K"},
{"h+hf, enthalpy+formation enth. : ","0","KJ/kmol"},
{"Density : ","0","kg/m^3"},
{"Cp : ","0"," KJ/kmol K"},
{"Cv : ","0","KJ/kmol K"},
{"Cp/Cv adiabatic constant : ","0"," "},
{"c speed of sound : ","0","m/s"},
{"Viscosity : ","0","N s/m^2"},
{"Pr,Prandtl Number : ","0"," "}};
String[] baslik={"Property ","Value ","Units"};
public GasModel(Gas g1,double TK,double P)
{
setValues(g1,TK,P);
}
public int getRowCount() {return [Link];}
public int getColumnCount() {return [Link];}
public Object getValueAt(int satir,int sutun) {return veri[satir][sutun];}
public String getColumnName(int c) {return baslik[c];}
public void setValueAt(Object val, int row, int col)
{
veri[row][col] = val;
}
public void setValues(Gas g1,double T,double P)
{
double TK=T+273.0;
setValueAt([Link](),0,1);
setValueAt((""+g1.M),1,1);
setValueAt([Link](g1.h(TK)),2,1);
setValueAt([Link](g1.u(TK)),3,1);
setValueAt([Link](g1.v(TK,P)),4,1);
setValueAt([Link](g1.s(TK,P)),5,1);
setValueAt([Link](g1.k(TK)),6,1);
setValueAt([Link]([Link](TK)),7,1);
setValueAt([Link](g1.M/g1.v(TK)),8,1);
setValueAt([Link]([Link](TK)),9,1);
setValueAt([Link]([Link](TK)),10,1);
setValueAt([Link]([Link](TK)),11,1);
setValueAt([Link](g1.c(TK)),12,1);
setValueAt([Link]([Link](TK)),13,1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
setValueAt([Link]([Link](TK)),14,1);
}
public boolean isCellEditable(int row, int col) {return true;}
}
Program 10.18 [Link]
// ======================================================
// Thermodynamics package in java
// GasPropertySWF class to calculate properties of gases
// user interface (JFrame)
// Dr. Turhan Coban
// TUBITAK Marmara Research Center
// Energy Systems and Environmental Research Institute
// email : [Link]@[Link]
// =====================================================
import [Link].*;
import [Link];
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import GasModel;
public class GasPropertySWF extends JFrame implements ActionListener,ItemListener
{
JPanel inputPanel;
JPanel outputPanel;
JPanel totalPanel;
JTextField promptGasName; // Label prompt GasName
JTextField promptTemperature; // Label prompt Temperature
JTextField promptPressure; // Label prompt Pressure
JComboBox inputGasName; // input GasName
JTextField inputTemperature; // input (from list )Temperature
JTextField inputPressure; // input Pressure
JTextArea outputTextArea;
GasModel gm;
JTable jt;
double T;
double P;
String gasName;
Gas g1;
protected File gmixFile;
protected StringTokenizer token;
String st[];
final static Color bg=[Link];
final static Color fg=[Link];
final static Color kirmizi=[Link];
final static Color beyaz=[Link];
public GasPropertySWF()
{
super("Properties of perfect gases ");
Container c=getContentPane();
[Link](new FlowLayout());
//adding max-min prompts and input fields
gasName=new String("air");
T=27.0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
P=1.0;
inputPanel=new JPanel();
[Link](new GridLayout(3,2));
outputPanel=new JPanel();
[Link](new BorderLayout());
totalPanel=new JPanel();
[Link](new BorderLayout());
try{
g1=new Gas(gasName);
token=new StringTokenizer([Link]());
st=new String[[Link]()];
} catch(IOException ioe) {[Link]("IOException");}
int i=0;
while([Link]())
{
st[i++]=new String((String)[Link]());
}
inputGasName=new JComboBox(st);
gasName=(String)[Link]();
try{
g1=new Gas(gasName);
} catch(IOException ioe) {[Link]("IOException");}
promptGasName= new JTextField(20);
[Link]("Name of gas mixture : ");
[Link]([Link]);
promptTemperature=new JTextField(20);
[Link]("Temperature (°C) : ");
[Link]([Link]);
inputTemperature=new JTextField(20);
[Link]([Link]);
promptPressure= new JTextField(20);
[Link]("Pressure (Bars) : ");
[Link]([Link]);
outputTextArea = new JTextArea();
[Link]([Link]);
inputPressure=new JTextField(20);
[Link]([Link]);
[Link](promptGasName);
[Link](inputGasName);
[Link](promptTemperature);
[Link](inputTemperature);
[Link](promptPressure);
[Link](inputPressure);
[Link](this);
[Link](this);
[Link](this);
gm=new GasModel(g1,T,P);
jt=new JTable(gm);
[Link]([Link]());
setArea();
[Link](outputTextArea,[Link]);
[Link](jt,[Link]);
[Link](inputPanel,[Link]);
[Link](outputPanel,[Link]);
[Link](totalPanel,[Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
public void setArea()
{
double TK=T+273.0;
[Link]([Link](T));
[Link]([Link](P));
String s="additional data can be added to [Link] file \n";
s+="Dr. Turhan Çoban, TUBÝTAK Marmara Research Center\n";
s+="Energy Systems & Environmental Research Institute\n";
s+="PO Box 21, Gebze - Kocaeli, Turkey\n";
s+="email: [Link]@[Link]\n";
//note if you would like to list additional information on the screen
//add to string s
// s+="Gas Formula : "+[Link]("formula")+"\n";
// s+= "Gas Composition : "+[Link]("composition")+"\n";
[Link](g1,T,P);
[Link](s);
}
public void itemStateChanged(ItemEvent ev)
{
gasName=(String)[Link]();
try{
g1=new Gas(gasName);
} catch(IOException ioe1) {[Link]("IOException");}
setArea();
repaint();
}
public void actionPerformed( ActionEvent e)
{
Double valTemp=new Double([Link]());
T=[Link]();
Double valPressure=new Double([Link]());
P=[Link]();
getContentPane().setLayout(new FlowLayout([Link]));
setArea();
repaint();
}
public static void main(String[] args)
{
GasPropertySWF pencere= new GasPropertySWF();
[Link](
new WindowAdapter()
{
public void windowClosing(WindowEvent e) {[Link](0);}
} );
[Link]();
[Link](true);
}
}
Program çýktýsý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
6. Bu problemde bir önceki problemde verilen uygulamanýn bir kademe daha ilerine
gideceðiz. Burada Gazlarý karýºtýrýp bir gaz karýºýmý elde edecek ve bu gaz karýºýmýnýn
termodinamik özelliklerine bakacaðýz. Programýmýzýn ismi [Link], gazlarý karýºtýrdýðýmýz
veri dosyasý [Link] ve çýktý dosyalarýmýz [Link] ve [Link]
Program 10.19 [Link]
// ==============================================================
// File Name : [Link]
// Author : Dr. Turhan Coban
// TUBÝTAK Marmara Research Center
// Energy Systems and Environmental Research Institute
// email : [Link]@[Link]
// Description : This file contains class gmix which calculates
// thermophysical properties of mixture of perfect gases.
// following properties can be calculated
// T() : Temperature degree K
// h(T) : enthalpy KJ/kmol
// hf : formation enthalpy KJ/kg
// ht(T) : total enthalpy KJ/kg (h+hf)
// M : molar mass kg/kmol
// HT(T) : total enthalpy KJ : M*ht(T)
// P() : presure bar
// s(T,P) : entropy KJ/kmol K
// Cp(T) : specific heat at constant pressure KJ/kmol K
// Cv(T) : specific heat at constant volume KJ/kg K
// gamma(T): adiabatic constant Cp/Cv
// c(T) : speed of sound m/s
// u(T) : Internal energy KJ/kmol
// vis(T) : viscosity
// k(T) : thermal conductivity KW/kg K
// DATA FILE DEFINATION
// gas mixture definations are given the data file "[Link]"
// if gas mixture data is not given in the [Link] user can be add
// his own data to the file which has the following format
//------------------
// gmixName
// ngas

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// gname_0 N_0
// .........
// gname_ngas-1 N_ngas-1
//-------------------
// and defination : gmix a(gmixName); will defined this gas mixture
// the same mixture can be defined directly in the main program as :
// -------------------
// Gas a_0=new Gas("a_0");
//.......
// Gas a_ngas=new Gas("a_ngas);
// Gmix a=new Gmix;
// a=N_0*a_0+...+N_ngas*a_ngas;
// -------------------
//============================================================
// VARIABLE IDENTIFICATION
// all the variables that type is not defined is a double variable
// PUBLIC VARIABLES :
// gasName : String class variable of gas mixture name
// ngas : int variable, number of simple gasses
// N : total molar mass of the gas mixture
// gasList :gas class vector variables
// All the other variables defined for class gas is also valid for gmix
import [Link].*;
import [Link].*;
import Text;
import Atom;
import Gas;
// ==============================================================
class Gmix{
// this class calculates perfect gas thermodynamic
// properties when the perfect gas constitutes of
// several single gases
public int ngas; // number of simple gasses inside of the gas mixture
String gasName;
public double M; // molar mass of atom kg/kmol
public double h0; // enthalpy at T=298 K
public double hf; // enthalpy of formation
public double sf; // entropy of formation kJ/kmol K
public double N; // moles of gas kmol
int ierror;
int natom; //number of unique atoms in the atom list
Gas gasList[]; //list of the component gasses
Atom atomList[]; //list of component atoms
File gmixFile; // File name and directory
BufferedReader cfin;
// construction methods :
//========definations of class gmix =============================
//constructor functions
public Gmix(String name) throws IOException
{
// class complex gas construction function
// this function reads the initial gases in
// the mixture and their molar weight from
// the file [Link] and construct mixed gas
try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
cfin=new BufferedReader(new FileReader("[Link]"));
int ierror=1;
int i,j;
N=0;
M=0;
hf=0;
natom=0;
try{
while(cfin!=null)
{
gasName=[Link](cfin);
if([Link](name)) { ierror=0; break;}
} //end of while
} catch(EOFException e_eof)
{
[Link]("error required gas mixture "+name+" is not found");
[Link]();return;
}
//cfin>>ngas;
ngas=[Link](cfin);
gasList=new Gas[ngas];
//ierror=0;
String pgasName;
double ppercent;
Gas tempgas;
for(i=0;i<ngas;i++)
{
pgasName=[Link](cfin);
ppercent=[Link](cfin);
//cfin>>pgasName>>ppercent;
tempgas=new Gas(pgasName,ppercent);
ierror=[Link];
{
if(ierror!=1)
{
try{
gasList[i]=new Gas(tempgas);
} catch(IOException ioe) {[Link]("IOException");}
N+=tempgas.N;
M+=tempgas.N*tempgas.M;
hf+=tempgas.N*[Link];
}
else
{
[Link]("gas is not found in the list");
[Link]("this gas is not added to the list");
i--;
ngas--;
}
}
}
M=M/N;
hf=hf/N;
arrange_atoms();
} catch(FileNotFoundException fnfe) {[Link]("File not found");}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
// ==============================================================
public String readGmixNames() throws IOException
{
String temp=new String("");
String pgasName;
double ppercent;
try{
cfin=new BufferedReader(new FileReader("[Link]"));
try {
while(cfin!=null)
{
temp=temp+[Link](cfin)+ " ";
ngas=[Link](cfin);
for(int i=0;i<ngas;i++)
{
pgasName=[Link](cfin);
ppercent=[Link](cfin);
} //end of while
}
} catch(EOFException e_eof) {[Link]();}
}
catch(FileNotFoundException fnfe) {[Link]("File [Link] not found");}
return temp;
}
// ==============================================================
public void arrange_atoms() throws IOException
{
int i,j;
for(i=0;i<ngas;i++)
{
for(j=0;j<gasList[i].natom;j++)
{
add_atom(i,j);
}
}
}
public int add_atom(int i,int j) throws IOException
{
int k;
//Atom tempAtom=new
Atom(gasList[i].atomList[j].symbol,gasList[i].atomList[j].N*gasList[i].N/N);
for(k=0;k<natom;k++)
{
if(gasList[i].atomList[j].[Link](atomList[k].symbol))
{
atomList[k]=new
Atom(atomList[k].symbol,atomList[k].N+gasList[i].atomList[j].N*gasList[i].N/N);
return 1;
}
}
Atom atomL[];
atomL=new Atom[natom+1];
for(k=0;k<natom;k++)
atomL[k]=new Atom(atomList[k]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
atomL[natom]=new Atom(gasList[i].atomList[j].symbol,gasList[i].atomList[j].N*gasList[i].N/N);
atomList=atomL;
natom+=1;
return 2;
}
//===============================================================
public Gmix() throws IOException
{
//empty construction function
N=0;
M=0;
String pgasname="\0";
ngas=0;
}
// ==============================================================
public Gmix(Gmix g1) throws IOException
{
gasName=[Link];
gasName=gasName;
N=g1.N;
M=g1.M;
hf=[Link];
ngas=[Link];
natom=[Link];
gasList=new Gas[ngas];
for(int i=0;i<ngas;i++) gasList[i]=new Gas([Link][i]);
for(int i=0;i<natom;i++) atomList[i]=new Atom([Link][i]);
}
// ==============================================================
public Gmix(Gas g1) throws IOException
{
gasName=[Link];
gasName=gasName;
N=g1.N;
M=g1.M;
hf=[Link];
ngas=1;
natom=[Link];
gasList=new Gas[ngas];
for(int i=0;i<ngas;i++) gasList[i]=new Gas(g1);
for(int i=0;i<natom;i++) atomList[i]=new Atom([Link][i]);
}
// ==============================================================
public void changeN(double newN) throws IOException
{
normalise();
for(int i=0;i<ngas;i++)
{ gasList[i].N*=newN; }
N=newN;
}
// ==============================================================
public void add(Gas g1) throws IOException
{
// this function adds a single gas to the mixture
int gasflag=1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// if the gas exist in the list simply change N and M values
for(int i=0;i<ngas;i++)
{
if(gasList[i].[Link]([Link]))
{
gasflag=0;
M=M*N+g1.M*g1.N;
gasList[i].N+=g1.N;
N+=g1.N;
M=M/N;
}
}
if(gasflag!=0)
{
Gas newGas[];
newGas=new Gas[ngas+1];
for(int i=0;i<ngas;i++)
{
newGas[i]=new Gas(gasList[i]);
}
ngas++;
double MT=M*N+g1.M*g1.N;
N+=g1.N;
M=MT/N;
newGas[ngas-1]=new Gas(g1);
gasList=newGas;
}
arrange_atoms();
}
// ==============================================================
public void remove(String name) throws IOException
{
// this function removes a single gas
// from the list
int i,k;
for(i=0;i<ngas;i++)
{
if(gasList[i].[Link](name))
{
Gas newGas[];
newGas=new Gas[ngas];
M=0;
N=0;
for(k=0;k<i;k++)
{ newGas[k]=new Gas(gasList[k]);
M+=newGas[k].M*newGas[k].N;
N+=newGas[k].N;
}
for( k=i;k<(ngas-1);k++)
{
newGas[k]=new Gas(gasList[k+1]);
M+=newGas[k].M*newGas[k].N;
N+=newGas[k].N;
}
M=M/N;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ngas--;
gasList=newGas;
break;
}
}
arrange_atoms();
// correct dynamic memory size
}
// ==============================================================
public void add(String name,double Nnew) throws IOException
{
// this function adds a single gas to the mixture
Gas g1=new Gas(name,Nnew);
int gasflag=1;
// if the gas exist in the list simply change N and M values
for(int i=0;i<ngas;i++)
{
if(gasList[i].[Link]([Link]))
{
gasflag=0;
M=M*N+g1.M*g1.N;
gasList[i].N+=g1.N;
N+=g1.N;
M=M/N;
}
}
if(gasflag!=0)
{
Gas newGas[];
newGas=new Gas[ngas+1];
for(int i=0;i<ngas;i++)
{
newGas[i]=new Gas(gasList[i]);
}
ngas++;
double MT=M*N+g1.M*g1.N;
N+=g1.N;
M=MT/N;
newGas[ngas-1]=new Gas(g1);
gasList=newGas;
}
arrange_atoms();
}
// ==============================================================
public void simplify() throws IOException
{
// this function combines any single gas
// that repeated in the list
double ngasold=ngas;
int i,j,k;
for(i=0;i<ngas;i++)
{
for(j=i+1;j<ngas;j++)
{
if(gasList[i].[Link](gasList[j].gasName))

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
gasList[i].N+=gasList[j].N;
for(k=j;k<(ngas-1);k++)
{ gasList[k]=new Gas(gasList[k+1]); }
ngas--;
}
}
}
// correct dynamic memory size
if(ngasold!=ngas)
{
Gas newGas[];
newGas=new Gas[ngas];
for(i=0;i<ngas;i++)
{
newGas[i]=new Gas(gasList[i]);
}
gasList=newGas;
}
}
// ==============================================================
public void normalise() throws IOException
{
for(int i=0;i<ngas;i++)
{
gasList[i].N=gasList[i].N/N;
}
N=1.0;
arrange_atoms();
}
// ==============================================================
public void changeMix(double Nmix[]) throws IOException
{
// this function changes
// all the molar weights in the mixture
N=0;
M=0;
for(int i=0;i<ngas;i++)
{
gasList[i].N=Nmix[i];
N+=Nmix[i];
M+=Nmix[i]*gasList[i].M;
}
M=M/N;
arrange_atoms();
}
// ==============================================================
public double vis(double T)
{
// dynamic viscosity of the mixture
// note that viscosity of the mixture IS NOT the simple addition
// of viscosity of component gasses
double vmix=0;
for(int i=0;i<ngas;i++)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
T=T;
double fij;
double xj=0;
double p1;
double c1,c2,c3;
for(int j=0;j<ngas;j++)
{
double vratio;
double xi=gasList[i].M/gasList[j].M;
if(gasList[j].vis(T)!=0)
{
c1=gasList[i].vis(T)/gasList[j].vis(T);
vratio=[Link](c1);
}
else
vratio=0;
c2=[Link](xi,0.25);
p1=(1+vratio/c2);
c3=8.0+8.0*xi;
fij=p1*p1 / [Link](c3);
xj+=fij*gasList[j].N/N;
}
vmix+=gasList[i].N/N*gasList[i].vis(T)/xj;
}
return vmix;
}
// ==============================================================
public double k(double T)
{
// thermal conductivity of the mixture
// note that thermal conductivity of the mixture IS NOT the
// simple addition of the thermal conductivity of component gasses
double vmix=0;
for(int i=0;i<ngas;i++)
{
T=T;
double fij;
double xj=0;
double p1;
double c1,c2,c3;
for(int j=0;j<ngas;j++)
{
double vratio;
double xi=gasList[i].M/gasList[j].M;
if(gasList[j].k(T)!=0)
{
c1=gasList[i].k(T)/gasList[j].k(T);
// if(c1<0) [Link]("negative c1 value ");
vratio=[Link](c1);
}
else
vratio=0;
c2=[Link](xi,0.25);
p1=(1+vratio/c2);
c3= 8.0+8.0*xi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// if(c2<0) [Link](" negative c2 value ");
fij=p1*p1/[Link](c3);
xj+=fij*gasList[j].N/N;
}
vmix+=gasList[i].N/N*gasList[i].k(T)/xj;
}
return vmix;
}
// ==============================================================
public double Pr(double t)
{
// Prandtl number
return Cp(t)*vis(t)/k(t)/M*1e3;
}
// ==============================================================
public double h(double T)
{
//specific enthalpy of the mixture KJ/kmol
double HH=0;
for(int i=0;i<ngas;i++)
{ HH+=gasList[i].h(T)*gasList[i].N; }
return HH/N;
}
// ==============================================================
public double ht(double T)
{
//specific enthalpy of the mixture ht=h+hf
// hf : formation enthalpy
double HH=0;
for(int i=0;i<ngas;i++)
{ HH+=gasList[i].ht(T)*gasList[i].N; }
return HH/N;
}
// ==============================================================
public double H(double t)
{
//total enthalpy of the mixture KJ
return h(t)*N;
}
// ==============================================================
public double HT(double t)
//total enthalpy of the mixture HT=N*(h+hf) KJ
{
return ht(t)*N;
}
// ==============================================================
public double u(double T)
{
// specific internal energy of the mixture KJ/kmol
double UU=0;
for(int i=0;i<ngas;i++)
{ UU+=gasList[i].u(T)*gasList[i].N; }
return UU/N;
}
// ==============================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public double Cp(double T)
{
// Specific energy at constant pressure KJ/kmol K
double C=0;
for(int i=0;i<ngas;i++)
{ C+=gasList[i].Cp(T)*gasList[i].N; }
return C/N;
}
// ==============================================================
public double Cv(double T)
//Specific energy at constant volume KJ/kmol K
{
double C=0;
for(int i=0;i<ngas;i++)
{ C+=gasList[i].Cv(T)*gasList[i].N; }
return C/N;
}
// ==============================================================
public double gamma(double T)
{
//adiabatic constant
return Cp(T)/Cv(T);
}
// ==============================================================
public double c(double T)
//speed of sound m/s
{
return [Link](8314.5/M*T*gamma(T));
}
// ==============================================================
public double s(double T, double P)
{
//specific entropy KJ/kmol K
double SS=0;
for(int i=0;i<ngas;i++)
{
SS+=gasList[i].s(T,P)*gasList[i].N;
}
return SS/N;
}
public double s(double T)
{
//specific entropy KJ/kmol K
double P=1.0;
double SS=0;
for(int i=0;i<ngas;i++)
{
SS+=gasList[i].s(T,P)*gasList[i].N;
}
return SS/N;
}
// ==============================================================
public double v(double T, double P)
{
double VV=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<ngas;i++)
{ VV+=gasList[i].v(T,P)*gasList[i].N; }
return VV/N;
}
// ==============================================================
public double T( char name,double y0,double p)
{
double t=300;
if(name=='v') {t= p*1e5*y0/8.314e3;}
else
{
double dt;
int nmax=400;
double tolerance=1.0e-8;
for(int i=0;i<nmax;i++)
{
if (name=='h') dt=-( h(t) - y0 ) /Cp(t);
else if(name=='u') dt=-( u(t) - y0 ) /Cv(t);
else if(name=='s') dt=-( s(t,p) - y0 ) /(Cp(t)/t);
else { [Link]("wrong name defined please try h,u,s ot v"); break;}
t+=dt;
if([Link](dt)<tolerance) break;
}
}
return t;
}
// ==============================================================
public double P( char name,double y0,double t1)
{
if(name=='v') return 8.314e3*t1/y0*1e-5;
else if (name=='s') return [Link]((s(t1,1.0)-y0)/8.314);
else { [Link]("wrong name defined please try s or v"); return 1.0;}
}
// ==============================================================
public void multiplyassign(double Nx)
{
for(int i=0;i<ngas;i++)
{ gasList[i].N*=Nx; }
N*=Nx;
}
// ==============================================================
public void addassign(Gas g1) throws IOException
{
// this function adds a single gas to the mixture
int gasflag=1;
// if the gas exist in the list simply change N and M values
for(int i=0;i<ngas;i++)
{
if(gasList[i].gasName==[Link])
{
gasflag=0;
M=M*N+g1.M*g1.N;
gasList[i].N+=g1.N;
N+=g1.N;
M=M/N;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}
if(gasflag!=0)
{
Gas newGas[];
newGas=new Gas[ngas+1];
for(int i=0;i<ngas;i++)
{
newGas[i]=new Gas(gasList[i]);
}
ngas++;
double MT=M*N+g1.M*g1.N;
N+=g1.N;
M=MT/N;
newGas[ngas-1]=new Gas(g1);
gasList=newGas;
}
}
// ==============================================================
public void addassign(Gmix right) throws IOException
{
// this function adds a gas mixture to the mixture
for(int i=0;i<[Link];i++)
{
add([Link][i]);
}
}
// ==============================================================
public Gmix multiply( double Nx,Gmix right) throws IOException
{
Gmix g1=new Gmix(right);
g1.N*=Nx;
for(int i=0;i<[Link];i++)
{
[Link][i].N*=Nx;
}
return g1;
}
// ==============================================================
public Gmix add(Gas l,Gas r) throws IOException
{
Gmix g1=new Gmix(r);
Gas g2=new Gas(l);
[Link](g2);
return g1;
}
// ==============================================================
public Gmix add(Gmix l,Gas r) throws IOException
{
Gmix g1=new Gmix(l);
Gas g2=new Gas(r);
[Link](g2);
return g1;
}
// ==============================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public Gmix add(Gas l,Gmix r) throws IOException
{
Gmix g1=new Gmix(r);
Gas g2=new Gas(l);
[Link](g2);
return g1;
}
// ==============================================================
public Gmix add(Gmix l,Gmix r) throws IOException
{
Gmix g1=new Gmix(l);
for(int i=0;i<[Link];i++)
{
[Link]([Link][i]);
}
return g1;
}
// ==============================================================
public void assign(Gmix g1) throws IOException
{
gasName=[Link];
N=g1.N;
M=g1.M;
ngas=[Link];
Gas newGas[];
newGas=new Gas[ngas];
for(int i=0;i<ngas;i++) newGas[i]=[Link][i];
gasList = newGas;
}
// ==============================================================
public void assign(Gas g1) throws IOException
{
// a single gas is assigned to the mixture
gasName=[Link];
N=g1.N;
M=g1.M;
ngas=1;
gasList=new Gas[ngas];
gasList[0]=new Gas(g1);
}
public String toString(String ch)
{
//return the c
String s="";
int i,j;
if([Link]("name"))
s=s+gasName+"\n";
else if([Link]("formula"))
{
for(i=0;i<ngas;i++)
{ s=s+" "+gasList[i].toString()+" "+gasList[i].N+"\n"; }
}
else if([Link]("composition"))
{
for(i=0;i<natom;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s=s+atomList[i].toString()+"\n";
}
return s;
}
}//end of class
Gmix veri dosyasý [Link] (kýsmi liste )
diesel1
25
c9h20 0.0122
c10h22 0.0243
c11h24 0.0517
c12h26 0.0912
c13h28 0.2007
c14h30 0.1959
c15h32 0.098
c16h34 0.049
c17h36 0.0245
c18h38 0.0122
c19h40 0.0061
c20h42 0.0031
c11h16 0.0027
c12h18 0.0041
c13h20 0.0055
c14h22 0.0058
c15h24 0.0059
c16h26 0.0065
c17h28 0.0030
c18h30 0.0020
c10h8 0.0302
c11h10 0.0654
c12h12 0.0453
c13h14 0.0322
c14h16 0.0215
metanolreformeryanmaodasi
4
co2 1
h2o 2.1
n2 7.5238
o2 0.5
biogaz
5
h2 0.116
co 0.174
ch4 0.082
co2 0.131
n2 0.382
yanmahavasi
2
o2 2.463
n2 9.26557
Program 10.20 [Link]
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
class GmixModel extends AbstractTableModel
{
Object[][] veri={
{"M : ","0","kg/kmol"},
{"h, enthalpy : ","0","KJ/kmol"},
{"u, Internal energy : ","0","KJ/kmol"},
{"s, Entropy : ","0","KJ/kmol K"},
{"v, Specific volume : ","0","m^3/kmol"},
{"k, Thermal conductivity : ","0","W/m K"},
{"h+hf, enthalpy+form. enth. : ","0","KJ/kmol"},
{"Density : ","0","kg/m^3"},
{"Cp : ","0"," KJ/kmol K"},
{"Cv : ","0","KJ/kmol K"},
{"Cp/Cv adiabatic constant : ","0"," "},
{"c speed of sound : ","0","m/s"},
{"Viscosity : ","0","N s/m^2"},
{"Pr,Prandtl Number : ","0"," "}};
String[] baslik={"Property ","Value ","Units"};
public GmixModel(Gmix g1,double TK,double P)
{
setValues(g1,TK,P);
}
public int getRowCount() {return [Link];}
public int getColumnCount() {return [Link];}
public Object getValueAt(int satir,int sutun) {return veri[satir][sutun];}
public String getColumnName(int c) {return baslik[c];}
public void setValueAt(Object val, int row, int col)
{
veri[row][col] = val;
}
public void setValues(Gmix g1,double T,double P)
{
double TK=T+273.0;
setValueAt((""+g1.M),0,1);
setValueAt([Link](g1.h(TK)),1,1);
setValueAt([Link](g1.u(TK)),2,1);
setValueAt([Link](g1.v(TK,P)),3,1);
setValueAt([Link](g1.s(TK,P)),4,1);
setValueAt([Link](g1.k(TK)),5,1);
setValueAt([Link]([Link](TK)),6,1);
setValueAt([Link](g1.M/g1.v(TK,P)),7,1);
setValueAt([Link]([Link](TK)),8,1);
setValueAt([Link]([Link](TK)),9,1);
setValueAt([Link]([Link](TK)),10,1);
setValueAt([Link](g1.c(TK)),11,1);
setValueAt([Link]([Link](TK)),12,1);
setValueAt([Link]([Link](TK)),13,1);
}
public boolean isCellEditable(int row, int col) {return false;}
}
Program 10.21 [Link]
// ======================================================
// Thermodynamics package in java
// GmixPropertySWF class to calculate properties of perfect

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// gas mixtures user interface (JFrame)
// Dr. Turhan Coban
// TUBITAK Marmara Research Center
// Energy Systems and Environmental Research Institute
// email : [Link]@[Link]
// =====================================================
import [Link].*;
import [Link];
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import GmixModel;
public class GmixPropertySWF extends JFrame implements ActionListener,ItemListener
{
final static String MAIN = "Main Page";
final static String GASFORMULA = "Gas Formula";
JTabbedPane tabbedPane;
JPanel inputPanel;
JPanel outputPanel;
JPanel totalPanel;
JTextField promptGmixName; // Label prompt GmixName
JTextField promptTemperature; // Label prompt Temperature
JTextField promptPressure; // Label prompt Pressure
JComboBox inputGmixName; // input GmixName
JTextField inputTemperature; // input (from list )Temperature
JTextField inputPressure; // input Pressure
JTextArea outputTextArea;
JTextArea outputTextArea1;
GmixModel gm;
JTable jt;
double T;
double P;
String GmixName;
Gmix g1;
protected File gmixFile;
protected StringTokenizer token;
String st[];
final static Color bg=[Link];
final static Color fg=[Link];
final static Color kirmizi=[Link];
final static Color beyaz=[Link];
public GmixPropertySWF()
{
super("Properties of perfect gas mixtures ");
Container c=getContentPane();
[Link](new FlowLayout());
tabbedPane = new JTabbedPane();
//adding max-min prompts and input fields
GmixName=new String("air");
T=27.0;
P=1.0;
inputPanel=new JPanel();
[Link](new GridLayout(3,2));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
outputPanel=new JPanel();
[Link](new BorderLayout());
totalPanel=new JPanel();
[Link](new BorderLayout());
try{
g1=new Gmix(GmixName);
token=new StringTokenizer([Link]());
st=new String[[Link]()];
} catch(IOException ioe) {[Link]("IOException");}
int i=0;
while([Link]())
{
st[i++]=new String((String)[Link]());
}
inputGmixName=new JComboBox(st);
GmixName=(String)[Link]();
try{
g1=new Gmix(GmixName);
} catch(IOException ioe) {[Link]("IOException");}
promptGmixName= new JTextField(20);
[Link]("Simple Gmix Name : ");
[Link]([Link]);
promptTemperature=new JTextField(20);
[Link]("Temperature (°C) : ");
[Link]([Link]);
inputTemperature=new JTextField(20);
[Link]([Link]);
promptPressure= new JTextField(20);
[Link]("Pressure (Bars) : ");
[Link]([Link]);
outputTextArea = new JTextArea();
[Link]([Link]);
outputTextArea1 = new JTextArea();
[Link]([Link]);
inputPressure=new JTextField(20);
[Link]([Link]);
[Link](promptGmixName);
[Link](inputGmixName);
[Link](promptTemperature);
[Link](inputTemperature);
[Link](promptPressure);
[Link](inputPressure);
[Link](this);
[Link](this);
[Link](this);
gm=new GmixModel(g1,T,P);
jt=new JTable(gm);
[Link]([Link]());
setArea();
[Link](outputTextArea,[Link]);
[Link](jt,[Link]);
[Link](inputPanel,[Link]);
[Link](outputPanel,[Link]);
[Link](MAIN, totalPanel);
[Link](GASFORMULA, outputTextArea1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](tabbedPane);
}
public void setArea()
{
double TK=T+273.0;
[Link]([Link](T));
[Link]([Link](P));
String s="additional data can be added to [Link] file \n";
s+="Dr. Turhan Çoban, TUBÝTAK Marmara Research Center\n";
s+="Energy Systems & Environmental Research Institute\n";
s+="PO Box 21, Gebze - Kocaeli, Turkey\n";
s+="email: [Link]@[Link]";
//note if you would like to list additional information on the screen
//add to string s
String s1="";
s1+="Gas mixture formula :\n";
s1+="=========================\n"+[Link]("formula")+"\n";
s1+="Gas mixture composition :\n";
s1+="=========================\n"+[Link]("composition")+"\n";
[Link](g1,T,P);
[Link](s);
[Link](s1);
}
public void itemStateChanged(ItemEvent ev)
{
GmixName=(String)[Link]();
try{
g1=new Gmix(GmixName);
} catch(IOException ioe1) {[Link]("IOException");}
setArea();
repaint();
}
public void actionPerformed( ActionEvent e)
{
Double valTemp=new Double([Link]());
T=[Link]();
Double valPressure=new Double([Link]());
P=[Link]();
getContentPane().setLayout(new FlowLayout([Link]));
setArea();
repaint();
}
public static void main(String[] args)
{
GmixPropertySWF pencere= new GmixPropertySWF();
[Link](
new WindowAdapter()
{
public void windowClosing(WindowEvent e) {[Link](0);}
} );
[Link]();
[Link](true);
}
}
Veri çýktýsý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Burada hemen bir noktaya dikkat çekelim. Gerçek programlamalarda asýl veriyi iºleyen
sýnýflar ve insan grafik arayüzü programlarý genelde ayrý tutulur. Bu problem seti ayný
zamanda sýnýflarýn birbiri üzerine inºasýnýn da güzel bir örneðini teºkil etmektedir.
6. Bu problemde bir önceki problemde verilen uygulamanýn bir kademe daha ilerine
gideceðiz. Burada Gaz karýºýmlarýný bir borudan akýtacaðýz. Borunun basýnç düºümü ýsý
transferi gibi çeºitli özelliklerini bu program yardýmýyla deðerlendireceðiz. Borularýn özellikleri
[Link] dosyasýnda tanýmlanmýºtýr. Gaz karýºýmý için Boru basýnç düºümü ve ýsý transferini
hesaplayan programýmýzýn ismi [Link]’dýr.
Program 10.22 [Link]
//===================================================================
// Thermodynamic package in java
// File Name : [Link]
// Author : Turhan Coban
// TUBÝTAK Marmara Research Center
// Energy Systems and Environmental Research Institute
// email : turhan@[Link]
// Description : This file contains the pipe class
// class pipe calculates pressure drops
// and internal heat transfer of pipes
// DATA FILE DEFINATION
// pipe datas are written in the data file "[Link]"

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// if gas data is not given in the data file, it can be curve fitted
// and added to the data file. Each data has the following form :
//------------------
// pipeName
// shape
// gasName
// d1 d2 (or only d1 depends on shape)
// mass_flow_rate
//-------------------
// a constructor is also available to define this data as passing values
//============================================================
// VARIABLE IDENTIFICATION
// all the variables that type is not defined is a double variable
// pipeName : String class variable for name
// shape : String class variable for shape of the cross-section
// options :
// circular
// rectangular
// concentric_annulus
// circular_segment
// circular_sector
// right_triangle
// gasName : String class variable for name of the gas mixtures
// g : gmix class variable
// mass_flow_rate : mass flow rate of gas mixture flowing
// through pipe, kg/s
// eps : pipe equivalent roughness m
// -------------------------------------------
// value of equivalent roughness for some pipes:
// Pipe equivalent rougness m
// ------------- ---------------------
// Riveted steel 0.9e-3 - 9e-3
// Concrete 0.3e-3 - 3e-3
// Wood stave 0.18e-3 - 0.9 e-3
// Cast iron 0.26e-3
// Galvanised iron 0.15e-3
// Commercial steel 0.045e-3
// wrought iron 0.045e-3
// drawn tubing 0.0015e-3
// Plastic,glass 0.0 (smooth)
// -------------------------------------------
// P : Pressure bar
// l : length m
// dh : hydraulic diameter m
// A : pipe area m^2
// KL : local pressure drop coefficient
//
//============================================================
import [Link].*;
import Text;
import Gmix;
class pipe{
protected double d1,d2; // m pipe dimensions
// actual meaning of d1 and d2
// can be change according to shape

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String pipeName;
public String shape; //pipe shape "circular","rectangular"...
public String gasName; //name of a gas mixture
public Gmix g;
public double mass_flow_rate; // kg/s
public double eps ; // m
public double P ; // Pressure bar
public double l ; // length
public double dh; // hydraulic diameter
public double A; // pipe area m^2
public double KL; //additional local pressure drop
// pipe functions
//=============================================
public static double tanh(double x)
{
//I couldnt find hyperbolic tangent in java
return ([Link](x)-[Link](-x))/([Link](x)+[Link](-x));
}
public static double f(double Re,double eod)
{
// friction factor for turbulent flow 5000<Re<10^8
double f1=[Link](eod/3.7+5.74/ [Link](Re,0.9))/[Link](19);;
f1=1.325/(f1*f1);
return f1;
}
public static double fx(double X,double Re,double eod)
{
// colebrook equation to solve
// friction factor for turbulent flow 2000 < Re
double xx=2.0*[Link](eod/3.7+2.51/Re*X)/[Link](10.0)+X;
return xx;
}
public static double dfx(double X,double Re,double eod)
{
//derivative of colebrook equation
double xx;
xx = 1+2.0/(eod/3.7+2.51/Re*X)/[Link](10.0)*2.51/Re;
return xx;
}
public static double fcol(double Re,double eod)
{
//solution of the colebrook equation
// by using newton method
double fi=f(Re,eod);
double x=1.0/ [Link](fi,0.5);
int nmax=50;
double tolerance=1.0e-10;
for(int i=0;i<nmax;i++)
{
double fx1=fx(x,Re,eod);
x-=fx1/dfx(x,Re,eod);
if([Link](fx1)<tolerance) return 1.0/(x*x);
}
return 1.0/(x*x);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//==============================================
// implementation of constructors functions
// for class pipe
public pipe(String name,double le)
{
//this function reads pipe configuration
//from file [Link]
l=le;
//beginning of try block
try{
BufferedReader cfin=new BufferedReader(new FileReader("[Link]"));
int ierror=1;
//************
try{
while(cfin!=null)
{
pipeName=[Link](cfin);
if([Link](name)) { ierror=0; break;}
} //end of while
} catch(EOFException e_eof)
{
[Link]("error required pipe "+name+" is not found");
[Link]();return;
}
//************
if(ierror==1)
{[Link]("error required pipe name cannot be found in the data file\n");return;}
shape=[Link](cfin);
gasName=[Link](cfin);
g=new Gmix(gasName);
if(g==null)
{
[Link]("gmix is not found\n");
}
double pi=4.0*[Link](1.0);
if([Link]("circular"))
{
d1=[Link](cfin);
d2=0.0;
A=pi*d1*d1/4;dh=d1;
}
else if([Link]("rectangular"))
{
d1=[Link](cfin);
d2=[Link](cfin);
A=d1*d2;dh=4.0*d1*d2/(2.0*d1+2.0*d2);
}
else if([Link]("concentric_annulus"))
{
d1=[Link](cfin);
d2=[Link](cfin);
dh=[Link](d2-d1);
A=pi*dh*dh/4.0;
}
else if([Link]("circular_segment"))

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
d1=[Link](cfin);
d2=[Link](cfin);
dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));
A=pi*dh*dh/4.0;
}
else if([Link]("circular_sector"))
{
d1=[Link](cfin);
d2=[Link](cfin);
dh=d2/(1+d2)*d1;
A=pi*dh*dh/4.0;
}
else if([Link]("right_triangle"))
{
d1=[Link](cfin);
d2=[Link](cfin);;
dh=4.0*d1*d2/(d1+d2+ [Link]((d1*d1+d2*d2),0.5));
}
eps=0.03e-3;
mass_flow_rate=[Link](cfin);
P=1.0;;
KL=0.0;
//end of try block
}
catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);
}
}
public pipe(String name)
{
//this function reads pipe configuration
//from file [Link]
l=1.0;
//beginning of try block
try{
BufferedReader cfin=new BufferedReader(new FileReader("[Link]"));
int ierror=1;
while(cfin!=null)
{
pipeName=[Link](cfin);
if([Link](name)) {ierror=0;break;}
}
if(ierror==1)
{[Link]("error required pipe name cannot be found in the data file\n");return;}
shape=[Link](cfin);
gasName=[Link](cfin);
g=new Gmix(gasName);
if(g==null)
{
[Link]("gmix is not found\n");
}
double pi=4.0*[Link](1.0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link]("circular"))
{
d1=[Link](cfin);
d2=0.0;
A=pi*d1*d1/4;dh=d1;
}
else if([Link]("rectangular"))
{
d1=[Link](cfin);
d2=[Link](cfin);
A=d1*d2;dh=4.0*d1*d2/(2.0*d1+2.0*d2);
}
else if([Link]("concentric_annulus"))
{
d1=[Link](cfin);
d2=[Link](cfin);
dh=[Link](d2-d1);
A=pi*dh*dh/4.0;
}
else if([Link]("circular_segment"))
{
d1=[Link](cfin);
d2=[Link](cfin);
dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));
A=pi*dh*dh/4.0;
}
else if([Link]("circular_sector"))
{
d1=[Link](cfin);
d2=[Link](cfin);
dh=d2/(1+d2)*d1;
A=pi*dh*dh/4.0;
}
else if([Link]("right_triangle"))
{
d1=[Link](cfin);
d2=[Link](cfin);;
dh=4.0*d1*d2/(d1+d2+ [Link]((d1*d1+d2*d2),0.5));
}
eps=0.03e-3;
mass_flow_rate=[Link](cfin);
P=1.0;;
KL=0.0;
//end of try block
}
catch(IOException e)
{
[Link]("Error Opening File \n"+[Link]());
[Link](1);
}
}
void change_d1(double dim1)
{
d1=dim1;
double pi=4.0*[Link](1.0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if(shape=="circular")
{ A=pi*d1*d1/4;dh=d1;}
else if(shape=="rectangular")
{
A=d1*d2;dh=4.0*d1*d2/(2.0*d1+2.0*d2);
}
else if(shape=="concentric_annulus")
{dh=[Link](d2-d1);A=pi*dh*dh/4.0;}
else if([Link]("circular_segment"))
{dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));A=pi*dh*dh/4.0;}
else if(shape=="circular_sector")
{dh=d2/(1+d2)*d1; A=pi*dh*dh/4.0; }
else if(shape=="right_triangle")
{
dh=4.0*d1*d2/(d1+d2+ [Link]((d1*d1+d2*d2),0.5));
A=d1*d2/2.0;
}
}
void change_d2(double dim2)
{
d2=dim2;
double pi=4.0*[Link](1.0);
if(shape=="circular")
{ d2=0;A=pi*d1*d1/4;dh=d1;}
else if([Link]("rectangular"))
{
A=d1*d2;dh=4.0*d1*d2/(2.0*d1+2.0*d2);
}
else if([Link]("concentric_annulus"))
{dh=[Link](d2-d1);A=pi*dh*dh/4.0;}
else if([Link]("circular_segment"))
{dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));A=pi*dh*dh/4.0;}
else if([Link]("circular_sector"))
{dh=d2/(1+d2)*d1; A=pi*dh*dh/4.0; }
else if([Link]("right_triangle"))
{
dh=4.0*d1*d2/(d1+d2+ [Link]((d1*d1+d2*d2),0.5));
A=d1*d2/2.0;
}
}
pipe(String pn,
String sh,
String gn,
double dim1,
double dim2,
double m,double e,
double pp,
double k,
double length)
{
// direct assignment constructor
// this constructor can assign all
// the required values directly without
// going to the data file
pipeName=pn;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
l=length;
shape=sh;
try{
g=new Gmix(gn);
} catch(IOException ioe) {[Link]("IOException");}
double pi= 4.0*[Link](1.0);
d1=dim1;
d2=dim2;
if([Link]("circular"))
//d1 is diameter of the pipe
{ A=pi*d1*d1/4;dh=d1;d2=0;}
else if([Link]("rectangular"))
// d1 and d2 are two sides of the rectangle
{ A=d1*d2;dh=4.0*d1*d2/(2.0*d1+2.0*d2);
}
else if([Link]("concentric_annulus"))
// d1 and d2 are inrernal and external diameters
//of the concentric annulus
{ dh=[Link](d2-d1);A=pi*dh*dh/4.0;}
else if([Link]("circular_segment"))
// d1 is diameter and d2 is the angle of the circular segment
{ dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));A=pi*dh*dh/4.0;}
else if([Link]("circular_sector"))
//d1 is the diameter, d2 is the height of the circular section
{ dh=d2/(1+d2)*d1; A=pi*dh*dh/4.0; }
else if([Link]("right_triangle"))
// d1 and d2 two sides of right triangle
{
dh=4.0*d1*d2/(d1+d2+ [Link]((d1*d1+d2*d2),0.5));
A=d1*d2/2.0;
}
eps=e;
mass_flow_rate=m;
P=pp;
KL=k;
}
pipe(String pn,
String sh,
Gmix gmix1,
double dim1,
double dim2,
double m,
double e,
double pp,
double k,
double length)
{
// direct assignment constructor
// this constructor can assign all
// the required valued directly without
// going to the data file
pipeName=pn;
shape=sh;
//setup gas name
try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
g=new Gmix(gmix1);
} catch(IOException ioe) {[Link]("IOException");}
double pi= 4.0*[Link](1.0);
d1=dim1;
d2=dim2;
l=length;
if([Link]("circular"))
//d1 is diameter of the pipe
{ A=pi*d1*d1/4;dh=d1;d2=0;}
else if([Link]("rectangular"))
// d1 and d2 are two sides of the rectangle
{ A=d1*d2;dh=4.0*d1*d2/(2.0*d1+2.0*d2);
}
else if([Link]("concentric_annulus"))
// d1 and d2 are inrernal and external diameters
//of the concentric annulus
{ dh=[Link](d2-d1);A=pi*dh*dh/4.0;}
else if([Link]("circular_segment"))
// d1 is diameter and d2 is the angle of the circular segment
{ dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));A=pi*dh*dh/4.0;}
else if([Link]("circular_sector"))
//d1 is the diameter, d2 is the height of the circular section
{ dh=d2/(1+d2)*d1; A=pi*dh*dh/4.0; }
else if([Link]("right_triangle"))
// d1 and d2 two sides of right triangle
{ dh=2.0*d1*[Link](d2)/(1.0+[Link](d2)+[Link](d2)); A=pi*dh*dh/4.0;}
eps=e;
mass_flow_rate=m;
P=pp;
KL=k;
}
void change_gas(String str1)
{
try{
g=new Gmix(str1);
}
catch(IOException ioe) {[Link]("IOException");}
}
void change_pipe(
String pn,
String sh,
String gn,
double dim1,
double dim2,
double e,
double m,
double pp,
double k)
{
// change assignment
// this constructor can assign all
// the required valued directly without
// going to the data file
pipeName=pn;
shape=sh;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try{
g=new Gmix(gn);
} catch(IOException ioe) {[Link]("IOException");}
double pi= 4.0*[Link](1.0);
d1=dim1;
d2=dim2;
if([Link]("circular"))
//d1 is diameter of the pipe
{ A=pi*d1*d1/4;dh=d1;}
else if([Link]("rectangular"))
// d1 and d2 are two sides of the rectangle
{ A=d1*d2;dh=2.0*d1*d2/(d1+d2);
}
else if([Link]("concentric_annulus"))
// d1 and d2 are inrernal and external diameters
//of the concentric annulus
{ dh=[Link](d2-d1);A=pi*dh*dh/4.0;}
else if([Link]("circular_segment"))
// d1 is diameter and d2 is the angle of the circular segment
{ dh=d1*(1+[Link](2.0*d2)/2.0/(pi-d2));A=pi*dh*dh/4.0;}
else if([Link]("circular_sector"))
//d1 is the diameter, d2 is the height of the circular section
{ dh=d2/(1+d2)*d1; A=pi*dh*dh/4.0; }
else if([Link]("right_triangle"))
// d1 and d2 two sides of right triangle
{ dh=4.0*d1*d2/(d1+d2+ [Link]((d1*d1+d2*d2),0.5));
A=d1*d2/2.0;
}
eps=e;
mass_flow_rate=m;
P=pp;
KL=k;
}
public double get_d1()
//getting the first dimension
{
return d1;
}
public double get_d2()
//getting the first dimension
{
return d2;
}
public double velocity(double t)
{
// velocity of the pipe m/x
double d =g.M/g.v(t,P);
return (double)(mass_flow_rate/d/A);
}
public double Re(double t)
{
// reynold's number
double d=g.M/g.v(t,1.0);
double vis=[Link](t);
double vv=velocity(t);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double res=(dh*vv*d/vis);
return res;
}
public double f(double t)
{
// this function calculated friction coefficient
// for both laminar and turnulent flow for various
// cross sections
double Rey=Re(t); //Reynold's number
double C=64;
if(Rey<2000)
{
String c = "circular";
String r = "rectangular";
String co_an = "concentric_annulus";
String cir_seg = "circular_segment";
String cir_sec = "circular_sector";
String rig_tri;
rig_tri=new String("right_triangle");
if([Link](c))
//circular cross section, laminar flow
{ C=64.0; }
else if([Link](r))
{
// Laminar rectangular channel friction factor
double x=d1/d2;
if(x>1) x=1/x;
double a1[];
a1=new double[6];
a1[0]= .959923253176985E+02;
a1[1]= -.130364643234979E+03;
a1[2]= .188053177394400E+03;
a1[3]= -.166159826967448E+03 ;
a1[4]= .952739160606451E+02;
a1[5]= -.258949934514987E+02 ;
C=a1[5];
for(int i=4;i>=0;i--) { C=C*x+a1[i];}
}
else if([Link](co_an))
{
//concentric annulus laminar friction factor
double x=d2/d2;
if(x>1) x=1/x;
double a1[];
a1=new double[5];
a1[0]= .717068909524062E+02;
a1[1]= .932037998655195E+03;
a1[2]= -.947586946520906E+04;
a1[3]= .204346570871727E+05;
a1[4]= -.118665325115712E+05;
C=a1[4];
for(int i=4;i>=0;i--) {C=C*x+a1[i];}
}
else if([Link](cir_seg))
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//circular segment laminar friction factor
double a1[];
a1=new double[5];
a1[0]= .639999999999997E+02;
a1[1]= -.162338014624008E+01;
a1[2]= .162620455430327E+01;
a1[3]= -.827251633703104E+00 ;
a1[4]= .138590724447624E+00;
C=a1[4];
for(int i=3;i>=0;i--) {C=C*d2+a1[i];}
}
else if([Link](cir_sec))
{
//circular section laminar friction factor
double a1[];
a1=new double[4];
a1[0]= .480000000000000E+02;
a1[1]= .227909935649730E+02;
a1[2]= -.134959915493607E+02;
a1[3]= .325095868081599E+01;
C=a1[3];
for(int i=2;i>=0;i--) {C=C*d2+a1[i];}
}
else if([Link](rig_tri))
{
//right triangle laminar friction factor
double a1[];
a1=new double[5];
a1[0]= .480001792918036E+02;
a1[1]= .127207559700323E+02;
a1[2]= -.108590518340935E+02;
a1[4]= .158423382029386E+01;
a1[5]= .115425033696128E+01;
C=a1[5];
for(int i=4;i>=0;i--) {C=C*d2+a1[i];}
}
return C/Rey;
}
else
{
double eod=eps/dh;
double fc=fcol(Rey,eod);
return fc;
}
}
public double lentry(double t)
{
//hydraulic entry length
double Rey=Re(t);
double le;
if(Rey<2000) le=0.06*dh*Rey;
else le=4.4*dh* [Link](Rey,(1.0/6.0));
return le;
}
public double dP(double t,double P)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
// pipe pressure drop for the given length plus
// local KL factors
double V=velocity(t);
return (KL+f(t)*l/dh)*(g.M/g.v(t,P))*V*V/2.0*1e-5;
}
public double dP(double t)
{
double P=1;
// pipe pressure drop for the given length plus
// local KL factors
double V=velocity(t);
return (KL+f(t)*l/dh)*(g.M/g.v(t,P))*V*V/2.0*1e-5;
}
public double dPl_e(double t,double P)
{
double Q=mass_flow_rate*g.v(t,P)/g.M;
double a=d1/2.0;
double b=d2/2.0;
double x=0;
double pi=4.0*[Link](1.0);
for(int i=1;i<8000;i+=2)
{
x+=tanh(pi*b*i/d1)/(double)(i*i*i*i*i);
}
x=1.0-192.0*a/(pi*pi*pi*pi*pi*b)*x;
double xx=b*a*a*a/(6.0*[Link](t))*x;
xx=Q/xx*l*1e-5;
return xx;
}
void change_length(double l1)
{ l=l1; }
void change_mass_flow_rate(double mfr)
{ mass_flow_rate=mfr; }
void change_P(double Pin)
//change inlet pressure
{ P=Pin; }
void change_KL(double klin)
//change local pressure drop coefficient
{KL=klin; }
void change_e(double e)
{ eps=e; }
public double hc(double t)
{
//convective heat transfer coefficient
double Rey=Re(t);
double Nu=0;
if(Rey<2000)
{
if([Link]("circular"))
{ Nu=3.66; }
else if([Link]("rectangular"))
{
// Laminar rectangular channel friction factor
double x=d1/d2;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if(x>1) x=1/x;
double a1[];
a1=new double[7];
a1[0]= .754000000000580E+01;
a1[1]= -.193789080028494E+02;
a1[2]= .333861212302836E+02;
a1[3]= -.170496495070800E+02 ;
a1[4]= -.304226226912837E+02;
a1[5]= .495297442580787E+02;
a1[6]= -.206246852871550E+02;
Nu=a1[6];
for(int i=5;i>=0;i--) {Nu=Nu*x+a1[i];}
}
else if([Link]("concentric_annulus"))
{
double x=d2/d2;
if(x>1) x=1/x;
double a1[];
a1=new double[4];
a1[0]= .401698044199492E+01;
a1[1]= .921803331830132E+00;
a1[2]= -.307845192109755E+00;
a1[3]= .229092480046921E+00;
Nu=a1[3];
for(int i=2;i>=0;i--) {Nu=Nu*x+a1[i];}
}
else if([Link]("circular_segment"))
{
Nu=3.66;
}
else if([Link]("circular_sector"))
{
Nu=3.66;
}
else if([Link]("right_triangle"))
{
Nu=2.47;
}
}
else
{
double fr = f(t);
Rey = Re(t);
double Prt = [Link](t);
// Gnielinski equation
// Gnielinski, V, Int. Chem Eng., 16, 359,1976
// Valid for 2000 < Re <5e5, 0.5 < Pr < 2000
Nu=fr/8.0*(Rey-1000.0)*Prt/
(1+12.7* [Link](fr/8.0)*( [Link](Prt,(2.0/3.0))-1.0));
}
double kt = g.k(t);
// double Prt = [Link](t);
double result;
result=Nu*kt/dh;
return result;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
public double Nu(double t)
//Nusselt's Number
{
return hc(t)*dh/g.k(t);
}
} //end of class pipe
Program veri dosyasý [Link] (sadece birkaç örnek durum listelenmiºtir.)
example
circular
air
0.1
0.11
p18_natural
circular
natural
18e-3
1.0589996e-4
p18_air
circular
air
18e-3
4.244105e-3
pipe_6
rectangular
prereformer_output
30e-3 1.6e-3
8.727136e-4
veri dosyasý boru ismi, boru ºekli(circular, rectangular..), gazkarýºýmýnýn adý([Link]
dosyasýnda tanýmlanmýº olmalýdýr), boru çapý veya boru en ve boyu ve akýº debisi(kg/s)
bilgilerini içerir. Bu programýn kullanýldýðý çýktý veren bir insan arayüzü programýna göz atalým
:
Program 10.23 [Link]
//======================================================
// Thermodynamics package in java
// pipeProperty class to calculate pipe
// user interface (applet)
// Dr. Turhan Coban
// =====================================================
import pipe;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
public class pipeProperty extends Applet implements ActionListener,ItemListener
{
protected Panel inputPanel;
protected Label promptGmixName; // Label prompt GmixName
protected Label promptTemperature; // Label prompt Temperature
protected Label promptPressure; // Label prompt Pressure
protected Label promptPipeLength; // Label prompt Pipe Length
protected Label promptShape; // Label prompt cross-section shape
protected Label promptD1; // Label prompt first dimension
protected Label promptD2; // Label prompt second dimension

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
protected Label promptKL; // LP local PD coefficient
protected Label promptMass; // LP mass flow rate
protected Label prompte; // LP pipe equivalent roughness
protected Choice inputGmixName; // input GmixName
protected TextField inputTemperature; // input Temperature
protected TextField inputPressure; // input Pressure
protected TextField inputPipeLength; // input pipe length
protected Choice inputShape;
protected String pipeShapeArray[]={"circular","rectangular",
"concentric_annulus","circular_segment","circular_sector","right_triangle"};
protected TextField inputD1;
protected TextField inputD2;
protected TextField inputKL;
protected TextField inputMass;
protected TextField inpute;
double T;
double P;
double TK;
double pipeLength;
String pipeShape;
double D1,D2;
String GmixName;
String pipeName;
double mass_flow_rate;
Gmix g1;
pipe p1;
double KL;
double e;
StringTokenizer token;
public void init()
{
//adding max-min prompts and input fields
inputPanel=new Panel();
[Link](new GridLayout(10,2));
GmixName=new String("natural");
try{
g1=new Gmix(GmixName);
token=new StringTokenizer([Link]());
} catch(IOException ioe) {[Link]("IOException");}
pipeName=new String("P18_natural");
T=27.0;
TK=T+273;
P=1.0;
pipeLength=1.0;
KL=0.0;
D1=0.005;
D2=0.005;
e=0.00001;
mass_flow_rate=0.01;
pipeShape =new String("circular");
promptGmixName= new Label(" Gas mixture Name : ");
inputGmixName=new Choice();
while([Link]())
{
[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
//inputGmixName=new TextField(15);
promptTemperature= new Label(" Temperature (øC) : ");
inputTemperature=new TextField(15);
promptPressure= new Label(" Pressure (Bars) : ");
inputPressure=new TextField(15);
promptPipeLength= new Label(" Pipe Length, m : ");
inputPipeLength=new TextField(15);
promptShape= new Label(" Pipe Shape : ");
inputShape=new Choice();
for(int i=0;i<5;i++)
{
[Link](pipeShapeArray[i]);
}
promptD1= new Label(" Pipe Dimension D1, m : ");
inputD1= new TextField(15);
promptD2= new Label(" Pipe Dimension D2, m : ");
inputD2= new TextField(15);
promptKL= new Label(" Pipe Local PD coefficient, : ");
inputKL= new TextField(15);
promptMass= new Label(" mass flow rate , kg/s : ");
inputMass= new TextField(15);
prompte= new Label(" Pipe equivalent roughness, m: ");
inpute= new TextField(15);
//********
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
//********
[Link](promptGmixName);
[Link](inputGmixName);
[Link](promptTemperature);
[Link](inputTemperature);
[Link](promptPressure);
[Link](inputPressure);
[Link](promptPipeLength);
[Link](inputPipeLength);
[Link](promptShape);
[Link](inputShape);
[Link](promptD1);
[Link](inputD1);
[Link](promptD2);
[Link](inputD2);
[Link](promptKL);
[Link](inputKL);
[Link](promptMass);
[Link](inputMass);
[Link](prompte);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](inpute);
[Link]([Link](T));
[Link]([Link](P));
[Link]([Link](pipeLength));
[Link]([Link](D1));
[Link]([Link](D2));
[Link]([Link](KL));
[Link]([Link](mass_flow_rate));
[Link]([Link](e));
//[Link](GmixName);
[Link]([Link](D1));
[Link]([Link](D2));
[Link](false);
[Link]([Link](KL));
[Link]([Link](mass_flow_rate));
[Link]([Link](e));
setLayout(new BorderLayout());
add( inputPanel,[Link]);
p1= new pipe(pipeName,
pipeShape,
GmixName,
D1,
D2,
mass_flow_rate,
e,
P,
KL,
pipeLength);
}
public void itemStateChanged(ItemEvent ev)
{
//pipeShape=pipeShapeArray[[Link]()];
pipeShape=[Link]();
if([Link]("circular"))
{
[Link](false);
}
else
{
[Link](true);
}
GmixName=[Link]();
p1= new pipe(pipeName,
pipeShape,
GmixName,
D1,
D2,
mass_flow_rate,
e,
P,
KL,
pipeLength);
repaint();
showStatus(pipeShape);
}//end of itemStateChange

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void paint(Graphics g)
{
TK=T+273;
[Link]("Pressure Drop , bars : ",20,250);
[Link](""+[Link](TK,P),250,250);
[Link]("f friction : ",20,265);
[Link](""+p1.f(TK),250,265);
[Link]("Velocity , m/s : ",20,280);
[Link](""+[Link](T),250,280);
[Link]("Reynold's number Re : ",20,295);
[Link](""+[Link](TK),250,295);
[Link]("Prandl's number Pr : ",20,310);
[Link](""+[Link](TK),250,2310);
[Link]("Nusselt's number Nu : ",20,325);
[Link](""+[Link](TK),250,325);
[Link]("Hydraulic entry length, m : ",20,340);
[Link](""+[Link](TK),250,340);
[Link]("Viscosity , N s/m^2 : ",20,355);
[Link](""+[Link](TK),250,355);
[Link]([Link]("formula"),20,370);
[Link]([Link]("composition"),20,385);
[Link]("shape : "+pipeShape,20,400);
}//end of method
public void actionPerformed( ActionEvent ee)
{
GmixName=[Link]();
Double valTemp=new Double([Link]());
T=[Link]();
Double valPressure=new Double([Link]());
P=[Link]();
Double valpipeLength=new Double([Link]());
pipeLength=[Link]();
Double valD1=new Double([Link]());
D1=[Link]();
Double valD2=new Double([Link]());
D2=[Link]();
Double valKL=new Double([Link]());
KL=[Link]();
Double valMass=new Double([Link]());
mass_flow_rate=[Link]();
Double valuee=new Double([Link]());
e=[Link]();
p1= new pipe(pipeName,
pipeShape,
GmixName,
D1,
D2,
mass_flow_rate,
e,
P,
KL,
pipeLength);
repaint();
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Appletviewer olarak program çýktýsý:

7. Thermodinamik özellikler serisinden bir adým daha ileri gidip gazlarý kimyasal
reaksiyonlara sokabiliriz. Bu sýnýfýmýz [Link] ismini taºýyor. Gazlarýn termodinamik
reaksiyona girdiklerinde enerji dengelerini,adyabatik alev sýcaklýklarýný ve reaksiyon
sabitlerini (k) hesaplama kapasitesinde bir program. Program veridosyasý [Link]
adýnda. Bu dosyada reaksiyonun ismi, toplam gaz sayýsý, bu gazýn reaksiyona giren ve
reaksiyondan çýkan moleküllerinin sayýsý liste olarak veriliyor. Reaksiyon kütle denklik hesabý
program tarafýndan yapýlmamaktadýr. Doðru molekül sayýlarýnýn verilmesi kullanýcýya
býrakýlmýºtýr.
Bu dosyadan birkaç örnek veri setine göz atalým:
hidrojen
3
h2o 1 0
h2 0 1
o2 0 0.5
c2h4comb
5
c2h4 1 0
o2 3 0
n2 11.28 11.28
co2 0 2
h2o 0 2
LPG
6
c3h8 0.3 0
c4h10 0.7 0
o2 6.05 0
n2 22.7595 22.7595
co2 0 3.7
h2o 0 4.7
dogal_1.05
8
ch4 0.906 0
c2h6 0.056 0
c3h8 8e-4 0
c4h10 2e-4 0
co2 0.018 0
n2 8.116375 8.116375

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
o2 2.155125 0.102625
h2o 0 2.017
dogal_1.1
8
ch4 0.906 0
c2h6 0.056 0
c3h8 8e-4 0
c4h10 2e-4 0
co2 0.018 0
n2 8.5024405 8.5024405
o2 2.27575 0.20525
h2o 0 2.017
Programýmýzýn listesi:
Program 10.24 [Link]
import [Link].*;
import [Link].*;
import Text;
class Reaction
{
//======================================================//
// Dr. Turhan Coban //
// TUBITAK Marmara Research Center //
// Energy Systems and Environmental Research Institute //
// Phone : 90 (262) 641 2300-3917 //
// email : turhan@[Link] //
//======================================================//
// Class Description :
//------------------------------------------------------
// This program calculates energy, adiabatic flame temperature
// entropy and gibbs free energy for a given reaction
// Basic reaction data is given in the file called [Link]
// Format of the data :
// reactionname
// number_of_the_chemicals
// gas_name reactant_mole prodoct_mole
// .......
// gas_name reactant_mole prodoct_mole
//-----------------
// sample data :
//-----------------
// c2h6combustion
// 5
// c2h6 1 0
// o2 3 0
// n2 11.28 11.28
// co2 0 2
// h2o 0 2
//------------------
// the available gas_name's can be checked from data file
// [Link]
// Variable Identification
//-----------------------------------------------------
// ngas : number of gases in reaction (integer variable)
// reacname : reaction name (String variable)
// gasR,gasP: gas objects for reactants and products

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// (array objects of class Gas)
// see [Link] for details
// natom : number of atoms in the reaction
// nr,np : number of Moles of reactants and products
// (double vector array)
// nrt,npt : total number of moles for reactants and products
// reacFile : reaction file channel variable (Class File)
// atomList : list of the atoms in the reaction
public int ngas;
String reacName;
Gas gasR[],gasP[];
public int natom;
Atom atomList[];
File reacFile;
double nr[],np[];
double nrt,npt;
public Reaction(String name) throws IOException
{
reacFile=new File("[Link]");
reacFile=new File([Link]());
try
{
DataInputStream cfin=new DataInputStream(new FileInputStream(reacFile));
int ierror=1;
natom=0;
try
{
while(cfin!=null)
{
reacName=[Link](cfin);
if([Link](name)) {ierror=0;break;}
}
}
catch(EOFException e_eof)
{
[Link]("error required gas mixture "+name+" is not found");
[Link]();return;
}
ngas=[Link](cfin);
gasR=new Gas[ngas];
gasP=new Gas[ngas];
nr=new double[ngas];
np=new double[ngas];
nrt=0;
npt=0;
String tempGasName;
Double n1,n2;
for(int i=0;i<ngas;i++)
{
tempGasName=[Link](cfin);
nr[i]=[Link](cfin);
np[i]=[Link](cfin);
nrt+=nr[i];
npt+=np[i];
gasR[i]=new Gas(tempGasName,nr[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
gasP[i]=new Gas(tempGasName,np[i]);
}
}
catch(FileNotFoundException fnfe) {[Link]("File Not Found");}
arrange_atoms();
} //end of constructor
public void arrange_atoms() throws IOException
{
// atomic structure of the reactants
int i,j;
for(i=0;i<ngas;i++)
{
for(j=0;j<gasR[i].natom;j++)
{
add_atom(i,j);
}
}
}
public int add_atom(int i,int j) throws IOException
{
//determine and order the atomic structure
int k;
for(k=0;k<natom;k++)
{
if(gasR[i].atomList[j].[Link](atomList[k].symbol))
{
atomList[k]=new Atom(atomList[k].symbol,atomList[k].N+gasR[i].atomList[j].N*gasR[i].N);
return 1;
}
}
Atom atomL[];
atomL=new Atom[natom+1];
for(k=0;k<natom;k++)
atomL[k]=new Atom(atomList[k]);
atomL[natom]=new Atom(gasR[i].atomList[j].symbol,gasR[i].atomList[j].N*gasR[i].N);
atomList=atomL;
natom+=1;
return 2;
}
public String toString()
{
// writes chemical reaction in chemistry norm
String s="";
for(int i=0;i<ngas;i++)
{
if(nr[i]==1)
{ s+=gasR[i].toString(); }
else if(nr[i]!=0)
{ s+=nr[i]+" "+gasR[i].toString(); }
if(i!=(ngas-1) && nr[i]!=0 ) s+=" + ";
}
if([Link](" + "))
s=[Link](0,[Link]()-3);
s+=" --> ";
for(int i=0;i<ngas;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
if(np[i]==1)
{ s+=gasP[i].toString(); }
else if(np[i]!=0)
{ s+=np[i]+" "+gasP[i].toString(); }
if(i!=(ngas-1) && np[i]!=0 ) s+=" + ";
}
if([Link](" + "))
s=[Link](0,[Link]()-3);
return s;
}
public String toString(String ch)
{
//return the c
String s="";
int i,j;
if([Link]("name"))
s=s+reacName+"\n";
else if([Link]("formula"))
{
s=toString();
}
else if([Link]("composition"))
{
for(i=0;i<natom;i++)
s=s+atomList[i].toString()+" ";
}
return s;
}
public double H(double TR,double TP)
{
//reaction enthalpy
double HH=0;
for(int i=0;i<ngas;i++)
{
HH+=gasP[i].HT(TP);
HH-=gasR[i].HT(TR);
}
return HH;
}
public double S(double TR,double TP,double pt)
{
//reaction entropy
double SS=0;
for(int i=0;i<ngas;i++)
{
if(np[i]!=0)
SS+=gasP[i].S(TP,np[i]/npt*pt);
if(nr[i]!=0)
SS-=gasR[i].S(TR,nr[i]/nrt*pt);
}
return SS;
}
public double S(double TR,double TP)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//reaction entropy
double SS=0;
for(int i=0;i<ngas;i++)
{
if(np[i]!=0)
SS+=gasP[i].S(TP,np[i]/npt);
if(nr[i]!=0)
SS-=gasR[i].S(TR,nr[i]/nrt);
}
return SS;
}
public double G(double TR,double TP,double pt)
{
// reaction gibbs energy
double GG=0;
for(int i=0;i<ngas;i++)
{
if(np[i]!=0)
GG+=gasP[i].GT(TP,np[i]/npt*pt);
if(nr[i]!=0)
GG-=gasR[i].GT(TR,nr[i]/nrt*pt);
}
return GG;
}
public double G(double TR,double TP)
{
// reaction gibbs energy
double GG=0;
for(int i=0;i<ngas;i++)
{
if(np[i]!=0)
GG+=gasP[i].GT(TP,np[i]/npt);
if(nr[i]!=0)
GG-=gasR[i].GT(TR,nr[i]/nrt);
}
return GG;
}
public double G0(double TR,double TP)
{
// reaction gibbs free energy
double GG=0;
for(int i=0;i<ngas;i++)
{
if(np[i]!=0)
GG+=gasP[i].GT(TP);
if(nr[i]!=0)
GG-=gasR[i].GT(TR);
}
return GG;
}
public double K(double TR,double TP)
{
//Equilibrium costant. Usually TR and Tp will be in
// thesame temperature
return [Link](G0(TR,TP)/(-8.3145*TP));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
public double Taf(double TR,double xl,double xu)
{
// Adyabatic flame temperature using Bisection method
// bisection method to find roots of zero energy change
// Q=0
// defination of variables :
// xl : lower guess
// xu : upper guess
// xr : root estimate
// es : stopping criterion
// ea :approximate error
// maxit : maximum iterations
// iter : number of iteration
double test;
double xr=0;
double es,ea;
double fxl,fxr;
int maxit=500,iter=0;
es=0.000001;
ea=1.1*es;
while((ea>es)&&(iter<maxit))
{
xr=(xl+xu)/2.0;
iter++;
if((xl+xu)!=0)
{ ea=[Link]((xu-xl)/(xl+xu))*100;}
fxl= H(TR,xl);
fxr= H(TR,xr);
test= fxl*fxr;
if(test==0.0) ea=0;
else if(test<0.0) xu=xr;
else
{
xl=xr;
}
} //end of while
return xr;
}
}
programýmýzý bir örnekte test edelim.
Program 10.25 [Link]
import [Link].*;
import Reaction;
class ReactionTest
{
public static void main(String args[]) throws IOException
{
Reaction R2;
R2=new Reaction("hid");
[Link]([Link]("name"));
[Link]([Link]("formula"));
[Link]([Link]("composition"));
double Tadyabatikalev= [Link](299,299, 3000)-273;
[Link]("T adyabatik alev = "+Tadyabatikalev+" derece C");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}
program çýktýsý :
hid
0.17 H2 + 1.72 O2 + 6.47 N2 --> 1.635 O2 + 6.47 N2 + 0.17 H2O
H0.34 O3.44 N12.94
T adyabatik alev = 194.51268483046442 derece C
8. Termodinamik serisinden bir diðer program. Bu program gerçek gazlarýn termodinamik
özelliklerini hesaplýyor. Programýn ismi [Link], veri dosyasý [Link]
Program Listesi :
//======================================================
// Thermodynamic Package in java
// Class Lee Kesler Properties of real gases
// Dr. Turhan Coban
// TUBÝTAK Marmara Research Center
// Energy Systems and Environmental Research Institute
// email : turhan@[Link]
// File Name : [Link]
// This file contains the LeeKesler class
// this class sets basic properties of real gases
// required data is read from [Link]
// =====================================================
// Description : This file contains the LeeKesler class
// class LeeKesler calculates thermophysical properties of
// perfect gasses
// DATA FILE DEFINATION
// datas are written in the data file "[Link]"
//============================================================
// VARIABLE IDENTIFICATION
//============================================================
// GasEquation : String type variable
// values : "LeeKesler"
//
//
// Formula : Fluid chemical formula
// Name : Fluid name
// atomList : Array of atom class, structral information
// natom : number of atoms
// M : Molecular weight as calculated from atomic structure
// through class atom and atomList
// MolWt : Molecular Weigth from data file RealGas
// Tfp : Normal freezing point (1 atm), K
// Tb : Normal Boiling point (1 atm), K
// Tc : Critical temperature, K
// Pc : Critical pressure, bar
// Vc : Critical volume, cm^3/mole
// Zc : Critical compresibility factor PcVc/RTc
// Omega : Pitzer's accentric factor
// Dipm : Dipole moment, debyes
// CPVAPA,CPVAPB,CPVAPC,CPVAPD : constants to calculate the
// isobaric heat capacity of the ideal gas Cp kJ/(kmolK)
// DELHF : formation enthalpy, 298.2 K, 1.01325 bar, KJ/kmol
// DELGF : formation gibbs free energy, 298.2 K, 1.01325 bar,KJ/kmol
// Vpeq : vapor pressure equation number
// VPA,VPB,VPC,VPD : vapor pressure equation coefficients

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Tmin : minimum twmp. K
// Tmax : maximum temp. K
// LDEN : liquid density, g/cm^3
// TDEN : temperature that liquid density is given, K
//============================================================
// Reference : The Properties of Gases & Liquids,
// Robert C. Reid, John M. Prausnitz, Bruce E. Pouling
// McGraw-Hill Book Company, ISBN 0-07-051799-1
//==============================================
import [Link].*;
import Text;
import Atom;
import complex;
//==============================================
// implementation of constructors functions
// for class cubicEquationofState
public class LeeKesler
{
String GasEquation;
int natom;
Atom atomList[];
int No;
String Formula,Name;
double M,MolWt,Tfp,Tb,Tc,Pc,Vc,Zc,Omega,Dipm;
double CPVAPA,CPVAPB,CPVAPC,CPVAPD,DELHF,DELGF;
int VPEq;
double VPA,VPB,VPC,VPD,Tmin,Tmax,LDEN,TDEN;
int ierror;
BufferedReader fin;
double R=8314.5; //(J/kmolK)
double a,b,u,w;
//000000
//================================//
// Equation of State coefficients //
//================================//
//Simple Fluid (omega=0) :
//------------------------
double b0[]=new double[4];
double c0[]=new double[4];
double d0[]=new double[2];
double beta0;
double gama0;
double omega0;
//Reference Fluid (n-octane) :
//------------------------
double bR[]=new double[5];
double cR[]=new double[5];
double dR[]=new double[3];
double betaR;
double gamaR;
public LeeKesler(String s1,double le) throws IOException
{
GasEquation="Peng Robinson";
//setting the simple fluid coefficients :
b0[0]=0.1181193;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
b0[1]=0.265728;
b0[2]=0.15479;
b0[3]=0.030323;
c0[0]=0.0236744;
c0[1]=0.0186984;
c0[2]=0.0;
c0[3]=0.042724;
d0[0]=0.155488e-4;
d0[1]=0.623689e-4;
beta0=0.65392;
gama0=0.060167;
omega0=0.3978;
//setting the reference fluid coefficients :
bR[0]=0.2026579;
bR[1]=0.331511;
bR[2]=0.027655;
bR[3]=0.203488;
cR[0]=0.0313385;
cR[1]=0.0503618;
cR[2]=0.016901;
cR[3]=0.041577;
dR[0]=0.48736e-4;
dR[1]=0.0740336e-4;
betaR=1.226;
gamaR=0.03754;
int i;
String atomName[];
double atomN[];
int anatom;
ierror=1;
String tempName="";
String tempFormula="";
String aFormula,aName;
double aMolWt,aTfp,aTb,aTc,aPc,aVc,aZc,aOmega,aDipm ;
double aCPVAPA,aCPVAPB,aCPVAPC,aCPVAPD,aDELHF,aDELGF;
int aVPEq;
double aVPA,aVPB,aVPC,aVPD,aTmin,aTmax,aLDEN,aTDEN ;
try{
fin=new BufferedReader(new FileReader("[Link]"));
} catch(IOException e)
{
[Link]("Error Opening File [Link]\n"+[Link]());
[Link](1);
}
try{
while(fin!=null)
{
aFormula=[Link](fin);
aName=[Link](fin);
anatom=[Link](fin);
atomName=new String[anatom];
atomN=new double[anatom];
for(i=0;i<anatom;i++)
{
atomName[i]=[Link](fin);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
atomN[i]=[Link](fin);
}
aMolWt=[Link](fin);
aTfp=[Link](fin);
aTb=[Link](fin);
aTc=[Link](fin);
aPc=[Link](fin);
aVc=[Link](fin);
aZc=[Link](fin);
aOmega=[Link](fin);
aDipm=[Link](fin);
aCPVAPA=[Link](fin);
aCPVAPB=[Link](fin);
aCPVAPC=[Link](fin);
aCPVAPD=[Link](fin);
aDELHF=[Link](fin);
aDELGF=[Link](fin);
aVPEq=[Link](fin);
aVPA=[Link](fin);
aVPB=[Link](fin);
aVPC=[Link](fin);
aVPD=[Link](fin);
aTmin=[Link](fin);
aTmax=[Link](fin);
aLDEN=[Link](fin);
aTDEN=[Link](fin);
if ([Link](s1) || [Link](s1) )
{
Name=aName;
Formula=aFormula;
MolWt=aMolWt;
Tfp=aTfp;
Tb=aTb;
Tc=aTc;
Pc=aPc;
Vc=aVc;
Zc=aZc;
Omega=aOmega;
Dipm=aDipm;
CPVAPA=aCPVAPA;
CPVAPB=aCPVAPB;
CPVAPC=aCPVAPC;
CPVAPD=aCPVAPD;
DELHF=aDELHF;
DELGF=aDELGF;
VPEq=aVPEq;
VPA=aVPA;
VPB=aVPB;
VPC=aVPC;
VPD=aVPD;
Tmin=aTmin;
Tmax=aTmax;
LDEN=aLDEN;
TDEN=aTDEN;
natom=anatom;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
atomList=new Atom[natom];
M=0;
for(i=0;i<natom;i++)
{
atomList[i]=new Atom(atomName[i],atomN[i]);
M+=atomList[i].mass;
}
ierror=0;
break;
}
}
} catch(EOFException e_eof)
{
[Link]("error required gas "+s1+" is not found");
[Link]();return;
}
[Link]();
}
public String toString()
{
//return the chemical symbol of the gas
String s="";
for(int i=0;i<natom;i++)
s=s+atomList[i].toString();
return s;
}
public double Z(double T, double V)
{
double Tr=T/Tc;
double Vr=V/Vc;
double B0,C0,D0;
double BR,CR,DR;
double Z0,ZR,ZX;
B0=b0[0]-b0[1]/Tr-b0[2]/(Tr*Tr)-b0[3]/(Tr*Tr*Tr);
C0=c0[0]-c0[1]/Tr+c0[2]/(Tr*Tr*Tr);
D0=d0[0]+d0[1]/Tr;
Z0=1+B0/Vr+C0/(Vr*Vr)+D0/(Vr*Vr*Vr*Vr*Vr)
+ c0[3]/(Tr*Tr*Tr*Vr*Vr)*(beta0+gama0/(Vr*Vr))*[Link](-gama0/(Vr*Vr));
BR=bR[0]-bR[1]/Tr-bR[2]/(Tr*Tr)-bR[3]/(Tr*Tr*Tr);
CR=cR[0]-cR[1]/Tr+cR[2]/(Tr*Tr*Tr);
DR=dR[0]+dR[1]/Tr;
ZR=1+BR/Vr+CR/(Vr*Vr)+DR/(Vr*Vr*Vr*Vr*Vr)
+ cR[3]/(Tr*Tr*Tr*Vr*Vr)*(betaR+gamaR/(Vr*Vr))*[Link](-gamaR/(Vr*Vr));
ZX=Z0+Omega/0.3978*(ZR-Z0);
return ZX;
}
double P(double T, double V)
{
double Tr=T/Tc;
double Vr=V/Vc;
return Z(T,V)*Tr/Vr;
}
/*
public double V(double T, double P)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return Z(T,P)*R*T/(P*1e5);
}
public double Pvp(double T)
{
switch ( VPEq)
double cPvp;
case 1:
{
cPvp=Pc*[Link]((VPA*x+VPB*[Link](x,1.5)+VPC*x*x*x+VPD*x*x*x*x*x*x)/(1-x));
break;
}
case 2:
{
cPvp=VPA-VPB/T+VPC*[Link](T)+VPD
break;
}
case 3:
{
break;
}
return cPvp;
}
*/
}
Programýn veri dosyasýndan bazý gazlarýn özelliklerini örnek olarak verirsek:
H2 Hydrogen
1
H2
2.016 14 20.3 33 12.9 64.3 0.303 -0.216 0
27.14 9.274e-3 -1.381e-5 7.645e-9 0 0
1 -5.57929 2.60012 -0.85506 1.70503 14 33 0.071 20
H2O Water
2
H2
O1
18.015 273.2 373.2 647.3 221.2 57.1 0.235 0.334 1.8
3.224 1.924e-3 1.055e-5 -3.596e-9 -2.42e5 -2.288e5
1 -7.76451 1.45838 -2.7758 -1.23303 275 647.3 0.998 293
CH4 Methane
2
C1
H4
16.043 90.7 111.6 190.4 46 99.2 0.288 0.011 0
19.25 5.213e-2 1.197e-5 -1.132e-8 -7.49e4 -5.087e4
1 -6.00435 1.1885 -0.83408 -1.22833 91 190.4 0.425 112
Sanýrým son birkaç örnek gerçek programlama ortamýnda veri dosyalarýnýn kullanýlmasý
hakkýnda daha iyi bir fikir vermiºtir. Buradaki tüm örnekler sýralý (sequential) tip veri dosyasý
iºlemektedir. Ayný iºlemler veri tabaný kullanýlarak da yapýlabilirdi.

BÖLÜM 11 GELݪMݪ JAVA BÝLGÝ ÝªLEME YAPILARI

11.0 GÝRݪ

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu bölümde çeºitli ileri bilgi iºleme ve boyut oluºturma kavramlarýna göz atacaðýz.

11.1 STRINGTOKENIZER SINIFI

Biz bir cümle okuduðumuzda beynimiz cümleyi otomatik olarak kelimelerine ayýrýr. Java
Dilinde bu görevi StringTokenizer sýnýfý yerine getirir. StringTokenizer sýnýfýnýn yapýsý :

Public class StringTokenizer implements Enumeration {

private int currentPosition;

private int maxPosition;

private String str;

private String delimiters;

private boolean retTokens;

public StringTokenizer(String str, String delim, boolean returnTokens)

public StringTokenizer(String str, String delim)

public StringTokenizer(String str)

private void skipDelimiters()

public boolean hasMoreTokens()

public String nextToken()

public String nextToken(String delim)

public boolean hasMoreElements()

public Object nextElement()

public int countTokens()

StringTokenizer sýfýný açýklamak için önce küçük bir program verelim :

Program 11.1 : [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import [Link].*;

public class StringTokenizerTest


{
public static void main(String arg[])
{
String s="Ali veli 49 elli";
[Link]("cumle : "+s);
StringTokenizer t=new StringTokenizer(s);
[Link]("kelime sayisi : "+[Link]() );
int i=0;
while([Link]())
{
[Link]("kelime indeksi : "+(i++)+" kelime : "+[Link]() );
}
}
}

Programdan da görüleceði gibi StringTokenizer sýnýfý

StringTokenizer t=new StringTokenizer(s);

deyimiyle tanýmlanmýºtýr. Ayrica stringin içindeki cümle sayýsý [Link](); metotuyla


çaðýrýlmýº, [Link]() sýnýfý ise daha fazla kelime kalýp kalmadýðýnýn boolean
kontrolu metotu olarak çaðýrýlmýºtýr. [Link]() metotu o andaki kelimeyi dýºarýya (String
cinsinden) aktarýrken indeksi de (currentPosition) bir sonraki kelimeye kaydýrýr.

Program çýktýsý :

cumle : Ali veli 49 elli


kelime sayisi : 4
kelime indeksi : 0 kelime : Ali
kelime indeksi : 1 kelime : veli
kelime indeksi : 2 kelime : 49
kelime indeksi : 3 kelime : elli

olacaktýr.

StringTokenizer sýnýfýnýn kullanýlmasýyla ilgili bir örnek daha verelim. Bu örnekte ninci
dereceden bir polinomun kokleri [Link] kütüphanesi (detaylar için bakýnýz bölüm 12)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kullanýlarak çözülür. girdi alanýnda tüm polinom katsayýlarý bir alan içinde tanýmlanmakta ve
sonra bu bileºik alandan StringTokenizer sýnýfý yardýmý ile katsayýlar tek tek çekilmektedir.

Program 11.2 [Link] progamý, n'inci dereceden polinomun köklerini hesaplar. Tek
bir string olarak girilen katsayýlar matrisinden katsayýlarý StringTokenizer sýnýfýný
kullanarak çeker.

import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
import Matrix;

public class kokN extends Applet implements ActionListener


{
private Label prompt1,prompt2;
private TextField input;
TextArea t;
Panel YaziPaneli;
int n;
String s;

public void init()


{
setBackground([Link]);
YaziPaneli=new Panel();
[Link](new Font("Serif",[Link],12));
[Link]( new GridLayout(3,1) );
t=new TextArea(8,47);
prompt1= new Label("a[0]+a[1]*x+...+a[n]*x^n=0");
prompt2= new Label("n inci dereceden polinomun katsayilarini giriniz : ");
input = new TextField(30);
[Link](prompt1);
[Link](prompt2);
[Link](input);
add(YaziPaneli);
add(t);
[Link](this);
}

public void actionPerformed(ActionEvent e)


{
s=[Link]();
StringTokenizer token=new StringTokenizer(s);
[Link]("");
n=[Link]()-1;
int m=n+1;
double a[]=new double[m];
complex z[]=new complex[n];
for(int i=0;i<n;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
z[i]=new complex();
}
int j=0;
while([Link]())
{
Double ax=new Double([Link]());
a[j++]=[Link]();
}
z=Matrix.poly_rootsC(a);
int i=0;
[Link]([Link](z));
[Link]("");
}
}

[Link]

ªekil 11.1 StringTokenizer sýnýfýný ve matrix sýnýfýný kullanarak ninci dereceden bir
polinomun koklerini hesaplayan [Link] programýnýn applet çýktýsý

Ayný programýn swinf JFrame versiyonu :

Program 11.3 kokNSWF_2000.java progamý, n'inci dereceden polinomun köklerini


hesaplar. Tek bir string olarak girilen katsayýlar matrisinden katsayýlarý
StringTokenizer sýnýfýný kullanarak çeker.

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import Matrix;

public class kokNSWF_2000 extends JFrame implements ActionListener

private JLabel prompt1,prompt2;

private JTextField input;

JTextArea t;

JPanel YaziPaneli;

int n;

String s;

Container c;

public kokNSWF_2000()

super("n inci dereceden polinomun kökleri");

c=getContentPane();

[Link](new FlowLayout());

YaziPaneli=new JPanel();

[Link](new Font("Serif",[Link],12));

[Link]( new GridLayout(3,1) );

t=new JTextArea();

[Link]([Link]());

prompt1= new JLabel("a[0]+a[1]*x+...+a[n]*x^n=0");

prompt2= new JLabel("n'inci dereceden polinomun katsayýlarýný giriniz : ");

input = new JTextField(30);

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](prompt1);

[Link](prompt2);

[Link](input);

[Link](YaziPaneli);

[Link](t);

[Link](this);

public void actionPerformed(ActionEvent e)

s=[Link]();

StringTokenizer token=new StringTokenizer(s);

[Link]("");

n=[Link]()-1;

int m=n+1;

double a[]=new double[m];

complex z[]=new complex[n];

for(int i=0;i<n;i++)

z[i]=new complex();

int j=0;

while([Link]())

Double ax=new Double([Link]());

a[j++]=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

z=Matrix.poly_rootsC(a);

int i=0;

[Link]([Link](z));

[Link]("");

public static void main(String[] args)

kokNSWF_2000 pencere= new kokNSWF_2000();

[Link](new BasicWindowMonitor());

[Link](350,300);

[Link](true);

[Link]

ªekil 11.2 StringTokenizer sýnýfýný ve matrix sýnýfýný kullanarak ninci dereceden bir
polinomun koklerini hesaplayan kokNSWF_2000.java programýnýn JFrame çýktýsý

StringTokenizer sýnýfýnýn alt deðiºkenleri :


nval : eðer seçilmiº olan token bir sayý ise nval bu sayýnýn deðerini içerir.
sval
eðer seçilmiº olan token bir kelime(String) ise sval bu String deðiºkenini içerir
TT_EOF

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
girdi stringinin sonuna ulaºýldýðýný gösterir
TT_EOL
satýr sonu okunduðunu bildirir
TT_NUMBER
bir sayi tokeni okunduðunu bildirir
TT_WORD
bir kelime(String) token'i okunduðunu bildirir..
ttype
nextToken metotu çaðrýldýkrtan sonra bu deðiºken en son okunan token (kelimenin)
türünü bildiri

StringTokenizer sýnýfýnýn metotlarý :


kurucu metot :
StreamTokenizer(Reader)
eolIsSignificant(boolean)
satýr sonu kumutunun yeni kelime tanýmlayýp tanýmlamadýðýný belirler.
lineno()
satýr sayýsýný verir.
lowerCaseMode(boolean)
kelimelerin otomatik olarak küçük harfe çevrilip çevrilmeyeceðini tanýmlar
nextToken()
giriº Stringinin içindeki bir sonraki kelimeyi bulur.
ordinaryChar(int)
Tokanizer'in normalde kontrol için kullandýðý coºluk,satýr sonu gibi özel kontrol
karakterlerinin normal karakter olarak okunmasýný saðlar
parseNumbers()
Direk olarak bir sayý dizininin geldiðini haber verir
pushBack()
bir sonraki nextToken çaðýrýlmasýnda kelimenin ºu andaki kelime olarak kalmasýný saðlar.
quoteChar(int)
eðer " karecteri varsa bunun içindeki karakterleri bir String deðiºkeni olarak algýlar.
slashSlashComments(boolean)
Tokenizer'in C++-tipi (//.....)comment deyimlerini comment olarak tanýyým tanýmýyacaðýný
belirler.
slashStarComments(boolean)
Tokenizer'in C-tipi comment (/*...*/) deyimlerini comment olarak tanýyýp tanýmýyacaðýný
belirler.
toString()
o anda seçilmiº olan klimeyi (token) gönderir.
whitespaceChars(int, int)
birinciinteger <= c <= ikinciinteger arasýndaki karekterleri boºluk olarak tanýmlar
wordChars(int, int)
birinciinteger <= c <= ikinciinteger arasýndaki karekterleri tek kelime olarak tanýmlar

11.2 STRÝNG BUFFER SINIFI

Yeri gelmiºken String sýnýfýnýn kardeº sýnýfý, StringBuffer sýnýfýndan da bahsedelim.


StringBuffer genel olarak String sýnýfýnýn aynýdýr, fakat genellikle dinamik olarak program
içinde deðeri sýkça deðiºen Stringler için kullanýlýr. String ise genellikle statik olarak verilen

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String deðiºkenleri içindir. StringBuffer sýnýfýna Append metotuyla dinamik olarak ilave
yapabiliriz.

StringBuffer sýnýfýnýn metod yapýsý ºöyledir :

package [Link];

public final class StringBuffer implements [Link] {

private int count;

private boolean shared;

static final long serialVersionUID = 3388685877147921107L;

public StringBuffer

public StringBuffer(int length)

public StringBuffer(String str)

public int length()

public int capacity()

private final void copy()

public synchronized void ensureCapacity(int minimumCapacity)

private void expandCapacity(int minimumCapacity)

public synchronized void setLength(int newLength)

public synchronized char charAt(int index)

public synchronized void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)

public synchronized void setCharAt(int index, char ch)

public synchronized StringBuffer append(Object obj)

public synchronized StringBuffer append(String str)

public synchronized StringBuffer append(char str[])

public synchronized StringBuffer append(char str[], int offset, int len)

public StringBuffer append(boolean b)

public synchronized StringBuffer append(char c) String)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public StringBuffer append(int i)

public StringBuffer append(long l)

public StringBuffer append(float f)

public StringBuffer append(double d)

public synchronized StringBuffer delete(int start, int end)

public synchronized StringBuffer deleteCharAt(int index)

public synchronized StringBuffer replace(int start, int end, String str)

public String substring(int start)

public synchronized String substring(int start, int end)

public synchronized StringBuffer insert(int index, char str[], int offset, int
len)

public synchronized StringBuffer insert(int offset, Object obj)

public synchronized StringBuffer insert(int offset, char str[])

public StringBuffer insert(int offset, boolean b)

public synchronized StringBuffer insert(int offset, char c)

public StringBuffer insert(int offset, int i)

public StringBuffer insert(int offset, long l)

public StringBuffer insert(int offset, float f)

public StringBuffer insert(int offset, double d)

public synchronized StringBuffer reverse()

public String toString

private void readObject([Link] s)

throws [Link], ClassNotFoundException

ªimdi küçük bir test programýnda StringBuffer sýnýfýný kullanalým :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 11.4 [Link], giren String deðiºkenini tersine çevirir.

class TersString {
public static String reverseIt(String source) {
int i, len = [Link]();
StringBuffer dest = new StringBuffer(len);

for (i = (len - 1); i = 0; i--) {


[Link] ([Link](i));
}
return [Link]();
}
}

diðer bir StringBuffer metotu insert metotudur. Bu metot i inci elementten sonra verilen yeni
parçayý ilave edecektir.

Program 11.5 [Link], StringBuffer, insert metodu örneði

import [Link].*;

class javaKahvesi {
public static void main (String args[])
{
StringBuffer sb = new StringBuffer("Java kahvesi ic!");
[Link](12, "ni sicak");
[Link]([Link]());
}
}

bu programý çalýºtýrdýðýmýzda
Java kahvesini sicak iç!
mesajýný verecektir.

11.3 VECTOR SINIFI

Daha önce boyutlu deðiºkenleri görmüºtük. Boyutlu deðiºkenlerin boyutlarý bilgisayar


belleðinde oluºturulurken birbiri ardýna sýrayla oluºturulur.

Örneðin double b[]=new double[3];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Deyimi bilgisayar belleðinde

Tablo 11.1 boyutlu deðiºkenlerin bilgisayar belleðinde yerleºimi

1023400 b[0]
1023464 b[1]
1023528 b[2]

yerlerini birbirini izleyen adreslerde ayýrýr.

Buradaki sorun eðer bilgisayar belleðindeki toplam yer deðiºtirilmek istenirse bunun zor
olmasýdýr. Ayný zamanda bilgisayar boyutlu deðiºkenin adreslerini bilgisayar hafýzasýnda bir
referans tablosu olarak tuttuðundan boyut deðiºtirme bilgisayar hafýzasýný da zorlayan bir
iºlemdir. Pratik olarak yapýlan uygulama yeni bir boyutlu deðiºken oluºturup adresleri
deðiºtirmektir.

double c[]=new double[5];


for(int i=0,i<[Link];i++)
{ c[i]=b[i];}
b=c;

Daha geliºmiº bir bilgi yapýsý olarak Vector sýnýfýný kullanabiliriz. Vector sýnýfý [Link]
kütüphanesinde tanýmlanmýºtýr. Vector sýnýfýnda her bilgi elemaný ayný zamanda bir sonraki
bilgi elemanýnýn adresini taºýr. Boylece istenildiðinde dizinin son elemanýna yeni bir adres
ilave edilerek kolayca yeni elemanlar ilave edilebilir.

[Link]

ªekil 11.3 Vectör sýnýfýnýn hafýzada yerleºimi

Dizinin arasýndan herhangibir elemaný da kalaylýkla sadece referans adresini deðiºtirerek


silebiliriz.

Vector sýnýfýnýn tanýmý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class Vector extends AbstractList implements List, Cloneable,

[Link] {

protected int elementCount;

protected int capacityIncrement;

private static final long serialVersionUID = -2767605614048989439L;

public Vector(int initialCapacity, int capacityIncrement);

public Vector(int initialCapacity);

public Vector();

public Vector(Collection c);

public synchronized void copyInto(Object anArray[]);

public synchronized void trimToSize();

public synchronized void ensureCapacity(int minCapacity);

private void ensureCapacityHelper(int minCapacity);

public synchronized void setSize(int newSize);

public int capacity();

public boolean isEmpty();

public Enumeration elements();

public boolean hasMoreElements();

public Object nextElement();

public boolean contains(Object elem);

public int indexOf(Object elem);

public synchronized int indexOf(Object elem, int index);

public int lastIndexOf(Object elem);

public synchronized int lastIndexOf(Object elem, int index)

public synchronized Object elementAt(int index);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public synchronized Object firstElement();

public synchronized Object lastElement();

public synchronized void setElementAt(Object obj, int index);

public synchronized void removeElementAt(int index);

public synchronized void insertElementAt(Object obj, int index);

public synchronized void addElement(Object obj) ;

public synchronized boolean removeElement(Object obj);

public synchronized void removeAllElements();

public synchronized Object clone();

public synchronized Object[] toArray();

public synchronized Object[] toArray(Object a[]);

public boolean remove(Object o);

public void add(int index, Object element);

public synchronized Object remove(int index);

public void clear();

public synchronized boolean containsAll(Collection c);

public synchronized boolean addAll(Collection c);

public synchronized boolean removeAll(Collection c);

public synchronized boolean retainAll(Collection c);

public synchronized boolean addAll(int index, Collection c);

public synchronized boolean equals(Object o);

public synchronized int hashCode();

public synchronized String toString();

public List subList(int fromIndex, int toIndex);

protected void removeRange(int fromIndex, int toIndex);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Vector sýnýfýnda tanýmlanan metotlarýn bazýlarýnýn anlamlarý ºunlardýr :

addElement(Object)
Vektöre object türü (herhangi bir sýnýf olabilir, vectörün hepsi bu sýnfta tanýmlanmýº
olmalýdýr.) bir eleman ekler.
capacity()
vektörün toplam kapasitesini verir.
clone()
vectorun bir kopye vectörünü verir.
contains(Object)
Vectörün içinde sorgulanan elemanýn olup olmadýðýný kontrol eder.
copyInto(Object[])
vectorü boyutlu deðiºkene aktarýr.
elementAt(int indeks)
Verilen indeksteki elemaný verir..
elements()
Tüm vektörü enumeration sýnýfýna aktarýr.
ensureCapacity(int yeni_kapasite)
eðer yeni_kapasite vector kapasitesinin üstündeyse vector yeni_kapasite’ye aktarýlýr.
firstElement()
Vectörün ilk elemanýný verir.
indexOf(Object)
Object’in indeks deðerini verir
indexOf(Object, int indeks)
Object’in indeks deðerini verir, arama indeks deðiºkeninden baºlayarak yapýlýr.
insertElementAt(Object, int indeks)
Vectörün ideks noktasýna Object ilave edilir.
isEmpty()
Vectörün boº olup olmadýðý kontrol edilir.
lastElement()
vectörün son elemanýnýn indeksini verir.
lastIndexOf(Object)
Object’in vectördeki son tekrarýnýn indeksini verir.
lastIndexOf(Object, int indeks)
indeks ten baºlayarak geriye doðru Objectin ilk tekrarlandýðý yeri bulur.
removeAllElements()
Vectördeki bütün elemanlarý siler.
removeElement(Object)
Vectördeki Object elemanýný siler.
removeElementAt(int indeks)
indeksle verilen elemaný siler.
setElementAt(Object, int indeks)
Objectin ideksini indeks olarak belirler.
setSize(int)
Sets the size of this vector.
size()
Vectördeki toplam eleman sayýsýný verir.
toString()
Vectörün String eºitini verir.
trimToSize()
Vectörün boyutunu dolu olan elemanlarýnýn boyutuna kýsaltýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Aºaðýda bu metotlarýn önemlilerinden bazýlarýný kullanan bir örnek program verilmiºtir.

Program 11.6 : [Link] programý, vector sýnýfýnýn kullanýmý

import [Link].*;
import [Link].*;
import [Link];
import [Link].*;

public class VectorTesti extends Applet implements ActionListener


{
private Vector v;
private Label prompt;
private TextField input;
private Button addBtn, removeBtn, firstBtn, lastBtn, emptyBtn, containsBtn, locationBtn,
trimBtn,
statsBtn, displayBtn;
Panel YaziPaneli;

public void init()


{
setBackground([Link]);
YaziPaneli=new Panel();
[Link](new Font("Serif",[Link],12));
[Link]( new GridLayout(5,2) );
v = new Vector(1);
prompt= new Label("Bir String degiskeni giriniz ");
input = new TextField(10);
addBtn = new Button("Ekle");
removeBtn = new Button("Cikar");
firstBtn = new Button("Ilk");
lastBtn = new Button("Son");
emptyBtn = new Button("Bos mu ?");
containsBtn = new Button("Listede varmi?");
locationBtn = new Button("Adresi");
trimBtn = new Button("Kes");
statsBtn = new Button("Istatistikler");
displayBtn = new Button("Listeyi Goster");
add(prompt);
add(input);
[Link](this);
[Link](addBtn);
[Link](this);
[Link](removeBtn);
[Link](this);
[Link](firstBtn);
[Link](this);
[Link](lastBtn);
[Link](this);
[Link](emptyBtn);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);
[Link](containsBtn);
[Link](this);
[Link](locationBtn);
[Link](this);
[Link](trimBtn);
[Link](this);
[Link](statsBtn);
[Link](this);
[Link](displayBtn);
add(YaziPaneli);
}

public void actionPerformed(ActionEvent e)


{
if([Link]()==addBtn)
{
[Link]([Link]());
showStatus("Listenin sonuna eklendi: "+[Link]());
}
else if([Link]()==removeBtn)
{
if([Link]([Link]()))
showStatus("Silindi :"+[Link]());
else
showStatus([Link]()+"not in vector");
}
else if([Link]() == firstBtn)
{
try{
showStatus("Ilk eleman : "+[Link]());
}
catch(NoSuchElementException exception)
{
showStatus([Link]() );
}
}
else if([Link]()==lastBtn)
{
try{
showStatus("Son eleman : "+[Link]());
}
catch(NoSuchElementException exception)
{
showStatus([Link]() );
}
}
else if([Link]() == emptyBtn)
{
showStatus([Link]()? "Vector bos ":"vector dolu ");
}
else if([Link]()==containsBtn)
{
String searchKey = [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if([Link](searchKey) )
showStatus("Vektor elemanlar� " +searchKey);
else
showStatus("Aranan eleman Vektorde bulunamadi "+searchKey);
}
else if([Link]()==locationBtn)
{
showStatus("Eleman "+[Link]([Link]() )+" pozisyonunda bulundu");
}
else if([Link]()==trimBtn)
{
[Link]();
showStatus("Vector boyu eleman boyuna k�salt�ld�");
}
else if([Link]()== statsBtn)
{
showStatus("Boyut = "+[Link]()+"; Toplam kapasite = "+[Link]());
}
else if([Link]()== displayBtn)
{
Enumeration enum=[Link]();
StringBuffer buf = new StringBuffer();
while([Link]())
{
[Link]([Link]() );
[Link](" ");
}
showStatus([Link]() );
}
[Link]("");
}
}

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 11.4-11.5 [Link] programý applet çýktýsý

Bundan sonraki program iki kümenin bileºim ve kesiºim kümelerini hesaplamaktadýr.


Kümelerin kaç elemandan oluºtuðu tanýmlanmamýºtýr. ݺlemler vector sýnýfýný kullanarak
yapýlmaktadýr. Ayrýca bu yapýda vector sýnýfýný bir döngü içinde kullanmak için vector sýnýfý
Enumeration sýnýfý na yüklenmektedir. Enumeration sýnýfýnýn görevi, StringTokenizer
sýnýfýnýn görevini andýrýr. Vector yapýsýnýn içinden her vector elemanýný ayrý ayrý çaðýrma ve
indeksleme görevi görür. Enumeration interface’inin tanýmý :

public interface Enumeration {

boolean hasMoreElements();

Object nextElement();

ºeklindedir.

Enumeration n1=[Link]();
Enumeration n2=[Link]();
while([Link]())
{
s1=(String)[Link]();
[Link](s1);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
kod parçacýðýnda vector sýnýfýnýn elements metotu,Enumeration sýnýfý ve Enumeration
sýnýfýnýn hasMoreElements ve nextElement metotlarý kullanýlarak nasýl döngü
oluºturulduðu görülmektedir.

Aºaðýdaki örnekte setA sýnýfý verilmiºtir. Bu örnekte bir kümelerin bileºim ve kesiºim
kümelerinin vector metodunu kullanarak nasýl oluºturulabileceði gösterilmektedir.

Program 11.7 [Link] [Link] sýnýflarý, bir kümenin bileºim ve kesiºim


kümelerini hesaplar.

// Bu program vector ve Enumeration siniflarýný


// Kullanmaktadýr. Bilesim, kesisim kümelerini hesaplar
// Ayni zamanda StringTokaniser sinifini kullanir.

import [Link].*;
import [Link].*;
import [Link];
import [Link].*;

class SetA
{
public Vector bilesim(Vector list1, Vector list2)
{
Vector bilesimVectoru = new Vector();
String s1,s2;
Enumeration n1=[Link]();
Enumeration n2=[Link]();
while([Link]())
{
s1=(String)[Link]();
[Link](s1);
}
while([Link]())
{
s2=(String)[Link]();
if(![Link](s2))
[Link](s2);
}
return bilesimVectoru;
}

public Vector kesisim(Vector list1,Vector list2)


{
Vector kesisimVectoru = new Vector();
String s;
Enumeration n = [Link]();
while([Link]())
{
s=(String)[Link]();
if([Link](s))

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](s);
}
return kesisimVectoru;
}
}

public class SetTest extends Applet implements ActionListener


{
SetA set = new SetA(); // SetA
Label L1, P1, P2;
TextField T1,T2;
TextArea cikti;

// dinamik boyutlu degisken sinifi Vector'u kullanarak


// iki vector listesi yarat
Vector list1 = new Vector();
Vector list2 = new Vector();

// Sonuclari yine vektor cinsinden degiskenler


// kullanarak aktar
Vector ansUn;
Vector ansInt;

public void init() {


P1 = new Label("Birinci listeyi gir : ");
T1 = new TextField(50);
P2 = new Label("Ikinci listeyi gir : ");
T2 = new TextField(50);

// Sonuclarin yazildigi yazi alanini ac


cikti = new TextArea(10,40);
[Link](false);
[Link]("");
add(P1);
add(T1);
[Link](this);
add(P2);
add(T2);
[Link](this);
add(cikti);
}

public void girdiA(String string, Vector list)


{
// StringTokeniser sinifi String degiskenleri icin
// Enumeration sinifinin yaptigina paralel gorev
// gorur String'i siraya sokarak degerlerini sirayla verir
StringTokenizer tokens = new StringTokenizer(string);
while([Link]()) {
String test = [Link]();
[Link](test);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

public void ciktiA(Vector v)


{
Enumeration enum = [Link]();
while([Link]())
{
String ans = (String)[Link]();
[Link](ans + "\n");
}
}

public void actionPerformed(ActionEvent e)


{
if([Link]()==T1)
{
String stringToTokenize = [Link]();
girdiA(stringToTokenize,list1);
}
else if([Link]()==T2)
{
String stringToTokenize = [Link]();
girdiA(stringToTokenize,list2);
// Iki listenin bilesim ve kesisim k�melerini hesapla.
ansUn = [Link](list1,list2);
ansInt = [Link](list1,list2);
// sonuclari cikti alanina gonder
[Link]("\nIki listenin bilesim kumesi : \n");
ciktiA(ansUn);
[Link]("\nIki listenin kesisim kumesi : \n");
ciktiA(ansInt);
}
} //actionPerformed metotunun sonu
}

Bu programda ayný zamanda StringTokaniser sýnýfý kullanýlmýºtýr. StringTokaniser String


deðiºkenini bosluk kullanarak alt deðiºkenlere ayýrmaya yarayan Enumeration türü bir sýnýftýr.

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 11.6 Vector sýnýfýný kullanarak iki kumenin bileºim ve kesiºim kümelerini
hesaplayan [Link] programý applet çýktýsý

Ayný programýn Swing versiyonuSetTestSWF_2000.java aºaðýda verilmiºtir :

// Bu program vector ve Enumeration siniflarýný

// Kullanmaktadýr. Bileºim ve kesiºim kümelerini hesaplar

// Ayný zamanda StringTokeniser sýnýfýný kullanýr.

Program 11.8 setTestSWF_2000.java, bir kümenin bileºim ve kesiºim kümelerini


hesaplar.

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class SetTestSWF_2000 extends JFrame implements ActionListener

SetA set = new SetA(); // SetA

JLabel L1, P1, P2;

JTextField T1,T2;

JTextArea cikti;

// dinamik boyutlu degisken sinifi Vector'u kullanarak

// iki vector listesi yarat

Vector list1 = new Vector();

Vector list2 = new Vector();

// Sonuclari yine vektor cinsinden de§iskenler

// kullanarak aktar

Vector ansUn;

Vector ansInt;

Container c;

public SetTestSWF_2000()

super("küme testi bileºim ve kesiºim kümeleri");

c=getContentPane();

[Link](new FlowLayout());

P1 = new JLabel("Birinci listeyi giriniz : ");

T1 = new JTextField(30);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]());

P2 = new JLabel("Ýkinci listeyi giriniz : ");

T2 = new JTextField(30);

[Link]([Link]());

// Sonuclarin yazildigi yazi alanini ac

cikti = new JTextArea();

[Link](false);

[Link]("");

[Link]([Link]());

[Link](P1);

[Link](T1);

[Link](this);

[Link](P2);

[Link](T2);

[Link](this);

JScrollPane jp=new JScrollPane(cikti);

[Link](new Dimension(320,200));

[Link](jp);

public void girdiA(String string, Vector list)

// StringTokeniser sinifi String degiskenleri icin

// Enumeration sinifinin yaptigina paralel gorev

// gorur String'i s�raya sokarak degerlerini s�rayla verir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
StringTokenizer tokens = new StringTokenizer(string);

while([Link]()) {

String test = [Link]();

[Link](test);

public void ciktiA(Vector v)

Enumeration enum = [Link]();

while([Link]())

String ans = (String)[Link]();

[Link](ans + " ");

[Link]("\n");

public void actionPerformed(ActionEvent e)

if([Link]()==T1)

String stringToTokenize = [Link]();

girdiA(stringToTokenize,list1);

else if([Link]()==T2)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

String stringToTokenize = [Link]();

girdiA(stringToTokenize,list2);

// Iki listenin bilesim ve kesisim kümelerini hesapla.

ansUn = [Link](list1,list2);

ansInt = [Link](list1,list2);

// sonuclari cikti alanina gonder

[Link]("");

[Link]("Ýki listenin bileºim kümesi : \n");

ciktiA(ansUn);

[Link]("Ýki listenin kesiºim kümesi : \n");

ciktiA(ansInt);

} //actionPerformed metodunun sonu

public static void main(String[] args)

SetTestSWF_2000 pencere = new SetTestSWF_2000();

[Link](new BasicWindowMonitor());

[Link](400,350);

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 11.7 Vector sýnýfýný kullanarak iki kumenin bileºim ve kesiºim kümelerini
hesaplayan SetTestSWF_2000 programý JFrame çýktýsý

11.4 LIST(LÝSTE) SINIFI

Yukarýdaki vektor sýnýfýnda ilk defa dinamik hafýza kullanabilen (vektor boyutunu program
çalýºýrken deðiºtirebilen) Vector sýnýfýný inceledik. Eðer vektor boyutlarý program çalýºýrken
azalýyor veya çoðalýyorsa, boyutlu deðiºkenler yerine dinamik hafýza kullanýmý toplam
bilgisayar hafýzasý kullanýmý açýsýnda çok daha verimlidir. Dinamik data yapýlarý sadece
vektorden ibaret deðildir. List(liste), Stack(dizin) ve Queue (sýra) ve Tree(agaç) yapýlarý da
oldukça sýk kullanýlar dinamik yapýlarý teºkil eder. Bunlardan List yapýsýnýn özellikleri
ºunlardýr :

 Listenin ilk elemanýndan önce veya son elemanýndan sonra listeye dinamik
eleman ilavesi yapýlabilir.

 Listenin herhangibir ara noktasýna yeni eleman ilave edilemez.

 Listenin ilk elemaný veya son elemaný listeden çekilebilir.

 Listenin herhangi bir ara noktasýndan eleman çekilemez.

Burada List kavramýnýn daha iyi anlaºýlabilmesi için önce kendi List sýnýfýmýz oluºturulmuº ve
bir örnek problemde kullanlmýºtýr. Bu program örneklerine bir göz atalým.

Program 11.9 [Link] programý. Bu program List yapýsýný tanýmlayan ListNode ve List
sýnýflarýný içerir

class ListNode
{
Object data;
ListNode next;
ListNode(Object o) {this(o,null);}
ListNode(Object o,ListNode nextNode)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
data=o;
next=nextNode;
}
Object getObject() {return data;}
ListNode getnext() {return next;}
}

public class List


{
//Liste
private ListNode firstNode;
private ListNode lastNode;
private String name;

public List(String s)
{
name=s;
firstNode=lastNode=null;
}
public List(){this("Liste");}
public synchronized void insertAtFront(Object insertItem)
{
if( isEmpty() )
firstNode = lastNode = new ListNode(insertItem);
else
firstNode = new ListNode(insertItem,firstNode);
}
public synchronized void insertAtBack(Object insertItem)
{
if(isEmpty())
firstNode=lastNode=new ListNode(insertItem);
else
lastNode=[Link]=new ListNode(insertItem);
}

public synchronized Object removeFromFront()


throws EmptyListException
{
Object removeItem=null;
if(isEmpty())
throw new EmptyListException(name);
removeItem=[Link];
if([Link](lastNode))
firstNode=lastNode=null;
else
firstNode=[Link];
return removeItem;
}
public synchronized Object removeFromBack()
throws EmptyListException
{
Object removeItem=null;
if(isEmpty())

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
throw new EmptyListException(name);
removeItem=[Link];
if([Link](lastNode))
firstNode=lastNode=null;
else
{
ListNode current=firstNode;
while([Link] != lastNode)
current=[Link];
lastNode=current;
[Link]=null;
}
return removeItem;
}

public boolean isEmpty() {return firstNode==null; }

//türkçe eºdeðer metodlar


public boolean bosmu() {return isEmpty(); }
public synchronized void oneEkle(Object o) {insertAtFront(o);}
public synchronized void arkayaEkle(Object o) {insertAtBack(o);}
public synchronized Object ondenCikar() {return removeFromFront();}
public synchronized Object arkadanCikar() {return removeFromBack();}

public void print()


{
if(bosmu())
{
[Link](" Bos "+name);
return;
}
[Link](" "+name+" : ");
ListNode current=firstNode;
while(current!=null)
{
[Link]([Link]()+" ");
current=[Link];
}
[Link]("\n");
}
}

Program 11.10 : EmptyListException sýnýfýnýn EmptyListException dosyasýndaki tanýmý

public class EmptyListException extends RuntimeException


{
public EmptyListException(String name)
{
super(" "+name+" bos ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

Program 11.11 : List yapýsýný kullanan örnek program [Link]

import List;
import EmptyListException;

public class ListTest


{
public static void main(String args[])
{
List objList=new List();
Boolean b=new Boolean(true);
Character c=new Character('$');
Integer i=new Integer(34567);
String s=new String("hello");
[Link](b);
[Link]();
[Link](c);
[Link]();
[Link](i);
[Link]();
[Link](s);
[Link]();
Object removedObj;
try{
removedObj=[Link]();
[Link]([Link]()+" cikarildi");
[Link]();
removedObj=[Link]();
[Link]([Link]()+" cikarildi");
[Link]();
removedObj=[Link]();
[Link]([Link]()+" cikarildi");
[Link]();
removedObj=[Link]();
[Link]([Link]()+" cikarildi");
[Link]();
}
catch(EmptyListException e) {[Link]("\n"+[Link]());}
}
}

ListTest programýnýn sonucu :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
List yapýsýný kullanan örnek program [Link] nýn çýktýsý

Liste : true
Liste : $ true
Liste : 34567 $ true
Liste : hello 34567 $ true
hello cikarildi Liste : 34567 $ true
34567 cikarildi Liste : $ true
true cikarildi Liste : $
$ cikarildi Bos Liste

Burada List sýnýfýnýn girdisinin Object sýnýfý olduðun dikkatinizi çekelim. Object sýnýfý yine
dinamik object deðiºken yapýlarý olarak tanýmlanan Double, Byte, String, Integer, Boolean,
Float, Short, Long gibi deðiºken türleri için kullanýlan sýnýflarýn abstract sýnýfýný teºkil eder.
Bu yüzden bu sýnýflarýn hepsini temsil edebilir ve yerlerine kullanýlabilir (genel bir sýnýftýr.). Bu
sýnýflar normal deðiºken türlerine dönüºtürülebilirler. (daha önce de kullandýðýmýz intValue(),
doubleValue() gibi metotlarý kullanarak)

Object sýnýfýnýn temel tanýmý (metodtanýmlarý olmadan) ºu ºekildedir.

package [Link];

public class Object {

private static native void registerNatives();

static {

registerNatives();

public final native Class getClass();

public native int hashCode();

public boolean equals(Object obj

protected native Object clone() throws CloneNotSupportedException;

public String toString()

public final native void notify();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public final native void notifyAll();

public final native void wait(long timeout) throws InterruptedException;

public final void wait(long timeout, int nanos) throws InterruptedException ;

public final void wait() throws InterruptedException ;

protected void finalize() throws Throwable;

burada geçen native sözcüðünün anlamak istiyorsanýz, 14 üncü bölümü inceleyebilirsiniz. Bu


terim metodun anadilde (native) yazýldýðýný belirtir.

[Link] paketinde List sýnýfý tanýmlanmýºtýr. Yukarýda kendi tanýmladýðýmýz List ile
yapabildiklerimizi ve daha fazlasýný tanýmlý List paketiyle a gerçekleºtirebiliriz.

package [Link];

public interface List extends Collection {

int size();

boolean isEmpty();

boolean contains(Object o);

Iterator iterator();

Object[] toArray();

Object[] toArray(Object a[]);

boolean add(Object o);

boolean remove(Object o);

boolean containsAll(Collection c);

boolean addAll(Collection c);

boolean addAll(int index, Collection c);

boolean removeAll(Collection c);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
boolean retainAll(Collection c);

void clear();

boolean equals(Object o);

int hashCode();

Object get(int index);

Object set(int index, Object element);

void add(int index, Object element);

Object remove(int index);

int indexOf(Object o);

int lastIndexOf(Object o);

ListIterator listIterator();

ListIterator listIterator(int index);

List subList(int fromIndex, int toIndex);

List sýnýfýyla birlikte kullanýlmak üzere ListIterator interface’i tanýmlanmýºtýr.

/*

package [Link];

public interface ListIterator extends Iterator {

boolean hasNext();

Object next();

boolean hasPrevious();

Object previous();

int nextIndex();

int previousIndex();

void remove();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
void set(Object o);

void add(Object o);

ªimdi bu iki sýnýfýn kullanýmýný bir örnekle gösterelim.

Program 11.12 : List yapýsýný kullanan örnek program [Link]

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

public class MovingPlanets {

public static void main (String args[]) {

String names[] = {"Mercür", "Venüs", "Dünya",

"Mars", "Jupiter", "Satürn", "Uranüs",

"Neptün", "Pluto"};

int namesLen = [Link];

List planets = new ArrayList();

for (int i=0; i < namesLen; i++) {

[Link] (names[i]);

ListIterator lit = [Link]();

String s;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

[Link]();

s = (String)[Link]();

[Link]();

[Link]();

[Link]();

[Link]();

[Link](s);

[Link]();

[Link]();

[Link]();

s = (String)[Link]();

[Link]();

[Link]();

[Link]();

[Link](s);

Iterator it = [Link]();

String ss="";

while ([Link]()) {ss+=[Link]()+"\n";}

[Link](null,ss);

[Link](0);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 11.08 List sýnýfý, MovingPlanets çýktýsý

List sýnýfýnýn bir alt sýnýfý da LinkedList sýnýfýdýr. LinkedList sýnýfý List sýnýfýnda olmayan ilave
metodlar tanýmlamýºtýr.

public class LinkedList extends AbstractSequentialList

implements List, Cloneable, [Link]

private transient Entry header;

private transient int size;

public LinkedList()

public LinkedList(Collection c)

public Object getFirst()

public Object getLast()

public Object removeFirst()

public Object removeLast()

public void addFirst(Object o)

public void addLast(Object o)

public boolean contains(Object o)

public int size()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean add(Object o)

public boolean remove(Object o)

public boolean addAll(Collection c)

public boolean addAll(int index, Collection c)

public void clear()

public Object get(int index)

public Object set(int index, Object element

public void add(int index, Object element)

public Object remove(int index)

public int indexOf(Object o)

public int lastIndexOf(Object o) */

public ListIterator listIterator(int index)

Bu sýnýfý kullanan küçük bir örnek problemi inceleyelim :

Program 11.13 : LinkedList yapýsýný kullanan örnek program [Link]

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

public class GezegenlerVeaylarListesi {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
static class Gezegen {

private String isim;

private int aySayisi;

Gezegen (String s, int aylar) {

isim = s;

aySayisi = aylar;

public String toString() {

return getClass().getName() + "[" + isim + "-" + aySayisi + "]";

public final String getName() {

return isim;

public final int getaySayisi () {

return aySayisi;

public static void main (String args[]) {

String names[] = {"Mercür", "Venüs", "Dünya",

"Mars", "Jupiter", "Satürn", "Uranüs",

"Neptün", "Pluto"};

int aylar[] = {0, 0, 1, 2, 16, 18, 17, 8, 1};

int namesLen = [Link];

List Gezegens = new ArrayList (namesLen);

for (int i=0; i < namesLen; i++) {

[Link] (new Gezegen (names[i], aylar[i]));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

String ss="";

for (int i=[Link]()-1; i >= 0; --i)

Gezegen p = (Gezegen)([Link] (i));

ss+=[Link]() + " : " + [Link]()+"\n";

[Link](null,ss);

[Link](0);

Program çýktýsý

[Link]

ªekil 11.09 Linkedlist sýnýfý, GezegenlerVeaylarListesi çýktýsý

LinkList Bölüm 11.4’de incelediðimiz Stack(dizi) yapýsý ve bölüm 11.5 de incelediðimiz


queue(sýra) yapýsý yerine kullanýlabilir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
11.5 DÝZÝ (STACK) SINIFI

Diziler veya ingilizce adýyla Stack aslýnda üstte tanýmladýðýmýz List sýnýfýnýn bir alt sýnýfýdýr.
dizin listeye göre daha sýnýrlý olan ºu koºullara sahiptir :

 Dizide son elemandan sonra listeye dinamik eleman ilavesi yapýlabilir.

 Dizinin herhangibir ara noktasýna yeni eleman ilave edilemez.

 Dizinin sadece son elemaný listeden çekilebilir.

 Listenin herhangi bir ara noktasýndan eleman çekilemez.

Yukardaki kendi tanýmladýðýmýz List (Program 11.5,11.6) kullanarak oluºturduðumuz dizi


programý ve diziyi kullnan bir test programý aºaðýda verilmiºtir.

Program 11.14 : dizi sýnýfýnýn [Link] dosyasýndaki tanýmlarý

public class dizi extends List


{
public dizi() {super("dizi");}
public synchronized void push(Object o)
{insertAtFront(o);}
public synchronized void ekle(Object o)
{insertAtFront(o);}
public synchronized Object pop() throws EmptyListException
{return removeFromFront();}
public synchronized Object cek() throws EmptyListException
{return removeFromFront();}

public boolean isEmpty() {return [Link]();}


public boolean bosmu() {return [Link]();}
public void print() {[Link]();}
}

Program 11.15 : dizi sýnýfýnýn [Link] dosyasýndaki örnek kullanýmý

import [Link];
import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class diziTesti
{
public static void main(String args[])
{
dizi d=new dizi();
Boolean b=new Boolean(true);
Character c=new Character('$');
Integer i=new Integer(34567);
String s=new String("hello");
[Link](b);
[Link]();
[Link](c);
[Link]();
[Link](i);
[Link]();
[Link](s);
[Link]();
Object cekilen;
try
{
while(true)
{
cekilen=[Link]();
[Link]([Link]()+" diziden cekildi");
[Link]();
}
}
catch(EmptyListException e)
{[Link]("\n"+[Link]());}
}
}

dizi yapýsýný kullanan örnek program [Link]’nýn çýktýsý

dizi : true

dizi : $ true

dizi : 34567 $ true

dizi : hello 34567 $ true

hello diziden cekildi


dizi : 34567 $ true

34567 diziden cekildi


dizi : $ true

$ diziden cekildi
dizi : true

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
true diziden cekildi
Bos dizi

yukarýda tanýmlanan LinkedList sýnýfýnýn addFirst()/removeFirst() metodlarýný kullanarak da


stack oluºturabiliriz.

[Link] paketinde vector sýfýnýn yaný sýra Stack sýnýfý da tanýmlanmýºtýr. Java Stack
sýnýfýnda
push, pop ve peek metotlarý vardýr. push ve pop dizin programýný aynýsýdýr. peek ise listenin
en sonundaki elemanýn deðerini bu elemaný listeden uzaklaºtýrmadan alýr. (pop ile push
beraber kullanýlarak da ayný iºi yapabilirler)

Bu sýnýfýn tanýmý :

public class Stack extends Vector

public Stack();

public Boolean empty();

public synchronized Object peek();

public synchronized Object pop();

public synchronized Object push(Object obj);

public synchronized int search(Object obj);

Stack sýnýfýnýn metotlarýnýn ne olduðunu daha detaylý inceleyecek olursak:

push
public Object push(Object item)
stack'in üstüne yeni eleman ilave eder
pop
public synchronized Object pop()
Stakin en tepesindeki elemaný çeker (Stack dizisinden kaldýrýr ve deðerini return eder)
Stack'in boº olmasý halinde EmptyStackException gönderir.
peek
public synchronized Object peek()
Stack'in en tepesindeki elemanýn deðerini okur(Stack dizisinden kaldýrmaz ve sadece
deðerini return eder)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Stack'in boº olmasý halinde EmptyStackException gönderir.
empty
public boolean empty()
Stack'in boº olup olmadýðýný kontrol eder, boº ise true, dolu ise false deðeri gönderir.
Tests if this stack is empty.
search
public synchronized int search(Object o)
Stack'in içindeki istenen Object'in yerini verir. Eðer object Stack'de yok ise -1 deðeri verir

Burada hemen Stack sýnýfýnýn Vector sýnýfýnýn alt sýnýfý olduðunu ve Vector sýnýfýnda mevcut
olan tüm metotlar Stack metotunda da geçerli olduðunu da hatýrlatalým.

ºimdi bir örnek problemde bu sýnýfýn nasýl kullanýldýðýna bakalým :

Program 11.16 : [Link] kütüphanesinde yer alan Stack yapýsýný kullanan örnek
program [Link]

import [Link].*;

public class StackTesti


{
public static void main(String args[])
{
StackTesti st=new StackTesti();
Stack d=new Stack();
Boolean b=new Boolean(true);
Character c=new Character('$');
Integer i=new Integer(34567);
String s=new String("hello");
[Link](b);
[Link](d);
[Link](c);
[Link](d);
[Link](i);
[Link](d);
[Link](s);
[Link](d);
Object bakilan;
Object cekilen;
try
{
while(true)
{
bakilan=[Link]();
[Link]([Link]()+" de§erine bakildi");
[Link](d);
cekilen=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]()+" de§eri listeden cekildi ");
[Link](d);
[Link]("---------------------");
}
}
catch(EmptyStackException e)
{[Link]("\n"+[Link]());}
}

public void print(Stack di)


{
Enumeration enum=[Link]();
StringBuffer buf=new StringBuffer();
while([Link]())
[Link]([Link]()).append(" ");
[Link]([Link]());
}
}

[Link] kütüphanesinde yer alan Stack yapýsýný kullanan örnek program


[Link] nýn çýktýsý

true
true $
true $ 34567
true $ 34567 hello
hello degerine bakildi
true $ 34567 hello
hello degeri listeden cekildi
true $ 34567
---------------------
34567 degerine bakildi
true $ 34567
34567 degeri listeden cekildi
true $
---------------------
$ degerine bakildi
true $
$ degeri listeden cekildi
true
---------------------
true degerine bakildi
true
true degeri listeden cekildi
---------------------

11.6 SIRA (QUEUE) SINIFI

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Sýra veya ingilizce adýyla queue aslýnda üstte tanýmladýðýmýz List sýnýfýnýn bir alt sýnýfýdýr. sýra
listeye göre daha sýnýrlý olan ºu koºullara sahiptir :

 Sýrada son elemandan sonra listeye dinamik eleman ilavesi yapýlabilir.

 Sýranýn herhangibir ara noktasýna yeni eleman ilave edilemez.

 Sýranýn sadece ilk elemaný listeden çekilebilir.

 Sýranýn herhangi bir ara noktasýndan eleman çekilemez.

Sýra kavramýnýn oldukça yaygýn olarak kullanýldýðý ülkemizde oldukça yararlý olabilecek bir
sýnýfý deðilmi?

Yukardaki List tanýmýný kullanarak oluºturduðumuz sýra programý ve sýrayýi kullanan bir test
programý aºaðýda verilmiºtir.

Program 11.17 : sira sýnýfýnýn [Link] dosyasýndaki tanýmlarý

public class sira extends List


{
public sira() {super("sira");}
public synchronized void sirayagir(Object o)
{arkayaEkle(o);}
public synchronized Object siranGeldi() throws EmptyListException
{return ondenCikar();}
public boolean isEmpty() {return [Link]();}
public boolean bosmu() {return [Link]();}
public void print() {[Link]();}
}

Program 11.18 : sira sýnýfýnýn [Link] dosyasýndaki test programý

import sira;
import EmptyListException;

public class siraTesti


{
public static void main(String args[])
{
sira s=new sira();
Boolean b=new Boolean(true);
Character c=new Character('$');
Integer i=new Integer(34567);
String st=new String(" merhaba ");
[Link](b);
[Link]();
[Link](c);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();
[Link](i);
[Link]();
[Link](st);
[Link]();
Object cekilen;
try
{
while(true)
{
cekilen=[Link]();
[Link]([Link]()+" sirasi geldi ”nden cikti");
[Link]();
}
}
catch(EmptyListException e)
{[Link]("\n"+[Link]());}
}
}

sira sýnýfýný kullanan [Link] dosyasýnýn çýktýsý

sira : true
sira : true $
sira : true $ 34567
sira : true $ 34567 merhaba
true sirasi geldi onden cikti
sira : $ 34567 merhaba
$ sirasi geldi onden cikti
sira : 34567 merhaba
34567 sirasi geldi onden cikti
sira : merhaba
merhaba sirasi geldi onden cikti
Bos sira

Queue sýnýfý Java'da direk olarak tanýmlanmamýºtýr, ancak üstteki sýra örneginin bir benzeri
Vector sýnýfýndan bizim tarafýmýzdan rahatlýkla yazýlabilir, veya yine LinkedList sýnýfýnýn
addFirst()/removeLast() metodlarýný kullanarak oluºturulabilir.

11.7 TREE(AGAÇ) SINIFI

Elimizdeki bir gurup boyutlu deðiºkenin belli bir yapýda guruplandýrýlmasý veya aranmasý
gerektiðinde bu standart boyut kavramýnda oldukça kompleks bir yapý arzeder. Bilgi
guruplandýrma iºlemini çok daha basit bir ºekilde yapabilmek için Tree yapýlarý
öngörülmektedir. Tree temel olarak Vector gibi bir yapýdýr. fakat burada her Tree noktasý
(Nod'u) iki deðiºik adrese iºaret eder bu adreslerden birisi o nodedaki objenin kokdekinden

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
daha küçük olduðu bir deðeri, diðeri ise daha büyük olduðu bir deðeri taºýr. hiç bir deðer
taºýmýyorsa da null deðeriyle o Tree-aðaç dalý sona erer. Bu yapýyý kullanarak sayýlarý
büyükten küçüge veyaküçükten büyüðe veya daha deðiºik mantýklarla direk olarak sýralamak
mümkündür.

[Link]

ªekil 11.10 : Binary search Tree (ikili arama aðacý) yapýsýnýn grafiksel gösterimi

[Link]

ªekil 11.11 Binary search Tree (ikili arama aðacý ) yapýsýnýn bir rakam setine
uygulanmasýnýn grafiksel gösterimi

ªekil 11.10 de ikili arama aðacý yapýsýnýn seti görülmektedir. ªekil 11.11 de ise sayýsal bir
örnekle yapý gösterilmiºtir. Her bir dal kökü kendinden sonra gelen rakamý küçükse sol dala
büyükse sað dala göndermektedir. ve her yeni veri yeni bir dallanma oluºturmaktadýr. ªimdi
Tree yapýsýný oluºturacak bir örnek sýnýfý ve onun kullanýldýðý bir örnek problem sýnýfýný
oluºturarak kavramý biraz daha açmaya çalýºalým :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 11.19 : Binary search Tree (ikili arama aðacý) yapýsýnýn programlandýðý
TreeNode ve Tree sýnýflarýnýn ter aldýðý [Link] programý

class TreeNode
{
TreeNode sol;
int data;
TreeNode sag;

public TreeNode(int d)
{
data=d;
sol=sag=null;
}

public synchronized void gir(int d)


{
// not ayni deger iki kere girilmeye calisilirsa
// ikinci giris dikkate alinmiyacaktir
if(d<data)
{ if(sol==null) {sol=new TreeNode(d);}
else {[Link](d);}
}
else if(ddata)
{ if(sag==null) {sag=new TreeNode(d);}
else {[Link](d);}
}
}
}

public class Tree


{
private TreeNode kok;
public Tree() {kok=null;}
public synchronized void gir(int d)
{
if(kok==null) kok=new TreeNode(d);
else [Link](d);
}

public void node_soldal_sagdal_sirala(){node_soldal_sagdal_siralayici(kok);}


public void soldal_node_sagdal_sirala(){soldal_node_sagdal_siralayici(kok);}
public void soldal_sagdal_node_sirala(){soldal_sagdal_node_siralayici(kok);}
public void node_sagdal_soldal_sirala(){node_sagdal_soldal_siralayici(kok);}
public void sagdal_node_soldal_sirala(){sagdal_node_soldal_siralayici(kok);}
public void sagdal_soldal_node_sirala(){sagdal_soldal_node_siralayici(kok);}

public void node_soldal_sagdal_siralayici(TreeNode node)


{
if(node==null) return;
[Link]([Link]+" ");
node_soldal_sagdal_siralayici([Link]);
node_soldal_sagdal_siralayici([Link]);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void node_sagdal_soldal_siralayici(TreeNode node)
{
if(node==null) return;
[Link]([Link]+" ");
node_sagdal_soldal_siralayici([Link]);
node_sagdal_soldal_siralayici([Link]);
}
public void soldal_node_sagdal_siralayici(TreeNode node)
{
if(node==null) return;
soldal_node_sagdal_siralayici([Link]);
[Link]([Link]+" ");
soldal_node_sagdal_siralayici([Link]);
}
public void sagdal_node_soldal_siralayici(TreeNode node)
{
if(node==null) return;
sagdal_node_soldal_siralayici([Link]);
[Link]([Link]+" ");
sagdal_node_soldal_siralayici([Link]);
}
public void soldal_sagdal_node_siralayici(TreeNode node)
{
if(node==null) return;
soldal_node_sagdal_siralayici([Link]);
soldal_node_sagdal_siralayici([Link]);
[Link]([Link]+" ");
}
public void sagdal_soldal_node_siralayici(TreeNode node)
{
if(node==null) return;
sagdal_node_soldal_siralayici([Link]);
sagdal_node_soldal_siralayici([Link]);
[Link]([Link]+" ");
}
}

Program 11.20 : Binary search Tree (ikili arama aðacý) yapýsýnýn programlandýðý
TreeNode ve Tree sýnýflarýnýn kullanýlmasýný örnekleyen [Link] programý

import Tree;

public class TreeTest


{
public static void main(String args[])
{
Tree agac=new Tree();
int sayi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("orijinal olarak Tree'ye girilen sayi dizini");
for(int i=0;i<=6;i++)
{
sayi=(int)([Link]()*45)+1;
[Link](sayi+" ");
[Link](sayi);
}
[Link]("\nSol dal - kok - sag dal siralama : ");
agac.soldal_node_sagdal_sirala();
[Link]("\nkok -Sol dal - sag dal siralama : ");
agac.node_soldal_sagdal_sirala();
[Link]("\nSol dal - sag dal - kok siralama : ");
agac.soldal_sagdal_node_sirala();
[Link]("\nSag dal - kok - sol dal siralama : ");
agac.sagdal_node_soldal_sirala();
[Link]("\nkok -Sag dal - sol dal siralama : ");
agac.node_sagdal_soldal_sirala();
[Link]("\nSag dal - sol dal - kok siralama : ");
agac.sagdal_soldal_node_sirala();
}
}

Program 11.17 : Binary search Tree (ikili arama aðacý) yapýsýnýn programlandýðý
TreeNode ve Tree sýnýflarýnýn kullanýlmasýný örnekleyen [Link] programýnýn
sonuçlarý. renkli olarak iºaretlenen satýrlarýn sayý dizisini küçükten büyüðe ve
büyükten küçüðe sýraladýðýna dikkat ediniz.

orijinal olarak Tree'ye girilen sayi dizini


13 11 25 34 21 26 14
Sol dal - kok - sag dal siralama :
11 13 14 21 25 26 34
kok -Sol dal - sag dal siralama :
13 11 25 21 14 34 26
Sol dal - sag dal - kok siralama :
11 14 21 25 26 34 13
Sag dal - kok - sol dal siralama :
34 26 25 21 14 13 11
kok -Sag dal - sol dal siralama :
13 25 34 26 21 14 11
Sag dal - sol dal - kok siralama :
34 26 25 21 14 11 13

11.8 DICTIONARY ve HASHTABLE SINIFLARI

ªu ana kadar bu konuda gördüðümüz elemanlarda belli bir baðlantý kuralý kullanarak
elemanlarý birbirine baðlamýºtýk. Bu hafýza açýsýndan yoðun bir iºlemdir. Her seferinde hafýza

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
pozisyonunun araºtýrýlmasýný gerektirir. Java anahtar referans saðlayan daha deðiºik bir
yapýyý da içerir. Burada her elemanýn kendimiz tarafýndan verilen bir referans deðeri
mevcuttur, ve elemaný bulmak için bu referansý kullanabiliriz. Bu gurubun abstract sýnýfý
Dictionary sýnýfýdýr. Dictionary sýnýfýnýn altýnda Hashtable sýnýfý yer alýr. Dictionary sýnýfýnýn
tanýmý :

package [Link];

public abstract class Dictionary

public Dictionary()

abstract public int size();

abstract public boolean isEmpty();

abstract public Enumeration keys();

abstract public Enumeration elements();

abstract public Object get(Object key);

abstract public Object put(Object key, Object value);

abstract public Object remove(Object key);

HashTable sýnýfýnýn tanýmý :

public class Hashtable extends Dictionary implements Map, Cloneable,

[Link] {

private transient Entry table[];

private transient int count;

private int threshold;

private float loadFactor;

private transient int modCount = 0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private static final long serialVersionUID = 1421746759512286392L;

public Hashtable(int initialCapacity, float loadFactor)

public Hashtable(int initialCapacity)

public Hashtable(Map t)

public int size()

public boolean isEmpty()

public synchronized Enumeration keys()

public synchronized Enumeration elements()

public synchronized boolean contains(Object value)

public boolean containsValue(Object value)

public synchronized boolean containsKey(Object key)

public synchronized boolean equals(Object key)

public synchronized Object get(Object key)

protected void rehash()

public synchronized Object put(Object key, Object value)

public synchronized Object remove(Object key)

public synchronized void putAll(Map t)

public synchronized void clear()

public synchronized Object clone()

public synchronized String toString()

public Set entySet()

public Set keySet()

public Collection Values()

public synchronized int hashCode()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Hashtables sýnýfý temel olarak Dictionary ve Map sýnýflarýndan türetilmiºtir. Map sýnýfý tanýmý

package [Link];

public interface Map {

int size();

boolean isEmpty();

boolean containsKey(Object key);

boolean containsValue(Object value);

Object get(Object key);

Object put(Object key, Object value);

Object remove(Object key);

void putAll(Map t);

void clear();

public Set keySet();

public Collection values();

public Set entrySet();

boolean equals(Object o);

int hashCode();

public interface Entry

Object getKey();

Object getValue();

Object setValue(Object value);

boolean equals(Object o);

int hashCode();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

ºeklindedir.

En çok kullanacaðýmýz Hashtable metodlarýnýn anlamlarýna bir göz atalým :

Bir referans çifti girmek için : put(Object anahtar, Object deðer)

Anahtarý vererek referans deðerini çaðýrmak için : get(Object anahtar)

Bir elemaný silmek için : remove((Object anahtar)

Boyutu kontrol için : size()

Boº olup olmadýðýnýn kontralu için empty()

Tüm anahtarlarýn listesini almak için : keys() veya keySet()

Tüm deðerlerin listesini almak için : elements() veya entrySet()

Program 11.21 : Hashtable yapýsýnýn programlandýðý [Link] programý

import [Link];

import [Link];

import [Link];

public class GezegenCaplari {

public static void main (String args[]) {

String names[] = {"Merkür", "Venüs", "Dünya",

"Mars", "Jüpiter", "Satürn", "Uranüs",

"Neptün", "Pluton"};

float diameters[] = {4800f, 12103.6f, 12756.3f,

6794f, 142984f, 120536f, 51118f, 49532f, 2274f};

Hashtable hash = new Hashtable();

for (int i=0, n=[Link]; i < n; i++) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] (names[i], new Float (diameters[i]));

Enumeration enum = [Link]();

Object obj;

String ss="";

while ([Link]()) {

obj = [Link]();

ss+=obj + ": " + [Link](obj)+"\n";

[Link](null,ss);

[Link](0);

[Link]

ªekil 11.12 HashTable sýnýfýný kullanan GezegenCaplari programý

Programdan da görüldüðü gibi çýktý hiçbir mantýksal sýralama düzeni içermemektedir, fakat
burada önemli olan gezegenlerin ve çaplarýnýn birbirleriyle olan iliºkilerinin listelenmesidir.
Hashtable bu tür iºlevleri en iyi bir ºekilde yerine getirir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
11.9 ARRAYS SINIFI VE SIRALAMA

Arrays sýnýfý boyutlu deðiºkenleri sýralamaya yarýyan bir java sýnfýdýr. Metodlarý:

public static List asList(object array[]);

b deðerinin a deðerinin hangi elemanýnda olduðunu bulan :

public static int binarySearch(<deðiºkentürü> a[],<deðiºkentürü>b);

<deðiºkentürü> char,double,float,int,Object,long,short deðerleri alabilir, elbette Object


üzerinden Objectin alt sýnýflarý olan String, Double, Integer gibi sýnýflarý da kabul eder.

Ýki boyutlu deðiºkenin birbirine eºit olup olmadýðýný denetleyen :

public static boolean equals(<deðiºkentürü> a[],<deðiºkentürü>b[]);

boyutlu deðiºkenin tüm deðerlerini veya tanýmlanan bir bölümünü bir bölümünü ayný tür bir
deðiºken atayan

public static void fill(<deðiºkentürü> a[],<deðiºkentürü>b);

public static void fill(<deðiºkentürü> a[],int baºlangýçindisi,int bitiºindisi,<deðiºkentürü>b);

boyutlu deðiºkeni sýraya sokan :

public static void sort(<deðiºkentürü> a[]);

public static void sort(Object a[],Comparator comp);

listeden de görüldüðü gibi tüm metodlar static metodlardýr.

Program 11.22 : Arrays yapýsýnýn kullanýldýðý [Link] programý

import [Link].*;

import [Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class Gezegensirasi {

static class InsensitiveComp implements Comparator {

public int compare (Object a1, Object a2) {

String s1 = [Link]().toLowerCase();

String s2 = [Link]().toLowerCase();

return [Link] (s2);

public static void main (String args[]) {

String names[] = {"Mercür", "Venüs", "Dünya",

"Mars", "Jüpiter", "Satürn", "Uranüs",

"Neptün", "Pluto",

"mercür", "venüs", "dünya",

"mars", "jüpiter", "satürn", "uranüs",

"neptün", "pluto"

};

[Link](names);

int namesLen = [Link];

String ss="";

for (int i=0; i<namesLen; i++) {

ss+=names[i] + " ";

ss+="\n";

[Link](names, new InsensitiveComp());

for (int i=0; i<namesLen; i++) {

ss+=names[i] + " ";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

ss+="\n";

[Link](null,ss);

[Link](0);

[Link]

ªekil 11.13 Arrays sýnýfýný kullanan Gezegensirasi programý

programda liste ikinci kere Comparator sýnýfý InsensitiveComp() kullanarak büyük ve küçük
harfi göz önüne almadan sýraya sokulmuºtur.

11.10 ALIªTIRMALAR

1. [Link] : Vector sýnýfý örnegi, H9O1 de boyutlu deðiºkenle çözülen dosyadan


okunan rakamlarýn ortalamasýnýn bulunmasý.

Program 11.23 : [Link] programý, vector ve dosya girdi örneði

import [Link].*;
import Text;
import [Link].*;

public class H10AL1


{
public static void main(String[] args) throws IOException
{
DataInputStream input;
Vector i= new Vector(1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String s1;
Text cin= new Text();
[Link]("Lutfen dosya ismini giriniz: ");
s1 = [Link]();
File myfile = new File(s1);
BufferedReader b= new BufferedReader(new FileReader(myfile));
int toplam=0;
boolean EOF=false;
int j=0;
while (!EOF)
{
try
{
j++;
[Link]([Link](b));
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
Enumeration enum=[Link]();
StringBuffer buf = new StringBuffer();
while([Link]())
{
[Link]([Link]());
Double d=new Double([Link]());
toplam+=[Link]();
}
[Link]("Dosyanin icindeki sayilarin adedi: "+j);
[Link]("Ortalama: "+(double)toplam/[Link]());
} //main

} //class

Lutfen dosya ismini giriniz: [Link]


1.0 toplam: 1
2.0 toplam: 3
3.0 toplam: 6
4.0 toplam: 10
5.0 toplam: 15
6.0 toplam: 21
7.0 toplam: 28
8.0 toplam: 36
9.0 toplam: 45
10.0 toplam: 55
11.0 toplam: 66
12.0 toplam: 78
13.0 toplam: 91
14.0 toplam: 105
15.0 toplam: 120
16.0 toplam: 136
17.0 toplam: 153

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
18.0 toplam: 171
19.0 toplam: 190
20.0 toplam: 210
dosyanýn ve yuklendigi vektorun icindeki sayilarin adedi: 20
Ortalama: 10.5

2. [Link] : List sýnýfý örnegi, H9O1 de boyutlu deðiºkenle çözülen dosyadan okunan
rakamlarýn ortalamasýnýn bulunmasý.

Program 11.24 : List sýnýfý ve dosyadan okuma örneði [Link]

import [Link].*;
import Text;
import [Link].*;
import [Link];
import [Link];

public class H10AL2


{
public static void main(String[] args) throws IOException
{
DataInputStream input;
List l= new List("H10AL2");
String s1;
Text cin= new Text();
[Link]("Lutfen dosya ismini giriniz: ");
s1 = [Link]();
File myfile = new File(s1);
BufferedReader b= new BufferedReader(new FileReader(myfile));
int toplam=0;
boolean EOF=false;
int j=0;
while (!EOF)
{
try
{
[Link]([Link](b));
j++;
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while

while(![Link]())
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double d=new Double((String)[Link]());
toplam+=[Link]();
[Link](""+d+" toplam: "+toplam);
}
[Link]("dosyan�n ve y�klendigi listenin icindeki sayilarin adedi: "+j);
[Link]("Ortalama: "+(double)toplam/j);
} //main

} //class

Lutfen dosya ismini giriniz: [Link]


1.0 toplam: 1
2.0 toplam: 3
3.0 toplam: 6
4.0 toplam: 10
5.0 toplam: 15
6.0 toplam: 21
7.0 toplam: 28
8.0 toplam: 36
9.0 toplam: 45
10.0 toplam: 55
11.0 toplam: 66
12.0 toplam: 78
13.0 toplam: 91
14.0 toplam: 105
15.0 toplam: 120
16.0 toplam: 136
17.0 toplam: 153
18.0 toplam: 171
19.0 toplam: 190
20.0 toplam: 210
dosyanin ve yuklendigi listenin icindeki sayilarin adedi: 20
Ortalama: 10.5

3. [Link] : dizi sýnýfý örnegi, H9O1 de boyutlu deðiºkenle çözülen dosyadan okunan
rakamlarýn ortalamasýnýn bulunmasý.

Program 11.25 : [Link],

import [Link].*;
import Text;
import [Link].*;
import [Link];
import [Link];
//dizi ornegi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H10AL3
{
public static void main(String[] args) throws IOException
{
DataInputStream input;
dizi l= new dizi();
String s1;
Text cin= new Text();
[Link]("Lutfen dosya ismini giriniz: ");
s1 = [Link]();
File myfile = new File(s1);
BufferedReader b= new BufferedReader(new FileReader(myfile));
int toplam=0;
boolean EOF=false;
int j=0;
while (!EOF)
{
try
{
[Link]([Link](b));
j++;
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while

while(![Link]())
{
Double d=new Double((String)[Link]());
toplam+=[Link]();
[Link](""+d+" toplam: "+toplam);
}
[Link]("dosyanin ve yuklendigi listenin icindeki sayilarin adedi: "+j);
[Link]("Ortalama: "+(double)toplam/j);
} //main

} //class

Lutfen dosya ismini giriniz: [Link]


20.0 toplam: 20
19.0 toplam: 39
18.0 toplam: 57
17.0 toplam: 74
16.0 toplam: 90
15.0 toplam: 105
14.0 toplam: 119
13.0 toplam: 132
12.0 toplam: 144
11.0 toplam: 155
10.0 toplam: 165
9.0 toplam: 174

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
8.0 toplam: 182
7.0 toplam: 189
6.0 toplam: 195
5.0 toplam: 200
4.0 toplam: 204
3.0 toplam: 207
2.0 toplam: 209
1.0 toplam: 210
dosyanin ve yuklendigi listenin icindeki sayilarin adedi: 20
Ortalama: 10.5

1. [Link] : dizi sýnýfý örnegi, H9O1 de boyutlu deðiºkenle çözülen dosyadan


okunan rakamlarýn ortalamasýnýn bulunmasý.

Problem 11.26 : [Link] dizi sýnýfý örneði

import [Link].*;
import Text;
import [Link].*;
import [Link];
import [Link];

//sira ornegi
public class H10AL4
{
public static void main(String[] args) throws IOException
{
DataInputStream input;
sira l= new sira();
String s1;
Text cin= new Text();
[Link]("Lutfen dosya ismini giriniz: ");
s1 = [Link]();
File myfile = new File(s1);
BufferedReader b= new BufferedReader(new FileReader(myfile));
int toplam=0;
boolean EOF=false;
int j=0;
while (!EOF)
{
try
{
[Link]([Link](b));
j++;
}
catch (EOFException e)
{
[Link]();
EOF=true;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} //while
while(![Link]())
{
Double d=new Double((String)[Link]());
toplam+=[Link]();
[Link](""+d+" toplam: "+toplam);
}
[Link]("dosyanin ve yuklendigi listenin icindeki sayilarin adedi: "+j);
[Link]("Ortalama: "+(double)toplam/j);
} //main

} //class

Lutfen dosya ismini giriniz: [Link]


1.0 toplam: 1
2.0 toplam: 3
3.0 toplam: 6
4.0 toplam: 10
5.0 toplam: 15
6.0 toplam: 21
7.0 toplam: 28
8.0 toplam: 36
9.0 toplam: 45
10.0 toplam: 55
11.0 toplam: 66
12.0 toplam: 78
13.0 toplam: 91
14.0 toplam: 105
15.0 toplam: 120
16.0 toplam: 136
17.0 toplam: 153
18.0 toplam: 171
19.0 toplam: 190
20.0 toplam: 210
dosyanin ve yuklendigi listenin icindeki sayilarin adedi: 20
Ortalama: 10.5

2. [Link] : Stack sýnýfý örnegi, H9O1 de boyutlu deðiºkenle çözülen dosyadan


okunan rakamlarýn ortalamasýnýn bulunmasý.

Problem 11.27 [Link] Stack sýnýfý örneði

import [Link].*;
import Text;
import [Link].*;

//Stack - dizi ornegi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class H10AL5
{
public static void main(String[] args) throws IOException
{
DataInputStream input;
Stack l= new Stack();
String s1;
Text cin= new Text();
[Link]("Lutfen dosya ismini giriniz: ");
s1 = [Link]();
File myfile = new File(s1);
BufferedReader b= new BufferedReader(new FileReader(myfile));
int toplam=0;
boolean EOF=false;
int j=0;
while (!EOF)
{
try
{
[Link]([Link](b));
j++;
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
while(![Link]())
{
Double d=new Double((String)[Link]());
toplam+=[Link]();
[Link](""+d+" toplam: "+toplam);
}
[Link]("dosyanin ve yuklendigi listenin icindeki sayilarin adedi: "+j);
[Link]("Ortalama: "+(double)toplam/j);
} //main

} //class

Lutfen dosya ismini giriniz: [Link]


20.0 toplam: 20
19.0 toplam: 39
18.0 toplam: 57
17.0 toplam: 74
16.0 toplam: 90
15.0 toplam: 105
14.0 toplam: 119
13.0 toplam: 132
12.0 toplam: 144
11.0 toplam: 155
10.0 toplam: 165
9.0 toplam: 174
8.0 toplam: 182

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
7.0 toplam: 189
6.0 toplam: 195
5.0 toplam: 200
4.0 toplam: 204
3.0 toplam: 207
2.0 toplam: 209
1.0 toplam: 210
dosyanin ve yuklendigi listenin icindeki sayilarin adedi: 20
Ortalama: 10.5

Alýºtýrmalarda kullanýlan [Link] dosyasý :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

6. [Link] programýný inceleyiniz. Kesiºim kumesiyle bileºim kumesinin farkýný


oluºturan kümeyi hesaplayan bir metot yazýnýz ve test programýna da ekleyerek çalýºtýrýnýz.

12. [Link]
veri dosyasý [Link]'e e dizisini giriniz. [Link]'e d dizisini giriniz. program setText'ti
inceleyiniz. iki dizinin bileºim kümesini [Link] dosyasýna yazdýrýnýz.

Program 11.28 [Link] iki dizinin bileºim kümesini vektor sýnýfýný kullanarak
hesaplayan program

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import Text;
import [Link].*;

public class H10OD1


{
public void girdiA(String string, Vector list)
{
// StringTokeniser sinifi String degiskenleri icin
// Enumeration sinifinin yaptigina paralel gorev
// gorur String'i s�raya sokarak degerlerini s�rayla verir
StringTokenizer tokens = new StringTokenizer(string);
while([Link]()) {
String test = [Link]();
[Link](test);
}
}

public static String ciktiA(Vector v)


{
StringBuffer cikti=new StringBuffer();
Enumeration enum = [Link]();
while([Link]())
{
String ans = (String)[Link]();
[Link](ans + " ");
}
return [Link]();
}

public static void main(String[] args) throws IOException


{
SetA set=new SetA();
DataInputStream input;
Vector v1= new Vector(1);
Vector v2= new Vector(1);
Vector v=new Vector(1);
String s1,s2;
Text cin= new Text();
[Link]("Lutfen ilk dosya ismini giriniz: ");
s1 = [Link]();
File myfile1 = new File(s1);
BufferedReader b1= new BufferedReader(new FileReader(myfile1));
[Link]("Lutfen ikinci dosya ismini giriniz: ");
s2 = [Link]();
File myfile2 = new File(s2);
BufferedReader b2= new BufferedReader(new FileReader(myfile2));
int toplam=0;
boolean EOF=false;
while (!EOF)
{
try
{
[Link]([Link](b1));
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
EOF=false;
while (!EOF)
{
try
{
[Link]([Link](b2));
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
v=[Link](v1,v2);
[Link](ciktiA(v));
PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));
[Link](ciktiA(v));
[Link]();
toplam=0;
Enumeration enum=[Link]();
while([Link]())
{
Double d=new Double((String)[Link]());
toplam+=[Link]();
}
[Link]("dosyanin ve yuklendigi vektorun icindeki sayilarin adedi: "+[Link]());
[Link]("Ortalama: "+(double)toplam/[Link]());
} //main

} //class

sonuçlar :

Lutfen ilk dosya ismini giriniz: [Link]


Lutfen ikinci dosya ismini giriniz: [Link]
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1 2 3 4 5 6 7 8 9
dosyanin ve yuklendigi vektorun icindeki sayilarin adedi: 29
Ortalama: 15.0

[Link]:

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

[Link]

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1 2 3 4 5 6 7 8 9

8. H10OD2

alýºtýrma 7 deki sonuçlarý Tree sýnýfýný kullanarak küçükten büyüge doðru sýralanmýº olarak
[Link] dosyasýna yazdýrýnýz.

Program 11.29 : [Link]

import [Link].*;
import Text;
import [Link].*;
import bolum11.Tree1;

public class H10OD2


{
public void girdiA(String string, Vector list)
{
// StringTokeniser sinifi String degiskenleri icin
// Enumeration sinifinin yaptigina paralel gorev
// gorur String'i s�raya sokarak degerlerini s�rayla verir
StringTokenizer tokens = new StringTokenizer(string);
while([Link]()) {
String test = [Link]();
[Link](test);
}
}

public static String ciktiA(Vector v)


{
StringBuffer cikti=new StringBuffer();
Enumeration enum = [Link]();
while([Link]())
{
String ans = (String)[Link]();
[Link](ans + " ");
}
return [Link]();
}

public static void main(String[] args) throws IOException


{
SetA set=new SetA();
Tree1 t=new Tree1();
DataInputStream input;
Vector v1= new Vector(1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Vector v2= new Vector(1);
Vector v=new Vector(1);
String s1,s2;
Text cin= new Text();
[Link]("Lutfen ilk dosya ismini giriniz: ");
s1 = [Link]();
File myfile1 = new File(s1);
BufferedReader b1= new BufferedReader(new FileReader(myfile1));
[Link]("Lutfen ikinci dosya ismini giriniz: ");
s2 = [Link]();
File myfile2 = new File(s2);
BufferedReader b2= new BufferedReader(new FileReader(myfile2));
int toplam=0;
boolean EOF=false;
while (!EOF)
{
try
{
[Link]([Link](b1));
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
EOF=false;
while (!EOF)
{
try
{
[Link]([Link](b2));
}
catch (EOFException e)
{
[Link]();
EOF=true;
}
} //while
v=[Link](v1,v2);
Enumeration enum=[Link]();
while([Link]())
{
Integer d=new Integer((String)[Link]());
[Link]([Link]());
}

PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));


[Link](t.soldal_node_sagdal_sirala());
[Link](t.soldal_node_sagdal_sirala());
[Link]();
} //main

} //class

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

[Link] :

11 13 24 15 17 22 18 19 12 20 21 23 25 14 26 27 16 28 29 10

[Link]

1 8 9 11 12 3 4 13 10 18 19 14 15 16 2 5 6 7 17 20

sonuç (ekran)

Lutfen ilk dosya ismini giriniz: [Link]


Lutfen ikinci dosya ismini giriniz: [Link]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Program 11.30 [Link] ,

package bolum11;

class TreeNode
{
TreeNode sol;
int data;
TreeNode sag;

public TreeNode(int d)
{
data=d;
sol=sag=null;
}

public synchronized void gir(int d)


{
// not ayni deger iki kere girilmeye calisilirsa
// ikinci giris dikkate alinmiyacaktir
if(d<data)
{ if(sol==null) {sol=new TreeNode(d);}
else {[Link](d);}
}
else if(ddata)
{ if(sag==null) {sag=new TreeNode(d);}
else {[Link](d);}
}
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class Tree1
{
private TreeNode kok;
public Tree1() {kok=null;}
public synchronized void gir(int d)
{
if(kok==null) kok=new TreeNode(d);
else [Link](d);
}

public String node_soldal_sagdal_sirala(){return node_soldal_sagdal_siralayici(kok);}


public String soldal_node_sagdal_sirala(){return soldal_node_sagdal_siralayici(kok);}
public String sagdal_node_soldal_sirala(){return sagdal_node_soldal_siralayici(kok);}

public String node_soldal_sagdal_siralayici(TreeNode node)


{
String s="";
if(node==null) return s;
s=s+[Link]+" ";
s=s+node_soldal_sagdal_siralayici([Link]);
s=s+node_soldal_sagdal_siralayici([Link]);
return s;
}

public String soldal_node_sagdal_siralayici(TreeNode node)


{
String s="";
if(node==null) return s;
s=s+soldal_node_sagdal_siralayici([Link]);
s=s+[Link]+" ";
s=s+soldal_node_sagdal_siralayici([Link]);
return s;
}

public String sagdal_node_soldal_siralayici(TreeNode node)


{
String s="";
if(node==null) return s;
s=s+sagdal_node_soldal_siralayici([Link]);
s=s+[Link]+" ";
s=s+sagdal_node_soldal_siralayici([Link]);
return s;
}
}

13. H10OD3
Ekrandan bir rakam dizisini tek bir String olarak giriniz. Girdiginiz diziyi
StringTokenezer sýnýfý bir gerçek sayi rakam dizisine dönüºtürünüz ve vector sýnýfýna
yükleyiniz. daha sonra vector elemanlarýnýn karesinin ortalamasýný çýktý olarak veriniz.

Program 11.31 : [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;
import Text;
import [Link].*;
import bolum11.Tree1;

public class H10OD3


{
public static void main(String[] args) throws IOException
{
String s1;
Text cin= new Text();
Vector v=new Vector();
[Link]("tum rakamlari giriniz : ");
s1 = [Link]();
StringTokenizer st=new StringTokenizer(s1);
while([Link]())
{
[Link]((String)[Link]());
}
Enumeration enum=[Link]();
double toplam=0;
while([Link]())
{
Double d=new Double((String)[Link]());
double x=[Link]();
toplam+=x*x;
[Link]("x = "+x+"toplam = "+toplam);
}
[Link]("Ortalama: "+(double)toplam/[Link]());
} //main
} //class

sonuclar:

tum rakamlari giriniz : 1 2 3 4 5 6 7 8 9 10


x = 1.0 toplam = 1.0
x = 2.0 toplam = 5.0
x = 3.0 toplam = 14.0
x = 4.0 toplam = 30.0
x = 5.0 toplam = 55.0
x = 6.0 toplam = 91.0
x = 7.0 toplam = 140.0
x = 8.0 toplam = 204.0
x = 9.0 toplam = 285.0
x = 10.0 toplam = 385.0
Ortalama: 38.5

14. H10OD4
Ekrandan bir rakam dizisini tek bir String olarak giriniz. Girdiginiz diziyi
StringTokenezer sýnýfý bir gerçek sayi rakam dizisine dönüºtürünüz ve Stack sýnýfýna

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
yükleyiniz. daha sonra Stack elemanlarýnýn karesinin ortalamasýný çýktý olarak veriniz.

Program 11.32 : [Link]

import [Link].*;
import Text;
import [Link].*;
import bolum11.Tree1;
// not stack vektor s�n�f�n�n bir alt s�n�f�d�r.
// bu uygulamada bu ”zellikten yararlan�lm�Ÿt�r.

public class H10OD4


{
public static void main(String[] args) throws IOException
{
String s1;
Text cin= new Text();
Stack v= new Stack();
[Link]("tum rakamlari giriniz : ");
s1 = [Link]();
StringTokenizer st=new StringTokenizer(s1);
while([Link]())
{
[Link]((String)[Link]());
}
Enumeration enum=[Link]();
double toplam=0;
while([Link]())
{
Double d=new Double((String)[Link]());
double x=[Link]();
toplam+=x*x;
[Link]("x = "+x+"toplam = "+toplam);
}
[Link]("Ortalama: "+(double)toplam/[Link]());
} //main
} //class

sonuçlar :

tum rakamlari giriniz : x = 1.0toplam = 1.0


x = 2.0toplam = 5.0
x = 3.0toplam = 14.0
x = 4.0toplam = 30.0
x = 5.0toplam = 55.0
x = 6.0toplam = 91.0
x = 7.0toplam = 140.0
x = 8.0toplam = 204.0
x = 9.0toplam = 285.0
x = 10.0toplam = 385.0
Ortalama: 38.5

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 11.33 : [Link]: ikinci program (ayný program 11.20'nin deðiºik yazýlýºý ) :
[Link]

import [Link].*;
import Text;
import [Link].*;
import bolum11.Tree1;

public class H10OD4a


{
public static void main(String[] args) throws IOException
{
String s1;
Text cin= new Text();
Stack v= new Stack();
[Link]("tum rakamlari giriniz : ");
s1 = [Link]();
StringTokenizer st=new StringTokenizer(s1);
while([Link]())
{
[Link]((String)[Link]());
}
double toplam=0;
double sayi=[Link]();
while(![Link]())
{
Double d=new Double((String)[Link]());
double x=[Link]();
toplam+=x*x;
[Link]("x = "+x+"toplam = "+toplam);
}
[Link]("Ortalama: "+(double)toplam/sayi);
} //main
} //class

sonuçlar :

tum rakamlari giriniz : 1 2 3 4 5 6 7 8 9 10


x = 10.0 toplam = 100.0
x = 9.0 toplam = 181.0
x = 8.0 toplam = 245.0
x = 7.0 toplam = 294.0
x = 6.0 toplam = 330.0
x = 5.0 toplam = 355.0
x = 4.0 toplam = 371.0
x = 3.0 toplam = 380.0
x = 2.0 toplam = 384.0
x = 1.0 toplam = 385.0
Ortalama: 38.5

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
15. Java Vector uygulamasý [Link]

Program 11.34 . [Link] vectör test programý

import [Link].*;

public class Gezegenler {

static class Gezegen {

private String isim;

Gezegen (String s) {

isim = s;

public String toString() {

return getClass().getName() + "[" + isim + "]";

public static void main (String args[]) {

String isimler[] = {"Mercür", "Venüs", "Dünya",

"Mars", "Jupiter", "Satürn", "Uranüs",

"Neptün", "Pluto"};

int namesLen = [Link];

Vector gezegenler = new Vector (namesLen);

for (int i=0; i < namesLen; i++) {

[Link] (new Gezegen (isimler[i]));

for (int i=0, n=[Link](); i < n; i++) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] ([Link] (i));

16. [Link], Vector uygulamasý

Program 11.35 . [Link] vector test programý

import [Link].*;

import [Link];

public class GezegenlerveAylar {

static class Gezegen {

private String isim;

private int aySayisi;

Gezegen (String s, int aylar) {

isim = s;

aySayisi = aylar;

public String toString() {

return getClass().getName() + "[" + isim + "-" + aySayisi + "]";

public final String getName() {

return isim;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public final int getMoonCount () {

return aySayisi;

public static void main (String args[]) {

String isimler[] = {"Mercür", "Venüs", "Dünya",

"Mars", "Jupiter", "Satürn", "Uranüs",

"Neptün", "Pluto"};

int aylar[] = {0, 0, 1, 2, 16, 18, 17, 8, 1};

int namesLen = [Link];

Vector planets = new Vector (namesLen);

for (int i=0; i < namesLen; i++)

[Link] (new Gezegen (isimler[i], aylar[i]));

Enumeration enum = [Link]();

Gezegen p;

String ss="";

while ([Link]()) {

p = (Gezegen)([Link]());

ss+=[Link]() + " : " + [Link]()+"\n";

[Link](null,ss);

[Link](0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
BÖLÜM 12: ÖRNEKLERLE SAYISAL ANALÝZ

12.1 SAYISAL ANALÝZE GÝRݪ

Bu bölümümüzde bazý pratik matematik problemlerinin java ile nasýl çözülebileceðine göz
atacaðýz. Sayýsal analiz iºlemlerini yapmak amacýyla iki sýnýf oluºturduk bunlar Matrix ve
Numeric sýnýflarýdýr. Bu serinin devamý olan java ile numerik analiz kitabýnda bu sýnýflardaki
metotlarý tek tek incelemeye çalýºacaðým. Burada ise sadece program listeleri ve örnek
problemler vermekle yetineceðiz. Buradaki metodlar uluslararasý projelerde kullanýldýðýndan
metot isim ve tanýmlamalarý ingilizcedir. Sadece bu kitabýn kapsamý için deðil gerçek nümerik
problemlerde kullanýlmak amacýyla geliºtirilmiºlerdir. Burada ayrýca hemen ºunu da
belirtelim: sayýsal metodlarýn kullanýmý bu metodlar, sayýsal analiz ve bilgisayar
deðiºkenlerinin deðiºimi ile ilgili iyi bilgi gerektirmektedir. Bu sýnýf ve metodlarý ciddi bir
uygulamada kullanmadan önce verilen metodlar hakkýnda nümerik analiz kitaplarndan
yeterince bilgi sahibi olmanýzý ve test fonksiyonlarý kullanarak sizin istediðiniz görevi yapýp
yapamýyacaklarýný iyice kontrol etmenizi tavsiye ederim. Türkiyedeki nümerik analizle
ilgilenen arkadaºlar eðer ilgilenirlerse benim kendi projelerimde kullanmak için geliºtirdiðim
bu gurubu daha da geliºtirerek genel bir nümerik analiz kütüphanesine dönüºtürmemiz
mümkün olabilir.

12.2 MATRIX SINIFI

Matrix sýnýfý double ve complex vektör (bir boyutlu deðiºken) ve matris (iki boyutlu deðiºken)
deðiºkenlerinin matematik iºlemlerini yapmak amacýyla tanýmlanmýºtýr. complex
(kompleks deðiºken sýnýfý) daha önce türkçe olarak tanýmlanan kompleks sýnýfýnýn
aynýdýr, fakat metot isimleri burada ingilizce olduðundan bu sýnýfýn tanýmýný tekrar verelim
:

Program 12.1 [Link], ingilizce metot isimleriyle kompleks deðiºkenler sýnýfý .

//===========================================

// Numerical Analysis Package in Java

// Complex class defination

// Dr. Turhan Coban

//===========================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

// class complex

// complex number abstraction

//

class complex {

// constructors

public complex()

nreal=0;

nimag=0;

public complex(double nre,double nim)

nreal=nre;

nimag=nim;

public complex(double numer)

nreal=numer;

nimag=0;

public complex(complex value )

nreal=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
nimag=[Link]();

// accessor functions

public double real()

return nreal;

public double imaginary()

return nimag;

public void setReal(double r)

nreal=r;

public void setImaginary(double i)

nimag=i;

public double R()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return [Link](nreal*nreal+nimag*nimag);

public double theta()

return Math.atan2(nimag,nreal);

public double dtheta()

return Math.atan2(nimag,nreal)*45.0/[Link](1.0);

// assignments

public void assign(complex right)

nreal=[Link]();

nimag=[Link]();

public void assign(double nr,double ni)

nreal=nr;

nimag=ni;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void add(complex right)

nimag = nimag + [Link]();

nreal = nreal + [Link]();

public void substract(complex right)

nimag = nimag - [Link]();

nreal = nreal - [Link]();

public void multiply(complex right )

nreal = nreal*[Link]() - nimag*[Link]();

nimag = nreal*[Link]() + nimag*[Link]();

public void divide(complex right )

double a=nreal*nreal+nimag*nimag;

nreal = ( nreal*[Link]() + nimag*[Link]())/a;

nimag = (-nreal*[Link]() + nimag*[Link]())/a;

public static complex add(complex left, complex right)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{ // return sum of two complex numbers

double r1=([Link]() + [Link]());

double i1=([Link]() + [Link]());

complex result;

result=new complex(r1,i1);

return result;

public static complex substract(complex left, complex right)

{ // return substraction of two complex numbers

complex result;

result=new complex(([Link]() - [Link]()),

([Link]() - [Link]()));

return result;

public static complex multiply(complex left, complex right)

{ // return multiplication of two complex numbers

complex result;

result=new complex

(([Link]()*[Link]() - [Link]()*[Link]()),

([Link]()*[Link]() + [Link]()*[Link]()));

return result;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static complex divide(complex left, complex right)

{ // return division of two complex numbers

double a=[Link]()*[Link]()+[Link]()*[Link]();

complex result;

result=new complex

(([Link]()*[Link]() + [Link]()*[Link]())/a,

(-[Link]()*[Link]() + [Link]()*[Link]())/a);

return result;

public static complex pow(complex left, double right)

{ // return sum of two complex numbers

double Rad,th;

Rad=[Link](left.R(),right);

th=right*[Link]();

complex result;

result =new complex((Rad*[Link](th) ),

(Rad*[Link](th) ) );

return result;

public boolean smaller(complex left,complex right)

// less then comparison of two complex numbers

return (left.R() < right.R());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean smaller_equal(complex left,complex right)

// less then and equal comparison of two complex numbers

return (left.R() <= right.R());

public boolean greater(complex left,complex right)

// greater then comparison of two complex numbers

return left.R() > right.R();

public boolean greater_equal(complex left,complex right)

// greater then and equal comparison of two complex numbers

return left.R() >= right.R();

public boolean equal(complex left,complex right)

// equal comparison of two complex numbers

return left.R() == right.R();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public boolean not_equal(complex left,complex right)

// not equal comparison of two complex numbers

return left.R() != right.R();

public static String toString(complex value)

String b="";

if([Link]([Link]())!=1)

if([Link]() >= 0)

b=b+"("+[Link]()+" + "+[Link]()+"i )";

else

b=b+"("+[Link]()+" - "+(-[Link]())+"i )";

else

if([Link]() >= 0)

b=b+"("+[Link]()+" + i )";

else

b=b+"("+[Link]()+" - i )";

return b;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public String toString()

String b="";

if([Link](imaginary())!=1)

if(imaginary() > 0)

b=b+"("+real()+" + "+imaginary()+"i )";

else if(imaginary() <0 )

b=b+"("+real()+" - "+(-imaginary())+"i )";

else

b=b+real()+ " ";

else

if(imaginary() > 0)

b=b+"("+real()+" + i )";

else if(imaginary() < 0)

b=b+"("+real()+" - i )";

else

b=b+real()+" ";

return b;

// data areas

double nreal;

double nimag;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
};

//end of class complex definations

ªimdi Matrix metoduna daha detaylý bakabiliriz. Ýlkönce Matrix sýnýfýnýn metot baºlýklarýný
verelim :

toString Metotlarý

public static String toString(double left)

left double deðiºkeninin String eºdeðerini yazýma hazýr hale getirir.


public static String toString(double[][] left)

left double matrisini String deðiºkeni olarak yazýma hazýr hale getirir.
public static String toString(complex[][] left)

left complex matrisini String deðiºkeni olarak yazýma hazýr hale getirir.
public static String toStringT(complex[] left)

left complex vektörünü String deðiºkeni sütun olarak yazýma hazýr hale getirir.
public static String toString(complex[] left)

left complex vektörünü String deðiºkeni satýr olarak yazýma hazýr hale getirir.
public static String toStringT(double[] left)

left double vektörünü String deðiºkeni sütun olarak yazýma hazýr hale getirir.
public static String toString(double[] left)

left complex vektörünü String deðiºkeni satýr olarak yazýma hazýr hale getirir.

inverse matris ve denklem sistemi çözüm hesaplarý

Denklem çözümlerinde temel olarak iki sayýsal analiz tekniðinden yararlanýlmýºtýr. Birinci
metod tam pivotlu gauss eliminasyon yöntem,, diðeri ise LU ayrýºtýrma yöntemidir. Gauss
eliminasyon yöntemi matrisi eliminasyon yöntemi kullanarak bir üst üçgen matris haline
dönüºtürür, yani diagonal elementlerin altýnda kalan elemanlarý sýfýrlar. Böylece denklem
sistemi tek bilinmiyenli bir lineer denklemden baºayarak iki bilinmiyenli, üç bilinmiyenli vs bir
denklem sistemine dönüºür. Bu denklem sistemi bir bilinmiyenli denklemin çözülüp deðerinin
iki blinmiyenli denklemde yerine konulmasýyla ikincinin çözülmesi ve ayný iºlemin seri halde
devamýyla tüm bilinmeyenler çözülür. LU ayrýºtýrma metodunda ise matris önce bir üst üçgen
matris(U) ve bir alt üçgen matris (L) ye ayrýºtýrýlýr. Sistem L ve U matrislerini kullanarak
çözülür. Ýnverse (ters) matris hesabý da yine bu iki yöntemin kullanýlmasýyla gerçekleºtirilir.
Eðer sadece bir matris çözülecekse gauss eliminasyon ve LU yöntemleri arasýnda
hesaplama verimi farký yoktur, ancak sadece denklemin sað tarafý deðiºiyorsa LU daha
verimli olarak hesap yapar. Hesaplama hassasiyetini arttýrmak için pivoting adýverilen bir
metod kullanýlmýºtýr. Pivoting matrisin satýr ve sütunlarýnýn yerini deðiºtirerek yuvarlama
hatalarýnýn minimize edilmesi tekniðidir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[][] inv(double[][] a)

inverse matrix hesaplar (tam pivotlu Gauss eliminasyon yöntemi)


public static double[][] inverse(double a[][])

inverse matrix hesaplar (tam pivotlu Gauss eliminasyon yöntemi)


public static double[] LUaxb(double a[][],double x[],int indx[])

lineer denklem sistemini LU metodu yardýmýyla çözer.


public static double[] AXB(double a[][],double b[])

lineer denklem sistemini tam pivotlu gauss eliminasyon metodu yardýmýyla çözer.

Determinant hesaplarý

Determinant özel bir matris çarpým prosesidir. Tek bir sayýyla ifade edilir. Determinant hesabý
için LU metodu daha uygun olduðundan bu metod kullanýlmýºtýr. Aºaðýdaki metodlar aslýnda
tek bir metod olup, deðiºik isimleri verebilmek amacýyla üç ayrý metod olarak sunulmuºtur.

public static double det(double a[][])

LU metodu yardýmýyla determinant hesaplar


public static double determinant(double a[][])

LU metodu yardýmýyla determinant hesaplar


public static double D(double a[][])

LU metodu yardýmýyla determinant hesaplar

Matrislerin dört iºlemi

Burada matrislerin çarpýmý (multiply) metodlarýnda vektörel matris çarpýmlarýndan


bahsediyoruz.

public static double[][] multiply(double[][] left,double[][] right)


iki double matris çarpýmý

public static double[] multiply(double[][] left,double[] right)

double matris - vektör çarpýmý


public static double[] multiply(double[] left,double[][] right)

double vektör - matris çarpýmý


public static double[][] multiply(double left,double[][] right)

double sayý - matris çarpýmý


public static double[][] multiply(double[][] left,double right)

double matris - sayý çarpýmý


public static double[] multiply(double left,double[] right)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double sayý - vektör çarpýmý
public static double[] multiply(double[] left,double right)

double sayý - vektör çarpýmý


Matrislerin toplamý(add) ayný konumda olan elemanlarýn toplamýdýr. Fark iºlemi de (subtract)
ayný konumda olan iki matrisden ilk verilenden ikinci verilenin iºaratinin deðiºtirilerek
toplanmasýdýr.

public static double[][] add(double[][] left,double[][] right)

iki double matris toplamý


public static double[] add(double[] left,double[] right)

iki double vektör toplamý


public static double[][] substract(double[][] left,double[][] right)

iki double mtrisin farký


public static double[] substract(double[] left,double[] right)

iki double vektörün farký


vectorlerin bölümüyle birinci vectorün tersinin (inverse) alýnarak ikinci matrisle çarpýlmasý
anlaºýlýr.

A/B = B*inv(A)

public static double[][] divide(double[][] left,double[][] right)

iki matrisin bölümü (birinci matrisin ikinci matrisin inversüyle çarpýmý)


public static double[][] LUdivide(double[][] left,double[][] right)

iki matrisin LU metodu kullanýlarak bölümü (birinci matrisin ikinci matrisin inversüyle
çarpýmý)
public static double[] LUdivide(double[] left,double[][] right)

vektörün matrise bölümü (LU metodu)


public static double[] divide(double[] left,double[][] right)

vektörün matrise bölümü


public static double[] divide(double[] left,double[][] right)

vektörün matrise bölümü

Üst iºlemi : üst iºleminden anlaºýlan matristeki her elemanýn ayrý ayrý üssünü almaktýr

public static double[][] pow(double[][] right,double left)

matrisin double kuvveti (her elemanýnýn ayrý ayrý kuvveti)


public static double[] pow(double[] right,double left)

vektörün double kuvveti ( (her elemanýnýn ayrý ayrý kuvveti)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Absulute matris : absolute matris, matris elemanlarýnýn tümünün deðerini positife çevirir.

public static double abs(double[][] left)

matrisin mutlak deðeri


public static double abs(double[] left)

vektörün mutlak deðeri

Transpose matris : transpose matris matrisin satýr ve sütünlarýnýn yerini deðiºtirir, yani
satýrlar sütun, sütunlar satýr haline dönüºür. (aij) T =aji

public static double[][] Transpose(double [][] left)

Transpose matrix (satýr ve sütunlarýn yer deðiºtirmiº hali)


public static double[][] T(double [][] left)

Transpose matrix (satýr ve sütunlarýn yer deðiºtirmiº hali)


public static complex[][] T(complex [][] left)

Transpose matrix (satýr ve sütunlarýn yer deðiºtirmiº hali)

Birim matris : birim matris diagonal elemanýnda (aii) 1 deðeri olan diðer elemanlarý ise 0
taºýyan (aij,j!=I) matristir.

public static double[][] I(int n)

Birim matris
public static double[] one(int n)

Birim vektör (tüm deðerler 1'e eºit)

EigenValue Problemi : EigenValue, veya sýnýr deðer problemi matris iºlemlerindeki ve


matematikteki oldukça önemli bir iºlemdir. Sýnýr deðer iºlemine kýsaca bir denklem sisteminn
köklerini bulma da diyebiliriz. Genel taným olarak [A] matrisinin sýnýr deðeri

[A]{X}-[I]=0 olarak tanýmlanýr. Burada {X} denklemi saðlayan vektör setidir, eigen vektörü
(sýnýr deðer vektörü) olarak adlandýrýlýr.  deðeri ise EigenValue(sýnýr deðeri) adýný alýr.
Buradaki [I] birim matrisdir. ªüphesiz, verilen bir matris için birden fazla eigenvektör ve
eigenvalue bulunabilir.

public static double[][] balance(double b[][])


balance iºlemi eigenvalue hesaplamalarýný kolaylaºtýran bir ilk iterasyon prosesidir. Bazý
durumlarda sonuca

ulaºmayabilir. Bu yüzden dikkatli kullanýlmalýdýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[][] Hessenberg(double b[][])

Hessenberg matris dönüºümü, eigenvalue hesaplamalarýnda kullanýlýr.


public static double[][] QR(double b[][])

Eigenvalue (sýnýr-deðer hesaplama metodu, simetrik olmayan matrislere de


uygulanabilir.)

sonuçlar n*2 (gerçek ve imajineri) matris olarak aktarýlýr.


public static double[][] eigenValue(double b[][])

QR metodunun aynýdýr.
public static complex[] eigenValueC(double b[][])

QR metodunun aynýdýr tek farký sonuçlarý kompleks vektör olarak vermesidir.


public static double[][] balancedEigenValue(double b[][])

QR metodu uygulanmadan önce balance metodunu uygular.


public static double[][] eigenQL(double a[][])

Eigenvalue (sýnýr-deðer hesaplama metodu, sadece simetrik matrislere uygulanabilir,


simetrik eigenvalue deðerleri gerçektir,, komplex kökler vermez)

Polinomun kökleri

Polinomun köklerinin bulunmasý aslýnda bir eigenvalue (sýnýrdeðer) problemidir. Herhangi bir
dereceden polinomun katsayýlarý verildiðinde karekteristikmatris adý verilen bir matris
eºdeðeri oluºturulabilir. Bu matrisin eigenvalue deðerleri verilen polinomun kökleridir.

public static double[][] poly_roots(double c[])

QR Eigenvalue (sýnýr-deðer hesaplama metodu, simetrik olmayan matrislere de


uygulanabilir.)

metodu kullanarak polinomun köklerini hesaplar. polinom katsayýlarýný önce karektteristik


matrise çevirir. sonuçlar n*2 (gerçek ve imajineri) matris olarak aktarýlýr.
public static complex[] poly_rootsC(double c[])

Yukarýdakinin aynýdýr. ancak sonuçlar kompleks vektör olarak aktarýlýr.

12.1.1 Matrix Sýnýfýnýn Listesi :

Problem 12.2 [Link] , Matris proseslerini tanýmlayan Matrix sýnýfý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//=============================================================
// Numerical Analysis Packages in Java
// Matrix calculations class Matrix
// Author : Dr. Turhan Coban
//=============================================================
//Turhan Coban
import [Link].*;
import complex;

public class Matrix


{
// This class defines matrix and vector
// calculation methods

public static String toString(double left)


{
//arrange double to string conversion so that all the
//matrix double variables nicely printed in the same column
String s="";
if(left=0) s=s+" ";
s=s+left;
double n=[Link]();
while(n<13)
{
s=s+" ";
n=[Link]();
}
return s;
}

public static String toString(double[][] left)


{
//return a string representation of a matrix
int n,m;
String b;
b="";
n=[Link];
m=left[0].length;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
b=b+toString(left[i][j]);
}
b=b+"\n";
}
return b;
}

public static String toString(complex[][] left)


{
//return a string representation of a complex matrix

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n,m;
String b;
b="";
n=[Link];
m=left[0].length;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
b=b+left[i][j].toString()+"\t";
}
b=b+"\n";
}
return b;
}

public static String toStringT(complex[] left)


{
// returns a horizontal string representation of
// a complex vector
int n,m;
String b;
b="";
n=[Link];
for(int i=0;i<n;i++)
{
b=b+left[i].toString()+"\n";
}
return b;
}

public static String toString(complex[] left)


{
// returns a vertical string representation of
// a complex vector
int n,m;
String b;
b="";
n=[Link];
for(int i=0;i<n;i++)
{
b=b+left[i].toString()+" ";
}
b=b+"\n";
return b;
}

public static String toStringT(double[] left)


{
// returns a vertical string representation
// of a double vector
int n,m;
String b;
b="";
n=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<n;i++)
{
b=b+toString(left[i])+"\n";
}
return b;
}

public static String toString(double[] left)


{
// returns a horizontal string representation
// of a double vector
int n,m;
String b;
b="";
n=[Link];
for(int i=0;i<n;i++)
{
b=b+toString(left[i]);
}
b=b+"\n";
return b;
}
public static String toString(int[] left)
{
// returns a horizontal string representation
// of a integer vector
int n,m;
String b;
b="";
n=[Link];
for(int i=0;i<n;i++)
{
b=b+left[i]+"\t";
}
b=b+"\n";
return b;
}

public static double SIGN(double a,double b)


{
//returns the value of double a with sign of double b;
//if a=-2, b= 3 SIGN(a,b) returns 2
//if a=-2, b=-3 SIGN(a,b) returns -2
//if a= 2, b=-3 SIGN(a,b) returns -2
//if a= 2, b= 3 SIGN(a,b) returns 2
if(b!=0)
return [Link](a)*b/[Link](b);
else
return [Link](a);
}

public static double[][] inv(double[][] a)


{
// INVERSION OF A MATRIX

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// inversion by using gaussian elimination
// with full pivoting
int n=[Link];
int m=a[0].length;
double b[][];
b=new double[n][n];
int indxc[];
int indxr[];
double ipiv[];
indxc=new int[n];
indxr=new int[n];
ipiv=new double[n];
int i,j,k,l,ll,ii,jj;
int icol=0;
int irow=0;
double big,dum,pivinv,temp;
if(n!=m)
{
[Link]("Matrix must be square ");
for(ii=0;ii<n;ii++)
for(jj=0;jj<n;jj++)
b[ii][jj]=0.0;
return b;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=a[i][j];
for(i=0;i<n;i++)
{
big=0.0;
for(j=0;j<n;j++)
{
if(ipiv[j] != 1)
for(k=0;k<n;k++)
{
if(ipiv[k] == 0)
{
if([Link](b[j][k]) = big)
{
big=[Link](b[j][k]);
irow=j;
icol=k;
}
}
else if(ipiv[k] 1 )
{
[Link]("error : inverse of the matrix : singular matrix-1");
for(ii=0;ii<n;ii++)
for(jj=0;jj<n;jj++)
b[ii][jj]=0.0;
return b;
}
}
}
++ ipiv[icol];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if(irow != icol)
for(l=0;l<n;l++)
{
temp=b[irow][l];
b[irow][l]=b[icol][l];
b[icol][l]=temp;
}
indxr[i]=irow;
indxc[i]=icol;
if(b[icol][icol] == 0.0)
{
[Link]("error : inverse of the matrix : singular matrix-2");
for(ii=0;ii<n;ii++)
for(jj=0;jj<n;jj++)
b[ii][jj]=0.0;
return b;
}
pivinv=1.0/b[icol][icol];
b[icol][icol]=1.0;
for(l=0;l<n;l++) b[icol][l] *=pivinv;
for(ll=0;ll<n;ll++)
if(ll != icol)
{
dum=b[ll][icol];
b[ll][icol]=0.0;
for(l=0;l<n;l++) b[ll][l]-= b[icol][l]*dum;
}
}
for(l=n-1;l=0;l--)
{
if(indxr[l] != indxc[l])
for(k=0;k<n;k++)
{
temp=b[k][indxc[l]];
b[k][indxc[l]]=b[k][indxr[l]];
b[k][indxr[l]]=temp;
}
}
return b;
}

public static double[][] inverse(double a[][])


{
//inverse of a matrix
//this method enable usage of inv or inverse as
//name of mtrix inversion method
return [Link](a);
}

//LU decomposition method


public static double[][] LU(double c[][],int indx[],int d[])
{
//returns LU decomposition of matrix c and index indx
double a[][];
int n=[Link];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
a=new double[n][n];
double vv[];
vv=new double[n];
double sum,dum,big,temp;
int i,j,k;
int imax;
int nmax=100;
double tiny=1.0e-40;
imax=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
a[i-1][j-1]=c[i-1][j-1];
}
d[0]=1;
for(i=1;i<=n;i++)
{
big=0.0;
for(j=1;j<=n;j++)
{
if([Link](a[i-1][j-1])big) big=[Link](a[i-1][j-1]);
}
if(big==0) {[Link]("singular matrix");return a;}
vv[i-1]=1.0/big;
}
for(j=1;j<=n;j++)
{
for(i=1;i<j;i++)
{
sum=a[i-1][j-1];
for(k=1;k<i;k++)
{
sum-=a[i-1][k-1]*a[k-1][j-1];
}
a[i-1][j-1]=sum;
}
big=0;
for(i=j;i<=n;i++)
{
sum=a[i-1][j-1];
for(k=1;k<j;k++)
{
sum-=a[i-1][k-1]*a[k-1][j-1];
}
a[i-1][j-1]=sum;
dum=vv[i-1]*[Link](sum);
if(dum=big)
{
imax=i;
big=dum;
}
} //end of i=0
if(j != imax)
{
for(k=1;k<=n;k++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
dum=a[imax-1][k-1];
a[imax-1][k-1]=a[j-1][k-1];
a[j-1][k-1]=dum;
}
d[0]=-d[0];
vv[imax-1]=vv[j-1];
} //end of if
indx[j-1]=imax;
if(a[j-1][j-1]==0) a[j-1][j-1]=tiny;
if(j!=n)
{
dum=1.0/a[j-1][j-1];
for(i=j+1;i<=n;i++)
a[i-1][j-1]*=dum;
}//endif
} //end for j=
return a;
}

public static double[] LUaxb(double a[][],double x[],int indx[])


{
//solves AX=B system of linear equation of LU decomposed matrix a
//(calculated by method LU)
int ii=0;
int i,j,ll=0;
double sum=0;
int n=[Link];
double b[];
b=new double[n];
for(i=1;i<=n;i++)
{
b[i-1]=x[i-1];
}
for(i=1;i<=n;i++)
{
ll=indx[i-1];
sum=b[ll-1];
b[ll-1]=b[i-1];
if(ii!=0)
{
for(j=ii;j<=(i-1);j++)
{
sum-=a[i-1][j-1]*b[j-1];
}
}
else if(sum!=0) ii=i;
b[i-1]=sum;
}
for(i=n;i=1;i--)
{
sum=b[i-1];
if(i<n)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(j=(i+1);j<=n;j++)
{
sum-=a[i-1][j-1]*b[j-1];
}
}
b[i-1]=sum/a[i-1][i-1];
}
return b;
}

public static double[] AXB(double a[][],double b[])


{
//Solution of system of linear equations by LU method
// note that the same calculation can be done by divide method.
int n=[Link];
double c[]=new double[n];
int d[]={1};
int indx[]=new int[n];
double e[][]=new double[n][n];
e=[Link](a,indx,d);
c=[Link](e,b,indx);
return c;
} //end of AXB

public static double[][] LUinv(double a[][])


{
//inverse of a matrix by using LU decomposition method
//this method is more efficient than inv (or inverse)
int n=[Link];
double c[][]=new double[n][n];
double b[][]=Matrix.I(n);
int d[]={0};
int indx[]=new int[n];
double e[][]=new double[n][n];
e=[Link](a,indx,d);
for(int i=0;i<n;i++)
{
c[i]=[Link](e,b[i],indx);
}
return Matrix.T(c);
} //end of LUinv

public static double det(double a[][])


{
//determinant of a matrix
int n=[Link];
int indx[]=new int[n];
int d[]={1};
double e;
double b[][]=new double[n][n];
b=[Link](a,indx,d);
e=d[0];
for(int i=0;i<n;i++)
e=e*b[i][i];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return e;
} //end of det

public static double determinant(double a[][])


{
//determinant of a matrix
return [Link](a);
}

public static double D(double a[][])


{
//determinant of a matrix
return [Link](a);
}

//************* multiply methods definitions *********************


public static double[][] multiply(double[][] left,double[][] right)
{
//multiplication of two matrices
int ii,jj,i,j,k;
int m1=left[0].length;
int n1=[Link];
int m2=right[0].length;
int n2=[Link];
double[][] b;
b=new double[m1][n2];
if(n1 != m2)
{
[Link]("inner matrix dimensions must agree");
for(ii=0;ii<n1;ii++)
{
for(jj=0;jj<m2;jj++)
b[ii][jj]=0;
}
return b;
}
for(i=0;i<m1;i++)
{
for(j=0;j<n2;j++)
{
for(k=0;k<n1;k++)
b[i][j]+=left[i][k]*right[k][j];
}
}
return b;
//end of multiply of two matrices
}

public static double[] multiply(double[][] left,double[] right)


{
//multiplication of one matrix with one vector
int ii,jj,i,j,k;
int m1=left[0].length;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n1=[Link];
int m2=[Link];
double[] b;
b=new double[m2];
if(n1 != m2)
{
[Link]("inner matrix dimensions must agree");
for(ii=0;ii<n1;ii++)
{
b[ii]=0;
}
return b;
}
for(i=0;i<m1;i++)
{
b[i]=0;
for(k=0;k<n1;k++)
b[i]+=left[i][k]*right[k];
}
return b;
//end of multiply of a matrix and a vector
}

public static double[] multiply(double[] left,double[][] right)


{
//multiplication of one vector with one matrix
int ii,jj,i,j,k;
int m2=right[0].length;
int n2=[Link];
int m1=[Link];
double[] b;
b=new double[m1];
if(n2 != m1)
{
[Link]("inner matrix dimensions must agree");
for(ii=0;ii<n2;ii++)
{
b[ii]=0;
}
return b;
}
for(i=0;i<m2;i++)
{
b[i]=0;
for(k=0;k<m1;k++)
b[i]+=right[i][k]*left[k];
}
return b;
//end of multiply of a vector and a matrix
}

public static double[][] multiply(double left,double[][] right)


{
//multiplying a matrix with a constant
int i,j;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n=[Link];
int m=right[0].length;
double b[][];
b=new double[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
b[i][j]=right[i][j]*left;
}
return b;
//end of multiplying a matrix with a constant double
}

public static double[][] multiply(double[][] left,double right)


{
//multiplying a matrix with a constant
int i,j;
int n=[Link];
int m=left[0].length;
double b[][];
b=new double[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
b[i][j]=left[i][j]*right;
}
return b;
//end of multiplying a matrix with a constant double
}

public static double[] multiply(double left,double[] right)


{
//multiplying a vector with a constant
int i;
int n=[Link];
double b[];
b=new double[n];
for(i=0;i<n;i++)
{
b[i]=left*right[i];
}
return b;
}

public static double[] multiply(double[] left,double right)


{
//multiplying a vector with a constant
int i;
int n=[Link];
double b[];
b=new double[n];
for(i=0;i<n;i++)
{
b[i]=right*left[i];
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return b;
}
//*************** end of multiply methods definitions **************
//=============== defination of power methods pow ==============
public static double[][] pow(double[][] right,double left)
{
// power of a matrix
int i,j;
double b[][];
int n=[Link];
int m=right[0].length;
b=new double[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(left==0.0)
{
b[i][j]=1.0;
}
else
{
b[i][j]=[Link](right[i][j],left);
}
}
}
return b;
//end of power of a matrix
}

public static double[] pow(double[] right,double left)


{
// power of a vector
int i;
int n=[Link];
double b[];
b=new double[n];
for(i=0;i<n;i++)
{
if(left==0.0)
{
b[i]=1.0;
}
else
{
b[i]=[Link](right[i],left);
}
}
return b;
//end of power of a vector
}

//=================end of power method pow definitions =============


//***************** addition add methods **************************

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[][] add(double[][] left,double[][] right)
{
//addition of two matrices
int n1=[Link];
int m1=left[0].length;
int n2=[Link];
int m2=right[0].length;
int nMax,mMax;
int i,j;
if(m1=m2) mMax=m1;
else mMax=m2;
if(n1=n2) nMax=n1;
else nMax=n2;
double b[][];
b=new double[nMax][mMax];
for(i=0;i<n1;i++)
{
for(j=0;j<m1;j++)
{
b[i][j]=b[i][j]+left[i][j];
}
}
for(i=0;i<n2;i++)
{
for(j=0;j<m2;j++)
{
b[i][j]=b[i][j]+right[i][j];
}
}
return b;
//end of matrix addition method
}

public static double[] add(double[] left,double[] right)


{
//addition of two vectors
int n1=[Link];
int n2=[Link];
int nMax;
int i;
if(n1=n2) nMax=n1;
else nMax=n2;
double b[];
b=new double[nMax];
for(i=0;i<n1;i++)
{
b[i]=b[i]+left[i];
}
for(i=0;i<n2;i++)
{
b[i]=b[i]+right[i];
}
return b;
//end of vector addition method
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[][] substract(double[][] left,double[][] right)
{
//addition of two matrices
int n1=[Link];
int m1=left[0].length;
int n2=[Link];
int m2=right[0].length;
int nMax,mMax;
int i,j;
if(m1=m2) mMax=m1;
else mMax=m2;
if(n1=n2) nMax=n1;
else nMax=n2;
double b[][];
b=new double[nMax][mMax];
for(i=0;i<n1;i++)
{
for(j=0;j<m1;j++)
{
b[i][j]=b[i][j]+left[i][j];
}
}
for(i=0;i<n2;i++)
{
for(j=0;j<m2;j++)
{
b[i][j]=b[i][j]-right[i][j];
}
}
return b;
//end of matrix substraction method
}

public static double[] substract(double[] left,double[] right)


{
//addition of two vectors
int n1=[Link];
int n2=[Link];
int nMax;
int i;
if(n1=n2) nMax=n1;
else nMax=n2;
double b[];
b=new double[nMax];
for(i=0;i<n1;i++)
{
b[i]=b[i]+left[i];
}
for(i=0;i<n2;i++)
{
b[i]=b[i]-right[i];
}
return b;
//end of vector substraction method
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//============== division of the matrices
public static double[][] divide(double[][] left,double[][] right)
{
//division of two matrices
int n=[Link];
int m=right[0].length;
double b[][];
b=new double[n][m];
b=[Link]([Link](right),left);
return b;
}

public static double[][] LUdivide(double[][] left,double[][] right)


{
//division of two matrices utilises LUinv method instead of inv
int n=[Link];
int m=right[0].length;
double b[][];
b=new double[n][m];
b=[Link]([Link](right),left);
return b;
}

public static double[] divide(double[] left,double[][] right)


{
//division of two matrices
int n=[Link];
int m=right[0].length;
double b[];
b=new double[n];
b=[Link]([Link](right),left);
return b;
}

public static double[] LUdivide(double[] left,double[][] right)


{
//division of two matrices utilises AXB (LU decomposition method)
//in fact this method is exactly same as AXB except spacing of the
//arguments
return AXB(right,left);
}

//============== absolute value of a matrix===================

public static double abs(double[][] left)


{
// absoulute value of a matrix
int i,j;
int n=[Link];
int m=left[0].length;
double b=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
b=b+[Link](left[i][j]);
}
return b;
}

public static double abs(double[] left)


{
// absolute value of a vector
int i;
int n=[Link];
double b=0;
for(i=0;i<n;i++)
{
b=b+[Link](left[i]);
}
return b;
}

//===============special matrices==============================
public static double[][] Transpose(double [][] left)
{
//transpose matrix (if A=a(i,j) Transpose(A)=a(j,i)
int i,j;
int n=[Link];
int m=left[0].length;
double b[][];
b=new double[m][n];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
b[j][i]=left[i][j];
}
}
return b;
}

public static double[][] T(double [][] left)


{
//transpose matrix (if A=a(i,j) T(A)=a(j,i)
int i,j;
int n=[Link];
int m=left[0].length;
double b[][];
b=new double[m][n];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
b[j][i]=left[i][j];
}
}
return b;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static complex[][] T(complex [][] left)
{
//transpose matrix (if A=a(i,j) T(A)=a(j,i)
int i,j;
int n=[Link];
int m=left[0].length;
complex b[][];
b=new complex[m][n];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
b[j][i]=new complex(left[i][j]);
}
}
return b;
}

public static double[][] I(int n)


{
//unit matrix
double b[][];
b=new double[n][n];
for(int i=0;i<n;i++)
b[i][i]=1.0;
return b;
}

public static double[] one(int n)


{
//one matrix
double b[];
b=new double[n];
for(int i=0;i<n;i++)
b[i]=1.0;
return b;
}

public static double[][] characteristic_matrix(double c[])


{
//this routine converts polynomial coefficients to a matrix
//with the same eigenvalues (roots)
int n=[Link]-1;
int i;
double a[][]=new double[n][n];
for(i=0;i<n;i++)
{
a[0][i]=-c[i+1]/c[0];
}
for(i=0;i<n-1;i++)
{
a[i+1][i]=1;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return a;
}

//===========Eigen value calculations ==============

public static double[][] balance(double b[][])


{
// balance of a matrix for more accurate eigenvalue
// calculations
double radix=2.0;
double sqrdx=radix*radix;
double c,r,f,s,g;
int m,j,i,last;
int n=[Link];
last=0;
double a[][];
a=new double[n][n];
f=1;
s=1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i-1][j-1]=b[i-1][j-1];
while(last==0)
{
last=1;
for(i=1;i<=n;i++)
{
c=0;r=0;
for(j=1;j<=n;j++)
{
if(j != i)
{
c+=[Link](a[j-1][i-1]);
r+=[Link](a[i-1][j-1]);
} //end of if(j!=..
} //end of for(j=1...
if(c != 0 && r != 0 )
{
g=r/radix;
f=1.0;
s=c+r;
while(c<g)
{
f*=radix;
c*=sqrdx;
}
g=r*radix;
while(cg)
{
f/=radix;
c/=sqrdx;
}
} //end of if(c != 0 && ....
if( (c+r)/f < 0.95*s )
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
last=0;
g=1.0/f;
for(j=1;j<=n;j++) { a[i-1][j-1]*=g; }
for(j=1;j<=n;j++) { a[j-1][i-1]*=f; }
} //end of if( ((c+r..
}//end of for(i=1;i<=n....
} //end of while last==0
return a;
}

public static double[][] Hessenberg(double b[][])


{
// Calculates the hessenberg matrix
// it is used in QR method to calculate eigenvalues
// of a matrix(symmetric or non-symmetric)
int m,j,i;
int n=[Link];
double a[][];
a=new double[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=b[i][j];
double x,y;
if(n2)
{
for(m=2;m<=(n-1);m++)
{
x=0.0;
i=m;
for(j=m;j<=n;j++)
{
if([Link](a[j-1][m-2]) [Link](x))
{
x=a[j-1][m-2];
i=j;
} //end of if([Link](..
}//end of for(j=m,j<=n...
if(i!=m)
{
for(j=(m-1);j<=n;j++)
{
y=a[i-1][j-1];
a[i-1][j-1]=a[m-1][j-1];
a[m-1][j-1]=y;
}//end of for(j=(m-1)..
for(j=1;j<=n;j++)
{
y=a[j-1][i-1];
a[j-1][i-1]=a[j-1][m-1];
a[j-1][m-1]=y;
}//end of for(j=1;j<=n....
} //end of if(i!=m)
if(x != 0.0)
{
for(i=(m+1);i<=n;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
y=a[i-1][m-2];
if(y!=0.0)
{
y=y/x;
a[i-1][m-2]=y;
for(j=m;j<=n;j++)
{
a[i-1][j-1]-=y*a[m-1][j-1];
}
for(j=1;j<=n;j++)
{
a[j-1][m-1]+=y*a[j-1][i-1];
}
}//end of if(y!=0..
}//end of for(i=(m+1)...
} //end of if(x != 0.0...
}//end of for(m=2;m<=(n-1)..
}//end of Hessenberg
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i(j+1)) a[i-1][j-1]=0;
}
return a;
}

public static double[][] QR(double b[][])


{
//calculates eigenvalues of a Hessenberg matrix
int n=[Link];
double rm[][]=new double[2][n];
double a[][]=new double[n+1][n+1];
double wr[]=new double[n+1];
double wi[]=new double[n+1];
int nn,m,l,k,j,its,i,mmin;
double z,y,x,w,v,u,t,s,r=0,q=0,p=0,anorm;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i+1][j+1]=b[i][j];
anorm=[Link](a[1][1]);
for (i=2;i<=n;i++)
for (j=(i-1);j<=n;j++)
anorm += [Link](a[i][j]);
nn=n;
t=0.0;
while (nn = 1) {
its=0;
do {
for (l=nn;l=2;l--) {
s=[Link](a[l-1][l-1])+[Link](a[l][l]);
if (s == 0.0) s=anorm;
if ((double)([Link](a[l][l-1]) + s) == s) break;
}
x=a[nn][nn];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if (l == nn) {
wr[nn]=x+t;
wi[nn--]=0.0;
}
else {
y=a[nn-1][nn-1];
w=a[nn][nn-1]*a[nn-1][nn];
if (l == (nn-1)) {
p=0.5*(y-x);
q=p*p+w;
z=[Link]([Link](q));
x += t;
if (q = 0.0) {
z=p+[Link](z,p);
wr[nn-1]=wr[nn]=x+z;
if (z!=0) wr[nn]=x-w/z;
wi[nn-1]=wi[nn]=0.0;
}
else {
wr[nn-1]=wr[nn]=x+p;
wi[nn-1]= -(wi[nn]=z);
}
nn -= 2;
}
else {
if (its == 30) [Link]("Too many iterations in hqr");
if (its == 10 || its == 20) {
t += x;
for (i=1;i<=nn;i++) a[i][i] -= x;
s=[Link](a[nn][nn-1])+[Link](a[nn-1][nn-2]);
y=x=0.75*s;
w = -0.4375*s*s;
}
++its;
for (m=(nn-2);m=l;m--) {
z=a[m][m];
r=x-z;
s=y-z;
p=(r*s-w)/a[m+1][m]+a[m][m+1];
q=a[m+1][m+1]-z-r-s;
r=a[m+2][m+1];
s=[Link](p)+[Link](q)+[Link](r);
p /= s;
q /= s;
r /= s;
if (m == l) break;
u=[Link](a[m][m-1])*([Link](q)+[Link](r));
v=[Link](p)*([Link](a[m-1][m-1])+
[Link](z)+[Link](a[m+1][m+1]));
if ((double)(u+v) == v) break;
}
for (i=m+2;i<=nn;i++) {
a[i][i-2]=0.0;
if (i != (m+2)) a[i][i-3]=0.0;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for (k=m;k<=nn-1;k++) {
if (k != m) {
p=a[k][k-1];
q=a[k+1][k-1];
r=0.0;
if (k != (nn-1)) r=a[k+2][k-1];
if ((x=[Link](p)+[Link](q)+[Link](r)) != 0.0) {
p /= x;
q /= x;
r /= x;
}
}
if ((s=[Link]([Link](p*p+q*q+r*r),p)) != 0.0) {
if (k == m) {
if (l != m)
a[k][k-1] = -a[k][k-1];
}
else
a[k][k-1] = -s*x;
p += s;
x=p/s;
y=q/s;
z=r/s;
q /= p;
r /= p;
for (j=k;j<=nn;j++) {
p=a[k][j]+q*a[k+1][j];
if (k != (nn-1)) {
p += r*a[k+2][j];
a[k+2][j] -= p*z;
}
a[k+1][j] -= p*y;
a[k][j] -= p*x;
}
mmin = nn<k+3 ? nn : k+3;
for (i=l;i<=mmin;i++) {
p=x*a[i][k]+y*a[i][k+1];
if (k != (nn-1)) {
p += z*a[i][k+2];
a[i][k+2] -= p*r;
}
a[i][k+1] -= p*q;
a[i][k] -= p;
}
}
}
}
}
} while (l < nn-1);
}
for(i=0;i<n;i++)
{
rm[0][i]=wr[i+1];
rm[1][i]=wi[i+1];
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return rm;
} //end of QR

public static double[][] eigenValue(double b[][])


{
// this routine input a matrix (non symetric or symmetric)
// and calculate eigen values
// method balance can be used prior to this method to balance
// the input matrix
int n=[Link];
double d[][]=new double[2][n];
d=[Link]([Link](b));
return d;
}

public static complex[] eigenValueC(double b[][])


{
// this routine input a matrix (non symetric or symmetric)
// and calculate eigen values
// method balance can be used prior to this method to balance
// the input matrix
//output eigenvalues will be in a vector of complex form
int n=[Link];
double d[][]=new double[2][n];
d=[Link]([Link](b));
complex c[]=new complex[n];
for(int i=0;i<n;i++)
{
c[i]=new complex(d[0][i],d[1][i]);
}
return c;
}

//roots of a polynomial
public static double[][] poly_roots(double c[])
{
//roots of a degree n polynomial
// P(x)=c[n]*x^n+c[n-1]*x^(n-1)+....+c[1]*x+c[0]=0;
int n=[Link]-1;
double a[][]=new double[n][n];
a=characteristic_matrix(c);
double d[][]=new double[2][n];
d=balancedEigenValue(a);
return d;
}

public static complex[] poly_rootsC(double c[])


{
// roots of a degree n polynomial
// P(x)=c[n]*x^n+c[n-1]*x^(n-1)+....+c[1]*x+c[0]=0;
// roots are returned as complex variables
int n=[Link]-1;
double a[][]=new double[n][n];
a=characteristic_matrix(c);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double d[][]=new double[2][n];
d=balancedEigenValue(a);
complex e[]=new complex[n];
for(int i=0;i<n;i++)
e[i]=new complex(d[0][i],d[1][i]);
return e;
}

public static double[][] balancedEigenValue(double b[][])


{
// this routine input a matrix (non symetric or symmetric)
// and calculates eigen values
// method balance is used to balance the matrix previous to
// actual calculations
int n=[Link];
double d[][]=new double[2][n];
d=[Link]([Link]([Link](b)));
return d;
}

public static double[][] tridiagonal(double b[][], double d[], double e[])


{
//reduces matrix to tridiaonal form by using householder transformation
//this method is used by QL method to calculate eigen values
//and eigen vectors of a symmetric matrix
int l,k,j,i;
int n=[Link];
double scale,hh,h,g,f;
double a[][]=new double[n+1][n+1];
double c[][]=new double[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=b[i][j];
for (i=n;i=2;i--) {
l=i-1;
h=scale=0.0;
if (l 1) {
for (k=1;k<=l;k++)
scale += [Link](a[i-1][k-1]);
if (scale == 0.0)
e[i-1]=a[i-1][l-1];
else {
for (k=1;k<=l;k++) {
a[i-1][k-1] /= scale;
h += a[i-1][k-1]*a[i-1][k-1];
}
f=a[i-1][l-1];
g=(f = 0.0 ? -[Link](h) : [Link](h));
e[i-1]=scale*g;
h -= f*g;
a[i-1][l-1]=f-g;
f=0.0;
for (j=1;j<=l;j++) {
a[j-1][i-1]=a[i-1][j-1]/h;
g=0.0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for (k=1;k<=j;k++)
g += a[j-1][k-1]*a[i-1][k-1];
for (k=j+1;k<=l;k++)
g += a[k-1][j-1]*a[i-1][k-1];
e[j-1]=g/h;
f += e[j-1]*a[i-1][j-1];
}
hh=f/(h+h);
for (j=1;j<=l;j++) {
f=a[i-1][j-1];
e[j-1]=g=e[j-1]-hh*f;
for (k=1;k<=j;k++)
a[j-1][k-1] -= (f*e[k-1]+g*a[i-1][k-1]);
}
}
} else
e[i-1]=a[i-1][l-1];
d[i-1]=h;
}
d[1-1]=0.0;
e[1-1]=0.0;
/* Contents of this loop can be omitted if eigenvectors not
wanted except for statement d[i-1]=a[i-1][i-1]; */
for (i=1;i<=n;i++) {
l=i-1;
if (d[i-1] != 0) {
for (j=1;j<=l;j++) {
g=0.0;
for (k=1;k<=l;k++)
g += a[i-1][k-1]*a[k-1][j-1];
for (k=1;k<=l;k++)
a[k-1][j-1] -= g*a[k-1][i-1];
}
}
d[i-1]=a[i-1][i-1];
a[i-1][i-1]=1.0;
for (j=1;j<=l;j++) a[j-1][i-1]=a[i-1][j-1]=0.0;
}
return a;
}

public static double pythag(double a, double b)


{
//this method is used by QL method
double absa,absb;
absa=[Link](a);
absb=[Link](b);
if (absa absb) return absa*[Link](1.0+(absb/absa)*(absb/absa));
else return (absb==0.0 ? 0.0 : absb*[Link](1.0+(absa/absb)*(absa/absb)));
}

public static double[][] QL(double d[], double e[], double a[][])


{
// QL algorithm : eigenvalues of a symmetric matrix reduced to tridiagonal
// form by using method tridiagonal

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int n=[Link];
int m,l,iter,i,j,k;
double s,r,p,g,f,dd,c,b;
for (i=2;i<=n;i++) e[i-2]=e[i-1];
e[n-1]=0.0;
double z[][]=new double[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
z[i][j]=a[i][j];
for (l=1;l<=n;l++) {
iter=0;
do {
for (m=l;m<=n-1;m++) {
dd=[Link](d[m-1])+[Link](d[m]);
if ((double)([Link](e[m-1])+dd) == dd) break;
}
if (m != l) {
if (iter++ == 30) [Link]("Too many iterations in QL");
g=(d[l]-d[l-1])/(2.0*e[l-1]);
r=[Link](g,1.0);
g=d[m-1]-d[l-1]+e[l-1]/(g+[Link](r,g));
s=c=1.0;
p=0.0;
for (i=m-1;i=l;i--) {
f=s*e[i-1];
b=c*e[i-1];
e[i]=(r=[Link](f,g));
if (r == 0.0) {
d[i] -= p;
e[m-1]=0.0;
break;
}
s=f/r;
c=g/r;
g=d[i ]-p;
r=(d[i-1]-g)*s+2.0*c*b;
d[i ]=g+(p=s*r);
g=c*r-b;
for (k=1;k<=n;k++) {
f=z[k-1][i ];
z[k-1][i ]=s*z[k-1][i-1]+c*f;
z[k-1][i-1]=c*z[k-1][i-1]-s*f;
}
}
if (r == 0.0 && i = l) continue;
d[l-1] -= p;
e[l-1]=g;
e[m-1]=0.0;
}
} while (m != l);
}
return z;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[][] eigenQL(double a[][])
{
// QL algoritm to solve eigen value problems
// symmetric matrices only (real eigen values)
// first column of the matrix returns eigen values
// second..n+1 column returns eigen vectors.
// Note : If matrix is not symmetric DO NOT use
// this method use eigenValue method (a QR algorithm)
int i,j;
int n=[Link];
double sum[]=new double[n];;
double d[]=new double[n];
double b[][]=new double[n][n];
double e[]=new double[n];
double z[][]=new double[n+1][n];
b=tridiagonal(a,d,e);
b=QL(d,e,b);
for(j=0;j<n;j++)
{
z[0][j]=d[j];
for(i=0;i<n;i++)
{
z[i+1][j]=b[i][j]/b[0][j];
if(z[i+1][j]<1e-13) z[i+1][i]=0;
}
}
return z;
}

//end of eigen value programs

//end of class Matrix


}

12.3 MATRIX SINIFI ÖRNEK PROGRAMLARI

Ýnverse matris : Inverse matrisi hesaplar. Buradaki temel hesaplama yolu tam pivotlu gauss
eliminasyon metodudur. Bu metod göreceli olarak küçük matrisler içindir. dev boyutlardaki
matrisler için tavsiye edilmez. Çok büyük boyutlarda iterativ metodlar daha az sayýda iºlemle
çözüme gidebilir. Bu metod hassas sonuç verebilme özelliðinden dolayý seçilmiºtir. ayný
zamanda LU (alt ve üst üçgen matris) parçalama metoduyla da çözebiliriz. Bu metodun
avantajý lineer bir denklem sistemi çözerken eðer ikinci taraf sürekli deðiºiyorsa ortaya çýkar.
tek bir çözüm için ilave bir avantaj getirmez.

Problem 12.3 [Link] , inverse matris problemi örneði

import [Link].*;
import Numeric;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class Matrix3
{
public static void main(String args[]) throws IOException
{
/*
double a[][];
a=new double[5][5];
a[0][0]=1;
a[0][1]=2;
a[0][2]=0;
a[0][3]=0;
a[0][4]=0;
a[1][0]=-2;
a[1][1]=3;
a[1][2]=0;
a[1][3]=0;
a[1][4]=0;
a[2][0]=3;
a[2][1]=4;
a[2][2]=50;
a[2][3]=0;
a[2][4]=0;
a[3][0]=-4;
a[3][1]=5;
a[3][2]=-60;
a[3][3]=7;
a[3][4]=0;
a[4][0]=-5;
a[4][1]=6;
a[4][2]=-70;
a[4][3]=8;
a[4][4]=-9;
*/
double c[][]=new double[5][5];
double a[][]={{1,2,0,0,0},{-2,3,0,0,0},{3,4,50,0,0},{-4,5,-60,7,0},
{-5,6,-70,8,-9}};
double b[]=new double[5];
int d[]=new int[1];
b[0]=1;
b[1]=0;
b[2]=0;
b[3]=0;
b[4]=0;
[Link]("Original Matrix : ");
[Link]([Link](a));
[Link]("Inverse Matrix : (Method inv) ");
[Link]([Link]([Link](a)));
[Link]("Matrix * Inverse Matrix : (Method multiply) ");
[Link]([Link]([Link](a,[Link](a))));
[Link]("Solution of system of equation : ");
[Link]("with second side : ");
[Link]([Link](b));
[Link]([Link]([Link](b,a)));
int indx[]=new int[5];
d[0]=0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
c=[Link](a,indx,d);
[Link]("LU decomposed matrix : (Method LU) ");
[Link]([Link](c));
[Link]("Matrix inversion by LU decomposition : (Method LUinv)");
[Link]([Link]([Link](a)));
[Link]("Matrix * Inverse Matrix (LU Decomposition) :");
[Link]([Link]([Link](a,[Link](a))));
}
}

inverse matrix metotlarý sonucu :

Original Matrix :
1.0 2.0 0.0 0.0 0.0
-2.0 3.0 0.0 0.0 0.0
3.0 4.0 50.0 0.0 0.0
-4.0 5.0 -60.0 7.0 0.0
-5.0 6.0 -70.0 8.0 -9.0

Inverse Matrix : (Method inv)

0.4285714285714286 -0.2857142857142857 0.0 -1.1895246692412392E-17


3.96508223080413E-18
0.2857142857142857 0.14285714285714285 0.0 5.947623346206196E-18-
1.9825411154020644E-18
-0.048571428571428564 0.005714285714285717 0.019999999999999997-
3.8659551750340293E-19 1.898283117997477E-18
-0.37551020408163255-0.21632653061224483 0.1714285714285714
0.14285714285714282 2.2431036619977644E-17
-0.003628117913832162 0.01723356009070296-0.0031746031746031824
0.12698412698412698-0.11111111111111112

Matrix * Inverse Matrix : (Method multiply)

1.0 0.0 0.0 0.0 1.5407439555097887E-33


-1.1102230246251565E-16 1.0 0.0 4.163336342344337E-17-1.3877787807814454E-17
4.440892098500626E-16 1.6653345369377348E-16 0.9999999999999999-
3.122502256758254E-17 9.887923813067798E-17
0.0 2.220446049250313E-16 0.0 0.9999999999999999 1.7347234759768022E-17
-2.8449465006019636E-16 1.942890293094024E-16 1.734723475976807E-16 0.0 1.0

Solution of system of equation :

with second side :


1.0
0.0
0.0

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
0.0
0.0
0.4285714285714286
0.2857142857142857
-0.048571428571428564
-0.37551020408163255
-0.003628117913832162

LU decomposed matrix : (Method LU)

-2.0 3.0 0.0 0.0 0.0


-0.5 3.5 0.0 0.0 0.0
2.5 -0.42857142857142855-70.0 8.0 -9.0
-1.5 2.4285714285714284-0.7142857142857143 5.714285714285714-
6.428571428571429
2.0 -0.2857142857142857 0.8571428571428571 0.025000000000000064 7.875

Matrix inversion by LU decomposition : (Method LUinv)

0.42857142857142855-0.2857142857142857 -0.0 -0.0 -0.0


0.2857142857142857 0.14285714285714285 0.0 0.0 0.0
-0.04857142857142856 0.005714285714285712 0.02 -0.0 -0.0
-0.37551020408163255-0.21632653061224494 0.17142857142857143
0.14285714285714285 0.0
-0.0036281179138321806 0.017233560090702916-0.003174603174603183
0.12698412698412698-0.1111111111111111

Matrix * Inverse Matrix (LU Decomposition) :

1.0 0.0 0.0 0.0 0.0


0.0 1.0 0.0 0.0 0.0
4.440892098500626E-16-1.1102230246251565E-16 1.0 0.0 0.0
-4.440892098500626E-16-4.440892098500626E-16 0.0 1.0 0.0
-1.1796119636642288E-16-8.326672684688674E-17-4.5102810375396984E-17 0.0 1.0

Problem 12.4 [Link], inverse matris problemi örneði

import [Link].*;

import Numeric;

class Matrix5

public static void main(String args[]) throws IOException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//calculation of an inverse matrix

double a[][];

a=new double[2][2];

a[0][0]=1;

a[0][1]=2;

a[1][0]=3;

a[1][1]=4;

[Link]("Matrix : ");

[Link]([Link](a));

[Link]("Inverse Matrix : ");

[Link]([Link]([Link](a)));

[Link]("Matrix * Inverse Matrix :");

[Link]([Link]([Link](a,[Link](a))));

[Link]("Determinant = "+[Link](a));

Matrix :

1.0 2.0

3.0 4.0

Inverse Matrix :

-2.0 1.0

1.5 -0.5

Matrix * Inverse Matrix :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1.0 0.0

0.0 1.0

Determinant = -2.0

EigenValue - Sýnýr deðer problemi : matislerle ilgili belki de en ilginç proses eigen
value - sýnýr deðer problemidir. Sýnýr deðer hesaplamalarý iteratif bir problemdir. Simetrik
matrislerde sonuçlar gerçek sayý olarak çýkar. bu tür uygulamalarda QL metodu
kullanýlabilir. Simetrik olmayan matrislerin sýnýr deðerleri kompleks deðerlerdir (kompleks
ve gerçek deðerlerin karýºýmý olabilir.) burada temel olarak QR formülü kullanýlmýºtýr.
Eigen value problemleriyle direk olarak ilgili ilginç bir problem de ninci dereceden bir
polinomun köklerinin hesaplanmasý problemidir. polinom karakteristik matris ismi verilen
özel bir matrise dönüºtürülebilir. Bu matrisin eigen-value deðerleri polinomun da
kökleridir.

Karekterisitik matrisin tanýmý

public static double[][] characteristic_matrix(double c[])


{
int n=[Link]-1; int i;
double a[][]=new double[n][n];
for(i=0;i<n;i++)
{ a[0][i]=-c[i+1]/c[0]; }
for(i=0;i<n-1;i++)
{ a[i+1][i]=1; }
return a; }

metodu ile verilmiºtir.

Problem 12.5 [Link] , eigenvalue problemi

import [Link].*;

import Numeric;

class Matrix1

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String args[]) throws IOException

//Eigen Value calculations

double c[][];

c=new double[5][5];

double a[][]={{1,2,0,0,0}, {-2,3,0,0,0}, {3,4,50,0,0},

{-4,5,-60,7,0},{-5,6,-70,8,-9}};

[Link]("Matris : ");

[Link]([Link](a));

complex c1[];

int n=[Link];

c1=new complex[n];

c1=[Link](a);

[Link]("Kompleks Eigenvalue vektörü : ");

[Link]([Link](c1));

Matris :

1.0 2.0 0.0 0.0 0.0

-2.0 3.0 0.0 0.0 0.0

3.0 4.0 50.0 0.0 0.0

-4.0 5.0 -60.0 7.0 0.0

-5.0 6.0 -70.0 8.0 -9.0

Kompleks Eigenvalue vectörü :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
50.0

(2.000000000000002 - 1.732050807568873i )

(2.000000000000002 + 1.732050807568873i )

7.000000000000001

-8.999999999999998

Problem 12.6 [Link] , ninci dereceden denklemin kökleri ve eigenvalue


problemleri

import [Link].*;

import Numeric;

class Matrix4

public static void main(String args[]) throws IOException

//Eigen Value calculations using QL method

double p[]={-1, 8, -19, 12};

double a[][]=Matrix.characteristic_matrix(p);

[Link]("Orijinal Polinom : ");

[Link]([Link](p));

[Link]("Karekteristik matris : ");

[Link]([Link](a));

[Link]("Eigen Value (sinir deger) : ");

[Link]([Link]([Link](a)));

[Link]("Eigen Value (sinir deger) balancedeigenValue metodu : ");

[Link]([Link]([Link](a)));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("Polinomun kokleri : (poly_roots) ");

[Link]([Link](Matrix.poly_roots(p)));

[Link]("Polinomun kokleri : (poly_rootsC) ");

[Link]([Link](Matrix.poly_rootsC(p)));

cözüm :

Orijinal Polinom :

-1.0 8.0 -19.0 12.0

Karekteristik matris :

8.0 -19.0 12.0

1.0 0.0 0.0

0.0 1.0 0.0

Eigen Value (sinir deger) :

3.9999999999999964 3.0000000000000067 0.9999999999999991

0.0 0.0 0.0

Eigen Value (sinir deger) balancedeigenValue metodu :

4.000000000000007 2.999999999999993 1.0000000000000004

0.0 0.0 0.0

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Polinomun kokleri : (poly_roots)

4.000000000000007 2.999999999999993 1.0000000000000004

0.0 0.0 0.0

Polinomun kokleri : (poly_rootsC)

4.000000000000007 2.999999999999993 1.0000000000000004

Determinant ,

Problem 12.5 [Link] , matris çarpým, inverse ve determinant iºlemleri

import [Link].*;
import Numeric;

class Matrix5
{
public static void main(String args[]) throws IOException
{
//calculation of an inverse matrix
double a[][];
a=new double[2][2];
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
[Link]("Matrix : ");
[Link]([Link](a));
[Link]("Inverse Matrix : ");
[Link]([Link]([Link](a)));
[Link]("Matrix * Inverse Matrix :");
[Link]([Link]([Link](a,[Link](a))));
[Link]("Determinant = "+[Link](a));
}
}

cözümü :

Matrix :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1.0 2.0
3.0 4.0

Inverse Matrix :

-2.0 1.0
1.5 -0.5

Matrix * Inverse Matrix :

1.0 0.0
0.0 1.0

Determinant = -2.0

Eigenvalue, EigenVektör : Burada verilen matris simetrik bir matristir. sýnýr deðer vektörü
QL metodu kullanýlarak hesaplanmýºtýr. Simetrik matris olduðundan sýnýr deðerler gerçek
deðerler olarak elde edilmiºtir.

Problem 12.5 [Link] , eigenvalue (sýnýr-deðer) problemi

import [Link].*;
import Numeric;

class Matrix6
{
public static void main(String args[]) throws IOException
{
//Eigen Value calculations using QL method
double a[][]={{3,-1,0},{-1,2,-1},{-0,-1,3}};
[Link]("Original Matrix : ");
[Link]([Link](a));
[Link]("eigen values and Eigen Vectors : ");
[Link]([Link]([Link](a)));
}
}

çözümü :

Original Matrix :

3.0 -1.0 0.0


-1.0 2.0 -1.0
0.0 -1.0 3.0

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
eigen values and Eigen Vectors :

4.0 2.9999999999999996 1.0000000000000004


1.0 1.0 1.0
-1.0000000000000004 0.0 2.0000000000000004
1.0000000000000007-0.9999999999999997 1.0000000000000004

12.3 NUMERIC SINIFI (SAYISAL ANALIZ PAKETÝ)

Numeric sýnýfý genel bir sayýsal analiz paketi olarak düºünülmüºtür. Bu pakette benim kiºisel
ihtiyaçlarým için yazdýðým yada baºka dillerde daha önceden yazýlmýº olan kodlardan adepte
ettiðim bazý programlar verilmiºtir. Bir paketin genel olarak herhangi bir fonksiyonla
kullanýlabilmesi için herhangi bir fonksiyonla birlikte kullanýlmasý gerekir. Bu yüzden
programlarda fonksiyonlar tanýmlanmýº abstract sýnýflar içinde yer almýºtýr. Gerçek
fonksiyonlar yazýlýrken abstract sýnýflardan türetilmeleri gerekmektedir. Numeric paketindeki
ve abstract sýnýflar ve metodlar ºu ºekilde tanýmlanmýºtýr :

Numerik sýnýfý ve fonksiyon girdi absract sýnýflarý ve metotlarý :

abstract class f_x

tek deðiºkenli tek fonksiyonlarý aktarmak için kullanýlan abstract sýnýftýr.


Bu sýnýfla kullanýlabilecek fonksiyona örnek olarak f=x*x fonksiyonu verilebilir.
Buradaki abstract fonksiyonun tanýmý :

abstract double func(double x);


ºeklindedir. Örnek verecek olursak :

class f1 extends f_x


{ double func(double x) { return x*x; } }

Bu sýnýf dinamik olarak tanýmlandýðýndan kullanýlacaðýnda tanýmlanmasý gerekir.

double y=[Link](new f1(),x);

veya

f1 xkare=new f1();

double y=[Link](xkare,x);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ºeklinde çaðýrýlýr.

abstract class f_xi


birden fazla fonksiyon birden fazla deðiºken ile kullanýlacaksa f_xi abstract sýnýfý kullanýlýr. Bu
sýnýfta tanýmlanan func metodu denklem_referansý indisinin deðerine göre tek bir fonksiyon
girdisi verir.

örnek

f[0] = x[0]+sin(x[1]);
f[1] = x[0]*x[0]-x[1] ;

func(x,1) f[1]deðerini verir


func(x,0) f[0]deðerini verir

abstract metodun tanýmý :

abstract double func(double x[],int equation_ref);


ºeklindedir.

Örnek problemin java kodu eºdeðeri :

class f2 extends f_xi

{ double func(double x[],int x_ref) {

double a=0;

switch(x_ref) { {case 0: a = x[0]+sin(x[1]); break;}

{case 1: a = x[0]*x[0]-x[1]; break;}}

return a; } }

ºeklinde verilebilir. Bu funksiyonun asýl programda çaðýrýlmasý :

double x[]={1,2};

double y=[Link](new f2(),x,0);

veya

double x[]={1,2};

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
f2 xkare=new f2();

double y=[Link](xkare,x,0);

ºeklinde gerçekleºtirilir.

abstract class fi_xi


birden fazla fonksiyon birden fazla deðiºken ile kullanýlacaksa fi_xi abstract sýnýfý kullanýlýr.
Bu sýnýfta tanýmlanan func metodu tüm fonksiyon deðerlerini vektör olarak iletir.

örnek

f[0]=x[0]+sin(x[1]);
f[1]=x[0]*x[0]-x[1];

func(x) f[0] ve f[1] deðerlerini verir.


abstract double[] func(double x[]);

Örnek problemin java kodu eºdeðeri :

class f3 extends fi_xi

{ double[] func(double x[])

{ double a[]=new double[2];

a[0] = x[0]+sin(x[1]);

a[1] = x[0]*x[0]-x[1];

return a; }

ºeklinde verilebilir. Bu funksiyonun asýl programda çaðýrýlmasý :

double x[]={1,2};

double y[]=[Link](new f3(),x);

veya

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double x[]={1,2};

f3 fx=new f3();

double y[]=[Link](fx,x);

ºeklinde gerçekleºtirilir.

abstract class fij_xi


{
iki boyutlu fonksiyon matrisi ve bir boyutlu deðiºken vectörü verilmiºse fij_xi sýnýfýný
kullanabiliriz. Bu tür fonksiyonlar özellikle iki boyutlu fonksiyon setinin türev fonksiyonlarýný
hesaplarken oluºabilir. Çýktý matris olarak tüm fonksiyonlarý verir.

örnek :

f[0][0]=x[0]+[Link](x[1]) f[0][1]=x[0]-x[1]
f[1][0]=x[0]*x[0]-x[1] f[1][1]=[Link](x[0]+x[1]*x[1]

f[0][0], f[0][1]
f[1][0], f[1][1]

deðerlerin iki boyutlu matrix olarak verir.

abstract double[][] func(double x[]);

örneðin java kodu eºdeðeri :

class f4 extends fij_xi

double[][] func(double x[])

double b[][];

f=new double[2][2];

f[0][0]= x[0]+[Link](x[1]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
f[0][1]= x[0]-x[1];

f[1][0]= x[0]*x[0]-x[1];

f[1][1]= [Link](x[0]+x[1]*x[1];

return f;

metod ve sýnýfýn java programýnda kullanýlýºý :

double x[]={1,2};

double y[][]=[Link](new f4(),x);

veya

double x[]={1,2};

f4 fx=new f4();

double y[][]=[Link](fx,x);

public class Numeric

Numeric sýnýfýndaki metodlar genelde statik metodlardýr. Bu yüzden baðýmsýz olarak


kullanýlabilirler. ªimdi bu metodlarý daha detaylý inceleyelim :

Türev : bu metotlar gurubu yukarýda tanýmlanan double sayý, vektor ve matris olarak verilen
bir fonksiyonun türevlerini alýr.

public static double derivative(f_x f_deriv,double x)


df/dx

tek fonksiyon, tek deðiºken türevi, örnek fonksiyon f=x*x


fonksiyon abstract sýnýfý : f_x

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
türevin alýnacaðý nokta : double x

public static double derivative(f_xi f_deriv,int equation_ref,


double x[],int x_ref)

fi/xj

birden fazla fonksiyon birden fazla deðiºken türevi


denklem equation_ref indisinin ve x_ref x indisinindeðerine göre sadece tanýmlanan
fonksiyonun tanýmlanan

x_ref indisine göre olan türevini verir

örnek fonksiyon

f[0] = x[0]+sin(x[1]);
f[1] = x[0]*x[0]-x[1] ;
fonksiyon abstract sýnýfý : f_xi

yukarýdaki örnek için türevin alýnacaðý nokta : double x[] ile belirlenmiºtir

public static double derivative(fi_xi f_deriv,


int equation_ref,double x[],int x_ref)

public static double derivative(fi_xi f_deriv,


int equation_ref,double x[],int x_ref)

fi/xj

birden fazla fonksiyon birden fazla deðiºken türevi


denklem equation_ref indisinin ve x_ref x indisinindeðerine göre sadece tanýmlanan
fonksiyonun tanýmlanan

x_ref indisine göre olan türevini verir

örnek fonksiyon

f[0] = x[0]+sin(x[1]);
f[1] = x[0]*x[0]-x[1] ;
fonksiyon abstract sýnýfý : f_xi

yukarýdaki örnek için türevin alýnacaðý nokta : double x[] ile belirlenmiºtir

not1 : bir üsteki türev formülüyle bu türev formülünün temel farký, burada tanýmlanan
fonksiyonun tüm vektörü çýktý olarak vermesidir. sonuçlar her ikisinde de aynýdýr.

not2: denklemlerin hassasiyeti metotlarýn içerisinde verilen h0 ve n deðiºkenlerinin


deðiºtirilmesiyle arttýrýlabilir. ªu andaki deðerleri optimize edilmiºtir ve denenen tüm

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
fonksiyonlar için hassas deðerler vermiºtir. Nümerik türevlerle çözülmesi oldukça zor
olan boyutlu newton-raphson tekniðinde bile baºarýlý sonuçlar vermiºtir. Daha küçük
deðerler kullanýrken önce türevini bildiðiniz fonksiyonlarla sonuçlarý kontrol etmeniz
tavsiye edilir.

Ýntegral: Sayýsal olarak integral almak için çok çeºitli integrasyon metotlarý bulunmaktadýr.
Burada verilen metodlarda ana kriteria sonuçlarýn hassaslýðýdýr. Denklemler nümerik olarak
doðru sonuç çýkarmasý oldukça zor olan siyah cisim radyasyon fonksiyonu ve istatistik
fonksiyonlarda bile tam hassaslýk vermiºtir. integral 30 noktalý Gauss - Legendre integral
formülü kullanmaktadýr. trap, trapezoidal integral formülü romberg integrasyonunun temelini
teºkil etmek için hazýrlanmýºtýr, tekbaºýna da kullanýlabilir. Çok hassasiyet gereken
uygulamalarýnýz için kullanmanýzý tavsiye etmiyoruz. Romberg integrasyonu iterativ bir
integrasyon tekniðidir. Trapezoidal integrasyonla hesaplanan kök deðerlerini alarak
iterasyonla hata miktarýný azaltýr.

public static double integral (f_x f_xnt,double a,double b)

f(x) fonksiyonunun double a ve double b sýnýrlarý arasýnda integrali, Gauss-Legendre


metodu

örnek fonksiyon f=x*x


fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=[Link](new fx(),a,b);

public static void trap (f_x ff,double a,double h, int j,int m,double R[][])

f(x) fonksiyonunun a ve b sýnýrlarý arasýnda integrali, trapezoidal metodu

örnek fonksiyon f=x*x


fonksiyon abstract sýnýfý : f_x
örnek çaðýrma : double y=[Link](new fx(),a,h,j,m,R);

public static double integral_romberg (f_x ff,double a,double b)

f(x) fonksiyonunun a ve b sýnýrlarý arasýnda integrali, Romberg integrasyon metodu

örnek fonksiyon f=x*x


fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=Numeric.integral_romberg(new fx(),a,b);

Non-linear denklem kökleri : non linear denklem veya denklem sistemlerinin çözümü
nümerik analizde en çok karºýmýza çýkan problemlerden biridir. Genelde tüm metodlar iteratif
yöntemler kullanýrlar. Bu metodlar içinde en verimli olarak hesap yapan metodun newton
metodu olduðu söylenebilir, fakat newton metodu fonksiyonun türevinin de hesaplanmasýný

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
gerekli kýlar. buradaki metodlarýn bir kýsmýnda türev girdi olarak alýnýrken, bir kýsmýnda da
yine nümerik metodlarla hesaplanmýºtýr. denklemin ikinci türevini de göz önüne alan
newton_2nd_derivative gibi metodlar da verilmiºtir. ayrýca secant, bisection gibi türev hesabý
gerektirmeyen metodlar da mevcuttur. Bisection metodu temelde bir arama metodudur ve
verimi en düºük metoddur, fakat verilen bölgeyi tam olarak taradýðý ve bir kök varsa
muhakkak bulabildiði için verimsiz bir metod için oldukça sýk tercih gören bir yöntemdir.

public static double newton (double x,f_x y,f_x dy)

y(x) fonksiyonunun kökleri, dy(x)/dx fonksiyonu da verilmektedir.

örnek fonksiyon y=x*x-2

dy=2*x
fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=[Link](x,new fx(),new dfx());

public static double newton(double x,f_x y)


y(x) fonksiyonunun kökleri, dy(x)/dx fonksiyonu nümerik olarak hesaplanmaktadýr

örnek fonksiyon y=x*x-2

fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=[Link](x,new fx());

public static double newton_2nd_derivative(double x,f_x y,f_x dy)


y(x) fonksiyonunun kökleri, 2inci türev formülü, dy(x)/dx fonksiyonu da verilmektedir.

örnek fonksiyon y=x*x-2

dy=2*x
fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=Numeric.newton_2nd _derivative (x,new fx(),new dfx(),new dfx()


);

public static double newton_2nd_derivative(double x,f_x y)


y(x) fonksiyonunun kökleri, 2nci türev formülü, dy(x)/dx fonksiyonu nümerik olarak
hesaplanmaktadýr

örnek fonksiyon y=x*x-2

fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=Numeric.newton_2nd _derivative (x,new fx(),new dfx());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double secant_2nd_derivative(double x,f_x y)

y(x) fonksiyonunun kökleri, 2nci türev formülü, secand metodu kullanýlmýºtýr (türev
formülü gerekmez)

örnek fonksiyon y=x*x-2

fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=Numeric.secant_2nd _derivative (x,new fx(),new dfx());

public static double bisection (double xl,double xu,f_x y)

y(x) fonksiyonunun kökleri, 2nci türev formülü, bisection metodu kullanýlmýºtýr

(türev formülü gerekmez, temel olarak bir arama metodudur.)

örnek fonksiyon y=x*x-2

fonksiyon abstract sýnýfý : f_x

örnek çaðýrma : double y=Numeric. bisection (xl,xu,new fx());

public static double[] newton( double x[],fi_xi y,fij_xi dy)


yi(xi) fonksiyon sisteminin kökleri kökleri, dyi(x)/dxj fonksiyonu da matrix fonksiyonu
olarak verilmektedir.

örnek fonksiyon

y1=2*x1*x1*x2-3*x1

y2=2*x1+2*x2

örnek türev fonksiyonu

dy1/dx1=4*x1*x2-3 dy1/dx2=2*x1

dy2/dx1=2 dy2/dx2=2
fonksiyon abstract sýnýfý : fi_xi

türev fonksiyonu abstract sýnýfý . fi_xij

örnek çaðýrma : double y[]=Numeric. newton(x,new fixi(),new dfixij());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[] newton( double x[],fij_xi y)

yi (xi) fonksiyon sisteminin kökleri kökleri, dyi (x)/dx j fonksiyonu nümerik olarak
hesaplanmaktadýr, girdi deðildir.

örnek fonksiyon

y1=2*x1*x1*x2-3*x1

y2=2*x1+2*x2

fonksiyon abstract sýnýfý : fi_xi

örnek çaðýrma : double y[]=Numeric. newton(x,new fixi());

Least Square (en küçük kareler metodu) polinom uydurma

public static double[] poly_least_square (double xi[],double yi[],int n)


polynom least square (en küçük kareler metodu) polinom uydurma, çýktý olarak
polinomun katsayýlarýný verir

örnek çaðýrma : double y[]=Numeric. poly_least_square (xi,yi,n);

public static double f_least_square(double e[],double x)

polynom least square (en küçük kareler metodu) polinom uydurma, polinomun
katsayýlarýný kullanarak fonksiyon deðerini hesaplar
örnek çaðýrma : double y=Numeric. f_least_square (e,x);

public static double error(double x[],double y[],double e[])


polynom least square (en küçük kareler metodu) polinom uydurma, polinomun
katsayýlarýný kullanarak fonksiyon deðerini hesaplar ve toplam hata miktarýný bulur.
örnek çaðýrma : double y=Numeric. error(x,y,e);

public static double[][] orthogonal_polynomial_least_square (double xi[],double fi[],int


m)
ortagonal polynom least square (en küçük kareler metodu) polinom uydurma, çýktý
olarak polinomun

katsayýlarýný verir. hesaplama yöntemi matrislere dayanmadýðýndan matris çözümlerine


dayanan hatalarý

yapmaz. yalnýz polinom formülü daha kompleksdir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
örnek çaðýrma : double y[]=Numeric. Orthogonal_polynomial_least_square (xi,yi,n);

public static double f_orthogonal_least_square(double e[],double x)

ortogonal polynom least square (en küçük kareler metodu) polinom uydurma,
polinomun katsayýlarýný

kullanarak fonksiyon deðerini hesaplar


örnek çaðýrma : double y=Numeric. f_orthogonal_least_square (e,x);

Diferansiyel denklemler

public static double[] RK4(f_xi fp,double x0,double xn,double f0,int N)

4üncü dereceden Runge-Kutta diferansiyal denklem çözüm metodu, tek bir denklemi
çözmek için
örnek çaðýrma : double y[]=RK4 (new fxi(),x0,xn,N);

public static double[][] RK4(f_xi fp,double x0,double xn,double f0[],int N)

4üncü dereceden Runge-Kutta diferansiyal denklem sistemi çözüm metodu, bir


denklemin sistemini veya

daha yüksek dereceden diferansiyel denklemleri çözmek için kulanýlýr.


örnek çaðýrma : double y[][]=RK4 (new fxi(),x0,xn,f0,N);

public static double[][] RKF45(f_xi fp,double x0,double xn,double f0,int N) throws


IOException

4-5 incü dereceden Runge-Kutta-fehlenberg diferansiyal denklem sistemi çözüm


metodu, bir denklemin

sistemini veya daha yüksek dereceden diferansiyel denklemleri çözmek için kulanýlýr.

örnek çaðýrma : double y[][]=RKF45 (new fxi(),x0,xn,f0,N);

Problem 12.6 Numeric sýnýfý listesi : [Link]

//=============================================================
// Numerical Analysis Package in Java
// Numerical analysis calculation class Numeric

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Author : Dr. Turhan Coban
//=============================================================
import [Link].*;
import Matrix;

abstract class f_x


{
//single function single independent variable
// example f=x*x
abstract double func(double x);
}

abstract class f_xi


{
// multifunction multi independent variable
// a single value is returned indiced to equation_ref
// example f[0]=x[0]+sin(x[1])
// f[1]=x[0]*x[0]-x[1]
// func(x,1) returns the value of f[1]
// func(x,0) returns the value of f[0]

abstract double func(double x[],int equation_ref);


}

abstract class fi_xi


{
// multifunction multi independent variable
// vector of dependent variables are returned
// example f[0]=x[0]+sin(x[1])
// f[1]=x[0]*x[0]-x[1]
// func(x) returns the value of f[0] and f[1]
// as a two dimensional vector

abstract double[] func(double x[]);


}

abstract class fij_xi


{
// multifunction multi independent variable
// for n independent variable n*n matrix of
// dependent variables are returned
// example

// f[0][0]=x[0]+[Link](x[1]) f[0][1]=x[0]-x[1]
// f[1][0]=x[0]*x[0]-x[1] f[1][1]=[Link](x[0]+x[1]*x[1]
// func(x) returns the value of f[0][0], f[0][1]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// f[1][0], f[1][1]
// as a two dimensional matrix

abstract double[][] func(double x[]);


}

public class Numeric


{
//This is a library of numerical methods
//
public static double derivative(f_x f_deriv,double x)
{
// This method calculates derivatives of a simple function
// accuracy of method can be adjusted by changing
// variables h0 and n
// function input should be in the form given in abstract class
// f_x
double h0=0.0256;
// accuracy can be change by adjusting h0 and n

int i,m;
int n=7;
//derivative of a simple function
double T[][];
T=new double[n][n];
double h[];
h=new double[n];
//vector<double h(n,0);
for(i=0;i<n;i++)
{
h[i]=0;
for(int j=0;j<n;j++)
T[i][j]=0;
}
h[0]=h0;
double r=0.5;
for( i=1;i<n;i++)
{
h[i]=h0*[Link](r,i);
}

for(i=0;i<n;i++)
{
T[i][0]=( f_deriv.func(x + h[i]) - f_deriv.func( x - h[i]))/(2.0*h[i]);
}
for(m=1;m<n;m++)
{
for(i=0;i<n-m;i++)
{
T[i][m]=(h[i]*h[i]*T[i+1][m-1] - h[i+m]*h[i+m]*T[i][m-1])/
(h[i]*h[i]- h[i+m]*h[i+m]);
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double xx=T[0][n-1];
return xx;
}

public static double derivative(f_xi f_deriv,int equation_ref,


double x[],int x_ref)
{
// This method calculates derivative of a function selected from a set of
// functions. Accuracy of method can be adjusted by changing
// variables h0 and n
// function input should be in the form given in abstract class
// f_xi
// df(equation_ref)/dx(x_ref)
double h0=0.0256;
int i,m;
int n=7;
double x1[];
x1=new double[[Link]];
double x2[];
x2=new double[[Link]];
for(i=0;i<[Link];i++)
{
x1[i]=x[i];
x2[i]=x[i];
}
//derivative of a simple function
double T[][];
T=new double[n][n];
double h[];
h=new double[n];
//vector<double h(n,0);
for(i=0;i<n;i++)
{
h[i]=0;
for(int j=0;j<n;j++)
T[i][j]=0;
}
h[0]=h0;
double r=0.5;
for( i=1;i<n;i++)
{
h[i]=h0*[Link](r,i);
}

for(i=0;i<n;i++)
{
x1[x_ref]+=h[i];
x2[x_ref]-=h[i];
T[i][0]=( f_deriv.func(x1,equation_ref) -
f_deriv.func(x2,equation_ref))/(2.0*h[i]);
x1[x_ref]=x[x_ref];
x2[x_ref]=x[x_ref];
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(m=1;m<n;m++)
{
for(i=0;i<n-m;i++)
{
T[i][m]=(h[i]*h[i]*T[i+1][m-1] -
h[i+m]*h[i+m]*T[i][m-1])/(h[i]*h[i] - h[i+m]*h[i+m]);
}
}
double xx=T[0][n-1];
return xx;
}

public static double derivative(fi_xi f_deriv,


int equation_ref,double x[],int x_ref)
{
// This method calculates derivative of a function selected from a set of
// functions. Accuracy of method can be adjusted by changing
// variables h0 and n
// function input should be in the form given in abstract class
// f_xi
double h0=0.0256;
int i,m;
int n=7;
double f1[];
f1=new double[[Link]];
double f2[];
f2=new double[[Link]];
double x1[];
x1=new double[[Link]];
double x2[];
x2=new double[[Link]];
for(i=0;i<[Link];i++)
{
x1[i]=x[i];
x2[i]=x[i];
}
//derivative of a simple function
double T[][];
T=new double[n][n];
double h[];
h=new double[n];
//vector<double h(n,0);
for(i=0;i<n;i++)
{
h[i]=0;
for(int j=0;j<n;j++)
T[i][j]=0;
}
h[0]=h0;
double r=0.5;
for( i=1;i<n;i++)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
h[i]=h0*[Link](r,i);
}

for(i=0;i<n;i++)
{
x1[x_ref]+=h[i];
x2[x_ref]-=h[i];
f1=f_deriv.func(x1);
f2=f_deriv.func(x2);
T[i][0]=( f1[equation_ref] - f2[equation_ref])/(2.0*h[i]);
x1[x_ref]=x[x_ref];
x2[x_ref]=x[x_ref];
}
for(m=1;m<n;m++)
{
for(i=0;i<n-m;i++)
{
T[i][m]=(h[i]*h[i]*T[i+1][m-1] - h[i+m]*h[i+m]*T[i][m-1])/(h[i]*h[i]
- h[i+m]*h[i+m]);
}
}
double xx=T[0][n-1];
return xx;
}

public static double integral(f_x f_xnt,double a,double b)


{
//integral of a function by using gauss-legendre quadrature
//
double s[],w[];
int i;
s=new double[30];
w=new double[30];
s[ 0] = .15532579626752470000E-02;
s[ 1] = .81659383601264120000E-02;
s[ 2] = .19989067515846230000E-01;
s[ 3] = .36899976285362850000E-01;
s[ 4] = .58719732103973630000E-01;
s[ 5] = .85217118808615820000E-01;
s[ 6] = .11611128394758690000E+00;
s[ 7] = .15107475260334210000E+00;
s[ 8] = .18973690850537860000E+00;
s[ 9] = .23168792592899010000E+00;
s[10] = .27648311523095540000E+00;
s[11] = .32364763723456090000E+00;
s[12] = .37268153691605510000E+00;
s[13] = .42306504319570830000E+00;
s[14] = .47426407872234120000E+00;
s[15] = .52573592127765890000E+00;
s[16] = .57693495680429170000E+00;
s[17] = .62731846308394490000E+00;
s[18] = .67635236276543910000E+00;
s[19] = .72351688476904450000E+00;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s[20] = .76831207407100990000E+00;
s[21] = .81026309149462140000E+00;
s[22] = .84892524739665800000E+00;
s[23] = .88388871605241310000E+00;
s[24] = .91478288119138420000E+00;
s[25] = .94128026789602640000E+00;
s[26] = .96310002371463720000E+00;
s[27] = .98001093248415370000E+00;
s[28] = .99183406163987350000E+00;
s[29] = .99844674203732480000E+00;
w[ 0] = .39840962480827790000E-02;
w[ 1] = .92332341555455000000E-02;
w[ 2] = .14392353941661670000E-01;
w[ 3] = .19399596284813530000E-01;
w[ 4] = .24201336415292590000E-01;
w[ 5] = .28746578108808720000E-01;
w[ 6] = .32987114941090080000E-01;
w[ 7] = .36877987368852570000E-01;
w[ 8] = .40377947614710090000E-01;
w[ 9] = .43449893600541500000E-01;
w[10] = .46061261118893050000E-01;
w[11] = .48184368587322120000E-01;
w[12] = .49796710293397640000E-01;
w[13] = .50881194874202750000E-01;
w[14] = .51426326446779420000E-01;
w[15] = .51426326446779420000E-01;
w[16] = .50881194874202750000E-01;
w[17] = .49796710293397640000E-01;
w[18] = .48184368587322120000E-01;
w[19] = .46061261118893050000E-01;
w[20] = .43449893600541500000E-01;
w[21] = .40377947614710090000E-01;
w[22] = .36877987368852570000E-01;
w[23] = .32987114941090080000E-01;
w[24] = .28746578108808720000E-01;
w[25] = .24201336415292590000E-01;
w[26] = .19399596284813530000E-01;
w[27] = .14392353941661670000E-01;
w[28] = .92332341555455000000E-02;
w[29] = .39840962480827790000E-02;
int n=30;
double z=0;
double x,y;
for(i=0;i<n;i++)
{
x=(b+a)/2.0+(b-a)/2.0*s[i];
y=f_xnt.func(x);
z+=(b-a)/2*w[i]*y;
}
for(i=0;i<n;i++)
{
x=(b+a)/2.0+(b-a)/2.0*(-s[i]);
y=f_xnt.func(x);
z+=(b-a)/2.0*w[i]*y;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return z;
}

public static void trap(f_x ff,double a,double h, int j,int m,double R[][])
{
// successive trapezoidal integration rule
// this program will be utilised in romberg integration
double sum=0;
int p;
for(p=1;p<=m;p++)
{ sum+=[Link](a+h*(2*p-1)); }
R[j][0]=R[j-1][0]/2.0+h*sum;
}

public static double integral_romberg(f_x ff,double a,double b)


{
//romberg integration
int n=8;//increase n to increase accuracy
double R[][];
R=new double[n+1][n+1];
int m=1;
double h=b-a;
double close=1;
double tol=1e-40;
int j=0,k=0;
double ret=0;
R[0][0]=h/2.0*([Link](a)+[Link](b));
do
{
j++;
h/=2.0;
[Link](ff,a,h,j,m,R);
m*=2;
for(k=1;k<=j;k++)
{
R[j][k]=R[j][k-1]+(R[j][k-1]-R[j-1][k-1])/([Link](4,k)-1.0);
close=[Link](R[j-1][j-1]-R[j][j]);
ret=R[j][k];
}
}while(closetol && j<n);
return ret;
}

//==================================================
//Finding Non-linear Roots of Functions

public static double newton(double x,f_x y,f_x dy)


{

// Newton - Raphson method for single equation


// with single variable
// required function and its derivative

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
int nmax=500;
double tolerance=1.0e-15;
double fx,dfx;
for(int i=0;i<nmax;i++)
{
fx=[Link](x);
dfx=[Link](x);
x-=fx/dfx;
if([Link](fx)<tolerance)
{
return x;
}
}
return x;
}

public static double newton(double x,f_x y)


{
// Newton - Raphson method for single equation
// required function only derivative is calculated
// numerically by using method derivative

int nmax=500;
double tolerance=1.0e-15;
double fx,dfx;
for(int i=0;i<nmax;i++)
{
fx=[Link](x);
dfx=[Link](y,x);
x-=fx/dfx;
if([Link](fx)<tolerance)
{
return x;
}
}
return x;
}

public static double newton_2nd_derivative(double x,f_x y,f_x dy)


{
// Newton - Raphson type method for single equation
// includes 2nd order derivative calculations
//function and first order derivative is required
int nmax=500;
double dx=1e-15;
double x1m;
double tolerance=1.0e-15;
double fx,fxm,dfx,dfxm,d2fx;
for(int i=0;i<nmax;i++)
{
fx=[Link](x);
fxm=[Link](x-dx);
dfx=[Link](x);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
dfxm=[Link](x-dx);
d2fx=-6.0/dx/dx*(fx-fxm)+2.0/dx*(2.0*dfx+dfxm);
x-=(fx/dfx+.5*fx*fx/(dfx*dfx*dfx)*d2fx);
if([Link](fx)<tolerance)
{
return x;
}
}
return x;
}

public static double newton_2nd_derivative(double x,f_x y)


{
// Newton - Raphson type method for single equation
// includes 2nd order derivative calculations
// function is required, first order derivative calculated
// numerically by derivative method.
int nmax=500;
double dx=1e-3;
double x1m;
double tolerance=1.0e-15;
double fx,fxm,dfx,dfxm,d2fx;
for(int i=0;i<nmax;i++)
{
fx=[Link](x);
fxm=[Link](x-dx);
dfx=[Link](y,x);
dfxm=[Link](y,(x-dx));
d2fx=-6.0/dx/dx*(fx-fxm)+2.0/dx*(2.0*dfx+dfxm);
x-=(fx/dfx+.5*fx*fx/(dfx*dfx*dfx)*d2fx);
if([Link](fx)<tolerance)
{
return x;
}
}
return x;
}

public static double secant_2nd_derivative(double x,f_x y)


{
// Newton - Raphson type method for single equation
// includes 2nd order derivative calculations
// function should be supplied
int nmax=500;
double dx=1.0e-3;
double dx1=2.0e-3;
double x1m;
double tolerance=1.0e-15;
double fx,fxm,fxm1,dfx,dfxm,d2fx;
for(int i=0;i<nmax;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
fx=[Link](x);
fxm=[Link](x-dx);
fxm1=[Link](x-dx1);
dfx=(fx-fxm)/dx;
dfxm=(fx-fxm1)/dx1;
d2fx=-6.0/dx/dx*(fx-fxm)+2.0/dx*(2.0*dfx+dfxm);
x-=(fx/dfx+.5*fx*fx/(dfx*dfx*dfx)*d2fx);
if([Link](fx)<tolerance)
{
return x;
}
}
return x;
}

public static double bisection(double xl,double xu,f_x y)


{
//bisection method to find roots of a function [Link](x)
//function should be supplied
// defination of variables :
// xl : lower guess
// xu : upper guess
// xr : root estimate
// es : stopping criterion
// ea :approximate error
// maxit : maximum iterations
// iter : number of iteration
double test;
double xr=0;
double es,ea;
double fxl,fxr;
int maxit=500,iter=0;
es=0.000001;
ea=1.1*es;
while((eaes)&&(iter<maxit))
{
xr=(xl+xu)/2.0;
iter++;
if((xl+xu)!=0)
{ ea=[Link]((xu-xl)/(xl+xu))*100;}
fxl= [Link](xl);
fxr= [Link](xr);
test= fxl*fxr;
if(test==0.0) ea=0;
else if(test<0.0) xu=xr;
else
{
xl=xr;
}
} //end of while
return xr;
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[] newton( double x[],fi_xi y,fij_xi dy)
{
//solution of nonlinear system of equations
//by using newton raphson method.
//ti :weigth factor
//x independent value vector:
//y dependent function vector
//dy derivative of dependent function matrix
double ti=1.0;
int i;
int nmax=500;
double tolerance=1.0e-30;
int n=[Link];
double b[];
b=new double[n];
for(i=0;i<n;i++)
{
b[i]=1.0;
}
i=0;
while( i++ < nmax && [Link](b) tolerance )
{
b=[Link]([Link]([Link](x),[Link](x)),-ti);
x=[Link](x,b);
}
if(i = nmax) [Link]("warning maximum number"+
" of iterations results may not be valid");
return x;
}

public static double[] newton( double x[],fi_xi y)


{
//solution of nonlinear system of equations
//by using newton raphson method.
//this function does not require derivatives
//it is utilised method derivative to calculate derivatives
double ti=1.0;
int i,ii,jj;
int nmax=500;
double tolerance=1.0e-15;
int n=[Link];
double b[];
b=new double[n];
double dy[][];
dy=new double[n][n];
i=0;
for(i=0;i<n;i++)
{
b[i]=1.0;
}
while( i++ < nmax && [Link](b) tolerance )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
for(ii=0;ii<n;ii++)
{
for(jj=0;jj<n;jj++)
{
dy[ii][jj]=[Link](y,ii,x,jj);
}
}
b=[Link]([Link]([Link](x),dy),-ti);
x=[Link](x,b);
}
if(i = nmax) [Link]("warning maximum number of iterations"+
" results may not be valid" );
return x;
}

//========= least square curve fitting methods ==========

//-------- polynomial least square curve fitting --------

public static double[] poly_least_square


(double xi[],double yi[],int n)
//polynomial least square curve fitting
//variables xi,yi vector of data points
//degree of curve fitting
{
//xi vector of independent variable
//yi vector of dependent variable
//n : degree of curve fitting
int l=[Link];
int i,j,k;
int np1=n+1;
double A[][];
A=new double[np1][np1];
double B[];
B=new double[np1];
double X[];
X=new double[np1];

for(i=0;i<n+1;i++)
{
for(j=0;j<n+1;j++)
{
if(i==0 && j==0)
A[i][j]=l;
else
for(k=0;k<l;k++)
A[i][j] += [Link](xi[k],(i+j));
}
for(k=0;k<l;k++)
{
if(i==0)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
B[i]+= yi[k];
else
B[i] += [Link](xi[k],i)*yi[k];
}
}
X=[Link](B,A);
//X=B/A;

double max=0;
for(i=0;i<n+1;i++)
if([Link](X[i]) max) max = [Link](X[i]);
for(i=0;i<n+1;i++)
if(([Link](X[i]/max) 0) && ([Link](X[i]/max) < 1.0e-11)) X[i]=0;
return X;
}

public static double f_least_square(double e[],double x)


{
// this function calculates the value of
// least square curve fitting function
int n=[Link];
double ff;
if(n!=0.0)
{ ff=e[n-1];
for(int i=n-2;i=0;i--)
{ ff=ff*x+e[i]; }
}
else
ff=0;
return ff;
}

public static double error(double x[],double y[],double e[])


{
//calculates absolute square root error of a least square approach
double n=[Link];
int k;
double total=0;
for(k=0;k<n;k++)
{
total+=(y[k]-f_least_square(e,x[k]))*(y[k]-f_least_square(e,x[k]));
}
total=[Link](total);
return total;
}

//-------End least square methods --------------------


//-------Orthogonal polynomial least square curve fitting ---

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double[][] orthogonal_polynomial_least_square
(double xi[],double fi[],int m)
//orthogonal polynomial least square curve fitting
//this method do not require any matrix solution
//variables xi,fi vector of data points wi weight functions
//m degree of curve fitting
{
int i,j,k;
int n=[Link];
int mp2=n+2;
int mp1=n+1;
//matrix<double p(m+2,n,0);
double p[][];
p=new double[mp2][n];
//vector<double gamma(m+1,0);
double gamma[];
gamma=new double[mp1];
//vector<double beta(m+1,0);
double beta[];
beta=new double[mp1];
//vector<double omega(m+1,0);
double omega[];
omega=new double[mp1];
//vector<double alpha(m+1,0);
double alpha[];
alpha=new double[mp1];
//vector<double b(m+1,0);
double b[];
b=new double[mp1];
//vector<double wi(n,1.);
double wi[];
wi=new double[n];
//matrix<double a(3,m+1);
double a[][];
a=new double[3][mp1];
for(i=0;i<n;i++)
{
p[1][i]=1.0;
p[0][i]=0.0;
}
gamma[0]=0;
for(i=0;i<n;i++)
{
gamma[0]+=wi[i];
}
beta[0]=0.0;
for(j=0;j<m+1;j++)
{
omega[j]=0;
for(i=0;i<n;i++)
{
omega[j]+=wi[i]*fi[i]*p[j+1][i];
}
b[j]=omega[j]/gamma[j];
if( j != m)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
alpha[j+1]=0;
for(i=0;i<n;i++)
{
alpha[j+1]+=wi[i]*xi[i]*p[j+1][i]*p[j+1][i]/gamma[j];
}
for(i=0;i<n;i++)
{
p[j+2][i]=(xi[i]-alpha[j+1])*p[j+1][i]-beta[j]*p[j][i];
}
gamma[j+1]=0;
for(i=0;i<n;i++)
{
gamma[j+1]+=wi[i]*p[j+2][i]*p[j+2][i];
}
beta[j+1]=gamma[j+1]/gamma[j];
}
}//end of j
for(j=0;j<m+1;j++)
{
a[0][j]=b[j];
a[1][j]=alpha[j];
a[2][j]=beta[j];
}
return a;
}

public static double f_orhogonal_polynomial(double a[][],double x)


{

double yy=0;
int k;
int m=a[0].length-1;
int mp2=m+2;
double q[];
q=new double[mp2];
//vector<double q(m+2,0.0);
for(k=m-1;k=0;k--)
{
q[k]=a[0][k]+(x-a[1][k+1])*q[k+1]-a[2][k+1]*q[k+2];
yy=q[k];
}
return yy;
}

//minimization of a function
public static double amotry(double p[][], double y[], double psum[], int ndim,
f_xi ff, int ihi, double fac)
{
int j;
double fac1,fac2,ytry;
double ptry[]=new double[ndim];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
fac1=(1.0-fac)/ndim;
fac2=fac1-fac;
for (j=1;j<=ndim;j++) ptry[j-1]=psum[j-1]*fac1-p[ihi-1][j-1]*fac2;
ytry=[Link](ptry,0);
if (ytry < y[ihi-1]) {
y[ihi-1]=ytry;
for (j=1;j<=ndim;j++) {
psum[j-1] += ptry[j-1]-p[ihi-1][j-1];
p[ihi-1][j-1]=ptry[j-1];
}
}
return ytry;
}

public static void amoeba(double p[][], double y[], int ndim, double ftol,
f_xi ff, int nfunk)
{
int i,ihi,ilo,inhi,j,mpts=ndim+1;
int NMAX=5000;
double rtol,sum,swap,ysave,ytry;
double psum[]=new double[ndim];
nfunk=0;
for (j=1;j<=ndim;j++)
{
for (sum=0.0,i=1;i<=mpts;i++) sum += p[i-1][j-1];
psum[j-1]=sum;
}
for (;;) {
ilo=1;
//ihi = y[1]y[2] ? (inhi=2,1) : (inhi=1,2);
if(y[0]y[1])
{
inhi=2;
ihi=1;
}
else
{
inhi=1;
ihi=2;
}
for (i=1;i<=mpts;i++) {
if (y[i-1] <= y[ilo-1]) ilo=i;
if (y[i-1] y[ihi-1]) {
inhi=ihi;
ihi=i;
} else if (y[i-1] y[inhi-1] && i != ihi) inhi=i;
}
rtol=2.0*[Link](y[ihi-1]-y[ilo-1])
/([Link](y[ihi-1])+[Link](y[ilo-1]));
if (rtol < ftol) {
swap=y[0];
y[0]=y[ilo-1];
y[ilo-1]=swap;
for (i=1;i<=ndim;i++)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
swap=p[0][i-1];
p[0][i-1]=p[ilo-1][i-1];
p[ilo-1][i-1]=swap;
}
break;
}
if (nfunk = NMAX) [Link]("NMAX exceeded");
nfunk += 2;
ytry=amotry(p,y,psum,ndim,ff,ihi,-1.0);
if (ytry <= y[ilo-1])
ytry=amotry(p,y,psum,ndim,ff,ihi,2.0);
else if (ytry = y[inhi-1]) {
ysave=y[ihi-1];
ytry=amotry(p,y,psum,ndim,ff,ihi,0.5);
if (ytry = ysave) {
for (i=1;i<=mpts;i++) {
if (i != ilo) {
for (j=1;j<=ndim;j++)
psum[j-1]=0.5*(p[i-1][j-1]+p[ilo-1][j-1]);
p[i-1][j-1]=psum[j-1];
y[i]=[Link](psum,0);
}
}
nfunk += ndim;
for (j=1;j<=ndim;j++)
{
for (sum=0.0,i=1;i<=mpts;i++) sum += p[i][j];
psum[j]=sum;
}

}
} else --nfunk;
}
}

// differential equation solutions

public static double[] RK4(f_xi fp,double x0,double xn,double f0,int N)


{
//4th order Runge Kutta Method
//fp :given derivative function df/dx(f,x)
// xo : initial value of the independent variable
// xn : final value of the independent variable
// f0 : initial value of the dependent variable
// N : number of dependent variable to be calculated
// fi : dependent variable
double h=(xn-x0)/N;
double fi[]=new double[N+1];
double xi[]=new double[2];
double k[];
k=new double[4];
int i;
double x;
fi[0]=f0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(x=x0,i=0;x<xn;x+=h,i++)
{
xi[0]=x;
xi[1]=fi[i];
k[0]=h*[Link](xi,0);
xi[0]=x+h/2.0;
xi[1]=fi[i]+k[0]/2;
k[1]=h*[Link](xi,0);
xi[1]=fi[i]+k[1]/2.0;
k[2]=h*[Link](xi,0);
xi[0]=x+h;
xi[1]=fi[i]+k[2];
k[3]=h*[Link](xi,0);
fi[i+1]=fi[i]+k[0]/6.0+k[1]/3.0+k[2]/3.0+k[3]/6.0;
}
return fi;
}

public static double[][] RK4(f_xi fp,double x0,double xn,double f0[],int N)


{
//4th order Runge Kutta Method
//fp : given set of derivative functions dfj/dxi(fj,x)
// xo : initial value of the independent variable
// xn : final value of the independent variable
// f0 : initial value of the dependent variable
// N : number of dependent variable to be calculated
// fi : dependent variable
double h=(xn-x0)/N;
int M=[Link];
double fi[][];
fi=new double[M][N+1];
double xi[]=new double[M+1];
double k[]=new double[4];
int i,j;
double x;
for(j=0;j<=M;j++)
fi[j][0]=f0[j];
for(x=x0,i=0;x<xn;x+=h,i++)
{
for(j=1;j<=M;j++)
{
xi[0]=x;
xi[1]=fi[j-1][i];
k[0]=h*[Link](xi,j-1);
xi[0]=x+h/2.0;
xi[1]=fi[j-1][i]+k[0]/2;
k[1]=h*[Link](xi,j-1);
xi[1]=fi[j-1][i]+k[1]/2.0;
k[2]=h*[Link](xi,j-1);
xi[0]=x+h;
xi[1]=fi[j-1][i]+k[2];
k[3]=h*[Link](xi,j-1);
fi[j-1][i+1]=fi[j-1][i]+k[0]/6.0+k[1]/3.0+k[2]/3.0+k[3]/6.0;
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return fi;
}

public static double[][]


RKF45(f_xi fp,double x0,double xn,double f0,int N) throws IOException
{
// Runge Kutta - Fehlberg Method
// fp : derivative function df/dx(f,x) (defined as a class)
// Tol :Tolerance
//Hmax : maximum possible step size
//Hmin : minimum possible step size
//k : Runge kutta coefficients
//Err : error
//x[i] : input variable to fp = df/dx(f,x) = df/dx(x[i])
//j : actual step size
//fi[][]:solution matrix
//fj[][]:solution matrix in exact size(j) (return function)
double h=(xn-x0)/N;
double fi[][]=new double[2][1000];
double Tol=2.0e-3;
double Hmin=h/64.0;
double Hmax=h*64.0;
double k[]=new double[6];
double Err;
double s;
double xi[]=new double[2];
int j=0;
fi[0][j]=x0;
fi[1][j]=f0;
while(fi[0][j] < xn )
{
if(fi[0][j]+h xn) h=xn-fi[0][j];
xi[0]=fi[0][j];
xi[1]=fi[1][j];
k[0]=h*[Link](xi,0);
xi[0]=fi[0][j]+h/4.0;
xi[1]=fi[1][j]+k[0]/4.0;
k[1]=h*[Link](xi,0);
xi[0]=fi[0][j]+3.0/8.0*h;
xi[1]=fi[1][j]+3.0/32.0*k[0]+9.0/32.0*k[1];
k[2]=h*[Link](xi,0);
xi[0]=fi[0][j]+12.0/13.0*h;
xi[1]=fi[1][j]+1932.0/2197.0*k[0]-7200.0/2197.0*k[1]+7296.0/2197.0*k[2];
k[3]=h*[Link](xi,0);
xi[0]=fi[0][j]+h;
xi[1]=fi[1][j]+439.0/216.0*k[0]-8.0*k[1]+3680.0/513.0*k[2]-845.0/4104.0*k[3];
k[4]=h*[Link](xi,0);
xi[0]=fi[0][j]+0.5*h;
xi[1]=fi[1][j]-8.0/27.0*k[0]+2.0*k[1]
-3544/2565*k[2]+1859.0/4104.0*k[3]-11.0/40.0*k[4];
k[5]=h*[Link](xi,0);
Err=[Link](1.0/360.0*k[0]-128/4275*k[2]
-2197.0/75240*k[3]+1.0/5.0*k[4]+2.0/55.0*k[5]);
if(Err<Tol || h<2*Hmin)
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
fi[0][j+1]=fi[0][j]+h;
fi[1][j+1]=fi[1][j]+16.0/135.0*k[0]+6656.0/12825.0*k[2]+
28561.0/56430.0*k[3]-9.0/50.0*k[4]+2.0/55.0*k[5];
j++;
}
else
{
if(Err==0) s=0;
else s=0.84*([Link](Tol*h/Err,0.25));
if(s<0.75 && h(2*Hmin) ) h/=2.0;
if(s1.5 && Hmax (2*h) ) h*=2.0;
}
}
double fj[][]=new double[2][j+1];
for(int i=0;i<=j;i++)
{
fj[0][i]=fi[0][i];
fj[1][i]=fi[1][i];
}
return fj;
}

//End of Class Numeric


}

12.4 NUMERIC SINIFI (SAYISAL ANALIZ PAKETÝ) ÖRNEK PROBLEMLERÝ

Non linear denklem çözümleri :

Problem 12.7 non lineer denklem sistemi çözümü örneði , [Link]

import [Link].*;
import Numeric;
import complex;

class f1 extends fi_xi


{
double[] func(double[] x)
{
double b[];
b=new double[2];
b[0]=x[0]*x[0]-x[1]-1;
b[1]=(x[0]-2)*(x[0]-2)+(x[1]-0.5)*(x[1]-0.5)-1.0;
return b;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

class df1 extends fij_xi


{
double[][] func(double x[])
{
double b[][];
b=new double[2][2];
b[0][0]=2.0*x[0];
b[0][1]=-1.0;
b[1][0]=2.0*x[0]-4.0;
b[1][1]=2.0*x[1]-4.0;
return b;
}
}

class f2 extends f_x


{
double func(double x)
{
return 4.2+0.45*x+0.0025*[Link](x,2.8)-(60+8*x-0.16*x*x);
}
}

class df2 extends f_x


{
double func(double x)
{
return [Link](x)-0.5;
}
}

class Matrix2
{
public static void main(String args[]) throws IOException
{
//Solution of zero of functions of one or multivariable equations
f1 b1;
b1=new f1();
df1 db1;
db1=new df1();
f2 b2;
b2=new f2();
df2 db2;
db2=new df2();
double x[];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
x=new double[2];
x[0]=0;
x[1]=0.5;
double xx=13;
[Link]("Roots of equations : ");
[Link]("Newtons method y=f(x)=0 f(x) and df(x)/dx is given");
[Link]("Newton y,dy x= "+[Link](xx,b2,db2));
[Link]("");
[Link]("Newtons method y=f(x)=0 f(x) is given");
[Link]("Newton y, x= "+[Link](xx,b2));
[Link]("");
[Link]("Newtons method with 2nd derivative y=f(x)=0 ");
[Link]("f(x) and df(x)/dx is given ");
[Link]("Newton_2nd_derivative y,dy x= "+
Numeric.newton_2nd_derivative(xx,b2,db2));
[Link]("");
[Link]("Newtons method with 2nd derivative y=f(x)=0 ");
[Link]("f(x) is given only ");
[Link]("Newton_2nd_derivative y, x= "+
Numeric.newton_2nd_derivative(xx,b2));
[Link]("");
[Link]("Secant method with 2nd derivative y=f(x)=0 ");
[Link]("f(x) is given only ");
[Link]("Secant_2nd_derivative y, x= "+
Numeric.secant_2nd_derivative(xx,b2));
[Link]("");
[Link]("Newtons method for system of equations");
[Link]("yi=fi(xi)=0,i=0,n ");
[Link]("fi(xi) and dfi(xi)/dxj,i=1,n,j=1,n is given");
[Link](" "+[Link]([Link](x,b1,db1)));
[Link]("");
[Link]("Newtons method for system of equations");
[Link]("yi=fi(xi)=0,i=0,n ");
[Link]("fi(xi),i=1,n is given(derivative matrix is notrequired)");
[Link](" "+[Link]([Link](x,b1)));

}
}

Çözüm seti :

Roots of equations :
Newtons method y=f(x)=0 f(x) and df(x)/dx is given
Newton y,dy x= 1.895494267033981
Newtons method y=f(x)=0 f(x) is given
Newton y, x= 1.895494267033981
Newtons method with 2nd derivative y=f(x)=0
f(x) and df(x)/dx is given
Newton_2nd_derivative y,dy x= 1.895494267033981
Newtons method with 2nd derivative y=f(x)=0
f(x) is given only
Newton_2nd_derivative y, x= 1.895494267033981
Secant method with 2nd derivative y=f(x)=0
f(x) is given only

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Secant_2nd_derivative y, x= 1.895494267033981
Newtons method for system of equations
yi=fi(xi)=0,i=0,n
fi(xi) and dfi(xi)/dxj,i=1,n,j=1,n is given
1.0673460858066892
0.13922766688686042
Newtons method for system of equations
yi=fi(xi)=0,i=0,n
fi(xi),i=1,n is given(derivative matrix is notrequired)
1.0673460858066897
0.1392276668868614

Ýntegral -türev : Ýntegral ve türev örneði

Problem 12.8 integral ve türev örneði, [Link]

//======================================================

// Numerical Analysis package in java

// example to show utilisation of integration (integral)

// and differentiation (derivative) functions

// Dr. Turhan Coban

// =====================================================

import [Link].*;

import Numeric;

import complex;

class f1 extends f_x

double func(double x)

return x*x;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

class f2 extends f_x

double func(double x)

return x;

class fm1 extends f_xi

//multivariable function

double func(double x[],int x_ref)

double a=0;

switch(x_ref)

case 0: a=(x[0]+x[1]*x[1]+x[2]*2);break;

case 1: a=(x[0]*3+x[1]*x[1]*x[1]+x[2]);break;

case 2: a=(x[0]-5*x[1]*x[1]+x[2]*x[2]*x[2]);break;

return a;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class fm2 extends fi_xi

//multivariable function

double[] func(double x[])

double a[];

a=new double[3];

a[0]=(x[0]+x[1]*x[1]+x[2]*2);

a[1]=(x[0]*3+x[1]*x[1]*x[1]+x[2]);

a[2]=(x[0]-5*x[1]*x[1]+x[2]*x[2]*x[2]);

return a;

class integ1

public static void main(String args[]) throws IOException

f1 b1;

b1=new f1();

f2 b2;

b2=new f2();

fm1 b3;

b3=new fm1();

double x[];

fm2 b4;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
b4=new fm2();

x=new double[3];

x[0]=1;

x[1]=2;

x[2]=3;

[Link]("integral of class f1 : "+

[Link](b1,0.0,1.0));

[Link]("romberg integral of class f1 : "+

Numeric.integral_romberg(b1,0.0,1.0));

[Link]("integral of class f2 : "+

[Link](b2,0.0,1.0));

[Link]("Derivative of class f1 : "+

[Link](b1,1.0));

[Link]("Derivative of class f2 : "+

[Link](b2,1.0));

[Link]("Derivative of fm1,0 : "+

[Link](b3,1,x,0));

[Link]("Derivative of fm2,0 : "+

[Link](b4,1,x,0));

[Link]("Derivative of fm1,0 : "+

[Link](b3,1,x,0));

[Link]("Derivative of fm2,0 : "+

[Link](b4,1,x,0));

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link]

çözüm :

integral of class f1 : 0.333333333333329


romberg integral of class f1 : 0.3333333333333333
integral of class f2 : 0.49999999999999384
Derivative of class f1 : 1.9999999999994864
Derivative of class f2 : 0.9999999999998606
Derivative of fm1,0 : 3.0000000000028932
Derivative of fm2,0 : 3.0000000000028932
Derivative of fm1,0 : 3.0000000000028932
Derivative of fm2,0 : 3.0000000000028932

Least Square polinomu uydurma

Problem 12.9 least square polinom uydurma, [Link]

//===========================================
// Polynomial least square curve fitting
// Dr. Turhan Coban
//===========================================

import [Link].*;
import Numeric;
import Text;

class least
{
public static void main(String args[]) throws IOException
{
//polynomial least square curve fitting
double e[]; //coefficients of polynomial least square
e=new double[20];
double xi[];
xi=new double[500];
double yi[];
yi=new double[500];
DataInputStream cin=new DataInputStream([Link]);
[Link]("name of input file : ");
String in_name=[Link](cin);
[Link](" ");
DataInputStream fin=new DataInputStream(new FileInputStream(in_name));
PrintStream fout=new PrintStream(new FileOutputStream("[Link]"));
int i=-1;
try {
while(fin != null)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
i++;
xi[i]=[Link](fin);
yi[i]=[Link](fin);
[Link](" "+xi[i]+" "+yi[i]);
}
} catch(EOFException e_eof) {[Link]("end of file"); }
[Link]("degree of curve fitting : ");
int n=[Link](cin);
e=Numeric.poly_least_square(xi,yi,n);
[Link]([Link](e));
[Link]([Link](e));
[Link]("least square error : "+[Link](xi,yi,e));
[Link]("would you like to send curve fitted data to a data file (y/n) ");
char answer=[Link](cin);
if(answer=='y')
{
[Link]("name of output file : ");
String out_name=[Link](cin);
PrintStream fout1=new PrintStream(new FileOutputStream(out_name));
double xmin,xmax;
[Link]("minimum x : ");
xmin=[Link](cin);
[Link]("maximum x : ");
xmax=[Link](cin);
[Link]("number of data points : ");
int n_data=[Link](cin);
double x;
for(i=0;i<n_data;i++)
{
x=xmin+(xmax-xmin)/(n_data-1.0)*i;
[Link](" "+x+" "+Numeric.f_least_square(e,x));
[Link](" "+x+" "+Numeric.f_least_square(e,x));
} //end of for
}//end of if
}
}

least square polinom uydurma iºlevini biraz daha kullanýcýya cazip hale getirmek için grafik
formatýndaki [Link] programý geliºtirilmiºtir.

Problem 12.10 least square polinom uydurma, [Link] jFrame grafik programý

//======================================================

// Numerical Analysis package in java

// En küçük kareler metodu polinom uydurma

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Dr. Turhan Coban

// =====================================================

/*

* Java 2 Swing JFrame version.

*/

import [Link];

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

import [Link];

import [Link];

import [Link];

import [Link].*;

import [Link].*;

import Numeric;

import Text;

import [Link].*;

import [Link].*;

import Plot2D;

import PlotShapesSW;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class leastSW extends JFrame implements ItemListener,ActionListener

boolean inAnApplet = true;

final static String girdi = "DATA girdi sayfasý";

final static String leastcikti = "En kucuk kareler çýktý sayfasý";

final static String KONTROLPanel = "PLOT Kontrol sayfasý";

final static String PLOTPanel = "Plot sayfasý";

Plot2D jta;

StringTokenizer t;

// least deðiºken seti ********

double ee[];

double xi[];

double yi[];

BufferedReader fin;

File girdiDosyasi;

File ciktiDosyasi;

File plotDosyasi;

int nGirdi;

int nCikti;

double minX,maxX;

int PolinomDerecesi;

// ****** girdi sayfasý *******

JLabel promptGirdi;

JTextField inputGirdi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JLabel promptPD;

JTextField inputPD;

JTextArea outputGirdi;

// ****** çýktý sayfasý *******

JLabel promptCikti;

JTextField inputCikti;

JTextArea outputCikti;

JTextArea outputFormul;

JLabel promptP1_1,promptP1_2,promptP1_3,promptP1_4;

JTextField inputP1_1,inputP1_2,inputP1_3,inputP1_4;

// ****** plot kontrol sayfasý ****

JLabel promptXmin; // Label prompt in Xmin field

JLabel promptXmax; // Label prompt in Xmax field

JLabel promptYmin; // Label prompt in Ymin field

JLabel promptYmax; // Label prompt in Ymax field

JLabel promptLabel; // Label prompt Plot Label;

JLabel promptXLabel; // Label prompt Plot XLabel;

JLabel promptYLabel; // Label prompt Plot YLabel;

JLabel promptXntic; // Label prompt in Xmin field

JLabel promptYntic; // Label prompt in Xmax field

JLabel promptXgridon; // Label prompt in Ymin field

JLabel promptYgridon; // Label prompt in Ymax field

JTextField inputXmin; // input field Xmin

JTextField inputXmax; // input field Xmax

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JTextField inputYmin; // input field Ymin

JTextField inputYmax; // input field Ymax

JTextField inputLabel; // input field Label

JTextField inputXLabel; // input field XLabel

JTextField inputYLabel; // input field YLabel

JTextField inputXntic; // input field xntic

JTextField inputYntic; // input field yntic

JCheckBox inputXgridon; // input field xgridon

JCheckBox inputYgridon; // input field ygridon

JButton printButton;

//===========================================================

public leastSW(String s) throws IOException

super(s);

Border b=[Link]();

girdiDosyasi=new File("[Link]");

girdiDosyasi=new File([Link]());

ciktiDosyasi=new File("[Link]");

ciktiDosyasi=new File([Link]());

plotDosyasi=new File("[Link]");

plotDosyasi=new File([Link]());

oku();

nGirdi=[Link];

nCikti=nGirdi;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
minX=xi[0];

maxX=xi[nGirdi-1];

ee=new double[nGirdi];

PolinomDerecesi=2;

ee=Numeric.poly_least_square(xi,yi,PolinomDerecesi);

Container contentPane = getContentPane();

JTabbedPane tabbedPane = new JTabbedPane();

JPanel pane1 = new JPanel();

JPanel pane2 = new JPanel();

[Link](new BorderLayout());

JPanel pane3=new JPanel();

JPanel pane4=new JPanel();

JPanel mpane=new JPanel();

[Link](new GridLayout(1,8));

JPanel xpane=new JPanel();

[Link](new GridLayout(1,8));

JPanel lpane=new JPanel();

[Link](new GridLayout(3,2));

JPanel PanelCikti1=new JPanel();

[Link](new GridLayout(4,2));

JPanel PanelCikti2=new JPanel();

[Link](new BorderLayout());

//JScrollPane.VERTICAL_SCROLLBAR_ALWAYS;

JPanel PanelGirdi1=new JPanel();

[Link](new GridLayout(2,2));

//***************

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
promptGirdi=new JLabel("Girdi dosya ismi");

inputGirdi=new JTextField("[Link]");

promptPD=new JLabel("polinom derecesi");

inputPD=new JTextField(""+PolinomDerecesi);

outputGirdi=new JTextArea(yazxiyi(),20,40);

[Link](true);

[Link](b);

promptCikti=new JLabel("Cikti dosya ismi");

inputCikti=new JTextField("[Link]");

promptP1_2=new JLabel("veri sayisi");

promptP1_3=new JLabel("Minimum x : ");

promptP1_4=new JLabel("Maximum x : ");

inputP1_2=new JTextField(""+nCikti);

inputP1_3=new JTextField(""+minX);

inputP1_4=new JTextField(""+maxX);

outputCikti=new JTextArea(yazCikti(),20,40);

[Link](b);

outputFormul=new JTextArea(yaze(),10,40);

[Link](true);

[Link](true);

[Link](b);

[Link](promptCikti);

[Link](inputCikti);

[Link](promptP1_2);

[Link](inputP1_2);

[Link](promptP1_3);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](inputP1_3);

[Link](promptP1_4);

[Link](inputP1_4);

[Link](PanelCikti1,[Link]);

[Link](new JScrollPane(outputFormul),[Link]);

[Link](new JScrollPane(outputCikti),[Link]);

[Link](promptGirdi);

[Link](inputGirdi);

[Link](promptPD);

[Link](inputPD);

[Link](PanelGirdi1);

[Link](new JScrollPane(outputGirdi));

[Link](PanelCikti2);

//***************

promptXmin = new JLabel("Xmin ");

inputXmin = new JTextField(5);

promptXmax = new JLabel("Xmax ");

inputXmax = new JTextField(5);

promptYmin = new JLabel("Ymin ");

inputYmin = new JTextField(5);

promptYmax = new JLabel("Ymax ");

inputYmax = new JTextField(5);

//*******

promptLabel = new JLabel("Plot baºlýðý : ");

promptXLabel = new JLabel("x ekseni baºlýðý : ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
promptYLabel = new JLabel("y ekseni baºlýðý : ");

inputLabel = new JTextField(30);

inputXLabel = new JTextField(30);

inputYLabel = new JTextField(30);

//*******

promptXntic=new JLabel("X tic no");

inputXntic=new JTextField(5);

promptYntic=new JLabel("Y tic no");

inputYntic=new JTextField(5);

promptXgridon=new JLabel("X grid");

inputXgridon=new JCheckBox(" ");

promptYgridon=new JLabel("Y grid");

inputYgridon=new JCheckBox(" ");

//*******

[Link](promptXmin);

[Link](inputXmin);

[Link](promptXmax);

[Link](inputXmax);

[Link](promptYmin);

[Link](inputYmin);

[Link](promptYmax);

[Link](inputYmax);

[Link](mpane,[Link]);

[Link](promptXntic);

[Link](inputXntic);

[Link](promptYntic);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](inputYntic);

[Link](promptXgridon);

[Link](inputXgridon);

[Link](promptYgridon);

[Link](inputYgridon);

[Link](xpane,[Link]);

//********

[Link](promptLabel);

[Link](inputLabel);

[Link](promptXLabel);

[Link](inputXLabel);

[Link](promptYLabel);

[Link](inputYLabel);

[Link](lpane,[Link]);

//*********

jta=new Plot2D();

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]);

[Link]([Link]);

[Link]([Link]);

printButton=new JButton("Yazdýr");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](jta);

[Link](printButton,[Link]);

[Link](girdi, pane3);

[Link](leastcikti, pane4);

[Link](PLOTPanel, pane2);

[Link](KONTROLPanel, pane1);

[Link]( tabbedPane, [Link]);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

//en küçük kareler metodu action listener baðlantýsý

inputP1_2.addActionListener(this); // nCikti

inputP1_3.addActionListener(this); // minX

inputP1_4.addActionListener(this); // maxX

[Link](this); // Girdi dosyasi

[Link](this); // Cikti dosyasi

[Link](this); // PolinomDerecesi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
leastCiktisiniPlotGirdisiOlarakYazdir();

//===========================================================

public void itemStateChanged(ItemEvent e)

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

[Link]([Link]([Link]));

Object source=[Link]();

if(source==inputXgridon)

if ([Link]() == [Link])

[Link]=0;

else

[Link]=1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

else if(source==inputYgridon)

if ([Link]() == [Link])

[Link]=0;

else

[Link]=1;

[Link]([Link]);

[Link]([Link]);

[Link]([Link]);

[Link]();

//===========================================================

public void leastCiktisiniPlotGirdisiOlarakYazdir()

try

BufferedWriter fplot=new BufferedWriter(new FileWriter(plotDosyasi));

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]([Link]());

[Link]([Link]());

[Link]([Link]()+" 20 0 0 0 ");

[Link]([Link]()+" 3 0 0 255 ");

[Link]();

catch(IOException e1)

[Link]("girdi cikti hatasi : [Link]");

catch(AccessControlException ace)

[Link]("least ciktisini plot girdisi olarak yazdir access kontrol hatasý : "+
plotDosyasi);

public void sayfalariyenile()

//en küçük kareler metoduna göre deðiºik

// sayfalardaki de§erleri yeniler

girdiDosyasi=new File([Link]());

Integer d1=new Integer([Link]());

PolinomDerecesi=[Link]();

ciktiDosyasi=new File([Link]());

Integer d2=new Integer(inputP1_2.getText());

nCikti=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double d3=new Double(inputP1_3.getText());

minX=[Link]();

Double d4=new Double(inputP1_4.getText());

maxX=[Link]();

try{

oku();

catch(IOException e1)

[Link]("least girdi dosyasý hatasý : "+ girdiDosyasi);

catch(AccessControlException ace)

[Link]("least girdi access kontrol hatasý : "+ girdiDosyasi);

ee=new double[PolinomDerecesi+1];

ee=Numeric.poly_least_square(xi,yi,PolinomDerecesi);

[Link](yazxiyi());

[Link](yazCikti());

[Link](yaze());

[Link]();

leastCiktisiniPlotGirdisiOlarakYazdir();

//===========================================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void actionPerformed(ActionEvent e)

// en kucuk kareler metodu girdileri verildiginde bu yeni action

// eventi oluºturur

if( [Link]()==inputGirdi ||

[Link]()==inputPD ||

[Link]()==inputCikti ||

[Link]()==inputP1_2 ||

[Link]()==inputP1_3 ||

[Link]()==inputP1_4 )

sayfalariyenile();

//grafiði yazýcýya gönderir

//********************

if ([Link]()==printButton )

[Link]();

//grafik min max deðerlerini yeniden okur

Double valXmin=new Double([Link]());

[Link]=[Link]();

Double valXmax=new Double([Link]());

[Link]=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Double valYmin=new Double([Link]());

[Link]=[Link]();

Double valYmax=new Double([Link]());

//*****

//grafik tic sayýsýný yeniden okur

Integer valXntic=new Integer([Link]());

[Link]=[Link]();

Integer valYntic=new Integer([Link]());

[Link]=[Link]();

//*****

//grafik baºlýklarýný yeniden okur

[Link]=[Link]();

[Link]=[Link]();

[Link]=[Link]();

[Link]=[Link]();

//Plot'ý (grafik) yeniden çizer

[Link]();

//===========================================================

//girdi dosyasýndan girdi deðerlerini okur.

public void oku() throws IOException

//dosyadan bilgileri okur xi,yi boyutlu matrisine y�kler.

try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
fin=new BufferedReader(new FileReader(girdiDosyasi));

catch(FileNotFoundException e2)

[Link]([Link]());

nGirdi=0;

Vector v1,v2;

v1=new Vector(1);

v2=new Vector(1);

String X1,X2;

boolean EOF=false;

while(!EOF)

try{

X1=[Link](fin);

X2=[Link](fin);

[Link](X1);

[Link](X2);

nGirdi++;

}catch(EOFException e)

[Link]();

EOF=true;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

xi=new double[nGirdi];

yi=new double[nGirdi];

Enumeration enum1=[Link]();

Enumeration enum2=[Link]();

StringBuffer b=new StringBuffer();

//for(int i=0;i<n;i++)

int i=0;

while([Link]())

X1=(String)[Link]();

Double d1=new Double(X1);

X2=(String)[Link]();

Double d2=new Double(X2);

xi[i]=[Link]();

yi[i]=[Link]();

i++;

} //oku metodu sonu

//===========================================================

//girdi alanýna girdi de§erlerini yazar

public String yazxiyi()

String b=new String();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
for(int i=0;i<[Link];i++)

b=b+" "+xi[i]+"\t "+yi[i]+"\n";

return b;

//========================================================

// Polinom katsayýlarýný yazar

public String yaze()

String b="Polinom katsayilari : ";

b=b+"f(x) = a[0]+a[1]*x+a[2]*x^2+....a[n]*x^n \n";

for(int i=0;i<=PolinomDerecesi;i++)

b=b+"a["+i+"] = "+ee[i]+"\n";

return b;

//=========================================================

// cikti dosyasina kayit yapar ve cikti alanina sonuclar� yazar

public String yazCikti()

String b=new String();

try{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ObjectOutputStream fout=new ObjectOutputStream(new
FileOutputStream(ciktiDosyasi));

b="cikti dosyasi : \n";

double x,y;

double nn=((maxX-minX)/(nCikti-1));

for(int i=0;i<nCikti;i++)

x=minX+nn*i;

y=Numeric.f_least_square(ee,x);

b=b+" "+x+"\t "+y+"\n";

[Link](b);

try{

[Link]();

catch(IOException io)

[Link](1);

catch(IOException e1)

[Link]("input output error");

catch(AccessControlException ece)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link]("yaz Cikti dosyasi"+ciktiDosyasi+ " excess kontrol");

return b;

//===========================================================

public static void main( String argv[] ) throws IOException {

leastSW frame = new leastSW( "En küçük kareler metodu eðri uydurma" );

[Link](new BasicWindowMonitor());

[Link]( 600, 600 );

[Link](true);

[Link]

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 12.1-4 en küçük kareler metoduyla polinaom eðri uyduran [Link] sýnýfý Jframe
çýktýlarýnýn çeºitli sayfalarýnýn görünümü.

Örnek çoktýdaki girdi dosyalarý :

[Link]

baºlýk

x ekseni

y ekseni

[Link] 20 0 0 0

[Link] 3 0 0 255

[Link]

1.0 0.9999999999999432

2.0 3.9999999999997726

3.0 8.999999999999488

4.0 15.99999999999909

5.0 24.99999999999858

6.0 35.999999999997954

7.0 48.999999999997215

8.0 63.99999999999636

9.0 80.9999999999954

10.0 99.99999999999432

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

cikti dosyasi :

1.0 0.9999999999999432

2.0 3.9999999999997726

3.0 8.999999999999488

4.0 15.99999999999909

5.0 24.99999999999858

6.0 35.999999999997954

7.0 48.999999999997215

8.0 63.99999999999636

9.0 80.9999999999954

10.0 99.99999999999432

Diferansiyel Denklemler :

Problem 12.11 diferansiyel denklem testi, RK4 metodu [Link]

//======================================================
// Numerical Analysis package in java
// example to show differential equation solution
// and differentiation (derivative) functions
// Dr. Turhan Coban
// =====================================================
import [Link].*;
import Numeric;
import complex;
import Matrix;

class fm1 extends f_xi


{
//multivariable function
double func(double x[],int x_ref)
{
//x[0] is x, x[1] is y
//this is a representation of equation : dy/dx=y
//solution of this equation is e(x)
if(x_ref==0) return x[1];
else return 0;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}
}

class dif1
{
public static void main(String args[]) throws IOException
{

fm1 b3=new fm1();


double x[];
x=new double[1];
x[0]=1;
//RK4 differential equation to solve differential equation dy/dx=y
//with limits 0 to 1 exact solution is e=2.7182818
//boundary condition x=0 y=1 is given
//final value x=1 to be calculated by the method
[Link]([Link](Numeric.RK4(b3,0.0,1.0,1.0,50)));
}
}

Çözüm seti :

1.0
1.02020134
1.0408107741377959
1.0618365464618167
1.0832870675613175
1.1051709179307265
1.1274968514019572
1.1502737986460576
1.1735108707455981
1.197217362839226
1.2214027578398445
1.2460767302279048
1.271249149921327
1.2969300862235986
1.3231298118516308
1.3498588070449815
1.3771277637580916
1.4049475899372086
1.4333294138837107
1.4622845887055762
1.4918246968587778
1.5219615547804188
1.5527072176154666
1.5840739840389706
1.6160744011756962
1.648721269619143
1.682027648551951
1.7160068609697496
1.7506724990105325

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
1.7860384293916938
1.8221187989569014
1.8589280403350215
1.896480877713363
1.9347923327275491
1.9738777304703714
2.0137527056220317
2.0544332087042223
2.095935512460547
2.1382762183658373
2.1814722632669596
2.2255409261577848
2.270499835091013
2.3163669742296302
2.363160691040814
2.4108997036351645
2.4596031082541976
2.5092903869090972
2.5599814151737794
2.611696470135386
2.6644562385053905
2.7182818248945586

Problem 12.12 : çok boyutlu RKF45 diferansiyel denklem çözüm metodu örneði,
[Link]

//======================================================
// Numerical Analysis package in java
// example to show differential equation solution
// and differentiation (derivative) functions
// Dr. Turhan Coban
// =====================================================
import [Link].*;
import Numeric;
import complex;
import Matrix;

class fm1 extends f_xi


{
//multivariable function
double func(double x[],int x_ref)
{
//x[0] is x, x[1] is y
if(x_ref==0) return -2.0*x[0]-x[1];
else return 0;
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
class dif2
{
public static void main(String args[]) throws IOException
{

fm1 b3=new fm1();


double x[];
x=new double[1];
x[0]=1;
//RK5 differential equation to solve equation dy/dx=-2x-y
//initial value is given as x=0 y=-1 at x=0.4 y will be determined
[Link]
([Link](Matrix.T(Numeric.RKF45(b3,0.0,0.4,-1.0,10))));
}
}

Çözüm :

0.0 -1.0
0.0050 -0.9950377826066799
0.01 -0.9901501844020889
0.015 -0.9853368332473136
0.02 -0.9805973588593618
0.025 -0.9759313928019077
0.030000000000000002-0.9713385684760812
0.035 -0.9668185211113052
0.04 -0.9623708877561767
0.045 -0.9579953072693951
0.049999999999999996-0.9536914203107341
0.05499999999999999-0.94945886933206
0.05999999999999999-0.9452972985683943
0.06499999999999999-0.9412063540290199
0.06999999999999999-0.9371856834886335
0.075 -0.9332349364785408
0.08 -0.9293537642778962
0.085 -0.9255418199049855
0.09000000000000001-0.9217987581085532
0.09500000000000001-0.9181242353591716
0.10000000000000002-0.9145179098406548
0.10500000000000002-0.9109794414415133
0.11000000000000003-0.9075084917464531
0.11500000000000003-0.9041047240279163
0.12000000000000004-0.9007678032376644
0.12500000000000003-0.8974973959984025
0.13000000000000003-0.8942931705954467
0.13500000000000004-0.891154796968432
0.14000000000000004-0.8880819467030621
0.14500000000000005-0.8850742930228999
0.15000000000000005-0.8821315107811996
0.15500000000000005-0.8792532764527788
0.16000000000000006-0.8764392681259321

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
0.16500000000000006-0.8736891654943832
0.17000000000000007-0.8710026498492798
0.17500000000000007-0.8683794040712255
0.18000000000000008-0.8658191126223544
0.18500000000000008-0.8633214615384427
0.19000000000000009-0.8608861384210608
0.1950000000000001-0.8585128324297647
0.2000000000000001-0.856201234274326
0.2050000000000001-0.8539510362070005
0.2100000000000001-0.8517619320148359
0.2150000000000001-0.849633617012017
0.2200000000000001-0.8475657880322502
0.22500000000000012-0.8455581434211851
0.23000000000000012-0.843610383028874
0.23500000000000013-0.8417222082022695
0.24000000000000013-0.8398933217777589
0.24500000000000013-0.8381234280737365
0.2500000000000001-0.8364122328832122
0.2550000000000001-0.8347594434664576
0.2600000000000001-0.8331647685436885
0.2650000000000001-0.8316279182877833
0.27000000000000013-0.8301486043170393
0.27500000000000013-0.8287265396879636
0.28000000000000014-0.8273614388881004
0.28500000000000014-0.8260530178288946
0.29000000000000015-0.8248009938385901
0.29500000000000015-0.8236050856551641
0.30000000000000016-0.8224650134192967
0.30500000000000016-0.8213804986673754
0.31000000000000016-0.8203512643245341
0.31500000000000017-0.8193770346977273
0.3200000000000002-0.8184575354688391
0.3250000000000002-0.8175924936878259
0.3300000000000002-0.8167816377658933
0.3350000000000002-0.8160246974687078
0.3400000000000002-0.8153214039096416
0.3450000000000002-0.8146714895430517
0.3500000000000002-0.8140746881575915
0.3550000000000002-0.8135307348695573
0.3600000000000002-0.8130393661162659
0.3650000000000002-0.812600319649468
0.3700000000000002-0.8122133345287916
0.3750000000000002-0.8118781511152201
0.3800000000000002-0.8115945110646018
0.38500000000000023-0.8113621573211925
0.39000000000000024-0.8111808341112298
0.39500000000000024-0.8110502869365394
0.4 -0.8109702625681743

Problem 12.13 diferansiyel denklem çözüm örneði, RK4 metodu, [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
//======================================================
// Numerical Analysis package in java
// example to show differential equation solution
// and differentiation (derivative) functions
// Dr. Turhan Coban
// =====================================================
import [Link].*;
import Numeric;
import complex;
import Matrix;

class fm1 extends f_xi


{
//multivariable function
double func(double x[],int x_ref)
{
//x[0] is x, x[1] is y
if(x_ref==0) return -2.0*x[0]-x[1];
else return 0;
}
}

class dif3
{
public static void main(String args[]) throws IOException
{

fm1 b3=new fm1();


double x[];
x=new double[1];
x[0]=1;
//RK4 differential equation to solve equation dy/dx=-2x-y
[Link]([Link](Numeric.RK4(b3,0.0,0.4,-1.0,100)));
[Link]();
}
}

Çözüm :

-1.0
-0.9960239680320001
-0.992095744511233
-0.9882151385858677
-0.9843819601659565
-0.9805960199203918
-0.9768571292738785
-0.9731651004039156
-0.9695197462377918
-0.9659208804495921
-0.9623683174572164
-0.9588618724194105

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
-0.955401361232808
-0.9519866005289858
-0.9486174076715289
-0.945293600753109
-0.942014998592574
-0.9387814207320486
-0.9355926874340476
-0.9324486196785992
-0.9293490391603817
-0.9262937682858702
-0.9232826301704945
-0.9203154486358103
-0.9173920482066786
-0.9145122541084599
-0.9116758922642163
-0.9088827892919272
-0.9061327725017148
-0.903425669893081
-0.900761310152156
-0.898139522648956
-0.8955601374346547
-0.8930229852388627
-0.8905278974669202
-0.888074706197199
-0.8856632441784156
-0.8832933448269559
-0.8809648422242088
-0.8786775711139124
-0.8764313668995095
-0.8742260656415141
-0.872061504054888
-0.8699375195064296
-0.8678539500121697
-0.8658106342347813
-0.8638074114809979
-0.8618441216990421
-0.8599206054760645
-0.8580367040355941
-0.8561922592349969
-0.854387113562946
-0.8526211101369017
-0.8508940927006006
-0.8492059056215563
-0.8475563938885688
-0.8459454031092447
-0.8443727795075264
-0.8428383699212321
-0.8413420217996048
-0.8398835832008722
-0.8384629027898148
-0.8370798298353451
-0.8357342142080957
-0.8344259063780173
-0.8331547574119857
-0.8319206189714199

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
-0.8307233433099079
-0.8295627832708429
-0.8284387922850687
-0.8273512243685349
-0.826299934119961
-0.8252847767185101
-0.8243056079214711
-0.8233622840619519
-0.8224546620465801
-0.8215825993532133
-0.8207459540286591
-0.8199445846864039
-0.8191783505043502
-0.8184471112225643

ªu ana kadarki örneklerimizin hepsi konsol programý olarak verildi. simdi grafik (applet)
çýktýsýna da bir örnek olmak üzere ninci dereceden denklemin köklerini hesaplayan [Link]
programýný verelim.

Problem 12.14 ninici dereceden polinomun köklerini bulma, [Link] programý

import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
import Matrix;

public class kokN extends Applet implements ActionListener


{
private Label prompt1,prompt2;
private TextField input;
TextArea t;
Panel YaziPaneli;
int n;
String s;

public void init()


{
setBackground([Link]);
YaziPaneli=new Panel();
[Link](new Font("Serif",[Link],12));
[Link]( new GridLayout(3,1) );
t=new TextArea(8,47);
prompt1= new Label("a[0]+a[1]*x+...+a[n]*x^n=0");
prompt2= new Label("n inci dereceden polinomun katsayilarini giriniz : ");
input = new TextField(30);
[Link](prompt1);
[Link](prompt2);
[Link](input);
add(YaziPaneli);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
add(t);
[Link](this);
}

public void actionPerformed(ActionEvent e)


{
s=[Link]();
StringTokenizer token=new StringTokenizer(s);
[Link]("");
n=[Link]()-1;
int m=n+1;
double a[]=new double[m];
complex z[]=new complex[n];
for(int i=0;i<n;i++)
{
z[i]=new complex();
}
int j=0;
while([Link]())
{
Double ax=new Double([Link]());
a[j++]=[Link]();
}
z=Matrix.poly_rootsC(a);
int i=0;
[Link]([Link](z));
[Link]("");
}
}

Bu progamýn sonucu :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 12.5 n inci dereceden polinomun köklerini bulan kokN programý, StringTokenizer
ve Matrix sýnýf örneði

12.5 ALIªTIRMALAR

1. f(x)=x*x*x-3 denkleminin köklerini newton metodunu kullanarak çözünüz (3 ün


küp kökünü hesaplayýnýz), Bunun için bir java programý yazýp çýktýyý hesaplatýnýz.

2. f(x)=x*x*x-3 denkleminin köklerini poly_roots metodunu kullanarak çözünüz.

3. f(x)=x*x*x-3 denkleminin köklerini bisection metodunu kullanarak çözünüz (3 ün


küp kökünü hesaplayýnýz), bunun için bir java programý yazýp çýktýyý hesaplatýnýz.

4. f(x)=sin(x) denkleminin 0 ila pi arasýndaki integralini hesaplayýnýz. Bunun için bir


java programý yazýp çýktýyý hesaplatýnýz.

5. f(x)=sin(x) denkleminin pi noktasýndaki türevini alýnýz. Bunun için bir java programý
yazýp çýktýyý hesaplatýnýz.

6. f(x,y)=x*x+y*y-R*R (R=sabit) denkleminin 0 ile 1 arasýndaki türevini


hesaplayýnýz.

7. df(x)/dx=-f(x) denkleminin x=1 den 2 ye kadar çözümünü yapýnýz, f(0)=1, Bunun


için bir java programý yazýp çýktýyý hesaplatýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
BÖLÜM 13 VERÝ TABANI PROGRAMLAMASINA GÝRݪ

13.1 TEMEL KAVRAMLAR

Database programlarýna Java dili üzerinden eriºmek için java JDBC API kullanýlýr. JDBC
bize herhangi bir Data Base (veri Tabaný) yapýsýna java üzerinden ulaºmamýzý ve Veri tabaný
dili olan SQL (Structured Query Language-Yapýsal Sorgulama Dili) dilinde direk olarak
programlama yapabilmemizi saðlar. JDBC ye geçmeden önce SQL dilinin bazý temel
yapýlarýna göz atalým. Burada göreceðimiz oldukça kompleks iºlemleri yapabileceðimiz
üçüncü kuºak bir bilgisayar dilidir. Bu kitabýn konusu Veri tabanlarý olmadýðý için biz fazla
detaya girmeyeceðiz. Dileyen arkadaºlar Veri Tabaný ile ilgili kitaplarda SQL ile ilgili çok daha
detaylý bilgi bulabilirler.

Örnek olarak aºaðýdaki Veri tabaný dosyasýnýn olduðunu kabul edelim :

[Link]

ªekil 13.1 Kahve veri tabaný dosyasýnýn acsees veri tabaný programýnda görünüºü

Bu dosyayý SQL dilinde yaratmak için :

CREATE TABLE KAHVE


(KAHVE_ISMI VARCHAR(32),
NUMARA INTEGER,
FIYAT FLOAT,
SATIS INTEGER,
TOPLAM INTEGER)

komutunu kullanabiliriz. Buradaki temel komut CREATE TABLE komutudur. Veri tabaný
tablosu adý KAHVE ve Tablo sütun isimleri KAHVE_ISMI, NUMARA, FIYAT, SATIS ve
TOPLAM olarak tanýmlanmýstýr. deðisken isminden sonra SQL deðisken türleri verilmistir.
Deðiºken türlerinin isimleri deðisik SQL dillerinde deðiºebilir. yukarýdaký SQL deyimindeki

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
VARCHAR(32) javadaki double (veya float) deyiminin karºýlýðýdýr. INTEGER javadaký int
deyimine FLOAT javadaki float deyimine karºý gelir.
Bu tabloya belli deðerleri girmek için INTERT INTO deyimi kullanýlýr. Örneðin tablodaki ilk
satýr

INSERT INTO KAHVE


VALUES('kolombiya',101,7.99,120,0)

SQL deyimiyle girilebilir.

Tablodan belli deðerleri geri çekmek için ise SELECT deyimi kullanýlýr. SELECT deyiminin en
genel ºekli

SELECT [DISTINCT|ALL] {*| liste}

FROM [tablo ismi][, ikinci tablo ismi]….

[WHERE ºart]

[GROUP BY kolon listesi]

[HAVING ºart]

[ORDER BY kolon listesi] ºeklindedir. SELECT ve FROM herzaman için kullanýlýr, diðerleri
istenirse kullanýlýr. SELECT komutundan sonra çýktýda görmek istediðimiz kolon adlarý
bulunur. Tablonun tüm kolonlarýný görmek istersek * kullanabiliriz. FROM komutundan sonra
seçilen tablonun (veya tablolarýn) isimleri yer alýr. Tablo isimleri ‘,’ ile ayrýlýr. ALL veya
DISTINCT anahtarlarý eðer tekrar varsa bunlarýn verilip verilmeyeceðini bildirir. DISTINCT
secildiðinde tüm tekrarlar elimine edilir. ALL seçildiðinde tüm girdiler tekrar da olsa verilir.
WHERE deyimi javadaki if deyimi gibidir. ªart oluºturur. WHERE ile birlikte kullanýlan bazý
mantýk iºlemleri ºunlardýr :

AND : ve

OR : veya

NOT : olumsuzluk

BETWEEN : arasýnda (genellikle AND ile birlikte BETWEEN 20 AND 30 gibi kullanýlýr)

IN : içinde

LIKE : gibi,benzer(harf deðiºkenleri için eºittir yerine geçen bir yapýdýr, kullanýlýrken bazý
kýsýmlar boº býrakýlabilir LIKE ‘%ali%’ içinde ali geçen her ºeyi kapsar.)

NULL : boº

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ANY : herhangibiri

ALL : hepsi

EXIST : varsa

Rakamsal karºýlaºtýrmalarda

= : eºittir

<> : eºit deðildir

> : büyüktür

< : küçüktür

>= : büyüktür ve eºittir.

<= : küçüktür ve eºittir.

Kullanýlabilir.

ORDER BY sýraya sokar ASC kelmesiyle birlikte kullanýldýðýnda küçükten büyüðe doðru,
DESC kelimesiyle birlikte kullanýldýðýnda büyükten küçüðe doðru sýralar.

GROUP BY belli bir kolona göre veriyi tasnif edebilir. HAVING deyimi GROUP by deyimiyle
birlikte kullanýlýr be GROUP By terimi için ilave ºart oluºturur.

Select deyiminibir kaç örnekle açalým:

SELECT KAHVE_ISMI, FIYAT


FROM KAHVE
WHERE KAHVE_ISMI like "Fransiz"

deyimi

[Link]

ªekil 13.2 Query sonuçlarýnýn access veri tabanýnda görünümü

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sonucunu verir.

SELECT KAHVE_ISMI, FIYAT


FROM KAHVE
WHERE KAHVE_ISMI like "*Fransiz*"

[Link]

ªekil 13.3 Query sonuçlarýnýn access veri tabanýnda görünümü

sonucunu verir.

SELECT KAHVE_ISMI, FIYAT


FROM KAHVE
WHERE FIYAT > 8.5 AND FIYAT < 9.0

[Link]

ªekil 13.3 SELECT..WHERE querry sonuçlarýnýn acsess veri tabanýnda görünümü

Fiyatý 8.5 ila 9.0 arasýnda olan kahvelerin listesi sonucunu verecektir.

UPDATE KAHVE

SET TOPLAM=FIYAT*SATIS;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Komutu kullanarak TOPLAM kolonunun deðerlerini hesaplayabiliriz. Tablonun yeni hali :

[Link]

ªekil 13.4 UPDATE querry sonuçlarýnýn acsess veri tabaný nda görünümü

Sonucunu verir.

SQL de direk olarak hesap yapabilen fonksiyonlar da mevcuttur. Örneðin SUM(kolon ismi)
deðerleri toplar, MAX, maksimum deðeri verir, MIN, minumum deðeri verir, COUNT toplam
sütun sayýsýný sayar. Bu fonksiyonlara örnek olarak SUM fonksiyonunu kullanalým :

SELECT SUM(TOPLAM)

FROM KAHVE;

[Link]

ªekil 13.5 querry sonuçlarýnýn acsess veri tabaný nda görünümü

Veri tabanýný sýraya koymak için SELECT ..ORDER BY komutunu kullanabiliriz

ASC küçükten büyüðe DESC büyükten küçüðe sýraya koyar. Örneðin veri tabaný tablomuz
kahveyi KAHVE_ISMI’ne göre sýralamak istersek

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SELECT *

FROM KAHVE

ORDER BY KAHVE_ISMI ASC;

SQL komutunu kullanabiliriz. Sonuç :

[Link]

ªekil 13.6 SELECT..ORDERBY querry sonuçlarýnýn acsess veri tabaný nda görünümü

13.2 JAVA VE SQL BAÐLANTISI

ªimdi bu iºlemleri direk olarak java programlama dili üzerinden nasýl yapacaðýmýzý
inceleyelim.

Java dilinde data base tanýmlamak için önce database ile bir baðlantý kurulmalýdýr. Burada
örnek olarak MS Access ile Window ortamýnda nasýl baðlantý tanýmlýyacaðýmýzý step-step
verelim

Window (95-98) ortamýnda access database ile baðlantý kurulmasý:


prog (veya baºka bir )isimli bir access db programýný aç ve save et
baºlat,ayarlar,denetim masasý,32 bit ODBC
User DSN sayfasýndan MS Access Database seç ve Add düðmesine bas
Microsoft Access Driver(*.mbd) seç, Son dügmesini týkla
data source name olarak prog (veya baºka bir isim) seç
Description alanýna JDBC - odbc database yaz, select dügmesine bas
prog DB dosyasýnýn olduðu directory 'i seç
OK düðmesine bas, Advanced dügmesinden login ve password da tanýmlýyabilirsiniz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Window 2000 (NT) ortamýnda access database ile baðlantý kurulmasý

prog (veya baºka bir )isimli bir access db programýný aç ve save et

start,settings,control panel,Administrative Tools, Data Sources


ODBC Data Source Administrator, User DSN sayfasýndan MS Access Database seç ve Add
düðmesine bas
Microsoft Access Driver(*.mbd) seç, Son dügmesini týkla
data source name olarak prog (veya baºka bir isim) seç
Description alanýna JDBC - odbc database yaz, select dügmesine bas
prog DB dosyasýnýn olduðu directory 'i seç
OK düðmesine bas, Advanced dügmesinden login ve password da tanýmlýyabilirsiniz.

Program 13.1 kahve veri tabaný dosyasýný tanmlayan [Link] programý

import [Link].*;
import [Link].*;
import Text;

public class CreateKahve{


public static void main(String args[]) throws IOException
{

String url = "jdbc:odbc:prog";


Connection con;
String createString;
createString = "create table KAHVE " +
"(KAHVE_ISMI varchar(32), " +
"NUMARA int, " +
"FIYAT float, " +
"SATIS int, " +
"TOPLAM int)";
Statement stmt;
try {
[Link]("[Link]");
} catch([Link] e) {
[Link]("ClassNotFoundException: ");
[Link]([Link]());
}
try {
con = [Link](url,"Login", "Password");
stmt = [Link]();
[Link](createString);
[Link]();
[Link]();
} catch(SQLException ex)
{[Link]("SQLException: " + [Link]());}
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Buradaki

[Link]("[Link]");

deyimi java JdbcOdbcDriver ile baðlantý açmaktadýr. Eðer varsa kendi database driver'ýnýzý
kullanabilirsiniz Bunun size getireceði en büyük avantaj daha önce yazýlmýº bir database
programýna eriºmeyi mümkün kýlmasýdýr. JDBC driverlerinin en son listesi

http:/[Link]/products/jdbc/[Link]

sitesinden öðrenilebilir.

String url = "jdbc:odbc:prog";


Connection con = [Link](url,"Login", "Password");

deyimi ise daha önce ismini prog olarak tanýmladýðýmýz (ismi siz database kaynak kotunun
ismine göre tanýmlýyabilirsiniz) prog database'ine ulaºmamýzý saðlamaktadýr.

Veri tabaný sonuçlarýný almak için ResultSet kullanýlýr. ResultSet interfaceinin alt metodlarý :

public interface ResultSet {


boolean next() throws SQLException;
void close() throws SQLException;
boolean wasNull() throws SQLException;
String getString(int columnIndex) throws SQLException;
boolean getBoolean(int columnIndex) throws SQLException;
byte getByte(int columnIndex) throws SQLException;
short getShort(int columnIndex) throws SQLException;
int getInt(int columnIndex) throws SQLException;
long getLong(int columnIndex) throws SQLException;
float getFloat(int columnIndex) throws SQLException;
double getDouble(int columnIndex) throws SQLException;
BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException;
byte[] getBytes(int columnIndex) throws SQLException;
[Link] getDate(int columnIndex) throws SQLException;
[Link] getTime(int columnIndex) throws SQLException;
[Link] getTimestamp(int columnIndex) throws SQLException;
[Link] getAsciiStream(int columnIndex) throws SQLException;
[Link] getUnicodeStream(int columnIndex) throws SQLException;
[Link] getBinaryStream(int columnIndex)
throws SQLException;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
boolean getBoolean(String columnName) throws SQLException;
byte getByte(String columnName) throws SQLException;
short getShort(String columnName) throws SQLException;
int getInt(String columnName) throws SQLException;
long getLong(String columnName) throws SQLException;
float getFloat(String columnName) throws SQLException;
double getDouble(String columnName) throws SQLException;
BigDecimal getBigDecimal(String columnName, int scale) throws SQLException;
byte[] getBytes(String columnName) throws SQLException;
[Link] getDate(String columnName) throws SQLException;
[Link] getTime(String columnName) throws SQLException;
[Link] getTimestamp(String columnName) throws SQLException;
[Link] getAsciiStream(String columnName) throws SQLException;
[Link] getUnicodeStream(String columnName) throws SQLException;
[Link] getBinaryStream(String columnName)
throws SQLException;
SQLWarning getWarnings() throws SQLException;
void clearWarnings() throws SQLException;
String getCursorName() throws SQLException;
Object getObject(int columnIndex) throws SQLException;
Object getObject(String columnName) throws SQLException;
[Link] getCharacterStream(int columnIndex) throws SQLException;
[Link] getCharacterStream(String columnName) throws SQLException;
BigDecimal getBigDecimal(int columnIndex) throws SQLException;
BigDecimal getBigDecimal(String columnName) throws SQLException;
boolean isBeforeFirst() throws SQLException;
boolean isAfterLast() throws SQLException;
boolean isFirst() throws SQLException;
boolean isLast() throws SQLException;
void beforeFirst() throws SQLException;
void afterLast() throws SQLException;
boolean first() throws SQLException;
boolean last() throws SQLException;
int getRow() throws SQLException;
boolean absolute( int row ) throws SQLException;
boolean relative( int rows ) throws SQLException;
boolean previous() throws SQLException;
void setFetchDirection(int direction) throws SQLException;
int getFetchDirection() throws SQLException;
void setFetchSize(int rows) throws SQLException;
int getFetchSize() throws SQLException;
boolean rowUpdated() throws SQLException;
boolean rowInserted() throws SQLException;
boolean rowDeleted() throws SQLException;
void updateNull(int columnIndex) throws SQLException;
void updateBoolean(int columnIndex, boolean x) throws SQLException;
void updateByte(int columnIndex, byte x) throws SQLException;
void updateShort(int columnIndex, short x) throws SQLException;
void updateInt(int columnIndex, int x) throws SQLException;
void updateLong(int columnIndex, long x) throws SQLException;
void updateFloat(int columnIndex, float x) throws SQLException;
void updateDouble(int columnIndex, double x) throws SQLException;
void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException;
void updateString(int columnIndex, String x) throws SQLException;
void updateBytes(int columnIndex, byte x[]) throws SQLException;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
void updateDate(int columnIndex, [Link] x) throws SQLException;
void updateTime(int columnIndex, [Link] x) throws SQLException;
void updateTimestamp(int columnIndex, [Link] x)
throws SQLException;
void updateAsciiStream(int columnIndex,
[Link] x,
int length) throws SQLException;
void updateBinaryStream(int columnIndex,
[Link] x,
int length) throws SQLException;
void updateCharacterStream(int columnIndex,
[Link] x,
int length) throws SQLException;
void updateObject(int columnIndex, Object x, int scale)
throws SQLException;
void updateObject(int columnIndex, Object x) throws SQLException;
void updateNull(String columnName) throws SQLException;
void updateBoolean(String columnName, boolean x) throws SQLException;
void updateByte(String columnName, byte x) throws SQLException;
void updateShort(String columnName, short x) throws SQLException;
void updateInt(String columnName, int x) throws SQLException;
void updateLong(String columnName, long x) throws SQLException;
void updateFloat(String columnName, float x) throws SQLException;
void updateDouble(String columnName, double x) throws SQLException;
void updateBigDecimal(String columnName, BigDecimal x) throws SQLException;
void updateString(String columnName, String x) throws SQLException;
void updateBytes(String columnName, byte x[]) throws SQLException;
void updateDate(String columnName, [Link] x) throws SQLException;
void updateTime(String columnName, [Link] x) throws SQLException;
void updateTimestamp(String columnName, [Link] x)
throws SQLException;
void updateAsciiStream(String columnName,
[Link] x,
int length) throws SQLException;
void updateBinaryStream(String columnName,
[Link] x,
int length) throws SQLException;
void updateCharacterStream(String columnName,
[Link] reader,
int length) throws SQLException;
void updateObject(String columnName, Object x, int scale)
throws SQLException;
void updateObject(String columnName, Object x) throws SQLException;
void insertRow() throws SQLException;
void updateRow() throws SQLException;
void deleteRow() throws SQLException;
void refreshRow() throws SQLException;
void cancelRowUpdates() throws SQLException;
void moveToInsertRow() throws SQLException;
void moveToCurrentRow() throws SQLException;
Statement getStatement() throws SQLException;
Object getObject(int i, [Link] map) throws SQLException;
Ref getRef(int i) throws SQLException;
Blob getBlob(int i) throws SQLException;
Clob getClob(int i) throws SQLException;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Array getArray(int i) throws SQLException;
Object getObject(String colName, [Link] map) throws SQLException;
Ref getRef(String colName) throws SQLException;
Blob getBlob(String colName) throws SQLException;
Clob getClob(String colName) throws SQLException;
Array getArray(String colName) throws SQLException;
[Link] getDate(int columnIndex, Calendar cal) throws SQLException;
[Link] getDate(String columnName, Calendar cal) throws SQLException;
[Link] getTime(int columnIndex, Calendar cal) throws SQLException;
[Link] getTime(String columnName, Calendar cal) throws SQLException;
[Link] getTimestamp(int columnIndex, Calendar cal)
[Link] getTimestamp(String columnName, Calendar cal)
throws SQLException;
}

Bazý metodlarýn iºlevlerine göz atacak olursak

ResultSet executeQuerry(String sql) throws SQLException : SQL deyimini çalýºtýrýr ve


sonuçlarýnýResultSET tipi Object olarak aktarýr.

int executeUpdate(String sql) throws SQLException : bir sonuç tablosu vermeyen SQL
terimlerini çalýºtýrýr. Komuttan etkilenen satýr sayýsýný iletir.

Boolean execute(String sql) throws SQLException : genel maksatlý SQL deyimi çalýºtýrýcý

ResultSet getResultSet() Throws SQLException:

int getUpdateCount() throws SQLException :

Boolean getMoreResults() : throws SQLException :

Kahve verisini veri tabanýna yazdýran ve select deyimi kullanarak okutan program
[Link] nýn listesi aºaðýda verilmiºtir.

Program 13.2 kahve veri tabaný dosyasýna veri giriºi saðlayan [Link]
programý

import [Link].*;

public class InsertKahve {

public static void main(String args[]) {

String url = "jdbc:odbc:prog";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Connection con;

Statement stmt;

String query = "select KAHVE_ISMI, FIYAT from KAHVE";

try {

[Link]("[Link]");

} catch([Link] e)

[Link]("ClassNotFoundException: ");

[Link]([Link]());

try {

con = [Link](url,

"myLogin", "myPassword");

stmt = [Link]();

[Link]("insert into KAHVE " +

"values('kolombiya',101, 7.99, 120, 0)");

[Link]("insert into KAHVE " +

"values('fransýz', 49, 8.99, 130, 0)");

[Link]("insert into KAHVE " +

"values('kafeinsiz fransýz', 51, 9.12, 110, 0)");

[Link]("insert into KAHVE " +

"values('espresso', 150, 9.99, 110,0)");

[Link]("insert into KAHVE " +

"values('brezilya', 89, 7.99, 120, 0)");

[Link]("insert into KAHVE " +

"values('kafeinsiz brezilya', 91, 8.15, 120, 0)");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ResultSet rs = [Link](query);

[Link]("Coffee Break Coffees and Prices:");

while ([Link]()) {

String s = [Link]("KAHVE_ISMI");

float f = [Link]("FIYAT");

[Link](s + " " + f);

[Link]();

[Link]();

} catch(SQLException ex) {

[Link]("SQLException: " + [Link]());

Program çýktýsý :

Coffee Break Coffees and Prices:


kolombiya 7.99
fransiz 8.99
kafeinsiz fransýz 9.12

Espresso 9.99

Brezilya 7.99

Kafeinsiz brezilya 8.15

ªeklindedir. Ayný programýn ºimdi de applet olarak yazýlmýº bir eºdeðerine göz atalým.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 13.3 [Link] programý InsertKahve programýnýn applet eºdeðeridir.
programýn thread olarak yazýldýðýna dikkat ediniz.

import [Link];

import [Link];

import [Link];

import [Link].*;

public class KahveApplet extends Applet implements Runnable {

private Thread worker;

private Vector queryResults;

private String message = "Baslatiliyor...";

public synchronized void start() {

// "start" her cagirildiginda

// kahve database query tekrar ‡agirilacaktir.

if (worker == null) {

message = "Veritabani ile baglanti kuruluyor";

worker = new Thread(this);

[Link]();

public void run() {

String url = "jdbc:odbc:prog";

String query = "select KAHVE_ISMI, FIYAT from KAHVE";

try {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("[Link]");

} catch(Exception ex) {

setError("Can't find Database driver class: " + ex);

return;

try {

Vector results = new Vector();

Connection con = [Link](url,

"myLogin", "myPassword");

Statement stmt = [Link]();

ResultSet rs = [Link](query);

while ([Link]()) {

String s = [Link]("KAHVE_ISMI");

float f = [Link]("FIYAT");

String text = s + " " + f;

[Link](text);

[Link]();

[Link]();

setResults(results);

} catch(SQLException ex) {

setError("SQLException: " + ex);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public synchronized void paint(Graphics g) {

if (queryResults == null)

[Link](message, 5, 50);

return;

// Display the results.

[Link]("Kahve fiyatlari : ", 5, 10);

int y = 30;

[Link] enum = [Link]();

while ([Link]()) {

String text = (String)[Link]();

[Link](text, 5, y);

y = y + 15;

private synchronized void setError(String mess) {

queryResults = null;

message = mess;

worker = null;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// And ask AWT to repaint this applet.

repaint();

private synchronized void setResults(Vector results) {

queryResults = results;

worker = null;

repaint();

Bu programýn çýktýsý, bir önceki programda olduðu gibidir.

[Link]

ªekil 13.7 [Link] programýnýn Netscape browserdaki çýktýsý

Statement interface’inin alt metodlarýna biraz daha detaylý bakalým. Statement SQL
komutlarýný veritabaný programýna gönderen ve sonuçlarýný geri çaðýran ana sýnýftýr. SQL
komut istemi çeºitli metodlar üzerinden yapýlabilir

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ResultSet executeQuery(String sqldeyimi) throws SQLException

Bu metod çalýºtýrýldýðýnda tek bir SQL query çalýºtýrýlýr ve sonuçlarý ResultSet sýnýfýndan geri
alýnýr.

int executeUpdate(String sqldeyimi) throws SQLException

Bu metod çalýºtýrýldýðýnda tek bir SQL Query çalýºtýrýlýr, geriye sonuç iletmez, sadece kaç
satýr verinin bu deyimden etkilendiðini belirtir.

boolean execute(String sqldeyimi) throws SQLException

Bu metod çalýºtýrýldýðýnda genel bir SQL Query deyimi çalýºtýrýlýrýlabilir. Bilhassa çalýºtýrýlan
SQL deyiminin ne yapabileceði tam olarak bilinmiyorsa veya deðiºken sonuçlar elde
ediliyorsa kullanýlabilir. Bu deyim sonucu iletilen veriler GetResultSet(),getUpdateCount() ve
getMoreResults() metodlarý kullanýlarak alýnabilir.

ResultSet getResultSet() throws SQLException

En son çýkmýº olan sonuçlarý iletir. Eðer hiç bir sonuç mevcut deðildse null sonucu verir. Bir
kere okunduktan sonra sonuçlar silinir.

int getUpdateCount() throws SQLException

Update, insert ve delet deyimlerinin sonuçlarýnda aç satýrýn etkilendiðini verir. Eðer SQL
tarafýýndan bir sonuç seti verilmiºse veya herhangi bir veri deðiºtirilmemiºse –1 deðerini verir.

int getMoreResults() throws SQLException

Birden fazla sonuçveya update sayýmý yapýlan durumlarda bir sonraki deðer setine geçer. Bu
metod ayný zamanda daha önce açýlmýº olan tüm ResultSet deyimi deðerlerini kapatýr.

ResultSet sýnýfý temel olarakveritabaný dosyasýndandeðerleri okumak için kullanýlýr. SQL veri
türleri çeºitli SQL veritabanlarýnýn varlýðýndan dolayý oldukça çeºitlilik gösterir. Temel olak
kullanýlan metodlar ve olarýn SQL veri larºýlýklarý ºunlardýr :

getByte : TINYINT , SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,


NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

getsHORT : TINYINT, SMALLINT , INTEGER, BIGINT, REAL, FLOAT, DOUBLE,


DECIMAL, NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

getInt : TINYINT, SMALLINT, INTEGER , BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,


NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

getLong : TINYINT, SMALLINT, INTEGER, BIGINT , REAL, FLOAT, DOUBLE, DECIMAL,


NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
getFloat : TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,
NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

getDouble : TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,


NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

getBigDecimal : TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE,


DECIMAL, NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR

getBoolean : TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE,


DECIMAL, NUMERIC, BIT , CHAR, VARCAHR , LONGVARCHAR

getString : TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,


NUMERIC, BIT, CHAR , VARCAHR, LONGVARCHAR

getBytes : BINARY,VARBINARY ,LONGVARBINARY

getDate : CHAR, VARCAHR, LONGVARCHAR , BINARY, DATE , TIMESTAMP

getTime : CHAR, VARCAHR, LONGVARCHAR , BINARY, TIME , TIMESTAMP

getTimeStamp : CHAR, VARCAHR, LONGVARCHAR , BINARY,DATE,TIME, TIMESTAMP

getAsciiStream : CHAR, VARCAHR, LONGVARCHAR, BINARY, VARBINARY,


LONGVARBINARY

getUnicodeStream : CHAR, VARCAHR, LONGVARCHAR, BINARY, VARBINARY,


LONGVARBINARY getBinaryStream : BINARY, VARBINARY, LONGVARBINARY

getObject : TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,


NUMERIC, BIT, CHAR, VARCAHR, LONGVARCHAR , BINARY, VARBINARY,
LONGVARBINARY, DATE, TIME, TIMESTAMP

kalýn harfle yazýlý olan SQL tipleri bu metod için en uygun tiplerdir. Metodlar SQL tablo
kolonuna kolon ismi veya indeks numarasý kullanarak ulaºabilirler. Örneðin getDouble
metodu

double getDouble(int sütunindeksi) throws SQLException;

double getDouble(String sütunismi) throws SQLException;

ºeklinde tanýmlanmýºtýr.

GetObject metodu her türlü deðiºken için kullanýlabilir.

ResultSetMetaData sýnýfý ResultSet’te tanýmlanan bilgi ile ilgili ilave sütun bilgisi aktarnmak
için kullanýlýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ResultSet rs=[Link](“SELECT Toplam FROM KAHVE”);

ResultSetMetaData rsmd=[Link]();

ªeklinde tanýmlanýr. Önemli metodlarý :

int getColumnCount() throws SQLException : kaç sütunluk bir set olduðunu tanýmlar

String getColumnLabel(int column) throws SQLException :

String getColumnName(int column) throws SQLException : veri tabaný sütun ismini verir

String getTableName(int column) throws SQLException : veri tabaný tablosunun ismini verir

Booean isReadOnly(int sütun) throws SQLException : sütunun sadece okunabilir olarak izni
olup olmadýðýný verir.

ªu ana kadar geliºtirdiðimiz veri tabaný programlarý uygulamaya özel idi. ªimdi biraz daha
genel bir uygulama oluºturalým. Bu uygulamada swing JTable sýnýfýný kullanacaðýz. Bu
programda oluºturduðumuz ilk sýnýf QuerryTableModel sýnýfý tabloya girmek için sorgu(query)
sonuçlarýný tablo giriº formatýnda hazýrlamaktadýr. Bu metodun bilgi iºlerken Vector sýnýfýný
kullandýðýna dikkatinizi çekeriz. Vector sýnýfý hakkýnda daha detaylý bilgi için ilgili bölüme
bakýnýz.

Program 13.4 [Link] programý

import [Link].*;

import [Link].*;

import [Link];

import [Link].*;

import [Link].*;

public class QueryTableModel extends AbstractTableModel

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

Vector cache;

int colCount;

String[] headers;

Connection db;

Statement statement;

String currentURL;

public QueryTableModel()

cache=new Vector();

//new [Link]();

try

[Link]("[Link]");

catch([Link] e)

[Link]("Class (sinif) bulunamadi hatasi : ");

[Link]([Link]());

public String getColumnName(int i) {return headers[i];}

public int getColumnCount() {return colCount;}

public int getRowCount() {return [Link]();}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public Object getValueAt(int row,int col)

return ((String[])[Link](row))[col];

public void setHostURL(String url)

if([Link](currentURL))

{return;}

closeDB();

initDB(url);

currentURL=url;

public void setQuery(String q)

cache= new Vector();

try{

ResultSet rs=[Link](q);

ResultSetMetaData meta=[Link]();

colCount=[Link]();

headers=new String[colCount];

for (int h=1;h<=colCount;h++)

headers[h-1]=[Link](h);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

while([Link]())

String[] record=new String[colCount];

for(int i=0;i<colCount;i++)

{record[i]=[Link](i+1);}

[Link](record);

} //while'in sonu

fireTableChanged(null);

} //try'in sonu

catch(Exception e)

cache=new Vector();

[Link]();

} // setQuery sonu

public void initDB(String url)

try {

db=[Link](url);

statement=[Link]();

catch(Exception e)

[Link]("DataBase baºlatýlamadý");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

} //initDB sonu

public void closeDB()

try {

if(statement!= null) {[Link]();}

if(db != null) {[Link]();}

catch(Exception e)

[Link]("database kapatýlamadý");

[Link]();

} //closeDB sonu

Ýkinci sýnýfýmýz (Tabloyu gösterme sýnýfý) olan DataBaseTest programý ise girdi alanýndan
SQL komutunu ve veritabaný baðlantýsýný okumakta ve SQL sonuçlarýný tabloda vermektedir.

Program 13.5 [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class DatabaseTest extends JFrame

JTextField hostField;

JTextArea queryField;

QueryTableModel qtm;

public DatabaseTest()

super("Database Örnek Penceresi");

addWindowListener(new BasicWindowMonitor());

setSize(350,200);

qtm=new QueryTableModel();

JTable table=new JTable(qtm);

JScrollPane scrollpane=new JScrollPane(table);

JPanel p1=new JPanel();

[Link](new GridLayout(3,2));

[Link](new JLabel(" url ismini giriniz :"));

[Link](hostField=new JTextField("jdbc:odbc:prog"));

[Link](new JLabel("SQL(Sequential Query Language) deyiminizi giriniz :"));

[Link](queryField=new JTextArea("select *\n from KAHVE"));

[Link](new JLabel("Query'nizi göndermek icin düðmeye basýnýz:"));

JButton jb=new JButton("SQL deyimini calistir");

[Link](new ActionListener()

public void actionPerformed(ActionEvent e)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link]([Link]().trim());

[Link]([Link]().trim());

}); // [Link]

[Link](jb);

getContentPane().add(p1,[Link]);

getContentPane().add(scrollpane,[Link]);

} //DatabaseTest()

public static void main(String args[])

DatabaseTest tt=new DatabaseTest();

[Link](true);

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 13.8 [Link] programýnýn JFrame’de ve JTable kullanýlarak
oluºturulan çýktýsý

13.3 ALIªTIRMALAR

1. Program örneði database dosyasýný girdi dosyasý olarak kullanan ve içindeki sayýlarýn
ortalamasýný alan [Link] programý : Bu programda sayýlar dosyadan okunmakta,
ortalamasý hem querry dilinde (SQL) hemde java dilinde hesaplanmaktadýr. Programý
inceleyiniz.

Program 13.6 [Link], database dosyasýndan alýnan bilgilerle database dosyasýnýn


girdi dosyasý olarak kullanýlmasý

import [Link].*;

public class H9O2


{
public static void main(String[] args)
{
String url="jdbc:odbc:h9o2";
Connection con;
Statement stmt;
String query2="select AVG(SAYI) as T from H9O2";
String query1="select SAYI from H9O2";
try
{
[Link]("[Link]");
}
catch([Link] e)
{ [Link]([Link]()); }
try
{
con=[Link](url);
stmt=[Link]();
ResultSet rs= [Link](query1);
int j=0;
double toplam=0;
while ([Link]())
{
double sayi= [Link]("SAYI");
toplam+=sayi;
[Link]("Sayi("+(j++)+") = "+sayi);
}
[Link]("metot 1 ortalamalar query dilinde hesaplandi");
rs= [Link](query2);
while ([Link]())
{

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double i= [Link]("T");
[Link]("Ortalama = "+i);
}
[Link]("metot 2 ortalamalar java dilinde hesaplandi");
double ortalama=toplam/j;
[Link]("metot 2 ortalama : "+ortalama);
[Link]();
[Link]();
}
catch (SQLException e)
{
[Link]([Link]());
} //catch
} //main
} //class

program [Link] çýktýsý :

Sayi(0) = 1.232
Sayi(1) = 1.654
Sayi(2) = 3.562462
Sayi(3) = 2.6546
Sayi(4) = 2.64784
Sayi(5) = 1.4262
Sayi(6) = 2.98963
Sayi(7) = 3.76487648
Sayi(8) = 1.7368365
Sayi(9) = 4.2222487
Sayi(10) = 1.86327653
Sayi(11) = 1.973836
Sayi(12) = 3.687522
Sayi(13) = 1.7637836
Sayi(14) = 2.0832863
metot 1 ortalamalar query dilinde hesaplandi
Ortalama = 2.4841598739999995
metot 2 ortalamalar java dilinde hesaplandi
metot 2 ortalama : 2.4841598739999995

======================================================================
======

2. H9OD2_2000

[Link] acsess veri tabanýnda H9OD2_2000 veri tabaný tablosunu açýnýz. Bu dosyada x ve
y ve y2 baºlýklarý altýnda üç kolon yaratýnýz. x ve y kolonlarýna

1 1

1 4

2 9

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
3 16

4 25

5 36

veri setini giriniz. H9OD2_2000.java programýnda veri tabaný doyasýndan okutup ekranda
gösteriniz. Ayný zamanda y2 kolonuna x*x deðerlerini yazdýrýnýz.

Program 13.7 H9O2_2000.java, database dosyasýndan alýnan bilgilerle database


dosyasýnýn girdi dosyasý olarak kullanýlmasý

import [Link].*;

public class H9OD2_2000

public static void main(String[] args)

String url="jdbc:odbc:prog";

Connection con;

Statement stmt;

String query1="select x,y from H9OD2_2000";

String query2="UPDATE H9OD2_2000 SET y2=x*x;";

try

[Link]("[Link]");

catch([Link] e)

{ [Link]([Link]()); }

try

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

con=[Link](url);

stmt=[Link]();

ResultSet rs= [Link](query1);

while ([Link]())

double xi= [Link]("x");

double yi= [Link]("y");

[Link](""+xi+" "+yi);

// SQL komutu kullanarak y*y deðerini veri tabaný dosyasýna yazdýr.

int jj = [Link](query2);

[Link](""+jj+"kolon deðiºtirildi");

[Link]();

[Link]();

catch (SQLException e)

[Link]([Link]());

} //catch

} //main

} //class

Program çýktýsý :

1.0 1.0

2.0 4.0

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
3.0 9.0

4.0 16.0

5.0 25.0

6.0 36.0

7.0 49.0

7 kolon degistirildi

program sonunda H9OD2_2000 veritabaný dosyasý:

Program 13.8 H9O2_2000a.java, database dosyasýndan alýnan bilgilerle database


dosyasýnýn girdi dosyasý olarak kullanýlmasý, sonuçlarýn tablo olarak gösterimi

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

public class H9OD2_2000a extends JFrame

ResultSet rs;

ResultSetMetaData rsm;

public H9OD2_2000a()

super("Data base sonuçlarý");

Container c=getContentPane();

String url="jdbc:odbc:prog";

Connection con;

Statement stmt;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String query1="select * from H9OD2_2000";

String query2="UPDATE H9OD2_2000 SET y2=x*x;";

try

[Link]("[Link]");

catch([Link] e)

{ [Link]([Link]()); }

try

con=[Link](url);

stmt=[Link]();

int jj=[Link](query2);

rs= [Link](query1);

rsm=[Link]();

int j=[Link]();

String[] baslik=new String[j];

for (int h=1;h<=j;h++)

baslik[h-1]=[Link](h);

JTable jt=new JTable(aa(j),baslik);

JScrollPane jsp=new JScrollPane(jt);

[Link](jsp,[Link]);

[Link]();

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

catch (SQLException e)

[Link]([Link]());

} //catch

} //kurucu metod

public String[][] aa(int j) throws SQLException

int n=0;

String a[][]=new String[8][j];

while([Link]())

for(int k=0;k<j;k++)

a[n][k]=""+[Link]([Link](k+1));

n++;

String b[][]=new String[n][j];

for(int i=0;i<n;i++)

for(int k=0;k<j;k++)

b[i][k]= a[i][k];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return b;

public static void main(String[] args)

H9OD2_2000a pencere= new H9OD2_2000a();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

} //class

[Link]

ªekil 13.9 H9O2_2000a.java çýktýsý, database dosyasýndan alýnan bilgilerle database


dosyasýnýn girdi dosyasý olarak kullanýlmasý, çýktý ortamý olarak tablo kullanan bir
alternatifi

Program 13.10 H9O2_2000b.java, database dosyasýndan alýnan bilgilerle database


dosyasýnýn girdi dosyasý olarak kullanýlmasý, çýktý ortamý olarak QueryTableModel
sýnýfýný kullanarak oluºturduðu tabloyu kullanan bir alternatif

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import QueryTableModel;

// Vector (Querytable model’da ) kullanýyor

public class H9OD2_2000b extends JFrame

public H9OD2_2000b()

super("Data base sonuçlarý");

Container c=getContentPane();

String url="jdbc:odbc:prog";

QueryTableModel qtm=new QueryTableModel();

[Link](url);

String query1="select x,y from H9OD2_2000";

[Link](query1);

JTable jt=new JTable(qtm);

JScrollPane jsp=new JScrollPane(jt);

[Link](jsp,[Link]);

} //kurucu metod

public static void main(String[] args)

H9OD2_2000b pencere= new H9OD2_2000b();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

} //class

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 13.10 H9O2_2000b.java, database dosyasýndan alýnan bilgilerle database


dosyasýnýn girdi dosyasý olarak kullanýlmasý, çýktý ortamý olarak QueryTableModel
sýnýfýný kullanarak oluºturduðu tabloyu kullanan bir alternatif

======================================================================
======

3. Daha önce de kullandýðýmýz prog veritabanýnda e isimli bir tablo oluºturunuz, bu tablodaki
e sütununa gerçek sayý veri giriniz. Diðer bir tablo olarak e tablosunda e sütununu
oluºturunuz, bu tabloya da gerçek sayý deðerler giriniz. Ýki veri tabaný tablosundan deðerleri
okuyup, bileºim kümesini hesaplayýnýz ve yarattýðýnýz ed tablosuna ed deðerleri olarak
yazdýrýnýz.

Program 13.10 H10O1_2000b.java

import [Link].*;

import set;

import [Link].*;

import [Link].*;

import [Link];

public class H10OD1_2000

public static void main(String[] args)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

String s="";

double e,d,ed;

Vector ve,vd,ved;

ve =new Vector();

vd =new Vector();

ved =new Vector();

String url="jdbc:odbc:prog";

Connection con;

Statement stmt;

String query1="select * from e";

String query2="select * from d";

try

[Link]("[Link]");

catch([Link] er)

{ [Link]([Link]()); }

try

con=[Link](url);

stmt=[Link]();

ResultSet rs= [Link](query1);

s+="e veritabaný:\n";

while ([Link]())

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
e = [Link]("e");

[Link](""+e);

s+=""+e+"\n";

[Link](null,s);

rs= [Link](query2);

s+="d veritabaný: \n";

while ([Link]())

d= [Link]("d");

[Link](""+d);

s+=""+d+"\n";

[Link](null,s);

ved=[Link](ve,vd);

s+="bileºim vektörü :\n";

Enumeration n=[Link]();

int i=1;

while([Link]())

String s1=(String)[Link]();

String s2="INSERT INTO H10OD1_2000 VALUES('"+(i++)+"',"+s1+")";

s+=s1+"\n";

[Link](s2);

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

[Link](null,s);

[Link](0);

catch (SQLException er)

[Link]([Link]());

} //catch

} //main

} //class

Program 13.11 [Link]

// Bu program vector ve Enumeration siniflarýný

// Kullanmaktadýr. Bileºim ve kesiºim kümelerini hesaplar

// Ayný zamanda StringTokeniser sýnýfýný kullanýr.

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class set

public static Vector bilesim(Vector list1, Vector list2)

Vector bilesimVectoru = new Vector();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Object s1,s2;

Enumeration n1=[Link]();

Enumeration n2=[Link]();

while([Link]())

s1=[Link]();

[Link](s1);

while([Link]())

s2=[Link]();

if(![Link](s2))

[Link](s2);

return bilesimVectoru;

public static Vector kesisim(Vector list1,Vector list2)

Vector kesisimVectoru = new Vector();

Object s;

Enumeration n = [Link]();

while([Link]())

s=[Link]();

if([Link](s))

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](s);

return kesisimVectoru;

public static Vector fark(Vector list1, Vector list2)

Vector subst=new Vector();

Object ans;

Enumeration enum= [Link]();

while([Link]())

ans=[Link]();

if([Link](ans))

continue;

else

[Link](ans);

return subst;

public static Vector bilesimeksikesisim(Vector list1, Vector list2)

Vector UMI=new Vector();

Object ans1, ans2;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Enumeration enum1= [Link]();

Enumeration enum2= [Link]();

while([Link]())

ans1=[Link]();

if([Link](ans1))

continue;

else

[Link](ans1);

while([Link]())

ans2 = [Link]();

if([Link](ans2))

continue;

else

[Link](ans2);

return UMI;

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 13.11 H10OD1_2000.java, programýnýn oluºturduðu H10OD1_2000 veritabaný
dosyasý

[Link]

ªekil 13.12 H10OD1_2000.java, programýnýn sonuçlarýnýn JoptionPane çýktýsý olarak


görüntülenmesi

1. Daha önce de kullandýðýmýz prog veritabanýnda e isimli bir tablo oluºturunuz, bu


tablodaki x sütununa gerçek sayý veri giriniz. Diðer bir tablo olarak e tablosunda x
sütununu oluºturunuz, bu tabloya da gerçek sayý deðerler giriniz. Ýki veri tabaný
tablosundan deðerleri okuyup, bileºim kümesini hesaplayýnýz ve yarattýðýnýz
H10OD1_2000 tablosuna x deðerleri olarak yazdýrýnýz. Proseste boyutlu deðiºkenleri
vektör üzerinden taºýyýnýz

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 13.12 H10OD1_2000.java

Bu program Gebze Yüksek teknoloji enstitüsü Java programla dili dersi, 2000 Güz dönemi
öðrencilerinden Deniz KAYA tarafýndan yazýlmýºtýr.

// Deniz KAYA

// Hafta 10 Ödevi

// Tablolardan vektore, vektor bileþiminden tabloya

// yazdýrma iþlemi.

import [Link].*;

import [Link].*;

import [Link].*;

class SetA

public Vector tablodanIntYukle(String d)

// ismi d deðiskeni ile gelen tablodan

// Rakamlari Vektor Icine Yukle

Vector v = new Vector();

String url="jdbc:odbc:prog";

Connection con;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Statement stmt;

String query1="select x from "+d;

try

[Link]("[Link]");

catch([Link] e)

[Link]([Link]());

try

con=[Link](url);

stmt=[Link]();

ResultSet rs= [Link](query1);

while ([Link]())

int xi= [Link]("x");

[Link](new Integer(xi));

[Link]();

[Link]();

catch (SQLException e)

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} //catch

return v;

} //

public Vector bilesim(Vector list1, Vector list2)

Vector bilesimVectoru = new Vector();

Object s1,s2;

Enumeration n1=[Link]();

Enumeration n2=[Link]();

while([Link]())

s1=[Link]();

[Link](s1);

while([Link]())

s2=[Link]();

if(![Link](s2))

[Link](s2);

return bilesimVectoru;

public Vector kesisim(Vector list1,Vector list2)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

Vector kesisimVectoru = new Vector();

Object s;

Enumeration n = [Link]();

while([Link]())

s=[Link]();

if([Link](s))

[Link](s);

return kesisimVectoru;

public Vector fark(Vector list1, Vector list2)

Vector subst=new Vector();

Object ans;

Enumeration enum= [Link]();

while([Link]())

ans=[Link]();

if([Link](ans))

continue;

else

[Link](ans);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

return subst;

public Vector bilesimeksikesisim(Vector list1, Vector list2)

Vector UMI=new Vector();

Object ans1, ans2;

Enumeration enum1= [Link]();

Enumeration enum2= [Link]();

while([Link]())

ans1=[Link]();

if([Link](ans1))

continue;

else

[Link](ans1);

while([Link]())

ans2 = [Link]();

if([Link](ans2))

continue;

else

[Link](ans2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

return UMI;

public class H10OD1_2000 {

public static void main( String arg[]) throws IOException {

SetA A = new SetA();

Vector list1 = [Link]("d"); // list1 'e (d) tablosunun deðerlerinin yüklüyor.

Vector list2 = [Link]("e"); // list2 'ye (e) tablosunun deðerlerinin yüklüyor.

Vector bilesim = [Link](list1,list2); // listeleri birleþtir.

Enumeration e = [Link]();

// Aþagýdaki kesim bilesim kumesini tabloya ve ekrana yazdýrýr.

String url="jdbc:odbc:prog";

Connection con;

Statement stmt;

String query1="select x from H10OD1_2000";

try

[Link]("[Link]");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch([Link] ex)

[Link]([Link]());

try

con=[Link](url);

stmt=[Link]();

while([Link]())

Integer s = (Integer)[Link]();

[Link]("insert into H10OD1_2000 values("+s+")");

[Link]([Link]());

[Link]("\n Ýþleminiz basayla tamamlandi....");

[Link]();

[Link]();

catch (SQLException ex)

[Link]([Link]());

} //catch

} // Main

}// H10OD1_2000

2. Program 4 de H10OD1_2000 veri tabaný dosyasýna yazýlan veriyi okuyunuz. Binary


Tree yapýlarýný kullanarak sýraya koyunuz ve H10OD2_2000 dosyasýna yazdýrýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 13.13 [Link]

class TreeNode

TreeNode sol;

int data;

TreeNode sag;

public TreeNode(int d)

data=d;

sol=sag=null;

public synchronized void gir(int d)

// not ayni deger iki kere girilmeye calisilirsa

// ikinci giris dikkate alinmiyacaktir

if(d<data)

{ if(sol==null) {sol=new TreeNode(d);}

else {[Link](d);}

else if(d>data)

{ if(sag==null) {sag=new TreeNode(d);}

else {[Link](d);}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public class Tree

public TreeNode kok;

public Tree() {kok=null;}

public synchronized void gir(int d)

if(kok==null) kok=new TreeNode(d);

else [Link](d);

public void node_soldal_sagdal_sirala(){node_soldal_sagdal_siralayici(kok);}

public void soldal_node_sagdal_sirala(){soldal_node_sagdal_siralayici(kok);}

public void soldal_sagdal_node_sirala(){soldal_sagdal_node_siralayici(kok);}

public void node_sagdal_soldal_sirala(){node_sagdal_soldal_siralayici(kok);}

public void sagdal_node_soldal_sirala(){sagdal_node_soldal_siralayici(kok);}

public void sagdal_soldal_node_sirala(){sagdal_soldal_node_siralayici(kok);}

public void node_soldal_sagdal_siralayici(TreeNode node)

if(node==null) return;

[Link]([Link]+" ");

node_soldal_sagdal_siralayici([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
node_soldal_sagdal_siralayici([Link]);

public void node_sagdal_soldal_siralayici(TreeNode node)

if(node==null) return;

[Link]([Link]+" ");

node_sagdal_soldal_siralayici([Link]);

node_sagdal_soldal_siralayici([Link]);

public void soldal_node_sagdal_siralayici(TreeNode node)

if(node==null) return;

soldal_node_sagdal_siralayici([Link]);

[Link]([Link]+" ");

soldal_node_sagdal_siralayici([Link]);

public void sagdal_node_soldal_siralayici(TreeNode node)

if(node==null) return;

sagdal_node_soldal_siralayici([Link]);

[Link]([Link]+" ");

sagdal_node_soldal_siralayici([Link]);

public void soldal_sagdal_node_siralayici(TreeNode node)

if(node==null) return;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
soldal_node_sagdal_siralayici([Link]);

soldal_node_sagdal_siralayici([Link]);

[Link]([Link]+" ");

public void sagdal_soldal_node_siralayici(TreeNode node)

if(node==null) return;

sagdal_node_soldal_siralayici([Link]);

sagdal_node_soldal_siralayici([Link]);

[Link]([Link]+" ");

3.

Program 13.14 H10OD2_2000.java

Bu program Gebze Yüksek teknoloji enstitüsü Java programla dili dersi, 2000 Güz dönemi
öðrencilerinden Deniz KAYA tarafýndan yazýlmýºtýr.

// Deniz KAYA

// H10OD2_2000

// Tablodan-Treeye, Tree-den tabloya(recursive) yazdýrma iºlemi.

import Tree;

import TreeNode;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class H10OD2_2000

public void veriyazdir(int data)

String url="jdbc:odbc:prog";

Connection con;

Statement stmt;

String query1="select x from H10OD2_2000";

try

[Link]("[Link]");

catch([Link] e)

[Link]([Link]());

try

con=[Link](url);

stmt=[Link]();

[Link]("insert into H10OD2_2000 values("+data+")");

[Link]();

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch (SQLException e)

[Link]([Link]());

} //catch

};

// Tree de bulunan verileri sýralý bir sekilde tabloya atar.

// Tabloya yazdýrmak için veriyazdýr metodunu kullanýr.

public void soldal_node_sagdal_siralayici(TreeNode node)

if(node==null) return;

soldal_node_sagdal_siralayici([Link]);

// veriyi tabloya yazdýr.

veriyazdir([Link]);

soldal_node_sagdal_siralayici([Link]);

public static void main(String args[])

Tree agac=new Tree();

int sayi;

[Link]("orijinal olarak Tree'ye girilen sayi dizini");

String url="jdbc:odbc:prog";

Connection con;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Statement stmt;

String query1="select x from H10OD1_2000";

try

[Link]("[Link]");

catch([Link] e)

[Link]([Link]());

try

con=[Link](url);

stmt=[Link]();

ResultSet rs= [Link](query1);

while ([Link]())

int xi= [Link]("x");

[Link](xi);

H10OD2_2000 h = new H10OD2_2000();

// Küçükten büyüðe sýralý bir sekilde ekrana yazdirir.

agac.soldal_node_sagdal_sirala();

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

// H10OD2_2000 tablosuna verileri küçükten büyüðe sýralý yazdýrýr.

h.soldal_node_sagdal_siralayici([Link]);

[Link]("\n H10OD2_2000 tablosuna veriler yazýldý.");

catch (SQLException e)

[Link]([Link]());

} //catch

3. Bu alýºtýrmada bir adres defteri oluºturacaðýz. Önce adres defterinde tanýmlanan


alanlarý verelim

ID anahtar alan

isim

soyisim

adres

ilce

il

postakodu

ulke

emailadresi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
telefonev

telefonis

telefoncep

faks

webadresi

evadresi

alanlarý tanýmlanacaktýr.

Temel access veri tabaný tanýmlamasýný acsess’de yaptýk. veri tabaný dosyasýnýn ismi adres
olarak tanýmlandý. Veri tabanýnýn görünümü:

[Link]

ªekil 13.13 [Link] veritabaný tablosu adres

ºeklindedir. Bu programý oluºturabilmek için bir dizi program tanýmý yapýldý. Bunlar
[Link], [Link], [Link], adressil, [Link], [Link],
[Link] ve [Link] programlarýdýr. Bu programlarýn kodlarýný verelim :

Program 13.15 [Link]

// adresdefteri ana programi

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class adresdefteri extends JFrame {

private ciktipaneli controls;

private adrespanel scrollArea;

private JTextArea output;

private String url;

private Connection connect;

private JScrollPane textpane;

public adresdefteri()

super( "Adres defteri " );

Container c = getContentPane();

scrollArea = new adrespanel();

output = new JTextArea( 6, 30 );

[Link]( new BorderLayout() );

[Link]( new JScrollPane( scrollArea ),

[Link] );

textpane = new JScrollPane( output );

[Link]( textpane, [Link] );

// database baðlantýsýný oluºtur

try {

url = "jdbc:odbc:adres";

[Link]( "[Link]" );

connect = [Link]( url );

[Link]( "Baðlantý saðlandý\n" );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
catch ( ClassNotFoundException cnfex ) {

[Link]();

[Link]( "baðlantý saðlanamadý\n" +

[Link]() );

catch ( SQLException sqlex ) {

[Link]();

[Link]( "baðlantý saglanamadý\n" +

[Link]() );

catch ( Exception ex ) {

[Link]();

[Link]( [Link]() );

controls =

new ciktipaneli( connect, scrollArea, output);

[Link]( controls, [Link] );

setSize( 500, 500 );

show();

public static void main( String args[] )

adresdefteri app = new adresdefteri();

[Link](new BasicWindowMonitor());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

Program 13.16 [Link]

// [Link]
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;

public class adresgir implements ActionListener {


private adrespanel fields;
private JTextArea output;
private Connection connection;
public adresgir( Connection c, adrespanel f,
JTextArea o )
{
connection = c;
fields = f;
output = o;
}

public void actionPerformed( ActionEvent e )


{
try {
Statement statement = [Link]();
String a[]=new String[14];
a[0]=[Link]();
a[1]=[Link]();
a[2]=[Link]();
a[3]=[Link]();
a[4]=[Link]();
a[5]=[Link]();
a[6]=[Link]();
a[7]=[Link]();
a[8]=[Link]();
a[9]=[Link]();
a[10]=[Link]();
a[11]=[Link]();
a[12]=[Link]();
a[13]=[Link]();
for(int i=0;i<[Link];i++)
{ if(a[i].equals("")) a[i]=" "; }
if ( ![Link]().equals( "" ) &&
![Link]().equals( "" ) ) {
String query = "INSERT INTO adres (" +
"isim, soyisim, adres, ilce, " +
"il, postakodu, ulke, " +
"emailadresi, telefonev, telefonis" +
",telefoncep, faks, webadresi,evadresi ) VALUES ('";

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
query+=a[0]+ "', '";
query+=a[1]+ "', '" ;
query+=a[2]+ "', '" ;
query+=a[3]+ "', '" ;
query+=a[4]+ "', '" ;
query+=a[5]+ "', '" ;
query+=a[6]+ "', '" ;
query+=a[7]+ "', '" ;
query+=a[8]+ "', '" ;
query+=a[9]+ "', '" ;
query+=a[10]+ "', '" ;
query+=a[11]+ "', '" ;
query+=a[12]+ "', '" ;
query+=a[13]+ "')";
[Link]( "\nSQL query gönderiliyor: " +
[Link]( query )
+ "\n" );
int result = [Link]( query );

if ( result == 1 )
[Link]( "\nQuery baþarýyla çalýþtý\n" );
else {
[Link]( "\nQuery hata verdi\n" );
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link](" ");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
}
}
else
[Link]( "\nen azýndan isim ve soy isim girin ve sonra " +
"ekle dugmesine basýn\n" );
[Link]();
}
catch ( SQLException sqlex ) {
[Link]();
[Link]( [Link]() );
}
}
}

Program 13.17 [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class adresbul implements ActionListener {

private adrespanel fields;

private JTextArea output;

private Connection connection;

public adresbul( Connection c, adrespanel f,

JTextArea o )

connection = c;

fields = f;

output = o;

public void actionPerformed( ActionEvent e )

try {

if ( ![Link]().equals( "" )

&& ![Link]().equals( "" )) {

Statement statement =[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String query = "SELECT * FROM adres " +

"WHERE soyisim = '" +

[Link]() + "'"+

"AND isim = '" +

[Link]() + "'";

[Link]( "\nisim+soyisim Query'si gönderiliyor: " +

[Link]( query )

+ "\n" );

ResultSet rs = [Link]( query );

display( rs );

[Link]( "\nisim + soyisim Query'si baºarýyla sonuçlandý\n" );

[Link]();

else if ( ![Link]().equals( "" ) ) {

Statement statement =[Link]();

String query = "SELECT * FROM adres " +

"WHERE isim = '" +

[Link]() + "'";

[Link]( "\nisim Query'si gönderiliyor: " +

[Link]( query )

+ "\n" );

ResultSet rs = [Link]( query );

display( rs );

[Link]( "\nsim Query'si baºarýyla sonuçlandý\n" );

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if ( ![Link]().equals( "" ) ) {

Statement statement =[Link]();

String query = "SELECT * FROM adres " +

"WHERE soyisim = '" +

[Link]() + "'";

[Link]( "\nQuery gönderiliyor: " +

[Link]( query )

+ "\n" );

ResultSet rs = [Link]( query );

display( rs );

[Link]( "\nQuery baºarýyla sonuçlandý\n" );

[Link]();

else

[Link](

"Burada soyismi girin ve bul düðmesine basýn" );

catch ( SQLException sqlex ) {

[Link]();

[Link]( [Link]() );

public void display( ResultSet rs )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
try {

[Link]();

int recordNumber = [Link]( 1 );

if ( recordNumber != 0 ) {

[Link]( [Link]( recordNumber));

[Link]([Link]( 2 ));

[Link]([Link]( 3 ));

[Link]([Link]( 4 ));

[Link]([Link]( 5 ));

[Link]([Link]( 6 ));

[Link]([Link]( 7 ));

[Link]([Link]( 8 ));

[Link]([Link]( 9 ));

[Link]([Link]( 10 ));

[Link]([Link]( 11 ));

[Link]([Link]( 12 ));

[Link]([Link]( 13 ));

[Link]([Link]( 14 ));

[Link]([Link]( 15 ));

else

[Link]( "\nKayýt bulunamadý\n" );

catch ( SQLException sqlex ) {

[Link]();

[Link]( [Link]() );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

Program 13.18 [Link]

import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;

public class adresdegistir implements ActionListener {


private adrespanel fields;
private JTextArea output;
private Connection connection;

public adresdegistir( Connection c, adrespanel f, JTextArea o )


{
connection = c;
fields = f;
output = o;
}

public void actionPerformed( ActionEvent e )


{
try {
Statement statement = [Link]();
if ( ! [Link]().equals( "" ) )
{
String a[]=new String[14];
a[0]=[Link]();
a[1]=[Link]();
a[2]=[Link]();
a[3]=[Link]();
a[4]=[Link]();
a[5]=[Link]();
a[6]=[Link]();
a[7]=[Link]();
a[8]=[Link]();
a[9]=[Link]();
a[10]=[Link]();
a[11]=[Link]();
a[12]=[Link]();
a[13]=[Link]();
for(int i=0;i<[Link];i++)
{if(a[i].equals("")) a[i]=" ";}
if ( !a[1].equals( "" ) &&
!a[0].equals( "" ) )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{
String query = "UPDATE adres SET ";
query+="isim ='";query+=[Link]();
query+="',soyisim ='";query+=[Link]();
query+="',adres ='";query+=[Link]();
query+="',ilce ='";query+=[Link]();
query+="',il ='";query+=[Link]();
query+="',postakodu ='";query+=[Link]();
query+="',ulke ='";query+=[Link]();
query+="',emailadresi ='";query+=[Link]();
query+="',telefonev ='";query+=[Link]();
query+="',telefonis ='";query+=[Link]();
query+="',telefoncep ='";query+=[Link]();
query+="',faks='";query+=[Link]();
query+="',webadresi ='";query+=[Link]();
query+="',evadresi ='";query+=[Link]();
query+="' WHERE ID=";query+=[Link]();
[Link]( "\nquery gönderiliyor : " +
[Link]( query ) + "\n" );
int result = [Link]( query );
if ( result == 1 )
[Link]( "\nkayýt baþarýyla deðiþtirildi \n" );
else {
[Link]( "\nkayit deðiþtirme iþlemi baþarýlamadý\n" );
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("" );
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
}
[Link]();
} //
} //end of if
else
[Link]( "\nsadece mevcut olan kayýtlarý deðiþtirebilirsiniz\n" );
}
catch ( SQLException sqlex ) {
[Link]();
[Link]( [Link]() );
}
}
}

Program 13.19 [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

public class adressil implements ActionListener {

private adrespanel fields;

public adressil( adrespanel f )

fields = f;

public void actionPerformed( ActionEvent e )

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

[Link](" ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](" ");

Program 13.20 [Link]

import [Link].*;

import [Link].*;

import [Link].*;

public class adrespanel extends JPanel {

private JPanel labelPanel, fieldsPanel;

private String labels[] =

{ "ID :", "isim :", "soy isim :",

"adres :", "ilçe:", "il :",

"posta kodu :", "ülke :", "Email adresi :",

"ev telefonu :", "iº telefonu :",

"cep telefonu :", "faks :",

"web adresi :", "ev adresi :"};

JTextField id, isim, soyisim, adres, // alan isimleri

ilce, il,postakodu,ulke,emailadresi,telefonev,

telefonis,telefoncep,faks,webadresi,evadresi;

public adrespanel()

{ // Label

labelPanel = new JPanel();

[Link](

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
new GridLayout( [Link], 1 ) );

ImageIcon ii = new ImageIcon( "images/[Link]" );

for ( int i = 0; i < [Link]; i++ )

[Link]( new JLabel( labels[ i ], ii, 0) );

// TextField panel

fieldsPanel = new JPanel();

[Link](

new GridLayout( [Link], 1 ) );

id = new JTextField( 20 );

[Link]( false );

[Link]( id );

isim = new JTextField( 20 );

[Link]( isim );

soyisim = new JTextField( 20 );

[Link]( soyisim );

adres = new JTextField( 20 );

[Link]( adres );

ilce = new JTextField( 20 );

[Link]( ilce );

il = new JTextField( 20 );

[Link]( il );

postakodu = new JTextField( 20 );

[Link]( postakodu );

ulke = new JTextField( 20 );

[Link]( ulke );

emailadresi = new JTextField( 20 );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]( emailadresi);

telefonev = new JTextField( 20 );

[Link]( telefonev );

telefonis = new JTextField( 20 );

[Link]( telefonis );

telefoncep = new JTextField( 20 );

[Link]( telefoncep );

faks = new JTextField( 20 );

[Link]( faks );

webadresi = new JTextField( 20 );

[Link]( webadresi );

evadresi = new JTextField( 20 );

[Link]( evadresi );

setLayout( new GridLayout( 1, 2 ) );

add( labelPanel );

add( fieldsPanel );

Program 13.21 [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class ciktipaneli extends JPanel {

private JButton findName, addName,

updateName, clear, help;

public ciktipaneli( Connection c, adrespanel s,

JTextArea t )

setLayout( new GridLayout( 1, 5 ) );

findName = new JButton( "BUL" );

[Link]( new adresbul( c, s, t ) );

add( findName );

addName = new JButton( "EKLE" );

[Link]( new adresgir( c, s, t ) );

add( addName );

updateName = new JButton( "DEÐݪTÝR" );

[Link](

new adresdegistir( c, s, t ) );

add( updateName );

clear = new JButton( "SÝL" );

[Link]( new adressil( s ) );

add( clear );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
help = new JButton( "YARDIM" );

[Link]( new yardim( t ) );

add( help );

Program 13.22 [Link]

import [Link].*;

import [Link].*;

import [Link].*;

public class yardim implements ActionListener {

private JTextArea output;

public yardim( JTextArea o )

output = o;

public void actionPerformed( ActionEvent e )

[Link]( "\nbir kayýt bulmak için isim ve/veya soyisim alanýna yazýp BUL
düðmesine basýnýz\n" +

"Yeni bir kayýt girmek için EKLE düðmesine basýnýz\n" +

"Kayýttaki deðerleri deðiºtirmek için DEÐݪTÝR düðmesine basýnýz\n" +

"kaydý silmek için SÝL düðmesine basýnýz\n" );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

bu program setinin ana programý olan adresdefteri programýný çalýºtýrdýðýmýzda adres


defterimiz açýlýr. Adres defterinde verilen bul, deðiºtir, ekle, sil gibi alanlarý kullanarak adres
defterimizi kullanabiliriz. Belli bir komut verdiðimizde SQL Querry dilinde oluºan ve
gönderilen komutlar alt pencereden izlenebilir. Ayrýca herhangi bir hata oluºtu ise de bu
prncerede hata mesajý verilecektir.

[Link]

ªekil 13.14 [Link] veritabaný tablosunu kullanan [Link] programý


Jframe çýktýsý.

BÖLÜM 14: JAVA ANADÝL (NATIVE LANGUAGE) PROGRAMLAMASINA GÝRݪ

C++ ve C PROGRAMLAMA DÝLLERÝNÝN JAVA ÝLE BÝRLÝKTE KULLANIMI

14.1 TEMEL KAVRAMLAR

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java programlama dili C dilinde yazýlmýºtýr. Bu yüzden C’den javaya geçiº oldukça kolay bir
ºekilde yapýlabilir. Bir örnekle birden fazla programlama dilinin nasýl kullanýlabildiðine
bakmadan önce, bir temel kavramý iyi anlamamýz gerekir. Java güvenlik açýsýndan
maksimum güvenliði verebilen bir dildir. Öte taraftan C maksimum hýzlara ulaºmayý
saðlayabilen bir dildir. C programlarýný java programlarýyla birlikte kullanmamýzýn temel
nedeni hýz gereken yerlerde bu hýzý saðlamaktýr. Ancak hýz saðlarken güvenlikten olan
kaybýmýzý her zaman hesaba katmamýz ve ikisi arasýnda bir denge bulmamýz biz
programcýlara býrakýlmýºtýr. Bu yüzden iki dilli programlamada oldukça dikkatli bir ºekilde
çalýºma gereksinimi oluºturur. Bu konu C++ dilini iyi bilen programcýlar içindir. Burada C
programlamasýna girmeyeceðiz. Eðer bu dili bilmiyorsanýz, bu konuya baºlamadan önce
öðrenmenizi veya java anadil programlamasýný hiç kullanmamanýzý tavsiye ederim. C++ dilini
kullanabilmek için, hele iki dili bir arada kullanabilmek için iyi bir programcý olmanýz gerekiyor,
eðer kendinizi güveniyorsanýz, bundan sonraki kýsma geçebilirsiniz.

14.2 Örnek problemle step step iki dilli program kodunun hazýrlanmasý ve çalýºtýrýlmasý

Çok dilli programlama birden fazla basamaðý gerektiren bir prosestir. Bir örnek problemler bu
basamaklarý inceleyelim :

C++ dili ile java dilinin beraber çalýºacaðý bir örnek oluºturalým. Ýlk step olarak java dilindeki
programýmýzý yazalým :

Program 14.1 [Link] programý

class JavaCpp

public native void cdenaktar();

static

[Link]("jcpp");

public static void main(String[] args)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
new JavaCpp().cdenaktar();

JavaCpp programýnda iki temel metod görüyoruz. Birinci metod cdenaktar() metodudur. Bu
metod biraz sonra C++ dilinde oluºturacaðýmýz fonksiyonu Java’nýn bir parçasý olarak çaðýrýr.
Ýkinci metod ise main metodudur. Cdenaktar metoduna bakarken bunun java metodu
olmadýðýný belirten native sözcüðü yer almaktadýr. Metodun türü void’dir, yani hiçbir ºey
aktarýlmýyacaktýr. Programýmýzý, herhangi bir java programýnda olduðu gibi önce

java [Link]

Komutunu kullanarak derleriz. Ýkinci stepte javah komutunu kullanarak

javah JavaCpp

JavaCpp.h dosyasýný oluºtururuz. Bu dosyanýn içeriði :

Program 14.2 JavaCpp.h arabaðlantý programý

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class JavaCpp */

#ifndef _Included_JavaCpp

#define _Included_JavaCpp

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: JavaCpp

* Method: cdenaktar

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* Signature: ()V

*/

JNIEXPORT void JNICALL Java_JavaCpp_cdenaktar

(JNIEnv *, jobject);

#ifdef __cplusplus

#endif

#endif

ºeklinde olacaktýr. Bundan sonraki stepte C++ dilinde aºaðýdaki programý oluºturalým :

Program 14.3 JavaCpp_c.cpp C++ programý

#include <iostream.h>

#include <jni.h>

#include "JavaCpp.h"

JNIEXPORT void JNICALL

Java_JavaCpp_cdenaktar(JNIEnv *env, jobject obj)

cout<<"Java-C++ programlama dillerini birlikte kullanýyoruz ";

return;

c++ programýný derlemek için elbette bir derleyiciye ihtiyaç vardýr. Biz burada MS Visual C++
versiyon 6 derleyicisini kullandýk, herhangi bir dll dosyasý hazýrlayan derleyici (MS Windows
için) ayný iºi görebilir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Bu derleyici ile derleme için ya direk olarak dos’ta

cl -Ic:\co\java\include -Ic:\co\java\include\win32 -LD %JavaCpp_c.cpp –[Link]

komutunu kullanýrýz, yada bu uzun komutu her sefer yazmamak için bir [Link] dosyasý
yaratýp bunu kullanabiliriz. Örneðin hazýrladýðýmýz [Link] dosyasý

Program 14.4 [Link] MSdos programý

cl -Ic:\co\java\include -Ic:\co\java\include\win32 -LD %[Link] -Fe%[Link]

kullanýlarak yukarýdaki komut

pcomp JavaCpp_c jcpp

ºeklinde verilebilir. Bu iºlemleri yaptýðýmýzda programýmýz çalýºmaya hazýr olacaktýr.


Programý çalýºtýrmak için :

java JavaCpp

komutunu kullanmamýz yeterli olacaktýr. Program çýktýsý :

Java-C++ programlama dillerini birlikte kullanýyoruz

ªeklinde olacaktýr. Burada derlemenin [Link] dosyasýna yapýldýðýný hatýrlatalým, ve bu dosya


java programý üzerinden C++ metodunu çalýºtýrýrken kullandýðýmýz ana programdý.

14.2 DEÐݪKENLERÝN VE JAVA NESLERÝNÝN AKTARILMASI

Ýlk programýmýzda java ve C++ arasýnda herhangi bir deðiºken aktarýlmasý olmamýº, sadece
void türü fonksiyon kullanýlarak belli bir yazý yazan C++ fonksiyonu çaðýrýlmýºtýr. Ýkinci

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
örneðimizde java programýmýzdan String türü deðiºkeni C++ programlama diline aktaracak
ve kullanacaðýz.

Ýlk java programýmýz [Link]. bu programda ekrandan girilen bir string, yahut
ekrandan girilen bir string deðeri yoksa programýn içinde tanýmlanan bir stringle birlikte C++
programýna aktarýlýp burada ekrana yazýlmaktadýr.

Program 14.5 [Link] programý

public class ShowMessage {

private native void ShowMessage(String msg);

static { [Link]("MsgI"); }

public static void main(String[] args) {

ShowMessage app = new ShowMessage();

if([Link]==0)

[Link]("Bu mesaj javadan C++ ya gönderildi ve orada yazýldý");

else

[Link](args[0]);

bu program javac [Link] ve javah ShowMessage komutlarýyla iºlendikten


sonra

Program 14.6 [Link] programý

//dosya : [Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
#include <jni.h>

#include <iostream.h>

#include <stdio.h>

#include "ShowMessage.h"

extern "C" JNIEXPORT void JNICALL

Java_ShowMessage_ShowMessage(JNIEnv* env,

jobject, jstring jMsg)

const char* msg=env->GetStringUTFChars(jMsg,0);

printf("JNI cikti stringi : %s\n",msg) ;

env->ReleaseStringUTFChars(jMsg, msg);

c++ dilindeki [Link] programý hazýrlanmýº ve

üstte hazýrladýðýmýz [Link] yardýmýyla

pcomp MsgImpl MsgI

komutu kullanýlarak derlenmiºtir. Program çýktýsý

java ShowMessage “Merhaba Dünya” komutu kullanýlarak :

JNI cikti stringi : Merhaba Dünya

veya

java ShowMessage komutu kullanýlarak

JNI cikti stringi : Bu mesaj javadan C++ ya gönderildi ve orada yazdýrýldý

Çýktýsý alýnabilir. Programda veri aktarýmý yapmak amacýyla java tarafýnda metod tanýmý
yapýlýrken

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private native void ShowMessage(String msg);

tanýmý verilmiºtir. Buradaki String msg metodun dolayýsýyla C++ fonksiyonunun girdisini teºkil
etmektedir. C++ tarafýnda mesajý alýrken,

Java_ShowMessage_ShowMessage(JNIEnv* env,

jobject, jstring jMsg)

const char* msg=env->GetStringUTFChars(jMsg,0);

jstring jMsg tanýmýyla aktarýlmýº ve const char* msg=env->GetStringUTFChars(jMsg,0);

tanýmýyla c deðiºkenine dönüºtürülmüºtür.

Javada Stringler unicode (16 bit) olarak tanýmlanmýºtýr. C stringleri ise 8 bitlik ascii char
boyutlu deðiºkeni olarak tanýmlanýr. Bu yüzden string deðiºkenlerini javadan cye veya cden
javaya aktarýrken dönüºümler yapmak gerekir. Ayný zamnda java string deðiºkenleri length
(boyut) deðiºkenini de bünyelerinde taºýrlar. Cde ise boyut tanýmlanmamýºtýr. Ayrý bir
deðiºken üzerinden tanýmlanmasý gerekebilir. Bu dönüºümleri yapmak için bir dizi metod
tanýmlanmýºtýr.

Bu tanýmalarýn tamamý ºöyledir :

GetStringChars

GetStringLength

GetStringUTFChars

GetStringUTFLength

NewString

NewStringUTF

ReleaseStringChars

ReleaseStringUTFChars

Buradaki ikinci örneðimizde java programýnda c++ dilindeki bir fonksiyonun (metod) yaptýðý
hesap sonuçlarýný aktaracaðýz. Programýmýz java’da çaðýrýlan bir C++ kare metodunu
kullanarak java dilinde girilen sayýnýn karesini hesaplayacaktýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 14.7 [Link] programý

class karesinifi {

private native double kare(double x);

public static void main(String args[]) {

karesinifi p = new karesinifi();

double x=2.0;

double y = [Link](x);

[Link]("" +x+" kare = "+ y);

static {

[Link]("kareI");

bu programý javac [Link] deyimiyle derleyip, javah karesinifi deyimiyle anadil


kütüphanesine çevirirsek

Program 14.8 karesinifi.h programý

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class karesinifi */

#ifndef _Included_karesinifi

#define _Included_karesinifi

#ifdef __cplusplus

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
extern "C" {

#endif

/*

* Class: karesinifi

* Method: kare

* Signature: (D)D

*/

JNIEXPORT jdouble JNICALL Java_karesinifi_kare

(JNIEnv *, jobject, jdouble);

#ifdef __cplusplus

#endif

#endif

karesinifi.h bize java programýndaki

private native double kare(double x);

metodunun c++ anadil (Native) karºýlýðýnýn

JNIEXPORT jdouble JNICALL Java_karesinifi_kare

(JNIEnv *, jobject, jdouble);

olduðunu göstermektedir. ªimdi kare metodunun aslýný C++ dilinde yazarsak :

Program 14.9 [Link] C++ programý

#include <stdio.h>

#include <jni.h>

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
#include "karesinifi.h"

JNIEXPORT jdouble JNICALL Java_karesinifi_kare(JNIEnv *, jobject, jdouble x )

return x*x;

burada metod isminin kare yerine Java_karesinifi_kare ºeklini aldýðýný görüyoruz. Double
deðiºkeni de yerini jdouble deðiºkenine býrakmýº durumda. Java anadilinde programlarý
yazarken metod isimleri

Java_sýnýfismi_metodismi

ªeklini alýr. Basit java deðiºkenlerinin Anadil karºýlýklarý ise

Tablo 14.1 Java deðiºken tipleri ve ana dil (native) eºdeðerleri

Java deðiºken Anadil (Native) Deðiºken bit


tipi deðiºken deðeri
eºdeðeri
Boolean 8, iºaretsiz
jboolean
Byte jbyte 8
Char jchar 16, iºaretsiz
Short jshort 16
Int jint 32
Long jlong 64
Float jfloat 32
Double 64
jdouble
Object
jobject
Void void Yok

ªeklindedir. C++ programý

pcomp karesinifi kareI

deyimiyle veya açýk yazýlýºýyla

cl -Ic:\co\java\include -Ic:\co\java\include\win32 -[Link] –[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
deyimiyle derlenirse (MS Visual C++ 6), sonuç :

2.0 kare = 4.0

ºeklinde çýkacaktýr.

ªimdi de bu iºlemin tam tersini inceleyelim. Java’da yazýlmýº olan kare metodunu C++ ve C
dillerinde çaðýralým.

Java programýmýz [Link] aºaðýdaki gibi tanýmlanmýºtýr.

Program 14.10 [Link] java programý

class karesinifi1 {

private native void nativeMethod();

private double kare(double x)

return x*x;

public static void main(String args[])

karesinifi1 c=new karesinifi1();

[Link]();

static {

[Link]("kare1I");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sýnýfýn alt sýnýfý olan kare’de girilen sayýnýn karesi hesaplanmaktadýr. NativeMethod metodu
da C (veya c++) dilleriyle baðlantý saðlamaktadýr. Metodumuzu yine java [Link] ile
derledikten sonra javah karesinifi1 komutuyla karesinifi1.h dosyasýný oluºtururuz. Bu dosya :

Program 14.11 karesinifi1.h programý

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class karesinifi1 */

#ifndef _Included_karesinifi1

#define _Included_karesinifi1

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: karesinifi1

* Method: nativeMethod

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_karesinifi1_nativeMethod

(JNIEnv *, jobject);

#ifdef __cplusplus

#endif

#endif

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
anadil tarafýnda program yazýlýrken bize yardýmcý olabilecek bir ara java programý javap de
mevcuttur.

Bu iºlemi yapmak zorunda deðiliz. Yapma sebebimizi c++ dili programýný inceleyince daha iyi
anlayacaksýnýz.

javap -s -p karesinifi1

Program 14.12 javap komutuyla oluºturulan ara kod

Compiled from [Link]

class karesinifi1 extends [Link] {

karesinifi1();

/* ()V */

private native void nativeMethod();

/* ()V */

private double kare(double);

/* (D)D */

public static void main([Link][]);

/* ([Ljava/lang/String;)V */

static {};

/* ()V */

ºimdi c++ koduna bakalým :

Program 14.13 [Link] programý

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
#include <stdio.h>

#include <iostream.h>

#include <jni.h>

#include "karesinifi1.h"

JNIEXPORT void JNICALL Java_karesinifi1_nativeMethod(JNIEnv *env, jobject obj)

jclass cls=env->GetObjectClass(obj);

jmethodID mid=env->GetMethodID(cls,"kare","(D)D");

double x=2.0;

double y=env->CallDoubleMethod(obj,mid,x);

cout<<x<<"nin karesi = "<<y;

Bu programda önce java sýnýfýnýn (karesinifi1) aktarýlmasý jobject obj deðiºkeni ve

jclass cls=env->GetObjectClass(obj);

üzerinden yapýlýr. Burada sýnýf adresi cls deðiºkenine yüklenmiº olur. Alt metod karenin
tanýmý için

jmethodID mid=env->GetMethodID(cls,"kare","(D)D");

tanýmý kullanýlmýºtýr. Buradaki “(D)D” tanýmý program 14.12 de bize verilmiºti. Anlamý java
programýndaki kare metodunun double deðiºken giriºi olduðu ve çýkýºýnda double deðiºken
istediðidir. “kare” deyimiyle metodun javadaki ismi verilmiºtir. Cls ise üstte tanýmladýðýmýz
karesinifi1 java sýnýfýnýn adresine belirtmektedir.

double y=env->CallDoubleMethod(obj,mid,x);

deyimiyle de metodu çaðýrýp sonuçlarýný y deðiºkenine yüklemekteyiz.

Burada kullandýðýmýz D iºareti java deðiºken türünün double olduðunu belirtiyordu. Java
deðiºken tiplerinin iºaret karºýlýklarý Tablo 14.2 de verilmiºtir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Tablo 14.2 Java tiplerinin eºdeðer iºaretleri

ݺaret Java deðiºken tipi


Z boolean
B Byte
C Char
S Short
I Int
J Long
F Float
D Double
L sýnýf ismi sýnýf ismi
[Deðiºken türü Deðiºken türü[]

Bu programda sýnýfý çaðýrmak için GetObjectClass metodu, metodu tanýmlamak içinde


GetMethodID metodunu kullandýk. CallDoubleMethod metodu ile de metodu çalýºtýrdýk.
Paralel iºlemleri yapmak için mevcut olan metod listesi ve anlamlarý ºöyledir :

GetObjectClass : sýnýf adresini tanýmlar

GetMethodID : dinamik metod adresini tanýmlar

GetStaticMethodID : statik metod adresini tanýmlar

Call<deðiºkentürü>Method : çeºitli metodlarý çaðýrýr

CallBooleanMethod

CallByteMethod

CallCharMethod

CallDoubleMethod

CallFloatMethod

CallIntMethod

CallLongMethod

CallObjectMethod

CallShortMethod

CallVoidMethod

CallStatic< deðiºkentürü >Method : statik metodlarý çaðýrýr, deðiºken türleri olarak


yukaridakinin ayný

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
türleri kabul eder.

CallNonvirtual< deðiºkentürü >Method

Call< deðiºkentürü >MethodV

Call< deðiºkentürü >MethodA

Ayný programýn c dilinde yazýlmasý küçük farklýlýklar taºýr. C dilideki program :

Program 14.14 karesinifi1.c programý

#include <stdio.h>

#include <jni.h>

#include "karesinifi1.h"

JNIEXPORT void JNICALL Java_karesinifi1_nativeMethod(JNIEnv *env, jobject obj)

jclass cls=(*env)->GetObjectClass(env,obj);

jmethodID mid=(*env)->GetMethodID(env,cls,"kare","(D)D");

double x=2.0;

double y=(*env)->CallDoubleMethod(env,obj,mid,x);

printf("%f nin karesi = %f ",x,y);

programdan da görüldüðü gibi C++ daki :

jclass cls=env->GetObjectClass(obj);

komutu

jclass cls=(*env)->GetObjectClass(env,obj);

halini almýºtýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
jmethodID mid=env->GetMethodID(cls,"kare","(D)D");

komutu

jmethodID mid=(*env)->GetMethodID(env,cls,"kare","(D)D");

halini almýºtýr.

double y=env->CallDoubleMethod(obj,mid,x);

komutu ise

double y=(*env)->CallDoubleMethod(env,obj,mid,x);

halini almýºtýr. Sonuç olarak env yerine referans deðiºkeni (*env) gelmektedir ve env referans
deðiºkeni ayný zamanda metod deðiºkeni olarakda çaðýrýlmaktadýr. Bunun dýºýnda iºlemler
arasýnda bir fark yoktur.

Program java karesinifi1 deyimiyle çalýºtýrýldýðýnda

2nin karesi = 4

sonucunu alýrýz.

Ýkinci bir sýnýf ulaºým örneði olarak UseObjects programýný verelim. Burada sýnýf,
MyJavaClass içinde bir int deðiºken ve bir void metod mevcuttur. Ýkinci bir metod olan
UseObjects metodu kullanýlarak native metod changeObject’e ulaºýlmakta ve bu metod c++
programýnda kullanýlarak sonuçlar hesaplanmaktadýr.

Program 14.15 [Link] programý

//[Link]

class MyJavaClass {

public int aValue;

public void divByTwo() { aValue /= 2; }

public class UseObjects {

private native void

changeObject(MyJavaClass obj);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
static {

[Link]("UseObjImpl");

public static void main(String[] args) {

UseObjects app = new UseObjects();

MyJavaClass anObj = new MyJavaClass();

[Link] = 2;

[Link](anObj);

[Link]("Java: " + [Link]);

Program 14.16 javah UseObject komutu kullanýlarak oluºturulan UseObjects.h


programý

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class UseObjects */

#ifndef _Included_UseObjects

#define _Included_UseObjects

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: UseObjects

* Method: changeObject

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
* Signature: (LMyJavaClass;)V

*/

JNIEXPORT void JNICALL Java_UseObjects_changeObject

(JNIEnv *, jobject, jobject);

#ifdef __cplusplus

#endif

#endif

Program 14.17 [Link] programý

#include <jni.h>

extern "C" JNIEXPORT void JNICALL

Java_UseObjects_changeObject( JNIEnv* env, jobject, jobject obj)

jclass cls = env->GetObjectClass(obj);

jfieldID fid = env->GetFieldID(cls, "aValue", "I");

jmethodID mid = env->GetMethodID(cls, "divByTwo", "()V");

int value = env->GetIntField(obj, fid);

printf("Native: %d\n", value);

env->SetIntField(obj, fid, 6);

env->CallVoidMethod(obj, mid);

value = env->GetIntField(obj, fid);

printf("Native: %d\n", value);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 14.15 de tanýmlanan MyJavaClass sýnýfý bir int deðiºken, aValue, ve bir metod,
divByTwo , içermektedir. Metod int de verilen deðeri 2 ye bölmekte ve sonucu aktarmaktadýr.
Bu programda int sýnýf alt deðiºkenini tanýmlamak için

jfieldID fid = env->GetFieldID(cls, "aValue", "I");

deyimini kullandýk. Void aValue metodu

jmethodID mid = env->GetMethodID(cls, "divByTwo", "()V");

deyimiyle tanýmlandý. Ve

env->SetIntField(obj, fid, 6);

tanýmýyla 6 deðeri atandý.

Sýnýflarýn alt deðiºkenlerine deðer atamak (ve okumak )için

GetFieldID

GetStaticFieldID

Get< deðiºkentürü >Field

GetBooleanField

GetByteField

GetCharField

GetDoubleField

GetFloatField

GetIntField

GetLongField

GetObjectField

GetShortField

Set< deðiºkentürü >Field

GetStatic< deðiºkentürü >Field

SetStatic< deðiºkentürü >Field

Metodlarý mevcuttur.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªimdi de Çok boyutlu deðiºkenleri nasýl kullanabildiðimizi inceleyelim :

Program 14.18 [Link] programý

class IntArray {

private native int sumArray(int arr[]);

public static void main(String args[]) {

IntArray p = new IntArray();

int arr[] = new int [10];

for (int i = 0; i < 10; i++)

arr[i] = i;

int sum = [Link](arr);

[Link]("sum = " + sum);

static {

[Link]("MyImpOfIntArray");

Program 14.19 IntArray.c programý

#include <jni.h>

#include "IntArray.h"

JNIEXPORT jint JNICALL

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Java_IntArray_sumArray(JNIEnv *env, jobject obj, jintArray arr)

jsize len = (*env)->GetArrayLength(env, arr);

int i, sum = 0;

jint *body = (*env)->GetIntArrayElements(env, arr, 0);

for (i=0; i<len; i++) {

sum += body[i];

(*env)->ReleaseIntArrayElements(env, arr, body, 0);

return sum;

burada tanýmlanan java programýnda boyutlu deðiºken arr tanýmlanmýº, ve boyutlu


deðiºkenin toplamý c programýnda hesaplanmýºtýr. C metodunda boyutlu deðiºkeni
tanýmlamak için jintArray türü arr deðiºkeni kullanýlmýºtýr. Boyutlu deðiºkenin boyutu jsize tipi
len deðiºkenine

jsize len = (*env)->GetArrayLength(env, arr);

deyimiyle aktarýlmýºtýr.

arr deðiºkeninin deðeri jint tipi body boyutlu deðiºkene, indeksi 0dan baºlamak üzere

jint *body = (*env)->GetIntArrayElements(env, arr, 0);

metoduyla aktarýlýr.

arr boyutlu deðiºkeninin deðeri (deðerler deðiºmiºte olabilir) tekrar kullanýlabilmek üzere

(*env)->ReleaseIntArrayElements(env, arr, body, 0);

deyimi kullanýlarak serbest býrakýlýr (javaya gönderilir). Bu iºlemlerin sonucunda java


programý :

sum = 45

sonucunu verecektir. JNI boyutlu deðiºken çaðýrma fonksiyonlarý(metodlarý) ºöyledir :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
GetArrayLength

Get< deðiºkentürü >ArrayElements

GetBooleanArrayElements

GetByteArrayElements

GetCharArrayElements

GetDoubleArrayElements

GetFloatArrayElements

GetIntArrayElements

GetLongArrayElements

GetShortArrayElements

Release< deðiºkentürü >ArrayElements

Get< deðiºkentürü >ArrayRegion

Set< deðiºkentürü >ArrayRegion

GetObjectArrayElement

SetObjectArrayElement

Java dilinde tanýmlanmýº, fakat c dilinde direk tanýmlanmamýº iºlemlerden birisi de hata
analiz iºlemidir (Catch-throw exception). Ana dil programlamasý kullanýrken, bu iºlemi de
yapmak mümkündür. Aºaðýdaki CatchThrow program setinde hata sisteminin kullanýlmasýný
görüyoruz.

Program 14.20 [Link] programý

class CatchThrow {

private native void catchThrow() throws IllegalArgumentException;

private void callback() throws NullPointerException {

throw new NullPointerException("thrown in [Link]");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static void main(String args[]) {

CatchThrow c = new CatchThrow();

try {

[Link]();

} catch (Exception e) {

[Link]("In Java:\n " + e);

static {

[Link]("MyImpOfCatchThrow");

Program 14.21 CatchThrow.c programý

#include <jni.h>

#include "CatchThrow.h"

JNIEXPORT void JNICALL

Java_CatchThrow_catchThrow(JNIEnv *env, jobject obj)

jclass cls = (*env)->GetObjectClass(env, obj);

jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "()V");

jthrowable exc;

if (mid == 0) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
return;

(*env)->CallVoidMethod(env, obj, mid);

exc = (*env)->ExceptionOccurred(env);

if (exc) {

/*

Biz aslýnda c’de hata konusunda gerçekten bir ºey yapmýyoruz,

sadece bir mesaj iletiyoruz, hata deðiºkenini temizliyoruz ve

yeni bir exception gönderiyoruz. */

jclass newExcCls;

(*env)->ExceptionDescribe(env);

(*env)->ExceptionClear(env);

newExcCls = (*env)->FindClass(env, "java/lang/IllegalArgumentException");

if (newExcCls == 0) { /* Unable to find the new exception class, give up. */

return;

(*env)->ThrowNew(env, newExcCls, "thrown from C code");

bu programý çalýºtýrdýðýmýzda :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sonucunu alýrýz. Buradaki

In Java:

[Link]: thrown from C code

mesajý c tarafýndan oluºturulup gönderilmiºtir.

JNI Hata fonksiyonlarý ºunlardýr :

ExceptionClear

ExceptionDescribe

ExceptionOccurred

Burada iki dilli programlama kavramýna bir giriº yaptýk. Buradaki kavramlar size biraz zor
geldiyse lütfen umutsuzluða kapýlmayýn, java ve C dillerini çok iyi öðrendikten sonra geri
dönün. Ýki dilli programlama her zaman programlama dünyasýnýn en zor iºlerindendir, ayrýca
jbuilder, Microsoft j++ gibi paketler java anadil (native) programlamasýnda iºleri kolaylaºtýran
otomatik kod oluºturma sisyemleri sunarlar, bu tür programlama araçlarýyla iºinizi daha kolay
hale getirebilirsiniz.

BÖLÜM 15 JAVA BEANS (JAVA FASULYELERÝ) PROGRAMLAMA

15.1 TEMEL KAVRAMLAR

Java beans tekrar kullanýlabilir paketler halinde java programlamasý geliºtiren, ayný zamanda
hýzlý yeni geliºtirmelere de ön ayak olan bir programlama sistemidir. Daha önceden
programlanmýº hazýr program paketçiklerinin ve apletlerinin bilgisayarlar arasýnda hýzlý bir
ºekilde alýºveriºine yardýmcý olan bir sistemdir. "Java beans" kavramý yeni bir programlama

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ºeklini getirebilir. Bu kod yazma yerine program parçacýklarýný birleºtirerek programlama
yapan bir programcý olabilir.

Java beans sistemini kullanmak için "JavaBeans development kit" Java bean kullanma
seti'ne ihtiyacýnýz vardýr. Bu seti [Link] adresinden
kopyalayabilirsiniz. Java bean kullanma setinin Java 1.1 versiyonu da olmakla birlikte biz
burada 1.2 versiyonunun kullanýldýðýný varsayacaðýz.. Java Bean geliºtirme setini kullanmak
için önce programý kurmamýz gerekir. Paketi java dosyalarýnýzýn olduðu ana dosyanýn bir alt
dosyasý veya baðýmsýz bir dosya sisteminde tanýmlayabilirsiniz. Bu dosyanýn alt dosyasý
olarak beanbox alt dosyasý mevcuttur. Bu dosyanýn altýnda window sisteminde [Link],
unix sisteminde [Link] dosyasýný bulacaksýnýz. bu dosyayý açtýðýnýzda beanbox açýlacaktýr.
Beanbox programýný açtýðýmýzda, yanýnda Toolbox(aletkutusu), Properties (özellikler) ve
Method tracer( metot izleyici) adý verilen programlarý da göreceðiz. ToolVox kutusunda jars
alt dosyasýnda yer aln bean program paketlerinin listesini göreceðiz bunlarýn birini secip
BeanBox kutusuna getirince bu program çalýºmaya baºlýyacaktýr. Örneðin ªekil 15.1 de
Bean Box ve içinde çalýºan Jogler programýný görmekteyiz.

[Link]

ªekil 15.1 Juggler bean programýnýn BeanBox'da görünümü

15.2 Bean programýný geliºtirme

ªimdi kendi bean programýmýzý nasýl yazabileceðimize bir göz atalým. Daha önceki
bölümlerde [Link] programýný geliºtirmiº ve bu programdan yola çýkarak analog saat ve
çeºitli çizim programlarý yazmýºtýk. Önce [Link] programýnýn swing ve Graph2D olarak
deðiºtirlmiº ºekline bir göz atalým

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 15.1 [Link] programý, yildiz sýnýfý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import polar;

public class yildizSW

public static void drawYildiz1(Graphics g2,int xi,int yi, int n,int yildizboyu,double aci )

// bu yildiz cizime teta=pi/2+aci radyandan baslar

Graphics2D g=(Graphics2D)g2;

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

for(int i=0;i<n;i++)

double teta1=teta*i+[Link]/2.0+aci;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double teta2=teta/2+teta1;

[Link](R,teta1);

[Link](r,teta2);

[Link]((xi+(int)[Link]()),(yi-(int)[Link]()),

(xi+(int)[Link]()),(yi-(int)[Link]()));

double teta3=teta*(i+1)+[Link]/2.0+aci;

[Link](R,teta3);

[Link]((xi+(int)[Link]()),(yi-(int)[Link]()),

(xi+(int)[Link]()),(yi-(int)[Link]()));

[Link](xi,yi,

(xi+(int)[Link]()),(yi-(int)[Link]()));

[Link](xi,yi,

(xi+(int)[Link]()),(yi-(int)[Link]()));

} //drawYildiz1 metodu sonu

public static void drawYildiz1(Graphics g2,int xi,int yi, int n,int yildizboyu )

drawYildiz1(g2,xi,yi,n,yildizboyu,0);

} //drawYildiz1 metodu sonu

public static void drawYildiz(Graphics g2,int xi,int yi, int n,int yildizboyu,double aci )

Graphics2D g=(Graphics2D)g2;

// bu yildiz cizime teta=pi/2+aci radyandan baslar

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

GeneralPath polygon=new GeneralPath(GeneralPath.WIND_EVEN_ODD,

[Link]);

for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta/2.0+teta1;

[Link](R,teta1);

[Link](r,teta2);

x[2*i]=xi+(int)[Link]();

y[2*i]=yi-(int)[Link]();

x[2*i+1]=xi+(int)[Link]();

y[2*i+1]=yi-(int)[Link]();

if(i==n)

x[2*i]=x[0];

y[2*i]=y[0];

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

for(int i=0;i<=2*n;i++)

if(i==0)

[Link](x[0],y[0]);

else

[Link](x[i],y[i]);

[Link](polygon);

} //drawYildiz1 metodu sonu

public static void fillYildiz(Graphics g2,int xi,int yi, int n,int yildizboyu,double aci )

Graphics2D g=(Graphics2D)g2;

// bu y�ld�z cizime teta=pi/2+aci radyandan baslar

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
polar P3=new polar();

int x[]=new int[2*n+2];

int y[]=new int[2*n+2];

GeneralPath polygon=new GeneralPath(GeneralPath.WIND_EVEN_ODD,

[Link]);

for(int i=0;i<=n;i++)

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta/2.0+teta1;

[Link](R,teta1);

[Link](r,teta2);

x[2*i]=xi+(int)[Link]();

y[2*i]=yi-(int)[Link]();

x[2*i+1]=xi+(int)[Link]();

y[2*i+1]=yi-(int)[Link]();

if(i==n)

x[2*i]=x[0];

y[2*i]=y[0];

for(int i=0;i<=2*n;i++)

if(i==0)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

[Link](x[0],y[0]);

else

[Link](x[i],y[i]);

[Link](polygon);

} //fillYildiz metodu sonu

public static void fillAkrep(Graphics g2,int xi,int yi, int n,int yildizboyu,double aci,int i )

// bu yýldýz cizime teta=pi/2+aci radyandan baslar

// yildýzin i‡ini boyar

Graphics2D g=(Graphics2D)g2;

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

int x[]=new int[5];

int y[]=new int[5];

GeneralPath polygon=new GeneralPath(GeneralPath.WIND_EVEN_ODD,

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]);

x[0]=xi;

y[0]=yi;

x[4]=xi;

y[4]=yi;

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta1+teta/2.0;

double teta3=teta1-teta/2+[Link]*2;

[Link](R,teta1);

[Link](r,teta2);

[Link](r,teta3);

x[1]=xi+(int)[Link]();

y[1]=yi-(int)[Link]();

x[2]=xi+(int)[Link]();

y[2]=yi-(int)[Link]();

x[3]=xi+(int)[Link]();

y[3]=yi-(int)[Link]();

for(i=0;i<5;i++)

if(i==0)

[Link](x[0],y[0]);

else

[Link](x[i],y[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link](polygon);

} //fillAkrep metodu sonu

public static void drawAkrep(Graphics g2,int xi,int yi, int n,int yildizboyu,double aci,int i )

Graphics2D g=(Graphics2D)g2;

double teta=2.0*[Link]/n;

double R=yildizboyu;

double r=yildizboyu*0.25;

polar P1=new polar();

polar P2=new polar();

polar P3=new polar();

int x[]=new int[5];

int y[]=new int[5];

GeneralPath polygon=new GeneralPath(GeneralPath.WIND_EVEN_ODD,

[Link]);

x[0]=xi;

y[0]=yi;

x[4]=xi;

y[4]=yi;

double teta1=teta*i+[Link]/2.0+aci;

double teta2=teta1+teta/2.0;

double teta3=teta1-teta/2+[Link]*2;

[Link](R,teta1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](r,teta2);

[Link](r,teta3);

x[1]=xi+(int)[Link]();

y[1]=yi-(int)[Link]();

x[2]=xi+(int)[Link]();

y[2]=yi-(int)[Link]();

x[3]=xi+(int)[Link]();

y[3]=yi-(int)[Link]();

for(i=0;i<5;i++)

if(i==0)

[Link](x[0],y[0]);

else

[Link](x[i],y[i]);

[Link](polygon);

} //drawAkrep metodu sonu

public static void drawDaire(Graphics g2, int xi,int yi, int R)

Graphics2D g=(Graphics2D)g2;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](new [Link]((int)(xi-R),(int)(yi-R),2*R,2*R));

public static void fillDaire(Graphics g2, int xi,int yi, int R)

Graphics2D g=(Graphics2D)g2;

[Link](new [Link]((int)(xi-R),(int)(yi-R),2*R,2*R));

ªimdi ilk bean programýmýzý hazýrlýyalým. Önce programýmýzý yazalým. program 15.2 de
[Link] programý görülmektedir. Bu programda Serializable sýnýfý implement
edilmiºtir. bunun dýºýnda normal bir java programýdýr. Programýn Jpanel olarak yazýlmýº
olduðuna dikkat edelim. Bu yüzden

java yildizciz2Dbean

terimi kullanýlarak çalýºtýrýlabilir.

Program 15.2 [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class yildizciz2Dbean extends JPanel implements ActionListener,Serializable

final static Color bg=[Link];

final static Color fg=[Link];

final static Color kirmizi=[Link];

final static Color beyaz=[Link];

public yildizciz2Dbean()

setSize(getPrefferedSize());

public void init()

setBackground(bg);

setForeground(fg);

public Dimension getMinimumSize()

return getPrefferedSize();

public Dimension getPrefferedSize()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

return new Dimension(180,100);

public void paintComponent(Graphics g2)

[Link](g2);

Graphics2D g = (Graphics2D) g2;

Dimension boyut=getSize();

int dx=[Link]/2;

int dy=[Link];

[Link](getBackground());

g.draw3DRect(0,0,[Link]-1,[Link]-1,true);

g.draw3DRect(3,3,[Link]-7,[Link]-7,false);

//cizgiciz

[Link](g,dx/2,dy/2, 3,dy/2-5,0 );

[Link]([Link]);

[Link](g,dx/2,dy/2, 3,dy/2-5,0 );

[Link]([Link]);

yildizSW.drawYildiz1(g,3*dx/2,dy/2, 3,dy/2-5,0 );

public void actionPerformed(ActionEvent e)

repaint();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public static void main(String s[]) {

yildizciz2Dbean yildiz=new yildizciz2Dbean();

JFrame f = new JFrame("yildiz ciz 2D ");

[Link]().add(yildiz,[Link]);

[Link](

new WindowAdapter()

public void windowClosing(WindowEvent e)

[Link](0);

);

[Link]([Link]().width+10,

[Link]().height+30);

[Link]();

Bölüm 7.14 de bir tür program paketleme yolu olan jar deyimi ve kullanýlmasýndan kýsaca
bahsedilmiºti. Burada programýmýzý bir jar dosyasý haline getireceðiz. Fakat bunu yaparken
ayný zamanda hem jarýn içinde hangi dosyanýn ana programý içerdiðini, hemde Java-bean
olarak kullanýlma izni veren Java_Bean komutunu veren MANIFEST:MF dosyasýný
oluºturacaðýz. Bunu yapmak için [Link] isimli birdosya hazýrlayacaðýz. Bu dosyanýn
içeriði :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Main-Class: yildiz2Dbean

Name: [Link]

Java-Bean: True

ºeklinde olacaktýr. [Link] isimli jar dosyasýný oluºturmak için:

jar cfm [Link] [Link] [Link] yildizciz2Dbean$[Link]


[Link] [Link] [Link] [Link]

komutunu kullanabiliriz. Burada yildizSW da kullanýlan polar, renk sýnýflarýnýn da jar gurubuna
ilave edildiðine dikkat edelim. Bu komut [Link] dosyasýný yaratacaktýr. ªimdi programýmýzý

java -jar [Link]

komutunu kullanarak çalýºtýrabiliriz. Program

java -cp [Link] yildiz2Dbean

komutuyla da çalýºtýrýlabilir.

[Link] dosyasýnýn içeriðini görmek istersek

jar tvf [Link]

komutunu kullanabiliriz. Bu komut bize

0 Sat Mar 04 11:18:32 GMT+02:00 2000 META-INF/

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
143 Sat Mar 04 11:18:32 GMT+02:00 2000 META-INF/[Link]

2454 Sat Mar 04 11:18:26 GMT+02:00 2000 [Link]

410 Sat Mar 04 11:18:26 GMT+02:00 2000 yildizciz2Dbean$[Link]

1924 Mon Dec 13 15:21:50 GMT+02:00 1999 [Link]

3345 Sat Mar 04 08:46:04 GMT+02:00 2000 [Link]

1775 Sat Mar 04 08:45:48 GMT+02:00 2000 [Link]

sonucunu verecektir. Tanýmladýðýmýz [Link] dosyasý ayný zamanda bir JavaBean


dosyasýdýr. Bu dosyayý jars alt direktörüsüne ytaºýdýktan sonra beanbox direktörüüsndeki
[Link] komutunu kullanarak beanbox programýmýzý açabilir ve bu ortamda gösterebiliriz.
ªekil 15.2 de Java Bean haline gelmiº olan programýmýz görülmektedir.

Ýkinci bir örnek olarak ayný yýldýz çizme prosesini amimasyon olarak yapacak
[Link] programýný veriyoruz. Bu programda kullanýlan stopAnimation() ve
startAnimation() metodlarý animasyonu baºlatma ve durdurma iºlevlerini görmektedirler.
Animasyon baºladýðýnda çizilen yýldýz dönmektedir. Program 15.3 de bu programýn listesi
verilmiºtir.

yildizAnimator programý bir önceki yildizciz2Dbean programýna göre biraz daha detaylýdýr.
örneðin yýldýzýn kanat sayýsýný deðiºtirebilen metodlara sahiptir. Burada da bir öceki
programla ayný yollarý izleyerek [Link] dosyasýný oluºrurduk ve jars alt
direktörüsüne yerleºtirdik.

[Link]

ªekil 15.2 yildiz2Dbean programýnýn BeanBox'da görünümü

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 15.3 [Link] programý

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class yildizAnimator extends JPanel

implements ActionListener, Serializable

protected int animationDelay;

protected Timer animationTimer;

protected int yildizkosesayisi;

protected double aci;

protected double piaci=[Link]/360;

public yildizAnimator()

setSize( getPreferredSize() );

startAnimation();

yildizkosesayisi=5;

aci=0;

animationDelay = 1000; // 1000 milisaniye gecikme

setForeground([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void paintComponent( Graphics g2 )

[Link]( g2 );

Graphics2D g = (Graphics2D) g2;

Dimension boyut=getSize();

int dx=[Link];

int dy=[Link];

[Link](getBackground());

[Link](getForeground());

yildizSW.drawYildiz1(g,dx/2,dy/2, yildizkosesayisi,dy/2-5,aci);

aci+=piaci;

public void setYildizkosesayisi(int syks)

yildizkosesayisi=syks;

public int getYildizkosesayisi()

return yildizkosesayisi;

public void setAci(int iaci)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
aci=iaci;

public double getAcii()

return aci;

public void setAnimationDelay(int iad)

animationDelay=iad;

public int getAnimationDelay()

return animationDelay;

public void actionPerformed( ActionEvent e )

repaint();

public void startAnimation()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if ( animationTimer == null )

animationTimer = new Timer( animationDelay, this );

[Link]();

else // continue

if ( ! [Link]() )

[Link]();

public void stopAnimation()

[Link]();

public Dimension getMinimumSize()

return getPreferredSize();

public Dimension getPreferredSize()

return new Dimension( 160, 80 );

public static void main( String args[] )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

yildizAnimator anim = new yildizAnimator();

JFrame app = new JFrame( "yildiz Animator testi" );

[Link]().add( anim, [Link] );

[Link](

new WindowAdapter() {

public void windowClosing( WindowEvent e )

[Link]( 0 );

);

[Link]( [Link]().width + 10,

[Link]().height + 30 );

[Link]();

[Link] dosyasýnýn BeanBox'daki görüntüsü :

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 15.3 [Link] programýnýn BeanBox'ta görünümü

BeanBox Properties penceresini kullanarak program çalýºýrken özelliklerini deðiºtirebilirsiniz.


Örneðin yýldýzýn ve arka planýn çizim renklerini deðiºtirebilirsiniz.

ªu ana kadar yeni bir ortamda çalýºmakla birlikte bu bölümün baºýnda söylediðimiz gibi
programlama olmadan çalýºtýðýmýzý söylemek pek mümkün deðil. Fakat bundan sonraki
kýsýmlarda programý bilgisayar oluºturacaktýr. Örnegin yildiz döndüren yildizAnaimator
programýmýza animasyonu baºlatacak ve durduracak komutlar ilave etmek isteyelim. Bunun
için yeni bir program yazmak mümkündür. Fakat program yazmadan bu yeni düzenlemeyi
BeanBox üzerinden gerçekleºtirebiliriz. Bunu yapmak için önce beanBox'ta daha önce hazýr
olarak tanýmlanmýº bulunan ExplicitButton bean'ini seçelim ve bean box'a ilave edelim.
Daha sonra properties penceresindeki , "press" yazýsýný "animasyonu baslat" olarak
deðiºtirelim. Ayný iºlemi tektrarlayarak "animasyonu durdur düðmesi oluºturalým. Sonra
Animasyomu baºlat düðmesini seçelim. BeanBox da Edit, Events, button
push,actionPerformed dizisini seçtikten sonra faremizin ucunda bir doðru oluºacaktýr. bu
doðruyu yildizAnimasyon penceresinin içine çekerek sol mouse düðmesine basalým.

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 15.4-15.5 BeanBox'ta startAnimation metodunun" Animasyonu baslat"


düðmesine actionPerformed olarak eklenmesi.

EventTargetDialog penceresi ekrana gelecektir. Bu pencerede startAnimation metodunu


seçelim ve OK düðmesine basalým. Bu yeni program yeni bir kod oluºturaracaktýr. Ayný ºeyi
Animasyonu durdur düðmesi için de tekrarlýyalým. yalnýz bu kez stopAnimation metodunu
seçelim. Yeni programýmýz animasyonu durduran ve tekrar çalýºtýran düðmeleriyle birlikte
hazýr hale gelecektir. Dügmelere basarak çalýºmasýný deneyiniz.

[Link]

ªekil 15.6 BeanBox'ta startAnimation metodunun" tamamlanmýº ºekli

Oluºan yeni programý kaydedebiliriz. Bilgisayarýn oluºturduðu java program kodu aºaðýdaki
gibidir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 15.4 [Link] programýna BeanBox'da animasyon baºlatma ve
durdurma düðmelerinin eklenmesinden sonra otomatik olarak oluºturulan
serizalizable [Link] program

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

public class MyApplet extends Applet implements Serializable {

// Public 0-argument constructor

public MyApplet() {

InputStream is = [Link]().getResourceAsStream("MyAppletData");

if (is == null) {

[Link]("Could not locate the Applet data at MyAppletData");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
throw new Error("Could not locate the Applet data at MyAppletData");

[Link](null);

try {

ObjectInputStream ois = new ObjectInputStream(is);

initContentsFromStream(ois);

} catch (Exception ex) {

[Link]("trouble reading from serialized data: "+ex);

throw new Error("trouble reading from serialized data: "+ex);

// Preferred size

public Dimension getPreferredSize() {

return getMinimumSize();

// Preferred size

public Dimension getMinimumSize() {

return new Dimension(382, 161);

// Read hidden-state beans from stream

private void initContentsFromStream([Link] ois)

throws [Link],

[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

Object[] data = (Object[]) [Link]();

String id = (String) data[0];

if (! [Link]("MyApplet")) {

throw new Error("Wrong data!");

// Get references to hidden-state beans

explicitButton1 = ([Link]) data[1];

explicitButton2 = ([Link]) data[2];

// Initialize the remainder of the applets contents

// including acquiring its nested beans and reconnecting hookups.

initContents();

// Initialize nested beans

private void initContents()

throws [Link],

[Link]

myLoader = [Link]().getClassLoader();

propInstances = new Hashtable();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// Create nested beans

yildizAnimator1 = (yildizAnimator) [Link](myLoader,"yildizAnimator");

// position all nested beans - we don't have it initially

acquire(yildizAnimator1, new Rectangle(10, 3, 160, 153));

acquire(explicitButton1, new Rectangle(205, 9, 150, 24));

acquire(explicitButton2, new Rectangle(206, 46, 148, 24));

// Add their connections

addConnections();

private void addConnections() {

try {

//

hookup0 = new [Link].___Hookup_163021aed5();

[Link](yildizAnimator1);

[Link](hookup0);

//

hookup1 = new [Link].___Hookup_163021cf3b();

[Link](yildizAnimator1);

[Link](hookup1);

//

// No property adaptors. A typical example is:

// hookup0 = addPropertyTarget(

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
// ourButton1,

// "foreground",

// "background",

// "setBackground", new String[] {"[Link]"});

} catch (Exception ex) {

[Link]("Problems adding a target: "+ex);

[Link]();

private void addReconnections() {

try {

//

//

//

// No property adaptors. A typical example is:

// hookup0 = addPropertyTarget(

// ourButton1,

// "foreground",

// "background",

// "setBackground", new String[] {"[Link]"});

// No method adaptors. A typical example is:

// hookup0 = new MyActionAdaptor();

// [Link](hookup0);

} catch (Exception ex) {

[Link]("Problems adding a target: "+ex);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

// Serialization code - readObject

private void readObject([Link] ois)

throws [Link],

[Link]

// Initialize object from stream

Object[] data = (Object[]) [Link]();

myLoader = [Link]().getClassLoader();

propInstances = new Hashtable();

String id = (String) data[0];

if (! [Link]("MyApplet")) {

throw new Error("Wrong data!");

// Get references to nested beans

yildizAnimator1 = (yildizAnimator) data[1];

explicitButton1 = ([Link]) data[2];

explicitButton2 = ([Link]) data[3];

// Don't position nested beans

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
acquire(yildizAnimator1, null);

acquire(explicitButton1, null);

acquire(explicitButton2, null);

// Reconnect their connections

addReconnections();

// Serialization code - writeObject

private void writeObject([Link] oos)

throws [Link]

Object data[] = new Object[4];

data[0] = "MyApplet";

data[1] = yildizAnimator1;

data[2] = explicitButton1;

data[3] = explicitButton2;

// Write the object out

[Link](data);

// The fields used to hold the beans

private yildizAnimator yildizAnimator1;

private [Link] explicitButton1;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private [Link] explicitButton2;

// The hookups

private [Link].___Hookup_163021aed5 hookup0;

private [Link].___Hookup_163021cf3b hookup1;

// No property adaptors. A typical example is:

// private PropertyHookup hookup1;

// the loader so we can locate the resource file

private ClassLoader myLoader;

// ===========================================

// Support code

// ===========================================

// It really belongs in [Link] but it is here for your reading pleasure

// Acquire a bean

private void acquire(Object bean, Rectangle boundsData) {

if (!(bean instanceof Component)) {

return;

if (bean instanceof Applet) {

[Link]((Applet) bean,

myLoader,

[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
add((Component) bean);

if (boundsData != null) {

((Component) bean).setBounds(boundsData);

((Component)bean).invalidate(); // not needed?

if (bean instanceof Applet) {

// Start the Applet

((Applet)bean).start();

// Add a property bound via an adaptor

Hashtable propInstances = new Hashtable();

private PropertyHookup addPropertyTarget(Object source,

String propertyName,

Object targetObject,

String setterName, String[] setterTypeNames) throws Exception

Object args[] = new Object[1]; // arguments

Class types[] = new Class[1]; // types

Class pClass = [Link];

PropertyHookup hook = (PropertyHookup) [Link](source);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if (hook == null) {

// This is the first property hookup on this source object

// Push a PropertyHookup adaptor onto the source

hook = new PropertyHookup(source);

[Link](source, hook);

// find the adder

types[0] = pClass;

Method adder = [Link]().getMethod("addPropertyChangeListener", types);

// invoke the adder

args[0] = hook;

[Link](source, args);

// get setter

Method setter = [Link]().getMethod(setterName,

getClassFromTypes(setterTypeNames));

[Link](propertyName, targetObject, setter);

return hook;

private Class[] getClassFromTypes(String types[]) throws Exception {

Class[] back = new Class[[Link]];

for (int i=0; i<[Link]; i++) {

Class c = unwrapPrimitiveStringToClass(types[i]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
if (c == null)

back[i] = [Link](types[i]);

else

back[i] = c;

return back;

private Class unwrapPrimitiveStringToClass(String s) {

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

if ([Link]([Link]())) return [Link];

return null;

// ===========================================

// End of Support code

// ===========================================

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªüphesiz bu program kodunu biz çok daha kýsa ve etkili ekilde yazabilirdik, ancak otomatik
kod oluºturmanýn zamansal olarak saðladýðý avantaj ile bizim harcayacaðýmýz zamanýn bize
ilave maliyeti hesaplanarak optimal çözümler oluºturulabilir.

15.2 ALIªTIRMA LAR

1. Alýºtýrma 3.13 ve aliºtýrma 14.10 da üzerinde çalýºtýðýmýz bilimsel hesap makinasý


programýný Java bean olarak tekrar düzenleyelim .

import [Link].*; // java swing sinifini cagir

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class H4O1bSWbean extends JApplet implements ActionListener,Serializable

// bilimsel hesap makinasi

JTextField sonucgirdisi;

JTextField kutugirdisi;

JButton Gir,Arti,Eksi,Carpi,Bolu,M,MR,MArti,MEksi,Isaret,C;

JButton Pow,Cos,Sin,Tan,RtoD,DtoR,Acos,Asin,Atan,Exp,Kok,Kare,birBoluX;

JButton Ln,Log10,Oku,PI;

//Button sinifi degiskenleri

double sayi;

bilimselhesapmakinasi1 D;

// pencereyi baslatma metodu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public H4O1bSWbean()

D=new bilimselhesapmakinasi1();

Container c=getContentPane();

[Link](new BorderLayout());

sonucgirdisi=new JTextField();

[Link](false);

[Link]([Link]);

[Link](new Font("SansSerif",[Link],14));

JPanel e=new JPanel();

[Link](new GridLayout(2,1));

kutugirdisi=new JTextField(40);

[Link](new Font("SansSerif",[Link],14));

[Link](sonucgirdisi);

[Link](kutugirdisi);

[Link](e,[Link]);

Gir=new JButton(" Gir ");

Oku=new JButton(" Oku ");

Arti=new JButton(" + ");

Eksi=new JButton(" - ");

Carpi=new JButton(" * ");

Bolu=new JButton(" / ");

M=new JButton("M");

MR=new JButton("MR");

MArti=new JButton("M+");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
MEksi=new JButton("M-");

Isaret=new JButton("+/-");

C=new JButton("C");

Pow=new JButton("x^y");

Cos=new JButton("cos");

Sin=new JButton("sin");

Tan=new JButton("tan");

RtoD=new JButton("R->D");

DtoR=new JButton("D->R");

Acos=new JButton("acos");

Asin=new JButton("asin");

Atan=new JButton("atan");

Exp=new JButton("exp");

Ln=new JButton("ln");

Log10=new JButton("log10");

Kok=new JButton("x^0.5");

Kare=new JButton("x^2");

birBoluX = new JButton("1/x");

PI=new JButton("pi");

JPanel m=new JPanel();

[Link](new GridLayout(5,8));

[Link](Gir);

[Link](Oku);

[Link](Arti);

[Link](Eksi);

[Link](Carpi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](Bolu);

[Link](M);

[Link](MR);

[Link](MArti);

[Link](MEksi);

[Link](Isaret);

[Link](C);

[Link](Pow);

[Link](Cos);

[Link](Sin);

[Link](Tan);

[Link](DtoR);

[Link](RtoD);

[Link](birBoluX);

[Link](Acos);

[Link](Asin);

[Link](Atan);

[Link](Kok);

[Link](Kare);

[Link](Exp);

[Link](Ln);

[Link](Log10);

[Link](PI);

[Link](m,[Link]);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

[Link](this);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

// girdi alanindaki olan olaylari dinleme metodu

public void actionPerformed(ActionEvent e)

String ss=[Link]();

if([Link]("")) sayi=0.0;

else

Double sayi1=new Double([Link]() );

sayi=[Link]();

if([Link]()==Gir) [Link](sayi);

if([Link]()==Oku) [Link]();

if([Link]()==PI) [Link]();

else if([Link]()==Arti) [Link](sayi);

else if([Link]()==Eksi) [Link](sayi);

else if([Link]()==Carpi) [Link](sayi);

else if([Link]()==Bolu) [Link](sayi);

else if([Link]()==M) D.M(sayi);

else if([Link]()==MR) [Link]();

else if([Link]()==MArti) [Link](sayi);

else if([Link]()==MEksi) [Link](sayi);

else if([Link]()==Isaret) [Link](sayi);

else if([Link]()==C) D.C();

else if([Link]()==Pow) [Link](sayi);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
else if([Link]()==Cos) [Link](sayi);

else if([Link]()==Sin) [Link](sayi);

else if([Link]()==Tan) [Link](sayi);

else if([Link]()==RtoD) [Link](sayi);

else if([Link]()==DtoR) [Link](sayi);

else if([Link]()==Acos) [Link](sayi);

else if([Link]()==Asin) [Link](sayi);

else if([Link]()==Atan) [Link](sayi);

else if([Link]()==Exp) [Link](sayi);

else if([Link]()==Ln) [Link](sayi);

else if([Link]()==Log10) D.log10(sayi);

else if([Link]()==Kok) [Link](sayi);

else if([Link]()==Kare) [Link](sayi);

else if([Link]()==birBoluX) D.bir_bolu_x(sayi);

[Link]([Link]());

if([Link]()==MR || [Link]()==M ||

[Link]()==MArti||[Link]()==MEksi)

[Link]([Link]());

else if([Link]()==Cos ||

[Link]()==Sin||[Link]()==Tan||[Link]()==RtoD ||

[Link]()==DtoR || [Link]()==Acos || [Link]()==Ln ||

[Link]()==Asin||[Link]()==Atan||[Link]()==Exp ||

[Link]()==Log10||[Link]()==Isaret ||[Link]()==Kok ||

[Link]()==Kare || [Link]()==birBoluX || [Link]()==Oku ||

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]()==PI)

[Link]([Link]());

else

[Link]("");

public static void main(String s[]) {

JFrame f = new JFrame("Hesap Makinasý Java Programlama dili");

[Link](new WindowAdapter() {

public void windowClosing(WindowEvent e) {[Link](0);}

});

JApplet applet = new H4O1bSWbean();

[Link]().add("Center", applet);

[Link]();

[Link]();

[Link](new Dimension(450,220));

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 15.5 [Link] programýnýn java BeanBox'ta görünümü

16. NETWORK PROGRAMLAMAYA GÝRݪ

16.1 TCP/IP PROTOKOLÜ

Java network protokolü olarak TCP/IP protokolünü kullanýr. TCP ingilizce Transmission
interface protokol (Veritransferi arayüz protokolü) IP ise Internet protokolü anlamýna gelir.

IP kodu veriyi ºu alt paketcikler olarak taºýr :

0-10 : baºlýk

10-12 : kontrol

12-16 gönderici adresi

16-20 gideceði adres

20-24 : seçenekler

24....gönderilen bilgi

IP bilgi paketlerinin yerine ulaºma garantisiyoktur. TCP protokolü gitme garantili paketler
oluºturur. IP paketini telgrafa benzetebiliriz. TCP paketleri ise telefon servisi gibidir. Karºýlýklý
iki tarafý baðlar. TCP paketinde alt birimler ºunlardýr :

0-2 gönderici adresi

2-4 gidecek yerin adresi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
4-8 paket numarasý

8-12 paket varýº numarasý

12-20 baºlýklar

20+ veri

TCP kanallarýndan bazýlarý özel görevler görürler. Örneðin kanal 7 gönderilen bilgiyi geriye
yansýtýr. Kanal 13 verinin gittiði makinanýn yerel zamanýný bildirir. Kanal 20-21 ftp protokolü,
kanal 23 telnet protokolü, kanal 80 http protokolü tarafýndan kullanýlýr. Javada internet
adreslerini proses aden sýnýfýmýz InetAdress sýnýfýdýr.

package [Link];

public final class InetAddress implements [Link] {

InetAddress() ;

InetAddress(String hostName, byte addr[]);

public static InetAdress[] getAllByName(String Host) throws UnknownHostException;

public static InetAdress getByName(String Host) throws UnknownHostException ;

public static synchronised InetAdress getLocalHost() throws UnknownHostException;

public boolean isMulticastAddress();

public byte[9 getAdress[] ;

public String getHostName();

String getHostName(boolean check);

public String getHostAddress() ;

public int hashCode() ;

public boolean equals(Object obj);

public String toString();

Inet adres sýnýfýný kullanarak DSN server sitelerinin adresine ulaºabiliriz. Bunu yapan bir
program kodu aºaðýda verilmiºtir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Program 16.1 [Link] programý

import [Link].*;

public class DNSadres {

public static void main (String args[]) throws UnknownHostException {

InetAddress someHost;

byte bytes[];

int fourBytes[] = new int[4];

if ([Link] == 0) {

someHost = [Link]();

} else {

someHost = [Link] (args[0]);

[Link] ("site '"+ [Link]() +"' sitenin adresi : ");

bytes = [Link]();

for (int i=0; i<4; i++) {

fourBytes[i] = bytes[i] & 255;

[Link] (fourBytes[0] + "." +

fourBytes[1] + "." +

fourBytes[2] + "." +

fourBytes[3]);

[Link]("Local bilgisayarýn adresi : "+[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

program çalýºtýrýlýnca :

site '[Link]' sitenin adresi : [Link]

Local bilgisayarýn adresi : turhan-czvbccoqtf/[Link]

sonucunu verecektir.

16.2 ALT SEVÝYE ÝLETIªIM : UDP KULLANIMI

network üzerinden kurabileceðimiz en basit iletiºim yollarýndan biri olan UDP


DatagramPacket ve DatagramSocket sýnýflarýný kullanarak gerçekleºtirilebilir.

DatagramPacket sýnýfý dört kurucu metod içermektedir. Bu metodlardan ikisi veri almak, ikisi
de veri göndermek amaçlýdýr. Hem gönderirkenhemde veri alýrken byte olarak veriyi ve veri
uzunluðunu bildirme zorunluðu mevcuttur. Bu sýnýf asýl gönderme iºlemlerini yapmaz, bu
parelel sýnýfý DatagramSocket tarafýndan gerçekleºtirilir.

package [Link];

public final class DatagramPacket {

byte[] buf;

int offset;

int length;

InetAddress address;

int port;

public DatagramPacket(byte buf[], int offset, int length)

public DatagramPacket(byte buf[], int length)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public DatagramPacket(byte buf[], int offset, int length,

InetAddress address, int port)

public DatagramPacket(byte buf[], int length,

InetAddress address, int port)

public synchronized InetAddress getAddress()

public synchronized int getPort()

public synchronized byte[] getData()

public synchronized int getOffset

public synchronized int getLength()

public synchronized void setData(byte[] buf, int offset, int length)

public synchronized void setAddress(InetAddress iaddr)

public synchronized void setPort(int iport)

public synchronized void setData(byte[] buf)

public synchronized void setLength(int length)

private native static void init()

package [Link];

public class DatagramSocket {

DatagramSocketImpl impl;

boolean connected = false;

InetAddress connectedAddress = null;

int connectedPort = -1;

public DatagramSocket() throws SocketException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public DatagramSocket(int port) throws SocketException

public DatagramSocket(int port, InetAddress laddr) throws SocketException

void create(int port, InetAddress laddr) throws SocketException

public void connect(InetAddress address, int port)

public void disconnect()

public InetAddress getInetAddress()

public int getPort

public void send(DatagramPacket p) throws IOException {

public synchronized void receive(DatagramPacket p) throws

public InetAddress getLocalAddress()

public int getLocalPort()

public synchronized void setSoTimeout(int timeout) throws SocketException

public synchronized int getSoTimeout() throws SocketException

public synchronized void setSendBufferSize(int size) throws SocketException

public synchronized int getSendBufferSize() throws SocketException

public synchronized void setReceiveBufferSize(int size) throws SocketException

public synchronized int getReceiveBufferSize() throws SocketException

public void close()

Bu iki sýnýfý bir örnek problemde kullanalým.

Program 16.2 [Link] programý

import [Link].*;

public class GetDate {

final static int PORT_DAYTIME = 13; // well-known daytime port

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main (String args[]) throws Exception {

DatagramSocket dgSocket;

DatagramPacket datagram;

InetAddress destination;

byte msg[] = new byte[256];

dgSocket = new DatagramSocket();

destination = [Link] ("[Link]");

datagram = new DatagramPacket (msg, [Link], destination,

PORT_DAYTIME);

[Link](datagram);

datagram = new DatagramPacket (msg, [Link]);

[Link](datagram);

String received = new String ([Link]());

[Link] ("TÜBÝTAK MAM'da ºu anda saat: " + received);

[Link]();

} // end of class GetDate

program çýktýsý :

TÜBÝTAK MAM'da ºu anda saat: Sun Mar 11 16:14:20 2001

Program çýktýsýndan da görüldüðü gibi bu program zaman port’undan [Link]


bilgisayarýnýn zamanýný okumaktadýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
16.3 TCP BÝLGÝ ÝLETÝMÝ, SOCKET SINIFI

Direk olarak TCP üzerinden bilgi aktarma UDP üzerinden bilgi aktarýmý gibidir. En önemli
fark, TCP kullanýrken veri miktarýnýn önemli olmamasýdýr. Istenilen miktarda veri TCP lanalý
üzerinden aktarýlabilir. TCP veri aktarýmý için socket sýnýfýný kullanýyoruz. Socket sýnýfýnýn
tanýmý :

package [Link];

public class Socket {

protected Socket()

protected Socket(SocketImpl impl) throws

public Socket(String host, int port)

throws UnknownHostException, IOException

public Socket(InetAddress address, int port) throws IOException

public Socket(String host, int port, InetAddress localAddr,

int localPort) throws IOException

public Socket(InetAddress address, int port, InetAddress localAddr,

int localPort) throws IOException

public Socket(String host, int port, boolean stream) throws IOException

public Socket(InetAddress host, int port, boolean stream) throws

public InetAddress getInetAddress()

public InetAddress getLocalAddress()

public int getPort()

public InputStream getInputStream() throws IOException

public OutputStream getOutputStream() throws IOException

public void setTcpNoDelay(boolean on) throws SocketException

public boolean getTcpNoDelay() throws SocketException

public void setSoLinger(boolean on, int linger) throws SocketException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public int getSoLinger() throws SocketException

public synchronized void setSoTimeout(int timeout) throws SocketException

public synchronized int getSoTimeout() throws SocketException

public synchronized void setSendBufferSize(int size)

throws SocketException

public synchronized int getSendBufferSize() throws SocketException

public synchronized void setReceiveBufferSize(int size)

throws SocketException

public synchronized int getReceiveBufferSize()

throws SocketException

public String toString()

public static synchronized void setSocketImplFactory(SocketImplFactory fac)

throws IOException

ºeklindedir.

Program 16.3 [Link] programý (TCP Socket sýnýfý örneði)

import [Link].*;

import [Link].*;

import [Link];

public class email {

public static void main(String args[])

throws IOException, UnknownHostException {

String s;

String msgFile;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
String from, to, mailHost;

if ([Link] != 4) {

[Link](null,"Doðru çaðýrma: java email gönderilendosya


gönderenin_adresi gittiði_adres mektup_server_adresi");

[Link] (10);

msgFile = args[0];

from = args[1];

to = args[2];

mailHost = args[3];

checkEmailAddress (from);

checkEmailAddress (to);

SMTP mail = new SMTP(mailHost);

if (mail != null) {

if ([Link] (new FileReader(msgFile), from, to) ) {

[Link](null,"Mektup gönderildi");

} else {

[Link](null,"STMP server'a baðlantý saðlanamadý");

[Link](0);

static void checkEmailAddress (String address) {

if ([Link]('@') == -1) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](null,"Geçersiz e-mail adresi '" + address + "'");

[Link] (10);

//-------------------------------------------------------------------

class SMTP {

public final static int SMTP_PORT = 25;

InetAddress mailHost;

InetAddress ourselves;

BufferedReader in;

PrintWriter out;

public SMTP (String host) throws UnknownHostException {

mailHost = [Link](host);

ourselves= [Link]();

[Link] ("mailhost = " + mailHost);

[Link] ("localhost= " + ourselves);

[Link] ("SMTP constructor done\n");

public boolean send (FileReader msgg, String from, String to) throws IOException {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Socket smtpPipe;

InputStream inn;

OutputStream outt;

BufferedReader msg;

msg = new BufferedReader (msgg);

smtpPipe = new Socket (mailHost, SMTP_PORT);

if (smtpPipe == null) {

return false;

// get raw streams

inn = [Link]();

outt = [Link]();

// turn into usable ones

in = new BufferedReader (new InputStreamReader (inn));

out = new PrintWriter (new OutputStreamWriter (outt), true);

if (inn==null || outt==null) {

[Link] ("Failed to open streams to socket.");

return false;

String initialID = [Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link] (initialID);

[Link] ("HELO " + [Link]());

[Link] ("HELO " + [Link]());

String welcome = [Link]();

[Link] (welcome);

[Link] ("MAIL From:<" + from + ">");

[Link] ("MAIL From:<" + from + ">");

String senderOK = [Link]();

[Link] (senderOK);

[Link] ("RCPT TO:<" + to + ">");

[Link] ("RCPT TO:<" + to + ">");

String recipientOK = [Link]();

[Link] (recipientOK);

[Link] ("DATA");

[Link] ("DATA");

String line;

while ((line = [Link]()) != null) {

[Link](line);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

[Link] (".");

[Link] (".");

String acceptedOK = [Link]();

[Link] (acceptedOK);

[Link] ("QUIT");

[Link] ("QUIT");

return true;

programý çalýºtýrmak için :

>java email [Link] [Link]@[Link] turhan@[Link] [Link]

komutunu kullanabiliriz.

Program çýktýsý :

mailhost = [Link]/[Link]

localhost= turhan-czcvoqtf/[Link]

SMTP constructor done

220 [Link] ESMTP Server (Microsoft Exchange Internet Mail Service


5.5.2653.13) ready

HELO turhan-czcvoqtf

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
250 OK

MAIL From:<turhan@[Link]>

250 OK - mail from <turhan@[Link]>

RCPT TO:<[Link]@[Link]>

250 OK - Recipient <[Link]@[Link]>

DATA

354 Send data. End with [Link]

QUIT

ªeklinde oluºur.

16.4 ÝNTERNET SÝTELERIYLE BÝLGÝ ALIªVERݪÝ, URL SINIFI

Java'nýn Internet ortamýnda programlama için oldukça iyi bir araç olduðundan kitabýn baºýnda
bahsetmiºtik. Bu konuda javanýn çok iyi bir araç olmasý nazýlarýnýn Java dilini sadece bir
internet aracý olduðunu sanmalarýna kadar gitmektedir. Java dilinde internet ve serverlerin
haberleºmeleri için bir çok araç bulunmaktadýr. Bu araçlarýn en önemlilerinden biri de
ºüphesiz URL sýnýfý dýr. bu sýnýf yardýmýyla bir internet adresiyle (html adresiyle) rahatlýkla
baðlantý kurulabilir. url sýnýfýnýn genel tanýmý ºöyledir :

public final class URL implements [Link] {

static final long serialVersionUID = -7627629688361524110L;

private static final String protocolPathProp = "[Link]";

private String protocol;

private String host;

private transient InetAddress hostAddress;

private int port = -1;

private String file;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private String ref;

transient URLStreamHandler handler;

private int hashCode = -1;

public URL(String protocol, String host, int port, String file) throws
MalformedURLException

public URL(String protocol, String host, String file) throws MalformedURLException

public URL(String protocol, String host, int port, String file,URLStreamHandler handler)

throws MalformedURLException

public URL(String spec) throws

public URL(URL context, String spec) throws MalformedURLException

public URL(URL context, String spec, URLStreamHandler handler) throws


MalformedURLException

private boolean isValidProtocol(String protocol)

private void checkSpecifyHandler(SecurityManager sm)

protected void set(String protocol, String host, int port, String file, String ref)

public int getPort()

public String getProtocol()

public String getHost()

public String getFile()

public String getRef()

public boolean equals(Object obj

public synchronized int hashCode()

private synchronized InetAddress getHostAddress()

private static boolean hostsEqual(URL u1, URL u2)

public boolean sameFile(URL other)

public String toString()

public String toExternalForm()

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public URLConnection openConnection() throws [Link]

public final InputStream openStream() throws [Link].

public final Object getContent() throws [Link]

public static synchronized void setURLStreamHandlerFactory(URLStreamHandlerFactory


fac

static synchronized URLStreamHandler getURLStreamHandler(String protocol)

private synchronized void readObject([Link] s) throws IOException,

ClassNotFoundException

Ýnternetten URL sýnýfýný kullanarak veri aktarýmý konusunda iki örnek program verelim. Birinci
program seçilen sitelere ulaºým yapacak bir internet sitesi seçme programýdýr.

Program 16.4 [Link], bu program applet kullanarak choice deyimiyle


listelenmiº (programýn içinde) internet siteleri arasýnda seçim yapar ve sonucda bu
internet sitesini browsere çaðýrýr.

import [Link].*;

import [Link].*;

import [Link].*;

import [Link];

import [Link];

public class internetsitesecici extends Applet

implements ItemListener

private Hashtable site;

private Choice siteChoice;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public void init()

site=new Hashtable();

siteChoice=new Choice();

String baslik,yer;

URL url;

int counter=0;

try

baslik="TUBITAK Marmara Arastirma Merkezi";

yer="[Link]

url=new URL(yer);

[Link](baslik,url);

[Link](baslik);

baslik="Turhan Coban";

yer="[Link]

url=new URL(yer);

[Link](baslik,url);

[Link](baslik);

baslik="TUBITAK Marmara Arastýrma Merkezi network sitesi";

yer="[Link]

url=new URL(yer);

[Link](baslik,url);

[Link](baslik);

baslik="Java sitesi";

yer="[Link]

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
url=new URL(yer);

[Link](baslik,url);

[Link](baslik);

catch(MalformedURLException e){[Link]();}

add(new Label("internet sitesi seciniz:"));

[Link](this);

add(siteChoice);

public void itemStateChanged(ItemEvent e)

URL url=(URL)[Link]([Link]());

getAppletContext().showDocument(url);

[Link]

ªekil 16.1 internetsitesecici programýný kullanarak bir internet sitesinin seçilmesi


(netscape )

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]

ªekil 16.2 internetsitesecici programýný kullanarak bir internet sitesinin seçilmesi


(Microsoft internet explorer)

[Link]

ªekil 16.3 internetsitesecici programýný kullanarak seçilen internet sitesinin Netscape


browsereyle gösterilmesi

Program 16.5 [Link], bu program Japplet (swing) kullanarak


listelenmiº (programýn dýýnda html dosyasýnda tanýmlanmýº) internet sitelari arasýnda
seçim yapar ve sonucda bu internet sitesini browsere çaðýrýr.

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link];

public class internetsitesiseciciSW extends JApplet {

private Hashtable internetsitesi;

private Vector siteIsimleri;

public void init()

internetsitesi = new Hashtable();

siteIsimleri = new Vector();

getinternetsitesiFromHTMLParameters();

Container c = getContentPane();

[Link]( new JLabel( "Internet internetsitesi seciniz : " ),

[Link] );

final JList siteChooser = new JList( siteIsimleri );

[Link](

new ListSelectionListener() {

public void valueChanged( ListSelectionEvent e )

Object o = [Link]();

URL newDocument = (URL) [Link]( o );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
AppletContext browser = getAppletContext();

[Link]( newDocument );

);

[Link]( new JscrollPane( siteChooser ),

[Link] );

private void getinternetsitesiFromHTMLParameters()

//HTML dökümanýndaki applet parametrelerini incele ve site isimlerini oku

String baslik, yer;

URL url;

int counter = 0;

while ( true ) {

baslik = getParameter( "baslik : " + counter );

if ( baslik != null ) {

yer = getParameter( "adres :" + counter );

try {

url = new URL( yer );

[Link]( baslik, url );

[Link]( baslik );

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

catch ( MalformedURLException e ) {

[Link]();

else

break;

++counter;

bu programýn çýktýsý da bir önceki programda olduðu gibidir. Bir sonraki programda internet
üzerinden verilen adrese giderek dosyayý okumaktayýz. Yani bir anlamda küçük bir browser
programý yarattýk.

Program 16.6 [Link], bu program küçük bir browser tanýmlar.


JtextField alanýna yazýlan URL adresindeki dosyayý JeditorPane kullanarak ekrana
getirir.

// Bu program JEditorPane kullanarak

// bir Web sayfasýný ekranda göstermektedir.

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

public class InternetDosyaOku extends JFrame {

private JTextField gir;

private JEditorPane contents;

public InternetDosyaOku()

super( "Java Programlama dili WEB browser" );

Container c = getContentPane();

gir = new JTextField( "Ulasmak istediginiz adresi buraya yaziniz : " );

[Link](

new ActionListener() {

public void actionPerformed( ActionEvent e )

getThePage( [Link]() );

);

[Link]( gir, [Link] );

contents = new JEditorPane();

[Link]( false );

[Link](

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
new HyperlinkListener() {

public void hyperlinkUpdate( HyperlinkEvent e )

if ( [Link]() ==

[Link] )

getThePage( [Link]().toString() );

);

[Link]( new JScrollPane( contents ),

[Link] );

setSize( 400, 300 );

show();

private void getThePage( String adres )

setCursor( [Link](

Cursor.WAIT_CURSOR ) );

try {

[Link]( adres );

[Link]( adres );

catch ( IOException io ) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]( this,

"internet URL adresine erisilemedi",

"URL adresinde hata var",

JOptionPane.ERROR_MESSAGE );

setCursor( [Link](

Cursor.DEFAULT_CURSOR ) );

public static void main( String args[] )

InternetDosyaOku dosya = new InternetDosyaOku();

[Link](

new WindowAdapter() {

public void windowClosing( WindowEvent e )

[Link]( 0 );

);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªekil 16.4 internetdosyaoku programýný kullanarak seçilen internet sitesinin
gösterilmesi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
17. GÜVENLÝK

Güvenlik denince bir programýn girdi çýktý fonksiyonlarý aracýlýðýyla yapabileceði


deðiºiklikler, bu deðiºikliklerin etkileri anlaºýlýr. Javada güvenliði saðlaak için program
girdi çýktýlar

17.1 APPLETLERDE GÜVENLÝK

Appletler güvenlik açýsýndan sýnýrlandýrýlmýº programlardýr. Genel olarak yerel bilgisayara


yazma ve okuma iznine sahip deðillerdir. Bunu bir örnekle açýklayalým. Program 17.1’de bir
applet programý olan [Link] verilmiºtir. Bu program [Link] dosyasýna “ bu yazý
deneme amacýyla dosya [Link] içine Appletden yazýldý” yazýsýný yazmak için
oluºturulmuºtur.

Program 17.1 [Link]

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class yazitesti extends JApplet {

String myFile = "[Link]";

File f = new File(myFile);

PrintWriter dos;

public void paint(Graphics g) {

try {

dos=new PrintWriter(new BufferedWriter(new FileWriter(myFile)));

[Link]("bu yazý deneme amacýyla dosya [Link] içine Appletden yazýldý\n");

[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("Yazým iºlemi baºarý ile gerçekleºti : " + myFile + " -- dosyasýný açýp
bakabilirsiniz ", 10, 10);

catch (SecurityException e) {

[Link]("yazitesti: güvenlik kontrolu aºýlamadý (güvenik hatasý) : " + e, 10,


10);

catch (IOException ioe) {

[Link]("yazitesti: giriº çýkýº hatasý", 10, 10);

Program çalýºtýrýldýðýnda (appletviewer [Link])

[Link]

Figure 17.1 yazý[Link] applet çýktýsý

Yazýtesti:güvenlik kontrolu aºýlamadý(güvenlik hatasý): java


[Link]:access denied([Link] [Link] write

Mesajý verilmiºtir. [Link] dosyasý incelendiðinde de hiç bir ºey yazýlmadýðý görülür. Bu
applet programýný kullanarak nasýl dosyaya yazý yazdýrabiliriz. Bunun için önce policytool
isimli programý çalýºtýralým. Ekrana

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
bir java programý gelecektir. Programdaki Add Policy Entry (güvenlik kuralý ekle) düðmesine
basalým. Yeni bir ekran açýlacaktýr. Bu ekranda güvenlik programýmýzý içerecek dosya url
adresini yazýp (örneðin file:/c:/co/java/prog veya html://[Link]/~turhan) Add
Permission tuºuna basalým.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
File permission (dosya güvenlik izni) penceresinden file permission (dosya izni) seçtikten
sonra Target Name alanýna yazma izni istediðimiz [Link] dosyasýnýn ismini yazalým. Ve
son alanda da yazma izni (“write”) seçelim ve ok düðmesine basalým.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
son pencere kapanacak ve bir önceki pencere gelecektir. Burada da Done düðmesine
basalým.

ilk pencerede file, save as seçeneklerini seçtikten sonra c:\co\java\prog (veya sizin
çalýºtýðýnýz dosyaya) [Link] adýyla kaydedelim. Program policy succesfully written to
c:\co\java\prog\[Link] mesajýný verecektir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ºimdi policy tool programýný exit deyimiyle kapatabiliriz. Policytool programý bize otomatik
olarak [Link] dosyasýný yarattý. Bu dosyanýn kapsamýna bakacak olursak :

/* AUTOMATICALLY GENERATED ON Sun Mar 11 00:45:40 PST 2001*/

/* DO NOT EDIT */

grant codeBase "file:/c:/co/java/prog" {

permission [Link] "[Link]", "write";

};

biz ayný komutu dosyaya elde de girebilirdik. Bu komutun anlamý c:\co\java\prog


direktory’sindeki [Link] dosyasýna yazma (“write”) müsadesi ver demektir.

ªimdi appletviewer programýný

appletviewer –[Link]=[Link] [Link]

komutuyla çalýºtýrdýðýmýzda :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
çýktýsýný alacaðýz. Yazý[Link] dosyasýný açtýðýmýzda

bu yazý deneme amacýyla dosya [Link] içine Appletden yazýldý

dosyaya yazýsýnýn yazýldýðýný göreceðiz.

Burada yazýmý gerçekleºtirmek için –[Link]=[Link] gibi özel bir


anahtar kullandýk. Ayný iºi bu anahtarý kullanmadan yapmak için [Link] dosyasýna
yeni bir komut ilave etmemiz gerekir. Bu dosya sizin kullandýðýnýz ana java directory’sinin
altýndaki lib\security de bulunacaktýr. Örneðin benim dosyam c:\co\java\jre\lib\security
directory’sinde yer almaktadýr. Bu dosyanýn görünümü :

------------

# This is the "master security properties file".

# In this file, various security properties are set for use by

# [Link] classes. This is where users can statically register

# Cryptography Package Providers ("providers" for short). The term

# "provider" refers to a package or set of packages that supply a

# concrete implementation of a subset of the cryptography aspects of

# the Java Security API. A provider may, for example, implement one or

# more digital signature algorithms or message digest algorithms.

# Each provider must implement a subclass of the Provider class.

# To register a provider in this master security properties file,

# specify the Provider subclass name and priority in the format

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
#

# [Link].<n>=<className>

# This declares a provider, and specifies its preference

# order n. The preference order is the order in which providers are

# searched for requested algorithms (when no specific provider is

# requested). The order is 1-based; 1 is the most preferred, followed

# by 2, and so on.

# <className> must specify the subclass of the Provider class whose

# constructor sets the values of various properties that are required

# for the Java Security API to look up the algorithms or other

# facilities implemented by the provider.

# There must be at least one provider specification in [Link].

# There is a default provider that comes standard with the JDK. It

# is called the "SUN" provider, and its Provider subclass

# named Sun appears in the [Link] package. Thus, the

# "SUN" provider is registered via the following:

# [Link].1=[Link]

# (The number 1 is used for the default provider.)

# Note: Statically registered Provider subclasses are instantiated

# when the system is initialized. Providers can be dynamically

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
# registered instead by calls to either the addProvider or

# insertProviderAt method in the Security class.

# List of providers and their preference orders (see above):

[Link].1=[Link]

[Link].2=[Link]

# Class to instantiate as the system Policy. This is the name of the class

# that will be used as the Policy object.

[Link]=[Link]

# The default is to have a single system-wide policy file,

# and a policy file in the user's home directory.

[Link].1=file:${[Link]}/lib/security/[Link]

[Link].2=file:${[Link]}/.[Link]

# whether or not we expand properties in the policy file

# if this is set to false, properties (${...}) will not be expanded in policy

# files.

[Link]=true

# whether or not we allow an extra policy to be passed on the command line

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
# with -[Link]=somefile. Comment out this line to disable

# this feature.

[Link]=true

# whether or not we look into the IdentityScope for trusted Identities

# when encountering a 1.1 signed JAR file. If the identity is found

# and is trusted, we grant it AllPermission.

[Link]=false

# Default keystore type.

[Link]=jks

# Class to instantiate as the system scope:

[Link]=[Link]

# List of comma-separated packages that start with or equal this string

# will cause a security exception to be thrown when

# passed to checkPackageAccess unless the

# corresponding RuntimePermission ("accessClassInPackage."+package) has

# been granted.

[Link]=sun.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
#

# List of comma-separated packages that start with or equal this string

# will cause a security exception to be thrown when

# passed to checkPackageDefinition unless the

# corresponding RuntimePermission ("defineClassInPackage."+package) has

# been granted.

# by default, no packages are restricted for definition, and none of

# the class loaders supplied with the JDK call checkPackageDefinition.

#[Link]=

[Link].1=file${[Link]}/lib/security/[Link]

[Link].2=file${[Link]}/.[Link]

[Link].3=file:/C:/co/java/prog/[Link]

------------

ºeklindedir. Bu dosyaya biz [Link] izni olan [Link] dosyasýný

[Link].3=file:/C:/co/java/prog/[Link]

komutunu kullanarak ekledik. 3 rakamýnýn anlamý daha önce yazýlan iki güvenlik kodunun
olmasýdýr. ªimdi sadece appletviewer [Link] komutu kulanarak programýmýzý
çalýºtýrýp yazma iºlemini baºarabiliriz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
17.2 KONSOL PROGRAMLARINDA GÜVENLÝK

Applet dýºý programlarda (konsol programlarýnda) java direk olarak güvenlik kontrolu istemez.
Yukardaki programýn bir Jframe eºdeðerini oluºturalým

import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

public class yazitestiSWF extends JFrame {

String myFile = "[Link]";

File f = new File(myFile);

PrintWriter dos;

public yazitestiSWF()

super("yazý testi swing frame konsol uygulamasý");

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g;

try {

dos=new PrintWriter(new BufferedWriter(new FileWriter(myFile)));

[Link]("bu yazý deneme amacýyla dosya [Link] içine Appletden yazýldý\n");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]();

[Link]("Yazým iºlemi baºarý ile gerçekleºti : " + myFile + " -- dosyasýný açýp
bakabilirsiniz ", 10, 50);

catch (SecurityException e) {

[Link]("yazitesti: güvenlik kontrolu aºýlamadý (güvenik hatasý) : " + e, 10,


50);

catch (IOException ioe) {

[Link]("yazitesti: giriº çýkýº hatasý", 10, 50);

public static void main(String[] args)

yazitestiSWF pencere= new yazitestiSWF();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

bu programý javac [Link] deyimiyle derleyip

java yazitestiSWF ile çalýºtýrýrsak

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
programýn direk olarak hiçbir güvenlik iºlemine gereksinim duymadan çalýºtýðýný görürüz.
Eðer bu güvenlik kontrolunu özel olarak arzularsak, programýmýzý

java –[Link] yazitestiSWF komutuyla çaðýrabiliriz. Bu durumda daha


[Link] dosyasýný güvenlik sisteminde yanýmlamadýðýmýz için týpký appletde olduðu
gibi

sonucuyla karºýlaºýrýz. Güvenlik sistemine bu yeni dosyayý da tanýmlayarak konsol


programýný da güvenli modda çalýºtýrabiliriz.

Örneðin [Link] dosyasýnýn [Link] dosyasý içinde yazma izni almýº hali:

/* AUTOMATICALLY GENERATED ON Sun Mar 11 10:27:31 PST 2001*/

/* DO NOT EDIT */

grant codeBase "file:/c:/co/java/prog" {

permission [Link] "[Link]", "write";

permission [Link] "[Link]", "write";

};

direk olarak java güvenliðini saðlayan komut

java –[Link]=[Link] yazitestiSWF

ºeklinde olacaktýr.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ªimdi size sistem özelliklerini veren bir program verelim.

import [Link].*;

import [Link].*;

import [Link];

class ozellikler {

public static void main(String[] args) {

String s,s1;

try {

s = [Link]("[Link]", "not specified");

s1="iºletim sistemi : " + s+"\n";

s = [Link]("[Link]", "not specified");

s1+=" ºu anda çalýºan java programý versiyonu : " + s+"\n";

s = [Link]("[Link]", "not specified");

s1+=" ([Link]) directory'si : " + s+"\n";

s=[Link]("[Link]", "not specified");

s1+="([Link]) directory'si: " + s+"\n";

} catch (Exception e) { s1="Hata yakalandý " + [Link]();}

[Link](null,s1);

[Link](0);

bu programý çalýºtýrdýðýmýzda :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
çýktýsýný verecektir. ªimdi programý güvenli modda çalýºtýralým, çýktý :

olacaktýr. Burada temel olarak sistem özelliklerini okuma izni vermemiz gerekiyordu. Bu
yüzden [Link] (java özellikleri izni) read (oku) komutuyla verildi

/* AUTOMATICALLY GENERATED ON Sun Mar 11 11:44:51 PST 2001*/

/* DO NOT EDIT */

grant codeBase "file:/c:/co/java/prog" {

permission [Link] "[Link]", "write";

permission [Link] "[Link]", "write";

permission [Link] "ozellikler", "read";

};

java –[Link]=[Link] ozellikler

komutu sonucu bize hatasýz olarak iletecektir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
17.3 GÜVENLÝK SERTÝFÝKALARI

Bilgisayarlardaki genel güvenlik sistemi genelde iki anahtarlý bir sistemdir. Bu anahtarlardan
birincisi, özel anahtar, sadece sizin bildiðiniz bir anahtardýr. Ikinci anahtar güvenli olarak
iletiºim kurmak istediðiniz her yere gönderilebilir. Sertifika almanýn ilk aºamasýný javada
verilen keytool adlý programý kullanarak yapabiliriz. Bunun için

keytool –genkey

Komutunu kullanmamýz ve sorulan sorulara (ingilizce) cevap vermemiz kafidir. Keytool –


genkey ºu sorularý soracaktýr : kalýn ile belirttiklerim cevaplar, parantez içerisindekiler türkçe
karºýlýklarýdýr.

Enter keystrore password : ali (pasword’u giriniz)

What is your first and last name? (isminiz ve soyisminiz nedir?)

[unknown]: Turhan Coban (burada isminizi ve soyisminizi giriniz)

What is name of your organisational unit? (iº yerinizin iº türü nedir?)

[unknown]: research (araºtýrma)

What is name of your organisation? (iº yerinizin adý nedir?)

[unknown]: TUBITAK MRC

What is the name of your City or Locality? (ºehrinizin veya bulunduðunuz yerin adý nedir?)

[unknown]: Gebze

What is the name of your State or Province? (eyaletinizin veya bölgenizin adý nedir?)

[unknown]: Kocaeli

What is the two-letter country code for this unit? (iki harfli ülke kodunuz nedir?)

[unknown]: TR

Is <CN=Turhan Coban, OU=Research, O=TUBITAK MAM, L=Gebze, ST=Kocaeli,C=TR>


correct? (bu verilen bilgiler doðru mu?)

[no]: yes (evet)

bu bilgiler verildikten sonra program

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Enter key password for <mykey>

(RETURN if same as keystrore password):

(mykey anahtarý için ºifreyi giriniz daha önce girdiðiniz ºifreyle aynýysa sadece gir tuºuna
basýnýz)

sorusunu soracak ve ºifre isteyecektir. Burada sizin ºifreniz mykey ismini almýºtýr.

Eðer ikinci bir kiºi size ºifre gönderirse bunu

keytool –import –file anahtarismi

komutuyla depolayabilirsiniz. Anahtarý oluºturduktan sonra anahtarýnýza bir anahtar


sertifikasyon kurumundan sertifika alabilirsiniz sertifika alabilirsiniz, bunun için önce sertifika
onay belgesi oluºturabilirsiniz. Bunun için

keytool –certreq komutu kullanabilirsiniz. Bu komut

-----BEGIN NEW CERTIFICATE REQUEST-----

MIICcjCCAi8CAQAwbDELMAkGA1UEBhMCVFIxEDAOBgNVBAgTB0tvY2FlbGkxDjAMBgN
VBAcTBUdl

YnplMRQwEgYDVQQKEwtNUkNfVFVCSVRBSzEOMAwGA1UECxMFRVNFUkkxFTATBgN
VBAMTDFR1cmhh

biBDb2JhbjCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OBHXUSKVLfSpwu7OTn9hG3
UjzvRADD

Hj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7q
df+

t8Yb+DtX58aophUPBPuD9tPFHsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI
8VIwvM

spK5gqLrhAvwWBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlXjrrUW
U/m

cQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi8ftiegEkO8
yk

8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQCGLh1t/Vo3fMkMFLXNu9d
hueKG

dac3vGCUmd1FzqBALncr+YEQw2DZqtxiwqIeivbXOoean2516S0cDBi333ArOGtK0pm/pHQ
3Yyeh

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
W/ePbV6ljh/KbmuHaa3ZSfAHKseuHBcMkS4SNC5DeTVifzT1QLRwGeAkP5xdL72EX/dt8KA
AMAsG

ByqGSM44BAMFAAMwADAtAhUAlm7LpK8FaOco1hgARAkCX0ik9CECFDqrUbnw9Fyp5CR
UYs0+RCFy

L+U9

-----END NEW CERTIFICATE REQUEST-----

gibi bir çýktý oluºturacaktýr. Bu çýktý anahtar sertifika otoritelerine direk olarak email ile
gönderilebilir. Sertifikanýn gayesi sizi tanýmýyan kiºilerce bile programlarýnýzýn güvenliðinin
onaylanmasýdýr. Genellikle sertifika kuruluºlarý bunu bir ücret karºýlýðý yapar. Örneðin
[Link] asdresinde böyle bir kuruluºla ilgili detaylý bilgi bulabilirsiniz. Sertifika
kuruluºundan onaylanmýº olarak gelen sertifikanýzý

keytool –import –file \directory\yenisertifika

komutuyla yeni bir isimle depolayabilirsiniz. Sertifikanýzý baºka birine aktarýrken

keytool –export –rfc komutu ile önderme anahtarýný oluºturup gönderebilirsiniz.

17.4 JAR DOSYALARININ GÜVENLÝK KODUYLA ÝMZALANMASI

Jar dosyalarýnýn hazýrlanmasýndan daha önce bahsetmiºtik. Java jar dosyalarý jarsigner
komutu kullanýlarak sertifikalandýrýlabilir. Komut

jarsigner [Link] mykey ºeklindedir. Buradaki mykey sizin anahtarýnýzýn adý, [Link] ise
kullandýðýmýz jar dosyasýdýr. Dosyayý kullanmadan önce –verify ve –verbose terimleriyle
açmamýz gerekir.

jarsigner –verify –verbose [Link]

17.5 BROWSERLARDA GÜVENLÝK

Browserlerin güvenlik sistemi burada anlattýklarýmýzla benzer olmakla beraber aynýsý deðildir.
Microsoft ve netscape birbirinden ayrý güvenlik sistemlerine sahiptirler. Bunlarla ilgili bilgi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Microsoft için : [Link]

Netscape için : [Link]

adreslerinden edinilebilir.

EK A TEXT SINIFI

Bu kitapta okuma iºlemlerinde Text sýnýfý oldukça yoðun olarak kullanýlmýºtýr. Bu


yüzden kodu Ekte bir daha vermekte yarar görüyoruz.

[Link]

//============================================
// Numerical Analysis Package in Java
// Class Text to read data from screen or file
// Dr. Turhan Coban
//============================================
import [Link].*;
import [Link].*;

class Text
{
BufferedReader in;
/*
---------------------------------------------------
Static routines provided are:
---------------------------------------------------
public static void prompt(String s);
public static int readInt(DataInputStream in);
public static int readInt(BufferedReader in);
public static double readDouble(DataInputStream in);
public static double readDouble(BufferedReader in);
public static String readString(DataInputStream in);
public static String readString(BufferedReader in);
public static char readChar(DataInputStream in);
public static char readChar(BufferedReader in);
----------------------------------------------------
Dynamic routines provided are :
----------------------------------------------------
public void Text()
public void Text(String s1)
public void Text(File f1)
public int readInt();
public double readDouble();
public String readString();
public char readChar();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Sample use :
--------- reading a double--------------
DataInputStream cin=new DataInputStream([Link]);
double number;
number=[Link](cin);
veya
BufferedReader cin=new BufferedReader(new InputStreamReader([Link]));
double number;
number=[Link](cin);
veya
double number;
Text cin=new Text();
number=[Link]();
------ reading data from a file "[Link]"------
DataInputStream fin=new DataInputStream
(new FileInputStream("[Link]"));
double number;
number=[Link](fin);
veya
double number;
BufferedReader fin=new BufferedReader(new FileReader("[Link]"));
double number;
number=[Link](fin);
veya
double number;
Text cin=new Text("[Link]");
number=[Link]();
------ printing data into a file "[Link]"----
PrintStream fout=new PrintStream
(new FileOutputStream("[Link]"));
String a="turhan";
[Link](a);
veya
BufferedWriter fout=new BufferedWriter(new FileWriter("[Link]"));
String a="Turhan");
[Link](a);
----------------------------------------------------
*/

private static StringTokenizer T;


private static String S;

public Text()
{
in=new BufferedReader(new InputStreamReader([Link]));
}
public Text(String s1) throws IOException
{
in=new BufferedReader(new FileReader(s1));
}

public static void prompt (String s) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](s + " ");
[Link]();
}

public static int readInt (DataInputStream in) throws IOException


{
if (T==null) refresh(in);
while (true)
{
try {
String item = [Link]();
return [Link]([Link]()).intValue();
}
catch (NoSuchElementException e1) { refresh (in);}
catch(NumberFormatException e2)
{ //[Link]("Error in number, try again.");
}
}
}

public int readInt() throws IOException


{
return [Link](in);
}

public String readStringLine() throws IOException


{
return [Link](in);
}

public double readDouble() throws IOException


{
return [Link](in);
}

public String readString() throws IOException


{
return [Link](in);
}

public char readChar() throws IOException


{
return [Link](in);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static int readInt (BufferedReader in) throws IOException
{
if (T==null) refresh(in);
while (true)
{
try {
String item = [Link]();
return [Link]([Link]()).intValue();
}
catch (NoSuchElementException e1) { refresh (in);
} catch(NumberFormatException e2)
{ //[Link]("Error in number, try again.");
}
}
}

public static char readChar (DataInputStream in) throws IOException


{
if (T==null) refresh(in);
while (true)
{
try {
return [Link]().charAt(0);
}
catch(NoSuchElementException e1) {refresh (in);}
}
}

public static char readChar (BufferedReader in) throws IOException


{
if (T==null) refresh(in);
while (true)
{
try {
return [Link]().charAt(0);
}
catch(NoSuchElementException e1) {refresh (in);}
}
}

public static double readDouble(DataInputStream in) throws IOException


{
if(T==null) refresh(in);
while (true) {
try {
String item = [Link]();
return [Link] ([Link]()).doubleValue();
} catch(NoSuchElementException e1) {

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
refresh (in);
} catch(NumberFormatException e2)
{
//[Link]("Error in number, try again.");
}
}
}

public static double readDouble(BufferedReader in) throws IOException


{
if(T==null) refresh(in);
while (true) {
try {
String item = [Link]();
return [Link] ([Link]()).doubleValue();
} catch(NoSuchElementException e1) {
refresh (in);
} catch(NumberFormatException e2)
{
//[Link]("Error in number, try again.");
}
}
}
// this method is deprecated, but still kept for historical reasons
// prefer BufferedReader version
public static String readString(DataInputStream in) throws IOException
{
if(T==null) refresh (in);
while (true) {
try {return [Link]();}
catch (NoSuchElementException e1) {
refresh (in);
}
}
}

public static String readString(BufferedReader in) throws IOException


{
if(T==null) refresh (in);
while (true) {
try {return [Link]();}
catch (NoSuchElementException e1) {
refresh (in);
}
}
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static String readStringLine(DataInputStream in) throws IOException
{
//reads a line of strings from DataInputStream in
int ch;
String r = "";
boolean done = false;
while (!done)
{ try
{ ch = [Link]();
if (ch < 0 || (char)ch == '\n' || (char)ch == '\0')
done = true;
else
r = r + (char) ch;
}
catch([Link] e)
{ done = true;
}
}
return [Link](0,([Link]()-1));
}

public static String readStringLine(BufferedReader in) throws IOException


{
//reads a line of strings from BufferedReader in
int ch;
String r = "";
boolean done = false;
while (!done)
{ try
{ ch = [Link]();
if (ch < 0 || (char)ch == '\n' || (char)ch == '\0')
done = true;
else
r = r + (char) ch;
}
catch([Link] e)
{ done = true;
}
}
return [Link](0,([Link]()-1));
}

private static void refresh (DataInputStream in) throws IOException


{
String s = [Link]();
if (s==null) throw new EOFException();
T = new StringTokenizer(s);
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
private static void refresh (BufferedReader in) throws IOException
{
String s = [Link]();
if (s==null) throw new EOFException();
T = new StringTokenizer(s);
}
}

EK B JAVA DERSÝ SINAV SORULARI

Java derslerindeki bazý sýnav sorularý bu ekde verilmiºtir.

JAVA PROGRAMLAMA DÝLÝ GEBZE YÜKSEK TEKNOLOJÝ ENSTÝTÜSÜ GÜZ


DÖNEMÝ 2000 BÝTÝRME SINAVI SORULARI

Ýsim – soyisim
Öðrenci numarasý
Master/doktora
Email
Telefon
Not

AÇIKLAMALAR

· Toplam süre 3 saattir.

 Sizin için verilen boº alanlara sorularý cevaplandýrýnýz.


 Verilen yerler yetmezse ilave kaðýt kullanabilirsiniz
 Her soru on puandýr (toplam 100 puan)
 Ýyi ºanslar

SORU 1

Aºaðýda verilen programýn girdisi :

ilk gerçek sayiyi giriniz : 2

ikinci ger‡ek sayiyi giriniz : 2

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
ºeklindedir. Program çýktýsýný yazýnýz.

import [Link].*;

import Text;

import [Link];

class SORU1_2000{

public static void main (String args[]) throws IOException

double sayi1,sayi2;

double toplam;

Text cin=new Text();

[Link]("ilk ger‡ek sayiyi giriniz : ");

sayi1=[Link]();

[Link]("ikinci ger‡ek sayiyi giriniz : ");

sayi2=[Link]();

toplam=sayi1+sayi2;

[Link](null,sayi1+" + "+sayi2+" = "+toplam);

[Link](0);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 2

Aºaðýda verilen kutuya girdi olarak 2 girildiðinde oluºacak program çýktýsýný yazýnýz

import [Link].*;

import [Link].*; //girdi alanindan sinyal bekle ve


sinyal gelince ºu iºlemleri yap
import [Link].*;

public class SORU2_2000 extends JApplet


implements ActionListener public void
actionPerformed(ActionEvent e)
{ int sayi1;
{
int toplam;
toplam=0; //sayi1 i kutulardan
double ort; oku

JLabel s1,s2; //yazý alanlari sýnýfý


sayi1=[Link]([Link]());
JTextField t1; //girdi alanlarý (kutularý)
int i=1;
JTextArea ciktiAlani; //ciktý alaný
do {
//pencereyi baºlatma metodu
toplam+=i*i*i;
public void init()
}
{
while(++i<=sayi1);
Container c=getContentPane();

[Link](new FlowLayout()); ort=(double)toplam/(double)sayi1;

Color renk=[Link](); [Link](""+"1den "+sayi1+" e


kadar küp ortalamasý :"+ort);
s1=new JLabel("küp ortalamasý 1 den ");
repaint();
s2=new JLabel("e kadar ");
}
t1=new JTextField(5); //pencereye ekle
//ActionPerformed metotunun
ciktiAlani=new JTextArea(); kapanisi

[Link](renk); } //H2OD3_2000 sinifinin kapanisi

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](s1);

[Link](t1);

[Link](s2);

[Link](ciktiAlani);

[Link](this);

SS

SORU 3

Aºaðýda verilen programdaki sayýnýn kuvvetini hesaplayan

public static double pow(double taban,double kuvvet)

metodunu yazýnýz. Bu metod kendi kendini çaðýran bir program kodu veya bir döngü yapýsý
kullanan bir ºekilde oluºturulabilir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Import [Link];

public class SORU3_2000

public static double pow(double taban,double kuvvet)

***buraya gerekli program kodu girilecektir.***

public static void main (String args[])

double taban,kuvvet;

taban=[Link]([Link]

("taban sayýyý giriniz : "));

kuvvet=[Link]([Link]

("kuvveti giriniz : "));

[Link](null,taban+" nin "+kuvvet+" inci kuvveti: "

+pow(taban,kuvvet),"H3OD3_2000.java
programý",JOptionPane.PLAIN_MESSAGE);

[Link](0);

Cevap :

public static double pow(double taban,double kuvvet)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

SORU 4

Aºaðýda verilen kompleks2 programýnýn içerisinde yer almasý gereken ve bir kompleks
sayýnýn karesini hesaplayan kare metodunu yazýnýz. kompleks2 sýnýfýný kullanarak (1+2i)
kompleks sayýsýnýn karesini alan ve sonuçlarýný konsol ortamýnda yazdýran bir küçük bir çýktý
programý yazýnýz

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class kompleks2

public double ger;

public double imaj;

public kompleks2(double nger,double nimaj)

ger=nger;

imaj=nimaj;

public static kompleks2 pow(kompleks sol, double sag)

{ // kompleks bir sayýnýn gerçek kuvvetini hesaplar.

double Rad,th;

Rad=[Link](sol.R(),sag);

th=sag*[Link]();

kompleks2 sonuc;

sonuc =new kompleks2((Rad*[Link](th) ),

(Rad*[Link](th) ) );

return sonuc;

//kompleks sýnýfýnýn tanýmýnýn sonu

Kare metodu :

public static kompleks2 kare(kompleks sol)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

SORU4_2000.java çýktý programý

SORU 5

Boyutlu deðiºken kullanýmýnda en büyük sorunlardan biri boyutlarýn sabit olmasý, ve


deðiºtirilememesidir. Double tipi deðiºkenlerin boyutlarýnýn deðiºtirilmesi amacýyla
doubleBoyut sýnýfý geliºtirilmiºtir. Fakat program dosyasýna kaza sonucu dökülen kahve
sonucu programýn bir kýsmý okunamamaktadýr. Program kodu bilgisayara tekrar girilecektir.
BoyutEkle alt metodundaki okunamýyan yerin tekrar yazýlmasýnda yardýmcý olabilirmisiniz.

public class doubleBoyut public void setValue(double x,int i)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{ {

//sýnýf deðiºkenleri a[i]=x;

public double a[]; }

public int length; public void setValue(double[] x )

public doubleBoyut(double x[] ) {

{ length=[Link];

length=[Link]; a=new double[length];

a=new double[length]; for(int i=0;i<length;i++)

for(int i=0;i<length;i++) {

a[i]=x[i]; a[i]=x[i];

} }

public doubleBoyut(int n) }

{ public String toString(int i)

a=new double[n]; {

length=[Link]; return ""+a[i];

} }

public void boyutEkle(int n) public String toString()

{ {

if(n>0) String s="";

{ for(int i=0;i<length;i++)

int z=[Link]+n; {

********************************* s+=a[i]+" ";

*****buradaki kodu düzeltiniz******** }

********************************* s+="\n";

a=b; return s;

length=[Link]; }

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
} }

} public void boyutAzalt(int n)

public void boyutEkle() {

{ int z=[Link]-n;

boyutEkle(1); if(z>1)

} {

public void boyutAzalt() double[] b=new double[[Link]-n];

{ for(int i=0;i<z;i++)

boyutAzalt(1); b[i]=a[i];

} a=b;

public double getValue(int i) }

{ else

return a[i]; {

} double[] b=new double[1];

public double[] getValue() b[0]=a[0];

{ a=b;

return a; }

} length=[Link];

public void boyutEkle(int n)

if(n>0)

int z=[Link]+n;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
a=b;

length=[Link];}}

SORU 6

OvalPanelSWP panel programý verilmiºtir. Biz bu programý kullanarak bir elips çizdirmek
istiyoruz. Bunun için yazýlan JFrame programý SORU6_2000 nýn kurucu metodu
SORU6_2000 metodunu tamamlayýnýz.

import [Link].*;

import [Link].*;

import yildizSW;

import [Link].*;

import renk;

public class ovalPanelSWP extends JPanel

int xi,yi,yaricap;

public ovalPanelSWP(int xi1, int yi1,int yaricap1)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

xi=xi1;

yi=yi1;

yaricap=(yaricap1 >= 0 ? yaricap1:10);

public void setOvalPanelSWP(int xi1, int yi1,int yaricap1)

xi=xi1;

yi=yi1;

yaricap=(yaricap1 >= 0 ? yaricap1:10);

repaint();

public void paintComponent(Graphics g)

[Link](g);

[Link]([Link]);

Graphics2D g2=(Graphics2D)g;

[Link](RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

Ellipse2D elips1=new [Link](xi,yi,yaricap,yaricap);

[Link](elips1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
================================================================

import [Link].*; // java pencereyi dinleme sinifini cagir

import BasicWindowMonitor;

import ovalPanelSWP;

import [Link].*;

public class SORU6_2000 extends JFrame implements ChangeListener

// Renk secme ornegi

private ovalPanelSWP p;

Color r=[Link];

Container c;

// pencereyi baslatma metodu

public SORU6_2000()

super("JSlider Testi");

c=getContentPane();

[Link](new Flowlayout());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
****** tamamlayýnýz ********

*************************

//============================

public static void main(String[] args)

SORU6_2000 pencere= new SORU6_2000();

[Link](new BasicWindowMonitor());

[Link](350,200);

[Link](true);

}}

public ovalTestSWF_2000()

super("JSlider Testi");

c=getContentPane();

[Link]();new Flowlayout());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

SORU 7

Program çýktý tablosunu çiziniz ve oluºan deðerleri yazýnýz.

import [Link].*;

import [Link].*;

import Text;

public class CreateKahve{

public static void main(String args[]) throws IOException

String driverName;

String url = "jdbc:odbc:prog";

Connection con;

String createString;

createString = "create table KAHVE " +

"(KAHVE_ISMI varchar(32), " +

"NUMARA int, " +

"FIYAT float, " +

"SATIS int, " +

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
"TOPLAM int)";

Statement stmt;

try {

[Link]("[Link]");

} catch([Link] e)

[Link]("ClassNotFoundException: ");

[Link]([Link]());

try {

con = [Link](url,"Login", "Password");

stmt =
[Link]();

[Link](createString);

[Link]("insert into KAHVE " +

"values('Brezilya', 00101, 7.99, 0, 0)");

[Link]();

[Link]();

} catch(SQLException ex)

{[Link]("SQLException: " + [Link]());}

Program çýktýsý :

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 8
[Link] dosyasý incelendiðinde

12

23

34

45

56

verisinin kaydedildiði gözlenmiºtir. Aºaðýdaki program çalýºtýrýldýðýnda [Link]


dosyasýnda bulunmasý gereken veriyi yazýnýz

import [Link].*;

import Text;

public class SORU8_2000

public static void main(String[] args) throws IOException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

double x[],y[];

DataInputStream input;

x= new double[200];

y=new double[200];

String s1="[Link]";

File fgir = new File(s1);

BufferedReader b= new BufferedReader(new FileReader(fgir));

boolean EOF=false;

int j=0;

while (!EOF)

try

x[j]= [Link](b);

y[j]= [Link](b);

++j;

catch (EOFException e)

[Link]();

EOF=true;

} //while

String s2="[Link]";

File fcik = new File(s2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter(fcik)));

for(int i=0;i<j;i++)

{[Link](""+x[i]+" "+(y[i]*y[i]));}

[Link]();

} //main

} //class

SORU 9

a) programýn iºlevini izah ediniz

b) verilen girdi için çýktýyý yazýnýz

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import [Link].*;

import [Link].*;

import [Link].*;

import [Link].*;

class SetA

public Vector bilesim(Vector list1, Vector list2)

Vector bilesimVectoru = new Vector();

String s1,s2;

Enumeration n1=[Link]();

Enumeration n2=[Link]();

while([Link]())

s1=(String)[Link]();

[Link](s1);

while([Link]())

s2=(String)[Link]();

if(![Link](s2))

[Link](s2);

return bilesimVectoru;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public class SORU9_2000 extends JFrame implements ActionListener

SetA set = new SetA(); // SetA

JLabel L1, P1, P2;

JTextField T1,T2;

JTextArea cikti;

Vector list1 = new Vector();

Vector list2 = new Vector();

Vector ansUn;

Container c;

public SetTestSWF_2000()

super("küme testi bileºim ve kesiºim kümeleri");

c=getContentPane();

[Link](new FlowLayout());

P1 = new JLabel("Birinci listeyi giriniz : ");

T1 = new JTextField(30);

P2 = new JLabel("Ýkinci listeyi giriniz : ");

T2 = new JTextField(30); [Link]([Link]());

cikti = new JTextArea();

[Link](false);

[Link]("");

[Link]([Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link](P1);

[Link](T1);

[Link](this);

[Link](P2);

[Link](T2);

[Link](this);

JScrollPane jp=new JScrollPane(cikti);

[Link](new Dimension(320,200));

[Link](jp);

public void girdiA(String string, Vector list)

StringTokenizer tokens = new StringTokenizer(string);

while([Link]()) {

String test = [Link]();

[Link](test);

public void ciktiA(Vector v)

Enumeration enum = [Link]();

while([Link]())

String ans = (String)[Link]();

[Link](ans + " ");

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
[Link]("\n");

public void actionPerformed(ActionEvent e)

if([Link]()==T1)

String stringToTokenize = [Link]();

girdiA(stringToTokenize,list1);

else if([Link]()==T2)

String stringToTokenize = [Link]();

girdiA(stringToTokenize,list2);

ansUn = [Link](list1,list2);

[Link]("");

[Link]("Ýki listenin bileºim kümesi : \n");

ciktiA(ansUn);

} //actionPerformed metodunun sonu

public static void main(String[] args)

SORU9_2000 pencere = new SORU9_2000 ();

[Link](new BasicWindowMonitor());

[Link](400,350);

[Link](true);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 10

Birden yüze kadar sayýlarýn ortalamasýný bulan bir java bilgisayar programý yazýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
JAVA PROGRAMLAMA DÝLÝ GEBZE YÜKSEK TEKNOLOJÝ ENSTÝTÜSÜ

20 OCAK 2000 BÝTÝRME SINAVI SORULARI

Dr. Turhan Çoban

isim soyisim
ogrenci numarasý
email /telefon
not

AÇIKLAMALAR :

· Toplam süre 3 saattir. (9.00 -12.00)

· Sizin için verilen boº alanlara sorularý cevaplandýrýnýz

· verilen yerler yetmezse ilave kaðýt kullanabilirsiniz.

· Ýyi ºanslar

SORU 1

import [Link].*;

public class Aritmetik1

{ public static void main(String[] args)

int sayi1=1;

int sayi2=2;

sayi1 += sayi2;

[Link]("sayi1+= : "+ sayi1);

sayi1 -= sayi2;

[Link]("sayi1-= : "+ sayi1);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
sayi1 *= sayi2;

[Link]("sayi1*= : "+ sayi1);

sayi1 /= sayi2;

[Link]("sayi1/= : "+ sayi1);

Verilen programýn sonuçlarýný yazýnýz :

SORU 2

import [Link];

import [Link].*;

public class soru2 extends Applet

public void paint(Graphics g)

double not=60;

if( not >= 90)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{ [Link]("A",25,35); }

else if(not >=75)

{ [Link]("B",25,35); }

else if(not >=60)

{ [Link]("C",25,35); }

else if(not >=50)

{ [Link]("D",25,35); }

else if(not >=40)

{ [Link]("E",25,35); }

else

{ [Link]("F",25,35); }

Verilen programýn sonuçlarýný yazýnýz :

SORU 3

import [Link];

import [Link].*;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public class soru3 extends Applet

public void paint(Graphics g)

for(int x=10;x<100;x+=20)

[Link](" "+x,x,25);

Verilen programýn sonuçlarýný yazýnýz :

SORU 4

import [Link];

import [Link];

public class soru4 extends Applet

public void paint(Graphics g)

int x,y;

y=1;

while(y++<5)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
{

x=1;

while(x++<6)

[Link] ("*",15*x,15*y);

Verilen programýn sonuçlarýný çiziniz :

SORU 5

aºaðýdaki program kodunda ******* ile verilen yerde kare metodunu kullanarak sonucu
yazdýracak [Link](...) komutunu yeniden yazýnýz

import [Link].*;

public class soru5

// sayinin karesi static metodu

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static double kare(double x)

return x*x;

public static void main(String[] args) throws IOException

double sayi=2;

[Link]("sayinin karesi : "+ ******** );

SORU6

soru6 metodunda, apletdeki sonucu alabilmek için gerekli olan kare metodunu yazýnýz.

import [Link]; // java applet sinifini cagir

import [Link].*; // java pencere kullanma sinifini cagir

class soru6

// sayinin karesi dinamik metodu

**************

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public class soru6a extends Applet

double sayi=5; // Gercek degisken sayi

soru6 nesne=new soru6();

public void paint(Graphics g)

[Link](sayi+"in karesi = "+[Link](sayi),25,50);

SORU 7

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Verilen programýn çýktýsýný yazýnýz.

import [Link].*;

class soru7

public static boolean ve(boolean b1,boolean b2)

return b1&&b2;

public static boolean veya(boolean b1,boolean b2)

return b1||b2;

public class soru7a

public static void main(String arg[])

boolean b1=true;

boolean b2=false;

[Link](""+[Link](b1,b2));

[Link](""+[Link](b1,b2));

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

SORU 8

Aºaðýda verilen noktaX sýnýfýnda boº býrakýlan

public noktaX(double a, double b)

kurucu metodunu yazýnýz.

public class noktaX

public double x, y;

public noktaX()

x=0;

y=0;

public noktaX(double a, double b)

*************

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public noktaX(noktaX a)

x=a.x;

y=a.y;

public String toString()

return "["+x+","+y+"]";

public noktaX(double a, double b)

SORU 9

soru 8 de verilen noktaX sýnýfýný kullanan dogruX sýnýfý verilmiºtir.

public dogruX(nokta nokta1,nokta nokta2)

kurucu metodunu yazýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
import noktaX;

public class dogruX

public nokta n1,n2;

//kurucu metod metot girdisi x1,y1,x2,y2

public dogruX(double x1, double y1,double x2,double y2)

n1=new nokta(x1,y1);

n2=new nokta(x2,y2);

//kurucu metod, method girdisi iki nokta

public dogruX(nokta nokta1,nokta nokta2)

*****************

public dogruX(nokta nokta1,nokta nokta2)

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

SORU 10

Aºaðýdaki programýn çýktýsýný yazýnýz

import [Link].*;

class boyut1

public static void main(String args[] )

int ayin_gunleri[]={31,28,31,30,31,30,31,31,30,31,30,31};

[Link]("Nisan ayi "+ayin_gunleri[3]+" gun ceker");

SORU 10

drawLine metodu kullanarak aºaðýdaki çýktýyý alacak bir program yazýnýz. çizgi
koordinatlarýnýn ne olduðu önemli deðildir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 11

drawRect metodu kullanarak aºaðýdaki çýktýyý alacak bir program yazýnýz. dikdortgen
koordinatlarýnýn ne olduðu önemli deðildir.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 12

Bu programýn çýktýsýný yazýnýz :

import [Link];

import [Link].*;

public class LabelTesti extends Applet

private Label L1,L2;

public void init()

L1=new Label();

[Link]("etiket 1");

add(L1);

L2=new Label("etiket 2");

add(L2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

public void paint(Graphics g)

[Link]("L1 : "+[Link](),25,80);

[Link]("L2 : "+[Link](),25,95);

SORU 13

Aplete "Merhaba" yazdýran bir applet programý yazýnýz.

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 14

Aºaðýdaki programýn sonuçlarýný (aplete) yazýnýz.

import [Link];

import [Link].*;

public class soru14 extends Applet

private TextArea T1;

public void init()

setBackground([Link]);

String s="buraya denemek icin\nyazi yazildi\n\t sonrada bu yazi aktarildi";

//not \n satirbasi kontrolu

// \t bir sonraki tab setine git

T1=new TextArea(s,5,40);

add(T1);

SORU 15

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
Birden 10 a kadar sayýlarýn ortalamasýný hesaplayan bir application (konsol) programý
yazýnýz.

SORU 16

Aºaðýdaki kodun çýktýsý ne olacaktýr :

public class sifiraBolunmeException

extends ArithmeticException

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public sifiraBolunmeException()

{ super("sifira bolmeye calistiniz "); }

import [Link].*;

import sifiraBolunmeException;

public class soru15

public static void main(String arg[])

int sayi1=0;

int sayi2=1;

try

[Link](bol(sayi2,sayi1));

catch(sifiraBolunmeException e) {[Link]([Link]());}

public static double bol(int s1,int s2) throws sifiraBolunmeException

if(s2==0) throw new sifiraBolunmeException();

return (double) s1/s2;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

SORU 17

a) Bu programýn ne yaptýðýný izah ediniz

b) program çýktýsýný yazýnýz.

import [Link].*;

class YazOku

public static void main (String args[]) throws IOException

String s1="ilk deger";

String s2="ilk deger";

String s3="ilk deger";

PrintWriter cfout=new PrintWriter(new BufferedWriter(new FileWriter("[Link]")));

[Link]("Merhaba");

[Link]("isminiz nedir");

[Link]("sizinle tanistigima memnun oldum");

[Link]();

BufferedReader cfin=new BufferedReader(new FileReader("[Link]"));

s1=[Link]();

s2=[Link]();

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
s3=[Link]();

[Link]();

[Link]("s1 = "+s1);

[Link]("s2 = "+s2);

[Link]("s3 = "+s3);

a)

b)

SORU 18

Bu programýn çýktýsýný yazýnýz.

import [Link].*;

import [Link].*;

public class StringTokenizerTest

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public static void main(String arg[])

String s="Ali veli 49 elli";

[Link]("cumle : "+s);

StringTokenizer t=new StringTokenizer(s);

[Link]("kelime sayisi : "+[Link]());

int i=0;

while([Link]())

[Link]("kelime indeksi : "+(i++)+" kelime : "+[Link]());

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
SORU 19

Aºaðýda verilen bileºim metodunun ne yaptýðýný izah ediniz

import [Link].*;

import [Link].*;

import [Link];

import [Link].*;

class kume

public Vector bilesim(Vector list1, Vector list2)

Vector bilesimVectoru = new Vector();

String s1,s2;

Enumeration n1=[Link]();

Enumeration n2=[Link]();

while([Link]())

s1=(String)[Link]();

[Link](s1);

while([Link]())

s2=(String)[Link]();

if(![Link](s2))

[Link](s2);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
}

return bilesimVectoru;

SORU 20

Aºaðýda verilen Tree sýnýfýnýn ve

soldal_node_sagdal_sirala();

metodunun ne yaptýðýný izah ediniz.

package bolum11;

class TreeNode

TreeNode sol;

int data;

TreeNode sag;

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public TreeNode(int d)

data=d;

sol=sag=null;

public synchronized void gir(int d)

// not ayni deger iki kere girilmeye calisilirsa

// ikinci giris dikkate alinmiyacaktir

if(d<data)

{ if(sol==null) {sol=new TreeNode(d);}

else {[Link](d);}

else if(d>data)

{ if(sag==null) {sag=new TreeNode(d);}

else {[Link](d);}

public class Tree

private TreeNode kok;

public Tree() {kok=null;}

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF
public synchronized void gir(int d)

if(kok==null) kok=new TreeNode(d);

else [Link](d);

public void soldal_node_sagdal_sirala(){soldal_node_sagdal_siralayici(kok);}

public void soldal_node_sagdal_siralayici(TreeNode node)

if(node==null) return;

soldal_node_sagdal_siralayici([Link]);

[Link]([Link]+" ");

soldal_node_sagdal_siralayici([Link]);

Trial This PDF was created using the Free RoboPDF Trial (for evaluation purposes only!)

Version Get RoboPDF: An Easy, Affordable Alternative for Creating PDFs - [Link] Buy RoboPDF

You might also like