SUNU 5

advertisement
Bölüm 4 – Kontrol İfadeleri:1.kısım
Outline
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
Giriş
Algoritmalar
Pseudocode
Kontrol İfadeleri
if tek-seçimli ifadeler
if else seçimli ifadeler
while döngü ifadeleri
Algoritmaların Tasarımı : Örnek Çalışma 1(Sayaç Kontrollü Döngüler)
Algoritmaların Tasarımı: Örnek Çalışma 2 (SonlandırcıKontrollü Döngüler)
Algoritmaların Tasarımı: Örnek Çalışma 2 (İçiçe Kontrollü
Yapılar)
Birleşik Atama Operatörleri
Artırma ve Azaltma Operatörleri
İlkel Tipler
4.1
Giriş
• Bu bölümde Kontrol İfadelerini öğreneceğiz.
– Yapısal programlama prensibi
– Kontrol ifadeleri objelerin yapımına yardım eder. (Chapter
8)
4.2
Algoritmalar
• Algoritma
– Belli bir sırada takip edilen işler
• İşler gerçekleştirilir.
• Sıra, hangi işin gerçekleştireceğini tespit eder.
• Program kontrolü
– Kontrol ifadeleri bu sıranın oluşumuna yardım eder.
4.3
Pseudocode
• Pseudocode (Program tasarımı)
– Algoritma geliştirmek için kullanılan esnek bir dil
– Bilgisayarda çalıştırılamaz
– Algoritmayı yapanlara kurallardan bağımsız ifade etmeyi
sağlar.
4.4
Kontrol İfadeleri
• Sıralı çalışma
– Program kodları baştan başlayıp satır satır çalışır.
• Kontrolün transferi
– 3 tip kontrol ifadesi bu kodlar arasında transfer sağlar.
• Sıralı yapılar
• Seçimli yapılar
• Döngüsel yapılar
• Akış diagramı
– İş akışını modeller
• İşi tanımlayan semboller
• İş sırasını gösteren oklar
Notu toplama ekle
Sayacı 1 artır
Java karşılığı:
toplam = toplam + not;
Java karşılığı:
sayac = sayac + 1;
Fig 4.1 Sıralı akış diyagramı.
Ja va Keyw ord s
abstract
assert
boolean
break
case
catch
char
class
default
do
double
else
final
finally float
for
implements import
instanceof int
long
native
new
package
protected public
return
short
strictfp
super
switch
synchronized
throw
throws
transient try
volatile
while
Keywords that are reserved, but not currently used
const
goto
Fig. 4.2 Ja va keyw o rd s.
byte
continue
extends
if
interface
private
static
this
void
4.4
Kontrol İfadeleri
• Java sıralı akışa sahiptir.
• Java 3 farklı seçim komutu sağlar.
– if
– If…else
– switch
• Java 3 farklı döngü komutu sağlar.
– while
– do…while
– for
• Bu komutların herbiri ayrılmış kelimelerdir.
4.5
if tek-seçimli durum
• Tek-giriş/tek-çıkış kontrol ifadeleri
• Şart doğru (true) olduğu zaman komut çalışır.
[not >= 60]
print “Geçti”
[not < 60]
Fig 4.3 if tek-seçimli durum iş iş akış diyagramı.
4.6
if…else seçimli durum
• Şart doğru (true) olduğu zaman komut çalışır.
• Şart yanlış (false) olduğu zaman başka bir
komut çalışır.
• Şart operatörü (?:)
• İçiçe if…else ifadeleri
[not < 60]
print “Kaldı”
[not >= 60]
print “Geçti”
Fig 4.4 if…else iki seçimli durumlar için akış diyagramı.
4.7
while Tekrarlama İfadeleri
• Şart doğru (true) olduğu müddetçe dögüye ait
komutları çalıştır.
birleşim
karar
[ürün <= 1000]
Ürün değerinin 2 katını al
[ürün > 1000]
Java karşılığı:
ürün = 2 * ürün;
Fig 4.5 while tekrarlama ifadelerinin akış dyagramı.
4.8 Algoritmaların Tasarlanması: Örnek
Çalışma 1 (Kontrollü Sayaç Döngüsü)
• Sayaç
– İfadelerin kaç defa tekrar ettiğini kontrol eden değişken
• Ortalama1.java not ortalamasını hesaplar.
– Döngüyü kontrol için sayaç kullanılır.
Toplam değişkenini sıfırla
Sayaç değişkenine 1 ata
Syaç 10 ‘a eşit yada küçük olduğu müddetçe
Diğer notu gir
Toplamı not kadar artır
Sayacı 1 artır
Toplamı 10 ‘a bölerek sınıf ortalamasına ata
Sınıf ortalamasını yazdır
Fig. 4.6 Pseudocode algoritması : sınıf ortalamasını
bulmak için kontrollü sayaç döngüsü kullanılır.
1
// Fig. 4.6: GradeBook.java
2
// GradeBook class that solves class-average problem using
3
// counter-controlled repetition.
4
import java.util.Scanner; // program uses class Scanner
17
Outline
5
6
public class GradeBook
7
{
8
private String courseName; // name of course this GradeBook represents
9
10
// constructor initializes courseName
11
public GradeBook( String name )
12
{
courseName = name; // initializes courseName
13
14
• (1 of
3)
} // end constructor
Assign a value to instance variable courseName
15
16
// method to set the course name
17
public void setCourseName( String name )
18
{
courseName = name; // store the course name
19
20
• GradeBook
.java
Declare method setCourseName
} // end method setCourseName
21
22
// method to retrieve the course name
23
public String getCourseName()
24
{
25
26
return courseName;
} // end method getCourseName
27
 2003 Prentice Hall, Inc. All rights reserved.
Declare method getCourseName
28
// display a welcome message to the GradeBook user
29
public void displayMessage()
30
{
Outline
18
Declare method displayMessage
31
// getCourseName gets the name of the course
32
System.out.printf( "Welcome to the grade book for\n%s!\n\n",
33
getCourseName() );
34
} // end method displayMessage
• GradeBoo
k.java
35
36
// determine class average based on 10 grades entered by user
37
public void determineClassAverage()
38
{
• (2 of
Declare method determineClassAverage
3)
39
// create Scanner to obtain input from command window
40
Scanner input = new Scanner( System.in );
41
42
int total; // sum of grades entered by user
43
int gradeCounter; // number of the grade to be entered next
44
int grade; // grade value entered by user
45
int average; // average of grades
Declare and initialize Scanner
variable input
46
47
// initialization phase
48
total = 0; // initialize total
49
gradeCounter = 1; // initialize loop counter
50
 2003 Prentice Hall, Inc. All rights reserved.
Declare local int variables total,
gradeCounter, grade and average
51
// processing phase
52
while ( gradeCounter <= 10 ) // loop 10 times
53
{
Outline
19
while loop iterates as long as
gradeCounter <= 10
54
System.out.print( "Enter grade: " ); // prompt
55
grade = input.nextInt(); // input next grade
56
total = total + grade; // add grade to total
57
gradeCounter = gradeCounter + 1; // increment counter by 1
58
} // end while
59
Increment the counter variable gradeCounter
60
// termination phase
61
average = total / 10; // integer division yields integer result
62
Calculate average grade
63
// display total and average of grades
64
System.out.printf( "\nTotal of all 10 grades is %d\n", total );
65
System.out.printf( "Class average is %d\n", average );
66
} // end method determineClassAverage
67
68 } // end class GradeBook
 2003 Prentice Hall, Inc. All rights reserved.
