java-sunu-2 - Dr. Muhammet BAYKARA

advertisement
22.03.2011
Programlamaya
Giriş
Nesne Tabanlı
Programlamaya Giriş
ve
FONKSİYONLAR
Sunum İçeriği
 Nesne
Tabanlı Programlama Kavramı
 Fonksiyon tanımlama ve kullanma
 Formal Parametre nedir?
 Gerçel Parametre nedir?
 Fonksiyon çağırma nedir?
 Neden Fonksiyon tanımlarız?
 Java’ da Fonksiyon Örnekleri
 Sorular?
1
22.03.2011



Nesne Tabanlı Programlamaya Giriş
Sınıflar ve nesneler Java programlamanın temelini
oluştururlar. Java ile geliştirilmiş bütün uygulamalarda sınıf
ve nesne kavramını kullanmak zorunluluğu vardır. Örneğin
C++ dilinde böyle bir zorunluluk yoktur. Bu dilde sınıf ve
nesneler olmadan da program geliştirmek mümkündür.
Java da ise mümkün değildir. Bu sebeple Java için
pure(saf) nesne tabanlı programlama dilidir denilir.
Nesne Tabanlı Programlama (OOP) kavramında ilk
bilinmesi gereken şey sınıf(class)kavramıdır. Sınıflar,
içerisinde değişken/değişken grupları , metot/metotlar
barındıran bir şablon oluştururlar. Bir sınıf oluşturulduktan
sonra bu sınıfı yeni bir veri tipiymiş gibi kullanabiliriz. Bu
amaçla kullanılan yapılara ise nesne denir. Nesneler,
yaratıldıkları sınıfların özelliklerini taşırlar ve artık ilgili sınıfın
birer somut örneğidir diyebiliriz.
Örneğin şehir kelimesini bir sınıf olarak düşünürsek Elazığ,
Ankara ve İstanbul şehir sınıfının birer örneği olarak
düşünülebilir.
Sınıflar


Sınıflar java programlamada kullanılan temel
programlama elemanlarıdır. Bütün kod içeriği
sınıflar içerisinde bulunur. Asıl kullanım amacı,
verileri tek tek değişkenlerde tutmak yerine,
birbirleriyle ilişkisi olan verileri bir araya getirmek
ve bunlara tek bir referans aracılığıyla erişmeyi
sağlamaktır.
Örneğin öğrenci bilgisini tutabilmek için ad, soyad,
öğrenci numarası, yaş ve adres gibi bilgilere
ihtiyacımız olduğunu düşünelim. Bunların hepsini
her bir öğrenci için ayrı ayrı değişkenlerde tutmak
yerine öğrenci isimli bir sınıf oluşturabilir ve
ihtiyacımız olan değişkenleri bu sınıf içinde
gruplayabiliriz.
Daha
sonra
sınıfımızdan
oluşturacağımız
her
yeni
nesne
sınıfımızın
özelliklerini taşıyacağı için yükten kurtulmuş olunur
diyebiliriz.
2
22.03.2011
Nesneler



Bir sınıfı tanımladıktan sonra aslında yeni bir veri tipi
oluşturmuş oluruz. Java dilinde oluşturduğumuz bu
yeni veri tipine sahip değişkenlere nesne adı verilir.
Nesneler oluşturulan sınıfların birer somut örneği,
hafızada yer alan, ilgili sınıfın tipinde birer somut
değişkendir diyebiliriz.
Şimdiye kadarki uygulamalarımızda kullanmış olsak
ta burada bir kez daha bir sınıfta nelerin
bulunabileceğine değinelim.
Bir sınıf, üye değişkenler, yapılandırıcı metotlar, üye
değişkenlere
dışarıdan
erişim
sağlayan
getter/setter metotlar ve çeşitli metotlar içerebilir.
Şimdi kısaca bunların ne anlama geldiğini görelim.
Bir sınıfın üyeleri





Üye değişkenler: Sınıfta tutulacak bilginin depolandığı özel
değişkenlerdir.
Sınıfımızın
değişkenlerinin
ne
olacağı
uygulamamızın tipine göre şekillenecek bir şeydir ve
programlama mantığımızla alakalı bir durumdur. Nesne tabanlı
programlamada amaç bir anlamda gerçek hayatın
programlama dili ile kodlanabilmesidir. Sınıf üye değişkenlerin
ne olacağı problemimizin doğasına bağlıdır.
Yapılandırıcı metotlar: Sınıf ilk oluşturulurken new operatoru ile
çağrılan metotlar.
Üye değişkenlere dışarıdan erişim sağlayan metotlar: genelde
public kelimesi ile tanımlanırlar ve üye değişkenlere dışarıdan
erişimi sağlarlar
Diğer metotlar: sınıf içerisindeki verileri kullanarak genellikle sınıf
ile ilgili çeşitli çıktılar üreten metotlardır.
Şimdi bu yapıları ve bu yapılar oluşturulurken kullanılan temel
java ifadelerini kısaca görelim
3
22.03.2011
Bir sınıf örneği
public class Ogrenci{
private String ad;
private String soyad;
private int ogrenciNo;
private String bolum;
public Ogrenci(){ // ? Fonksiyon!
ad=‘’ ’’;
soyad=‘’ ’’;
ogrenciNo=-1;
bolum=‘’ ’’;
}
public void setAd(String ad){
this.ad=ad;
}
public void setSoyad(String soyad){
this.soyad=soyad;
}
}

