java ile grogramlamaya giris
TRANSCRIPT
COPYRIGHT @ 2011
Proglama Nedir
• Kahve Makinesi Problemi
• Önce su kaynatılır
• Sonra boş bir bardak hazneye yerleştirilir
• Sonra bir miktar kahve tozu bardağa boşaltılır
• Sonra bir miktar şeker bardağa boşaltılır
• Sonra bir miktar süt tozu bardağa boşaltılır
• Sonra su bardağa boşaltılır
• Son olarak hazne kapağı açılır
’’ Bilgisayar sistemin anlayacağı şekilde, başlangıç ve bitiş
noktası belirlenmiş işlerin yerine getirilerek istenen hedefe
ulaşılmasını sağlayan işlemler bütünüdür’’
COPYRIGHT @ 2011
Yapısal Proglama (Structured Programming)
• Program akış sırasının önemi
• Akışlardaki adımların alt program olması
• Go-to yapıları
• Akışın kendisini oluşturan her işin kodlanması
• Akışın uzunluğuna bağlı olarak karmaşıklığın artması
• Kod okumanın zorluğu
• Akışların doğasındaki hiyerarşik ve nesnel yapıyı
karşılayamama
• C C++ Java
• Yapısal (Functional) Programlama Nesne Yönelimli
(Object Oriented) Programlama
COPYRIGHT @ 2011
Nesne Yönelimli (Object-Oriented) Yaklaşım
• Yapılacaklar listesinin nesneler tarafından
gerçekleştirilmesi (gerçek hayatta da olduğu gibi !)
• Yapısal programlama ile çok fazla benzerlik
• Analiz (Ayrıştırma ve Çözümleme) ‘i destekleme
• Benzeşim : Her kelime tek başına bir anlam taşımasına
rağmen; her cümlenin anlamı kelimelerin biraya
getirilme şekline göre değişir!
• Nesne dünyasının kurulması programcının elindedir; bu
nedenle iyi-kötü, hızlı-yavaş, karmaşık-basit ...vs
dengelerinin (trade-off) tek sorumlusudur.
COPYRIGHT @ 2011
Yaklaşım
• Gerçek hayattaki probleme uygun nesne yapıları seçilir
• Attribute (özellik) nesnelerin taşıdığı bilgi; Method
(Yöntem) nesnelerin yetenekleri olarak belirtilir
• Akış Şeması (Flow Chart) ve Sınıf Diagramı (Class
Diagram)
• Örnek : Taksit Hesaplama Aracı
Tutar ve Taksit Sayısı
belirle
Taksit Tutarı
Hesapla
OK ?
Taksit Sağlaması
Yap
Kalanı Son Taksite
Yansıt
Taksit Bilgilerini
Görüntüle
HAYIR
EVET
COPYRIGHT @ 2011
Analiz
- toplamTutar : float
- taksitSayisi : int
- taksitListesi : Taksit []
- belirle() : void
- hesapla() : float
- goruntule() : void
Ödeme
- toplamTutar : float
- taksitSayisi : int
- taksitListesi : float []
- belirle() : void
- hesapla() : float
- saglamaYap() : boolean
- kalaniSonTaksiteEkle() : void
- goruntule() : void
Taksit Belirleme Araci
- taksitTutari : float
- taksitSirasi : int
- saglamaYap() : boolean
- kalaniSonTaksiteEkle() : void
- goruntule() : void
Taksit
1..
n
COPYRIGHT @ 2011
Örnek Akış
package tr.com.gvg.egitim; public class Merhaba {
public static void main(String args[]) { System.out.println("Hello World"); }
} /* end of program */
• Case sensitive
• « ; » statement finish
• « { } » block usage
• Formatting : indentation,space, naming convention...etc
• Standard coding style
COPYRIGHT @ 2011
Örnek Nesne
package tr.com.gvg.egitim; public class Taksit {
private float taksitTutari; private int taksitSirasi; public void hesapla (float toplamTutar, int taksitSayisi, int taksitSirasi){
float lokalTaksitTutari = toplamTutar / taksitSayisi; if(taksitSirasi == taksitSayisi && (taksitSayisi*lokalTaksitTutari) != toplamTutar){ this.setTaksitTutari((toplamTutar - (taksitSayisi*(lokalTaksitTutari-1)))); }else{ this.setTaksitTutari(lokalTaksitTutari); }
} public void goruntule (){
System.out.println("Hesaplanan taksit tutari : " + taksitTutari + " taksit sirasi : "+taksitSirasi);
} public float getTaksitTutari() { return taksitTutari; } public void setTaksitTutari(float taksitTutari) { this.taksitTutari = taksitTutari; } public int getTaksitSirasi() { return taksitSirasi; } public void setTaksitSirasi(int taksitSirasi) { this.taksitSirasi = taksitSirasi; }
}
COPYRIGHT @ 2011
İnceleme
package tr.com.gvg.egitim; public class Taksit {
private float taksitTutari; private int taksitSirasi; public void hesapla (float toplamTutar, int taksitSayisi, int taksitSirasi){
float lokalTaksitTutari = toplamTutar / taksitSayisi; if(taksitSirasi == taksitSayisi && (taksitSayisi*lokalTaksitTutari) != toplamTutar){ this.setTaksitTutari((toplamTutar - (taksitSayisi*(lokalTaksitTutari-1)))); }else{ this.setTaksitTutari(lokalTaksitTutari); }
} public void goruntule (){
System.out.println("Hesaplanan taksit tutari : " + taksitTutari + " taksit sirasi : "+taksitSirasi);
} public float getTaksitTutari() { return taksitTutari; } public void setTaksitTutari(float taksitTutari) { this.taksitTutari = taksitTutari; } public int getTaksitSirasi() { return taksitSirasi; } public void setTaksitSirasi(int taksitSirasi) { this.taksitSirasi = taksitSirasi; }
}
COPYRIGHT @ 2011
Sınıf Yapısı (Class Structure)
class Entry {
/* fields */
String name;
String address;
String phone;
/* constructor */
Entry(String n, String a, String p) { this.name = n;
this.address = a; this.phone = p; }
/* accessors */
String getName() { return this.name; }
String getAddress() { return this.address; }
String getPhone() { return this.phone; } }
COPYRIGHT @ 2011
Derleyici (compiler) tarafından kullanılan sözcükler (keywords)
abstract continue for new switch
assert*** default goto* package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum**** instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp** volatile
const* float native super while
* not used
** added in 1.2
*** added in 1.4
**** added in 5.0
COPYRIGHT @ 2011
İşlem Operatörleri
Operators Precedence
postfix expr++ expr--
unary ++expr --expr +expr -expr ~ !
multiplicative * / %
additive + -
shift << >> >>>
relational < > <= >= instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary ? :
assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
COPYRIGHT @ 2011
Örnek Kullanım
public static void main(String[] args) { for(int i=0; i<5;){ System.out.println((++i)+". index"); } System.out.println(""); for(int i=0; i<5;){ System.out.println((i++)+". index"); } System.out.println(""); boolean dogru = true; System.out.println(dogru==true?"Sonuc dogru": "Sonuc yanlis"); dogru = false; System.out.println(dogru==true?"Sonuc dogru": "Sonuc yanlis");
}
COPYRIGHT @ 2011
Sorular
Teşekkürler...