Display results
• GradeBoo
k.java
• (3 of
3)
1
// Fig. 4.7: GradeBookTest.java
2
// Create GradeBook object and invoke its determineClassAverage method.
23
Outline
3
4
public class GradeBookTest
5
{
6
public static void main( String args[] )
7
{
Create a new GradeBook object
8
// create GradeBook object myGradeBook and
9
// pass course name to constructor
10
GradeBook myGradeBook = new GradeBook(
"CS101 Introduction to Java Programming" );
11
12
• GradeBook
Test.java
Pass the course’s name to the GradeBook
constructor as a string
13
myGradeBook.displayMessage(); // display welcome message
14
myGradeBook.determineClassAverage(); // find average of 10 grades
} // end main
15
16
17 } // end class GradeBookTest
Welcome to the grade book for
CS101 Introduction to Java Programming!
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
Enter
grade:
grade:
grade:
grade:
grade:
grade:
grade:
grade:
grade:
grade:
67
78
89
67
87
98
93
85
82
100
Total of all 10 grades is 846
Class average is 84
 2003 Prentice Hall, Inc. All rights reserved.
Call GradeBook’s
determineClassAverage method
4.9 Algoritmaların Tasarlanması: Örnek
Çalışma 2 (Sonlandırıcı-Kontrollü Döngüler)
• Sonlandırıcı değer
– Veri girişini sonlandırmak amaçlı kullanılır.
• Ortalama2.java döngünün sayısı belli değil
– Kullanıcı sonlandırıcı değere (-1) basarak döngüyü
bitiriyor.
Toplam değişkenini sıfırla
Sayaç değişkenine 1 ata
İlk not girişi yap (sonlandırıcı değer de mümkün)
Kullanıcı sonlandırıcı değer girmediği müddetçe
Toplamı not değeri kadar artır
Sayacı 1 artır
Yeni notu gir(sonlandırcı değer de mümkün)
Eğer sayaç 0 eşit değilse
Ortalamayı toplamı sayaca bölerek bul
Ortalamayı yazdır
else
“Hiçbir not girilmedi” yazdır
Fig. 4.8 Pseudocode algoritması : sınıf
ortalamasını bulmak için sonlandırıcı kontrollü
döngüs kullanılır.
1
// Fig. 4.9: GradeBook.java
2
// GradeBook class that solves class-average program using
3
4
// sentinel-controlled repetition.
import java.util.Scanner; // program uses class Scanner
5
6
7
public class GradeBook
{
Outline
8
9
10
private String courseName; // name of course this GradeBook represents
11
public GradeBook( String name )
12
13
14
{
// constructor initializes courseName
courseName = name; // initializes courseName
} // end constructor
• GradeB
ook.jav
a
• (1 of
3)
Assign a value to instance variable courseName
15
16
// method to set the course name
17
public void setCourseName( String name )
18
{
19
26
courseName = name; // store the course name
20
21
22
} // end method setCourseName
23
24
25
public String getCourseName()
{
return courseName;
26
27
} // end method getCourseName
Declare method setCourseName
// method to retrieve the course name
 2003 Prentice Hall, Inc. All rights reserved.
Declare method getCourseName
28
// display a welcome message to the GradeBook user
29
30
public void displayMessage()
{
Outline
27
Declare method displayMessage
31
// getCourseName gets the name of the course
32
33
System.out.printf( "Welcome to the grade book for\n%s!\n\n",
getCourseName() );
34
} // end method displayMessage
35
36
// determine the average of an arbitrary number of grades
37
public void determineClassAverage()
38
{
39
40
41
// create Scanner to obtain input from command window
Scanner input = new Scanner( System.in );
42
43
int total; // sum of grades
int gradeCounter; // number of grades entered
44
45
int grade; // grade value
double average; // number with decimal point for average
46
47
48
// initialization phase
total = 0; // initialize total
49
gradeCounter = 0; // initialize loop counter
50
• (2 of
3)
Declare method determineClassAverage
Declare and initialize Scanner
variable input
Declare local int variables total,
gradeCounter and grade and
double variable average
51
52
53
// processing phase
// prompt for input and read grade from user
System.out.print( "Enter grade or -1 to quit: " );
54
55
grade = input.nextInt();
 2003 Prentice Hall, Inc. All rights reserved.
• GradeB
ook.jav
a
56
// loop until sentinel value read from user
57
while ( grade != -1 )
58
{
Outline
59
total = total + grade; // add grade to total
60
gradeCounter = gradeCounter + 1; // increment counter
28
while loop iterates as long as
grade != the sentinel
value, -1
61
62
// prompt for input and read next grade from user
63
System.out.print( "Enter grade or -1 to quit: " );
64
grade = input.nextInt();
65
} // end while
66
67
// termination phase
68
// if user entered at least one grade...
69
if ( gradeCounter != 0 )
70
{
71
// calculate average of all grades entered
72
average = (double) total / gradeCounter;
73
74
// display total and average (with two digits of precision)
75
System.out.printf( "\nTotal of the %d grades entered is %d\n",
76
77
System.out.printf( "Class average is %.2f\n", average );
} // end if
79
else // no grades were entered, so output appropriate message
81
• (3 of
Calculate 3)
average grade
using (double) to
perform explicit
conversion
gradeCounter, total );
78
80
• GradeB
ook.jav
a
Display average grade
System.out.println( "No grades were entered" );
} // end method determineClassAverage
82
83 } // end class GradeBook
 2003 Prentice Hall, Inc. All rights reserved.