Anahtar kelimeler




Public, private ve protected ;üye değişkenler ve sınıf
metotları için erişim seviyeleri tanımlamak için
kullandığımız anahtar kelimelerdir. Bunlar sınıf içerisinde
bulunan değişkenlere nasıl erişim sağlanacağını
belirlemek için kullanılır.
public: bu anahtar kelime önüne geldiği değişkenin
veya metotların bütün sınıflardan erişilebilir olmasını
sağlar.
Private: önüne getirildiği değişken veya metodun
dışarıdaki sınıflardan erişilmez olmasını sağlar. Private
değişkenler sadece kendi sınıfı içerisinde kullanılabilir .
Protected: önüne getirildiği değişken veya metotlara
sadece kendi paketi içerisindeki sınıflar tarafından erişim
izni verir.
4
22.03.2011
Anahtar kelimeler ve erişim izinleri

Aşağıdaki şekil erişim seviyelerini anlamamız
açısından güzel bir örnektir. Yeşil renk kullanım
izninin olduğunu , kırmızı renk ise kullanım izninin
olmadığını göstermektedir
new operatörü

Bu operatör bir sınıf adıyla birlikte kullanılır. Bellekte
ilgili sınıfa ait bir nesne oluşturur. Bir örnek olarak;
Ogrenci o1=new Ogrenci();
İfadesi ile o1 nesnesi için Ogrenci sınıfına özel bir
bellek ayrılmasını sağlar.
Çok defa örneklerde
kullandığımız
new
operatörü
javada
sıklıkla
kullandığımız bir ifadedir. Temel tip değişken
tanımlamalarımızda veya kendi sınıfımızın bir
nesnesini yaratacağımız zaman kullandığımız bir
kelimedir. Aşağıda bir başka örnek olarak oku ismiyle
Scanner sınıfının bir örnek nesnesi yaratılmaktadır.
Scanner oku= new Scanner(System.in);
5
22.03.2011
Nokta(.) operatörü

Nesneler tanımlandıktan sonra ve new operatörü
aracılığı ile oluşturulduktan sonra nesnelerin public ve
protected anahtar kelimeleri kullanılarak tanımlanmış
üye değişken veya metotlarına dışarıdan erişim
sağlayabilmek için java nokta operatörünü kullanır.
Örnek olarak;
Yukarıda tanımladığımız Ogrenci sınıfının bir nesnesini
yaratarak üye değişkenlere erişim sağlayalım;
//…
Ogrenci yeniogrenci=new Ogrenci();
yeniogrenci.setAd(‘’Abdullah’’);
yeniogrenci.setSoyad(‘’Çelik’’);
//…

 Buraya
kadar ,sınıf tanımı, yapılandırıcı
tanımı , üye değişken tanımları, sınıftan
nesne üretimi, ve nokta operatörü ile
nesnelerin değişkenlerine erişimleri görmüş
olduk.
 Bu kısımda artık metotlara detaylı olarak
girebiliriz.
6
22.03.2011
Metotlar



Genel olarak metotlar, parametre olarak dışarıdan
verilen veriler üzerinde çeşitli işlemler gerçekleştiren
isteğe bağlı olarak yapılan bu işlemlerin sonucunu
geri döndüren programlama ifadeleridir. Java
dilindeki metotlar, C/C++,C# dillerinde fonksiyon,
bazı dillerde procedure ve module olarak
isimlendirilir. Özetle ,metotlar, hemen hemen tüm
programlama dillerinde kullanılan ve belirli işlevleri
yerine getirmek için kullanılan yapılardır.
Metotlar değer döndürmek zorunda değillerdir.
Metotlar parametre alabilir veya almayabilirler.
Metotlar

Javada metot tanımı şöyledir:
Özel_anahtar_kelime
Dönüş_tipi
Metot_Adı(Metot_parametreleri)
{
Metot işlevleri; // işlemler bu kısımda yapılacaktır
}
7
22.03.2011
Metotlar





