Nesne Yönelimli Programlama
Hazırlayan: [Link] Akcayol
Gazi Üniversitesi
Bilgisayar Mühendisliği Bölümü
Genel Bilgiler
Ders konuları
1. Programlamaya Giriş
2. Program Denetimi ve Operatörler
3. Nesnelerin Başlangıç Durumu ve Temizlik
4. Paketlere Erişim
5. Kompozisyon ve Kalıtım ile Sınıfların Tekrar Kullanımı
6. Çok Biçimlilik
7. Arayüzler ve Dahili Sınıflar
8. İstisnalar
1
Programlamanın temelleri
Problemin veya amacın anlaşılması ve
gerçekleştirmek için planlama yapılması gerekir.
Algoritma tasarımı
Algoritma, problemin çözümü için takip edilen adımlar,
kurallar kümesi veya süreçtir.
Programın kodlanmasından önce problemin çözümü için
adımların oluşturulması gerekir.
Programlamanın temelleri
Başarılı bir programlama için aşağıdaki adımlar
izlenmelidir:
Adım 1: Problemin anlaşılması, programın girişlerinin ve
çıkışlarının belirlenmesi.
Adım 2: Problemin çözümü için gerekli bileşenlerin
belirlenmesi.
Adım 3: Programın anahtar özelliklerinin belirlenmesi,
akış diyagramın ve pseudo kodun oluşturulması.
Adım 4: Programın test edilmesinde her bir parçanın
belirlenmesi ve test edilmesi.
Adım 5: Sonraki versiyonlardaki gereksinimlerin
belirlenmesi ve önceki adımların tüm versiyonlar için
tekrarlanması.
4
2
Terminoloji
Terminoloji
3
Java programının temel formatı
Java case sensitive programlama dilidir.
"toplam", "Toplam" ve "TOPLAM" birbirinden ayrıdır.
Java programları fonksiyonlar (yordamlar) halinde
yazılır
Tüm fonksiyonlar, bir isme, veri gönderme ve veri
döndürme özelliklerine sahiptir.
Fonksiyonlar programın işlevlerini gerçekleştirir.
Java programlarının başlangıç noktası main()
fonksiyonudur.
Merhaba dünya! programı
// Merhaba dünya! programı.
// 18.09.2017
import [Link].*;
public class MerhabaDunya
{
public static void main (String [] args)
{
[Link]("Merhaba dünya!");
}
}
4
Açıklamalar
Açıklama satırları program hakkında bilgiler vermek
için kullanılır.
Compiler açıklama satırlarını gözardı eder.
Java içinde açıklama yazmanın iki yolu vardır
Tek satırlık açıklamalar
// Açıklamalar bu satıra yazılabilir.
// Compiler iki slaş işaretinden satır sonuna
// kadar herşeyi gözardı eder
Çok satırlık açıklamalar
/* Açıklama yazmanın diğer bir yoludur. Compiler
slaş yıldız ile yıldız slaş arasındaki her şeyi
gözardı eder. */
Önişlemci direktifleri
import [Link].*; ön işlemci direktifidir.
Önişlemci direktifleri compiler’a komutlar gönderir.
[Link] bir kütüphanedir. Klavyeden okuma ve ekrana
yazma için gerekli deyimleri bulundurur.
import deyimi ile compiler’a [Link] araçlarının
kullanılacağı bildirilmiştir.
Java çok sayıda kütüphaneye ve araca sahiptir.
Java fonksiyonları kullanılacağı zaman uygun kütüphanenin
programa import edilmesi gerekir.
10
5
main() fonksiyonu
public static void main(String [] args)
{
...
}
Java programının başlangıç noktasıdır.
Java programları bir main() fonksiyonuna sahiptir.
11
Fonksiyon başlık satırı
Fonksiyon başlık satırı her fonksiyonda olur. Fonksiyonun
adını ve giriş/çıkış parametrelerini tanımlar.
Genel yazımı
return_type function_name(input parameters)
şeklindedir.
return_type, fonksiyonu çağıran yere döndürülecek
değerin türünü belirler.
Fonksiyonlar { ve } parantezleriyle oluşturulur.
12
6
Java deyimleri
Java deyimleri çalıştırılacak komutları ifade eder.
Java’daki çoğu deyim noktalı virgülle sonlandırılır.
Merhaba dünya! programı bir deyime sahiptir.
[Link](“Merhaba dünya!”);
out çıkışı yönlendirir.
println ile string ekrana gönderilir ve yeni satıra geçilir.
13
Boşluk karakterleri ve Java ile esnek yazım
Boşluk karakterleri (whitespaces) programın okunabilirliğini
artırır.
Enter, tab ve space ile oluşturulur.
Compiler gözardı eder.
Merhaba dünya! programı aşağıdaki gibi yazılırsa yine çalışır.
import [Link].*; public class MerhabaDunya { public
static void main (String [] args) {
[Link](“Merhaba dünya!”); }}
14
7
Syntax
Syntax programın yazım kurallarını ifade eder.
Önişlemci yazım hatası bulursa anlamlı bir mesajla
programcıya bilgi verir.
Programdaki az sayıdaki hata, çok sayıda compiler hatası
üretebilir.
15
İyi program yazım şekli
Java ile yazılan programın kolay okunabilir olması gerekir.
Tanımlayıcı açıklamaların yapılması gerekir.
Anlamlı ve uygun uzunlukta değişken isimlendirme yapılması
gerekir.
Programdaki blokların hizalandırılması gerekir.
Başlangıçta okunabilirlik için harcanan zaman, compiler
hatalarının düzeltilmesi veya programın update edilmesi
sırasında çok zaman kazandırır.
16
8
Programlama Dillerindeki Data türleri
Bir veri türü programda kullanılacak değeri belirler.
Her değer için bir tür belirlenmelidir.
17
Programlama Dillerindeki Data türleri
Bir veri türü, veri saklama
alanını ifade eder.
Bir değişken, veri saklama
alanının adını gösterir.
Her veri türü, saklama
alanının boyutunu belirler.
18
9
Programlama Dillerindeki Data türleri
19
Data türleri
Veri türü tanımlama formatı
data_type variable_name;
şeklindedir.
Örnek veri türü tanımlamaları:
double balance;
double deposit;
double withdraw;
int transaction_count;
int check_number;
20
10
Data türleri
Değişkenlere değer atanması
double deger;
int num = 5;
deger = 35.29;
double money, speed;
money = speed = 0.0;
21
İsimlendirme kuralları
Değişkenlere isim belirlenmesinde uyulacak kurallar:
İsimler A-Z, a-z, 0-9 veya _ karakterlerinden oluşur.
İlk karakter harf veya _ olmalıdır.
İsimlerde ~ ! @ # $ % ^ & * ( ) – “+ = \ | ’, sembolleri
ve boşluk karakteri kulanılamaz.
Programlama dilindeki anahtar kelimeler değişken ismi
olarak kullanılamaz.
22
11
İsimlendirme kuralları
Örnek değişken isimleri:
23
Değişken tanımlama
Değişkenler fonksiyon içinde, dışında veya başlık satırında
tanımlanabilir.
Bir değişken kullanılmadan önce tanımlanmalıdır.
Bir değişkene tanımlandığı yerden ulaşılır (scope).
24
12
Java da operatörler
Java da operatörler belirli bir işlemi ifade eder.
F_temp = 9.0/5.0 * C_temp + 32.0;
Operatörler eşitliğin sağ tarafında kullanılırlar.
25
Atama operatörü
Atama operatörü (=) sağ taraftaki değeri sol taraftaki
değişkene aktarır.
miktar = 1534.34;
islemSirasi = 8;
x = y;
Birden fazla değişkene bir ifadeyle değer atanabilir.
a = b = c = 0;
26
13
İşlem öncelikleri
İşlem öncelikleri deyimlerin çalışma şeklini (operatörlerin
işlem sırasını) gösterir.
27
İşlem öncelikleri
F_temp = 9.0/5.0 * C_temp + 32.0;
Yukarıda dört operatör var (=, /, *, +).
Çarpma (*) ve bölme (/) en yüksek önceliğe sahiptir. Sonra
toplama (+) ve en son atama (=) işlemi yapılır.
Atama hariç işlemlerin tamamı soldan sağa
önceliklendirmeyle yapılır.
Önce 9.0/5.0 bölme işlemi yapılır.
Hesaplanan değer C_temp değişkeniyle çarpılır.
Sonra toplama işlemi yapılır.
En son atama operatörüyle hesaplana değer F_temp değişkenine
aktarılır.
28
14
İşlem öncelikleri
29
Veri türleri ve saklanan değerler
Veri türü hafızaya saklanacak değeri belirler.
double x = 15; // x değeri 15.0000000000000 olur
Bir integer değişkene değer atandığında tam kısmı saklanır.
Ondalıklı kısmı yuvarlanmaz truncate (atılır) yapılır.
int miktar = 435.83; // miktar değeri 435 olur
Programcı truncate yapılacak bir değer atadığında compiler
uyarı mesajı üretir.
30
15
Veri türleri ve saklanan değerler
Aşağıdaki iki değişkenin değeri truncate yapılır.
float pi = 3.141592653589793; // pi değişkeninin değeri
// 3.141593 olur.
short int toplam = 56332; // short int limit 32.767 olur.
31
lvalue ve rvalue
lvalue atama operatörünün sol tarafına, rvalue sağ
tarafına denir.
Sağ taraf hesaplanan bir değer, sol taraf değişken olabilir.
Yanlış atamalar
double x, sqrootX;
5.2 = x; // can’t assign from right to left
sqrt(x) = sqrootX; // can’t call sqrt on left of =
//sign
Doğru atamalar
double x, sqrootX;
x = 5.2; //assign number from right to left
sqrootX = sqrt(x); //calculate on right, assign to left 32
16
Veri türleri ve aritmetik işlem sonuçları
Integer ve floating-point bölme işlemlerinin sonuçları 33
Cebirsel eşitlikler ve Java ifadeleri
34
17
Artırma ve azaltma operatörleri
++ ve -- operatörleri değişkenin değerini 1 artırır veya azaltır.
++i; veya i++;
aşağıdakine eşittir
i = i + 1;
35
Artırma ve azaltma operatörleri
Toplama işlemi olarak postfix ve prefix arasında fark yoktur.
++i; //prefix operator ++ değişkenden önce gelir
i++; //postfix operator ++ değişkenden sonra gelir
Prefix operatör önce artırır/azaltır, sonra işlem (varsa) yapar.
Postfix operatör önce işlem (varsa) yapar, sonra artırır/azaltır.
36
18
Artırma ve azaltma operatörleri
i değişkeninin başlangıç değeri 5’tir.
37
Accumulation operatörleri
Accumulation operatörleri (+=, –=, *=, /=) atama
işlemlerini kısa bir şekilde ifade etmek için kullanılır.
toplam = toplam + x;
toplam += x;
fark = fark - x;
fark -= x;
38
19