Display “No grades were entered” message
1
// Fig. 4.10: GradeBookTest.java
2
// Create GradeBook object and invoke its determineClassAverage method.
29
Outline
3
4
public class GradeBookTest
5
{
6
public static void main( String args[] )
7
{
Create a new GradeBook object
8
// create GradeBook object myGradeBook and
9
// pass course name to constructor
10
GradeBook myGradeBook = new GradeBook(
"CS101 Introduction to Java Programming" );
11
12
• GradeBook
Test.java
Pass the course’s name to the GradeBook
constructor as a string
13
myGradeBook.displayMessage(); // display welcome message
14
myGradeBook.determineClassAverage(); // find average of grades
} // end main
15
16
17 } // end class GradeBookTest
Welcome to the grade book for
CS101 Introduction to Java Programming!
Enter
Enter
Enter
Enter
grade
grade
grade
grade
or
or
or
or
-1
-1
-1
-1
to
to
to
to
quit:
quit:
quit:
quit:
97
88
72
-1
Total of the 3 grades entered is 257
Class average is 85.67
 2003 Prentice Hall, Inc. All rights reserved.
Call GradeBook’s
determineClassAverage method
4.10 Algoritmaların Tasarlanması: Örnek
Çalışma 3 (İçiçe Kontrol Yapıları)
• İçiçe kontrol yapıları
Gecenler ‘e 0 ilk değeri ver
Kalanlar’ a 0 ilk değeri ver
Ogrenci ‘ye 1 ilk değer ver
Sayac 10 ‘a eşit yada küçük olduğu müddetçe
Sınav sonucu gir
Eğer öğrenci geçmiş ise
Gecenlere 1 ekle
else
Kalanlara 1 ekle
Sayacı 1 artır
Kaç kişi geçtiğini yazdır
Kaç kişi kaldığını yazdır
Eğer 8 kişiden fazla kişi geçmiş ise
“Öğretim başarılı” yazdır
Fig 4.10 Pseudocode :sınav sonucu problemi için.
1
// Fig. 4.12: Analysis.java
2
// Analysis of examination results.
3
import java.util.Scanner; // class uses class Scanner
Outline
4
5
public class Analysis
6
{
7
public void processExamResults
8
{
35
Declare processExamResults’
local variables
9
// create Scanner to obtain input from command window
10
Scanner input = new Scanner( System.in );
• Analysi
s.java
• (1 of
2)
11
12
// initializing variables in declarations
13
int passes = 0; // number of passes
14
int failures = 0; // number of failures
15
int studentCounter = 1; // student counter
16
int result; // one exam result (obtains value from user)
17
18
// process 10 students using counter-controlled loop
19
while ( studentCounter <= 10 )
20
{
while loop iterates as long as
studentCounter <= 10
21
// prompt user for input and obtain value from user
22
System.out.print( "Enter result (1 = pass, 2 = fail): " );
23
result = input.nextInt();
24
 2003 Prentice Hall, Inc. All rights reserved.
25
// if...else nested in while
26
if ( result == 1 )
27
28
29
passes = passes + 1;
else
Outline
// if result 1,
// increment passes;
// else result is not 1, so
Determine whether this student passed36
or failed and increment the
appropriate variable
failures = failures + 1; // increment failures
30
31
// increment studentCounter so loop eventually terminates
32
studentCounter = studentCounter + 1;
33
} // end while
34
35
// termination phase; prepare and display results
36
System.out.printf( "Passed: %d\nFailed: %d\n", passes, failures );
37
38
// determine whether more than 8 students passed
39
if ( passes > 8 )
40
41
System.out.println( "Raise Tuition" );
} // end method processExamResults
42
43 } // end class Analysis
 2003 Prentice Hall, Inc. All rights reserved.