Özel Anahtar Kelimeler: Bu alan dolu olmak zorunda değildir.
Bu alan metoda erişim seviyesini belirleyen public, private,
protected anahtar kelimelerini veya metotun statik metot olup
olmadığını belirleyen static kelimelerini içerebilir.
Dönüş Tipi: Genellikle Metotlar bir sonuç döndürürler. Sonuç
döndürme işlemi return kelimesi ile yapılır. Eğer metot bir değer
döndürmeyecekse ,geri dönüş tipi kısmında void kelimesi
bulunmalıdır.
Metot Adı: Metotlara ana program içerisinden erişimlerde
metodun adı kullanılır.
Metot Parametreleri: Bu alan metodun yapacağı işlemler için
sağlanacak parametreleri belirler. Parametreler parantez içine
yazılır ve her bir parametre diğerinden virgülle ayrılır.
Metot içeriği: Metodun yapacağı işlemler burada tanımlanır.
Metotlar
private int topla(int sayi1,int sayi2){
int sonuc ;
sonuc = sayi1+sayi2;
return sonuc;
}
int sayi1
int sayi2
int sonuc;
sonuc=sayi1+sayi2;
return sonuc;
sonuc
topla metodu
8
22.03.2011
Metotlar
 Görüldüğü
gibi topla metodu int tipinde
sayi1 ve sayi2 isminde iki parametre alan
ve bu iki değerin toplamını döndüren bir
metottur. Toplam int tipinde istendiğinden
metodun geri dönüş tipi de int tipindedir.
Erişim seviyesi ise private’dir. Yani sadece
içinde bulunduğu sınıf tarafından erişime
açıktır.
Metotlar
 Uygulamalar;
aşağıdaki işlemleri
gerçekleştirecek metotlar oluşturunuz.
 Faktöriyel
metodu,
 Dört işlem gerçekleştirmek üzere tüm
metotları içeren bir java programı
9
22.03.2011
Metotların kullanımı
 Metotlar
bir defa tanımlandıktan sonra
normal java komutları gibi kullanabiliriz.
 Örneğin yukarıda tanımladığımız topla
metodunu kullanmak için;
//…
int a=50;
int b=20;
int toplam=topla(a,b);
//topla metodu kullanımı
System.out.println(toplam);
//...
Metotlar
 Metotlar
bir kez tanımlanırlar ve main
metot içerisinde istenildiği kadar çağrılıp
kullanılabilir. Önemli olan metodun geri
dönüş tipine ve alacağı parametrelerle
bizim kullanım şeklimizin uyumlu olmasıdır.
 Metot tanımında yer alan parametreler
hafızada
yer
kaplamazlar,
bu
parametreler formal(biçimsel)’dır. Gerçek
program içerisinde metot çağrımında
(metot
kullanımında)kullandığımız
parametreler ise gerçek parametrelerdir
ve bunlar hafızada yer kaplarlar.
10
22.03.2011
Uygulamalar
 Faktöriyel
işlemi ve dört işlem için
oluşturduğunuz metotları main metot
içinde
kullandığınız
uygulamalara
dönüştürünüz. Yani;
 Klavyeden girilen değeri parametre alıp
faktöriyel
hesabı
yapan
faktöriyel
metodunu kullanan bir java programı
yazınız.
 Benzer şekilde dört işlemi yapan ve
yukarıdaki metotlarınızdan oluşan java
programı oluşturunuz.
Paketler
 Çok
sayıda
sınıftan
oluşmuş
java
uygulamalarında
benzer
sınıfları
gruplamak için geliştirilmiş bir çözümdür.
 Paketlerin
getirdiği bir başka fayda
derleyici için sınıfların tek başına bir anlam
ifade etmemesidir ve sınıfın bulunduğu
paketin de göz önünde bulundurulmasıdır.
Aynı paket içerisinde aynı isimli iki sınıf
olamaz ; farklı paketlerde aynı isimli iki sınıf
olabilir.
11
22.03.2011
İstisna Yönetimi

Bazen yazdığımız programlar istediğimiz gibi
çalışmayabilirler. Örneğin kullanıcıdan sayıların
girilmesine yönelik bir programda kullanıcının
sürekli olarak doğru tipte değer gireceğinden
emin olmak zordur. Bu sebeple kullanıcının
yanlış giriş yapması durumunu da göz önünde
bulundurmak gerekir. Bu durumda ya girişin
doğruluğunu kontrol edecek bir metot
yazılmalı ya da oluşabilecek istisnalar trycatch bloğu kullanılarak yakalanmalıdır.
Try-catch
try {
//istisna denetimi yapılacak kod
} catch (yakalanacakistisnasinifi yis) {
//istisna yakalandığında yapılacak
}
işler
12
22.03.2011
Try-catch örnek
try {
girilenSayi = Integer.parseInt(girdi);
} catch (NumberFormatException ex) {
System.out.println("Bir sayı girmek
zorundasınız!!!");
return -1;
}
return girilenSayi;
}
try-catch
 Try-catch
bloğunun catch kısmında ,try
bloğundaki kod kümesinde üretilebilecek
olan istisnalar yakalanmaya çalışılır. Eğer
istisna yakalanırsa kullanıcıyı doğru bir sayı
girmesi için yönlendirebiliriz. Yukarıdaki
program parçasında kullanıcıdan alınan
sayı üzerinde bir hata denetimi yapılıyor ,
burada amaç kullanıcı sayı girmezse hata
kodu döndürmektir.
13
Download