• Analysi
s.java
• (2 of
2)
Determine whether more than eight
students passed the exam
1
2
3
4
5
6
7
8
9
10
11
12
// Fig. 4.13: AnalysisTest.java
// Test program for class Analysis.
Outline
public class AnalysisTest
Create an Analysis object
{
public static void main( String args[] )
{
Analysis application = new Analysis(); // create Analysis object
application.processExamResults(); // call method to process results
} // end main
} // end class AnalysisTest
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Enter result (1
Passed: 9
Failed: 1
Raise Tuition
=
=
=
=
=
=
=
=
=
=
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Enter result
Passed: 6
Failed: 4
=
=
=
=
=
=
=
=
=
=
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
2
2
2
2
2
2
2
2
2
2
=
=
=
=
=
=
=
=
=
=
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
1
2
1
1
1
1
1
1
1
1
More than 8 students passed the exam
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
pass,
2
2
2
2
2
2
2
2
2
2
=
=
=
=
=
=
=
=
=
=
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
fail):
1
2
1
2
1
2
2
1
1
1
 2003 Prentice Hall, Inc. All rights reserved.
37
• AnalysisTe
st.java
4.11 Birleşik Atama Operatörleri
• Atama Operatörleri
– Kısaltılmış atama operatörleri
– Herhangi bir atama işlemi
• değişken = değişken operatör ifade;
– Şu şekilde de yazılabilir
• değişken operatör = ifade;
– Örneğin toplam atama operatörü +=
•c = c + 3
– Şu şekilde de yazılabilir
• c += 3
Assig nm ent
Sa m p le
Exp la na tion
op era tor
exp ression
Assume: int c = 3,
d = 5, e = 4, f
= 6, g = 12;
+=
c += 7
c = c + 7
-=
d -= 4
d = d - 4
*=
e *= 5
e = e * 5
/=
f /= 3
f = f / 3
%=
g %= 9
g = g % 9
Fig. 4.12 Arithm etic a ssig nm ent o p era to rs.
Assig ns
10 to c
1 to d
20 to e
2 to f
3 to g
4.12 Artırma Azaltma Operatörleri
• Bir artırma (++)
– Değer 1 artırır.
• Bir azaltma (--)
– Değeri 1 azaltır
• Önceden artırma / önceden azaltma operatör
• Sonradan artırma / sonradan-azaltma operatör
Op era tor Ca lled
++
preincrement
++
postincrement
--
predecrement
--
postdecrement
Fig. 4.13 The inc rem ent
Sa m p le
exp ression
++a
Exp la na tion
Increment a by 1, then use the new
value of a in the expression in
which a resides.
a++
Use the current value of a in the
expression in which a resides, then
increment a by 1.
--b
Decrement b by 1, then use the
new value of b in the expression in
which b resides.
b-Use the current value of b in the
expression in which b resides, then
decrement b by 1.
a nd d ec re m ent o p era tors.
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
5
5
6
5
6
6
// Fig. 4.14: Increment.java
// Preincrementing and postincrementing operators.
public class Increment {
Line 13 postincrements c
public static void main( String args[] )
{
int c;
// demonstrate postincrement
c = 5;
//
System.out.println( c );
//
System.out.println( c++ ); //
System.out.println( c );
//
System.out.println();
// skip a line
// demonstrate preincrement
c = 5;
//
System.out.println( c );
//
System.out.println( ++c ); //
System.out.println( c );
//
} // end main
} // end class Increment
assign 5 to c
print 5 Line 21 preincrements
print 5 then postincrement
print 6
assign 5 to c
print 5
preincrement then print 6
print 6
Increment.java
Line 13 postincrement
Line 21 preincrement
c
Operators
Associativity
Type
++ -right to left
unary postfix
++ -- +
(type)
right to left
unary
*
/
%
left to right
multiplicative
+
left to right
additive
<
<= >
>=
left to right
relational
== !=
left to right
equality
?:
right to left
conditional
=
+= -= *= /= %=
right to left
assignment
Fig. 4.15 Bu zamana kadar öğrendiğimiz tüm operatörler.
4.13 İlkel Veri Tipleri
• Java da tüm değişkenlerin mutlaka bir veri tipi
olması lazımdır.
• Java ilkel veri tipleri
Typ e
boolean
Size in b its
char
16
byte
8
short
16
int
32
long
64
float
32
double
64
Fig. 4.16 The Ja va
Va lues
true or false
Sta nd a rd
[Note: The representation of a boolean is
specific to the Java Virtual Machine on each
computer platform.]
'\u0000' to '\uFFFF'
(ISO Unicode character set)
(0 to 65535)
–128 to +127
(–27 to 27 – 1)
–32,768 to +32,767
(–215 to 215 – 1)
–2,147,483,648 to +2,147,483,647
(–231 to 231 – 1)
–9,223,372,036,854,775,808 to
+9,223,372,036,854,775,807
(–263 to 263 – 1)
Negative range:
(IEEE 754 floating point)
–3.4028234663852886E+38 to
–1.40129846432481707e–45
Positive range:
1.40129846432481707e–45 to
3.4028234663852886E+38
Negative range:
(IEEE 754 floating point)
–1.7976931348623157E+308 to
–4.94065645841246544e–324
Positive range:
4.94065645841246544e–324 to
1.7976931348623157E+308
p rim itive typ es.
48
Diyalog kutusunda metin yazdırmak
• Pencereler ve diyalog kutuları
– Bir çok Java uygulaması program çıktısını göstermek
için bunu kullanır.
– JOptionPane sınıfı hazır diyalog kutularını
kullanır.
 2003 Prentice Hall, Inc. All rights reserved.
1
// Fig. 3.17: Dialog1.java
2
// Printing multiple lines in dialog box.
3
import javax.swing.JOptionPane; // import class JOptionPane
Outline
4
5
public class Dialog1
6
{
7
public static void main( String args[] )
8
{
• Dialog1.
java
Import class JOptionPane
9
// display a dialog with the message
10
JOptionPane.showMessageDialog( null, "Welcome\nto\nJava" );
11
} // end main
12 } // end class Dialog1
Show a message dialog with text
 2003 Prentice Hall, Inc. All rights reserved.
49
50
Diyalog kutusunda metin yazdırmak
• javax.swing paketi
– Grafik arabirim oluşturmaya yardım edecek sınıflar
içerir.(GUIs)
– JOptionPane sınıfını içerir
• Bir mesaj yazdırmak için showMessageDialog
statik metodu kullanılır.
 2003 Prentice Hall, Inc. All rights reserved.
51
Diyalog kutusundan metin girişi yapmak
• Diyalog girişi
– Kullanıcın bilgi girmesini sağlar
– JOptionPane sınıfının showInputDialog
metodu kullanılarak oluşturulur
 2003 Prentice Hall, Inc. All rights reserved.
1
// Fig. 3.18: NameDialog.java
2
// Basic input with a dialog box.
3
import javax.swing.JOptionPane;
52
Outline
4
5
public class NameDialog
6
{
7
public static void main( String args[] )
8
{
9
// prompt user to enter name
10
String name =
11
Show input dialog
• NameDial
og.java
JOptionPane.showInputDialog( "What is your name?" );
12
13
// create the message
14
String message =
15
String.format( "Welcome, %s, to Java Programming!", name );
16
17
// display the message to welcome the user by name
18
JOptionPane.showMessageDialog( null, message );
19
} // end main
20 } // end class NameDialog
 2003 Prentice Hall, Inc. All rights reserved.
Format a String to output to user
53
Creating Simple Drawings
 2003 Prentice Hall, Inc. All rights reserved.
54
4.14 (Optional) GUI and Graphics Case Study:
Creating Simple Drawings
• Java grafiklerinde koordinat sistemi
– X- koordinatı ve Y-koordinatı olarak ifade edilir.
• Yatay veya dikey koordinatlar da denilir.
• x-ekseni ve y-ekseninde gösterilir.
– Koordinat birimi pixeldir.
• Graphics class java.awt paketindedir.
– Metin ve şekil çizme metodlarını içerir.
• JPanel class javax.swing paketindedir.
– Çizim yapma alanı oluşturur.
 2003 Prentice Hall, Inc. All rights reserved.
55
4.14 Basit çizimler oluşturmak
• JPanel class
– Her JPanel in bir paintComponent metodu vardır
• paintComponent sistem JPanel i görüntüleyeceği zaman
çağrılır.
– getWidth ve getHeight metodları
• JPanel’in genişlik ve uzunluğunu gönderir.
– drawLine metodu
• İlk 2 argümanın gösterdiği noktadan, diğer 2 argümanın
gösterdiği noktaya bir çizgi çizer.
 2003 Prentice Hall, Inc. All rights reserved.
56
Fig. 4.18 | Java koordinat sistemi
 2003 Prentice Hall, Inc. All rights reserved.
57
4.14 Basit çizimler oluşturmak
• Kalıtım
– extends anahtar kelimesi kullanılır
– Altsınıf(subclass) üstsınıf(superclass)tan türer
• Altsınıf üstsınıfın tanımladığı data ve metodlara sahip olur ve
kullanabilir.
 2003 Prentice Hall, Inc. All rights reserved.
1
// Fig. 4.19: DrawPanel.java
2
// Draws two crossing lines on a panel.
3
import java.awt.Graphics;
4
import javax.swing.JPanel;
Outline
Import the java.awt.Graphics and
the javax.swing.JPanel classes
5
6
public class DrawPanel extends JPanel
7
{
8
// draws an X from the corners of the panel
9
public void paintComponent( Graphics g )
10
{
The DrawPanel class extends
the JPanel class
11
// call paintComponent to ensure the panel displays correctly
12
super.paintComponent( g );
13
14
int width = getWidth(); // total width
15
int height = getHeight(); // total height
• DrawPa
nel.java
Declare the paintComponent method
16
17
// draw a line from the upper-left to the lower-right
18
g.drawLine( 0, 0, width, height );
Retrieve the JPanel’s
width and height
19
20
// draw a line from the lower-left to the upper-right
21
g.drawLine( 0, height, width, 0 );
22
} // end method paintComponent
23 } // end class DrawPanel
Draw the two lines
 2003 Prentice Hall, Inc. All rights reserved.
58
59
4.14 Basit çizimler oluşturmak
• JFrame class javax.swing paketindedir.
– Programcının bir pencere oluşturmasını sağlar.
– setDefaultCloseOperation metod
• JFrame.EXIT_ON_CLOSE arguman olarak uygulamaya
gönderir ve pencere kapandığında programın bitmesini sağlar.
– add metod
• JPanel i JFrame e ekler.
– setSize metod
• JFrame in genişliğini ve uzunluğunu belirler. Birinci parametre
genişlik, ikinci parametre uzunluktur.
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Fig. 4.20: DrawPanelTest.java
// Application to display a DrawPanel.
import javax.swing.JFrame;
60
Import the JFrame class from
Outline
the javax.swing class
public class DrawPanelTest
{
public static void main( String args[] )
{
// create a panel that contains our drawing
DrawPanel panel = new DrawPanel();
// create a new frame to hold the panel
JFrame application = new JFrame();
Create DrawPanel and
JFrame objects
// set the frame to exit when it is closed
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.add( panel ); // add the panel to the frame
application.setSize( 250, 250 ); // set the size of the frame
application.setVisible( true ); // make the frame visible
} // end main
} // end class DrawPanelTest
Add
• DrawPanel
Test.java
Set the application to
terminate when the
user closes the window
the DrawPanel to the JFrame
Set the size of and display the JFrame
 2003 Prentice Hall, Inc. All rights reserved.
61
Fig. 4.21 | Lines fanning from a corner.
 2003 Prentice Hall, Inc. All rights reserved.
Fig. 4.22 | Line art with loops and
drawLine.
 2003 Prentice Hall, Inc. All rights reserved.
62
Download