(Microsoft PowerPoint - 8.Hafta - Kal\375t\375m Kavram\375, Kal

advertisement
JAVA PROGRAMLAMA
Öğr. Gör. Utku SOBUTAY
İÇERİK
2
• Java’da Kalıtım Kavramı
• Java’da Çok Biçimlilik Kavramı
– Fonksiyonların Çok Biçimliliği
– Yapıcı Fonksiyonun Çok Biçimliliği
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Kalıtım Kavramı
JAVA’DA KALITIM KAVRAMI
•
•
4
•
•
•
Kalıtım; aynı özellikleri içerisinde barındıran fakat, farklı
özellikleri ile ana sınıftan ayrılan anlamına gelmektedir.
Bir sınıf oluşturulur, bu sınıf bir varlığın ortak özelliklerini içerir, bu
sınıftan başka sınıflar kalıtım yoluyla türetilir ve yeni sınırlar hem
ana sınıfın özelliklerine sahiptir, hem de kendine has özelliklere
sahiptir.
Kalıtım kullanımı, bir kod parçasının tekrar tekrar yazılmasını
engellemektedir.
Sınıflar arasında gerçek hayata benzer bağlantılar oluşturur.
Bir sınıf kullanılarak kalıtım yoluyla birden fazla sınıf türetilebilir,
fakat birden türetilen bir sınıf birden fazla sınıftan türeyemez.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
•
Kalıtım yoluyla yeni sınıflar türetmek için extends kelimesi
kullanılmaktadır.
Java’da kalıtım yoluyla yeni sınıflar aşağıdaki gibi türetilebilir;
ANA SINIF
5
public class AnaSinif{
…….
}
TÜRETİLEN BİRİNCİ SINIF
public class Sinif1 extends AnaSinif{
…….
}
TÜRETİLEN İKİNCİ SINIF
public class Sinif2 extends AnaSinif{
…….
}
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 1; aşağıda çizelge olarak verilmiş olan ana sınıf ve kalıtım ile
oluşturulan diğer sınıfları Java kodları ile oluşturunuz.
6
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 1 (Devam); çizelgede verilen Degiskenler sınıfının Java kodları
aşağıdaki gibi oluşturulmuştur.
7
Sınıf-Kalıtım çizelgesinde gösterildiği gibi
sayi1 ve sayi2 isimli tamsayı değişken
oluşturulmuştur.
Bu değişkenlerin konsola yazdırılması için
de gosterSayi1 ve gosterSayi2 isimli iki
fonksiyon oluşturulmuştur.
Değişkenler ana sınıfının Java dilinde
tanımı bu şekildedir. Diğer sınıflar bu
sınıftan türetilecektir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 1 (Devam); çizelgede verilen Toplama sınıfının Java kodları aşağıdaki
gibi oluşturulmuştur.
8
Degiskenler sınıfından (extends kullanılarak)
türetilen Toplama sınıfı, Degiskenler sınıfının
sayi1 ve sayi2 değişkenlerini kullanabildiği gibi
kendine ait toplam isimli tamsayı değişkenine
de sahiptir.
Topla fonsksiyonu, değişkenler sınıfının sayi1
ve sayi2 değişkenlerini toplamıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 1 (Devam); çizelgede verilen Cikarma sınıfının Java kodları aşağıdaki
gibi oluşturulmuştur.
9
Degiskenler sınıfından (extends kullanılarak)
türetilen Cikarma sınıfı, Degiskenler sınıfının
sayi1 ve sayi2 değişkenlerini kullanabildiği gibi
kendine ait fark isimli tamsayı değişkenine de
sahiptir.
Cikar fonsksiyonu, değişkenler sınıfının sayi1
ve sayi2 değişkenlerini birbirinden çıkarmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 1 (Devam); çizelgede verilen sınıfların denenmesi için kullanılan
DortIslem sınıfının kodları aşağıdaki gibi oluşturulmuştur.
DortIslem sınıfın içerisinde main sınıfı bulunmaktadır ve
oluşturulan türemiş sınıfları denemek için kullanılmştır.
10
Toplama türemiş sınıfından t1 isimli bir nesne
oluşturulmuştur. Bu nesne, hem değişkenler sınıfının
sayi1 ve sayi2 değişkenlerine erişebilmektedir hem de
kendi fonksiyonlarını kullanabilmektedir.
Cikarma türemiş sınıfından c1 isimli bir nesne
oluşturulmuştur. Bu nesne, hem değişkenler sınıfının
sayi1 ve sayi2 değişkenlerine erişebilmektedir hem de
kendi fonksiyonlarını kullanabilmektedir.
Toplama ve Çıkarma
işlemlerinin konsoldaki
sonuçları
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 2; aşağıda çizelge olarak verilmiş olan ana sınıf ve kalıtım ile
oluşturulan diğer sınıfları Java kodları ile oluşturunuz.
11
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 2 (Devam); çizelgede verilen Insan sınıfının Java kodları aşağıdaki
gibi oluşturulmuştur.
12
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
13
Örnek 2 (Devam); çizelgede verilen Ogrenci sınıfının Java kodları aşağıdaki
gibi oluşturulmuştur.
super kelimesi üst sınıf yani Insan sınıfına
erişim için kullanılmaktadır.
Bu kodlamada Ogrenci constructor’ı içinde
kullanılan
süper,
Insan
sınıfının
constructor’ına parametre gönderilmek
için kullanılmıştır.
GsoterNo fonksiyonu içerisinde kullanılan
süper üst sınıfın fonksiyonuna erişmek
için kullanılmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 2 (Devam); çizelgede verilen Ogretmen sınıfının Java kodları
aşağıdaki gibi oluşturulmuştur.
14
super kelimesi üst sınıf yani Insan sınıfına
erişim için kullanılmaktadır.
Bu kodlamada Ogretmen constructor’ı
içinde kullanılan süper, Insan sınıfının
constructor’ına parametre gönderilmek
için kullanılmıştır.
GosterSicilNo
fonksiyonu
içerisinde
kullanılan süper üst sınıfın fonksiyonuna
erişmek için kullanılmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 2 (Devam); çizelgede verilen sınıfların denenmesi için kullanılan
KalitimOrnegi sınıfının kodları aşağıdaki gibi oluşturulmuştur.
15
Kalıtım sınıfında main fonksiyonu bulunduğu için
çalıştırılabilir bir sınıftır ve yandaki sonuç elde edilmiştir.
Türetilen Ogrenci ve Ogretmen sınıfları, türetildiği Insan
sınıfında tanımlanan Isim değişkenine erişim içeriğini
değiştirebilmektedir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 3; aşağıda çizelge olarak verilmiş olan ana sınıf ve kalıtım ile
oluşturulan sınıfın Java kodları ile oluşturunuz.
16
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 3 (Devam); çizelgede verilen Baba sınıfının Java kodları aşağıdaki
gibi oluşturulmuştur.
17
Baba sınıfında private olarak
Göz Rengi ve Boy Uzunluğu
olmak üzere iki değişken
tanımlanmıştır. Bu değişkenler,
private olarak tanımlandığı
için
türetilen
bir
sınıfta
kullanılamazlar. Bu nedenle;
bu değişkenlerin değiştirilmesi
ve alınabilmesi için ekstradan
fonksiyonlar yazılmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
•
Örnek 3 (Devam); çizelgede verilen ve Baba sınıfından türeyen Ogul
sınıfının Java kodları aşağıdaki gibi oluşturulmuştur.
18
Baba sınıfından türeyen Ogul
sınıfının kodları verilmiştir.
Bu sınıf içerisinde türetilen
sınıfın denenmesi için main
fonksiyonu da yazılmıştır.
Baba sınıfın private olarak
tanımlanmayan değişken ve
fonksiyonlarını
Ogul
sınıf
kullanabilmektedir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KALITIM KAVRAMI
• Kalıtım ile İlgili Önemli Bilgiler;
19
– Kalıtım yoluyla türetilmiş bir sınıf içerisinden, doğrudan doğruya üst
sınıfın yapıcı fonksiyonuna erişebilmek için super kelimesi kullanılır.
Super kelimesi ile üst sınıfın constructor’ına parametre gönderilebilir.
– Eğer oluşturulan bir sınıfın başka sınıflar tarafından miras alınmasını,
yani oluşturulan sınıftan başka sınıflar türetilmesini engellemek
istiyorsak, temel sınıf oluşturulurken final kelimesi kullanılır.
public class final AnaSinif{
……….
}
– Temel sınıfta (Ana sınıf), private olarak tanımlanan değişkenler,
türetilmiş sınıflarda kullanılamazlar.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Çok Biçimlilik Kavramı
JAVA’DA ÇOK BİÇİMLİLİK KAVRAMI
•
•
•
21
•
•
•
Bir fonksiyona farklı durumlarda, farklı parametreler ile farklı işler
yaptırmaya çok biçimlilik denir.
Çok biçimlilik, fonksiyon ismi karmaşasını engellemek için kullanılır.
Aynı isimli, farklı işler yapan fonksiyonlar çok biçimlilik kullanılarak
oluşturulabilir.
Bir sınıf içerisindeki sıradan fonksiyonlara çok biçimlilik
uygulanabildiği gibi, yapıcı fonksiyonlara (constructor) da çok
biçimlilik uygulanabilmektedir.
Sıradan fonksiyonlara çok biçimlilik uygulandığında fonksiyon aşırı
yükleme (function overload) denilmektedir.
Yapıcı fonksiyonlara çok biçimlilik uygulandığında yapıcı
fonksiyonun aşırı yüklenmesi (constructor overload) ismini
almaktadır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA ÇOK BİÇİMLİLİK KAVRAMI
•
Fonksiyonun Çok Biçimliliği (Aşırı Yüklenmesi):
– Aynı ismi kullanarak fonksiyonlara başka işler yaptırılmasıdır.
– Fonksiyona çok biçimlilik uygulamak için farklı sayıda parametreler
kullanılabilir veya parametrelerin veri tipleri farklı olabilir.
– Fonksiyonun aşırı yüklenmesi aşağıdaki gibi yapılmaktadır;
22
public double toplama(double a, double b){
return a+b;
}
public int toplama(int a, int b){
return a+b;
}
Bu iki fonksiyonun ismi de toplama’dır.
Fakat aldığı parametreler birinde double
diğerinde ise; int şeklindedir.
Bu
fonksiyonlara
double
değer
gönderildiğinde sonuç double tipinde
olacaktır; int değer gönderildiğinde sonuç
int tipinde olacaktır.
public int toplama(int a, int b){
return a+b;
}
public int toplama(int a, int b,int c){
return a+b+c;
}
Bu iki fonksiyonda ise; parametre tipleri
aynıdır. Fakat parametre sayıları farklıdır.
Bu toplama fonksiyonuna 2 tane değer
gönderildiğinde 2 sayıyı toplamaktadır, 3
tane değer gönderildiğinde ise; 3 sayıyı
toplamaktadır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA ÇOK BİÇİMLİLİK KAVRAMI
•
Fonksiyonun Çok Biçimliliği (Aşırı Yüklenmesi):
– Örnek; toplama fonksiyonlarının çok biçimliliğinin Java ile kodlanması
aşağıdaki gibidir;
23
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA ÇOK BİÇİMLİLİK KAVRAMI
•
Yapıcı Fonksiyonun Çok Biçimliliği (Constructor Overload):
– Fonksiyonlara çok biçimlilik uygulandığı gibi sınıfların yapıcı
fonksiyonlarına da çok biçimlilik uygulanabilmektedir.
– Yapıcı fonksiyonların aşırı yüklenmesi ile sıradan fonksiyonların aşırı
yüklenmesi arasında büyük fark yoktur.
– Yapıcı fonksiyonun aşırı yüklenmesi aşağıdaki gibi yapılmaktadır;
24
public class Degiskenler{
int sayi1;
int sayi2;
public Degiskenler(){
sayi1=0;
sayi2=0;
}
public Degiskenler(int a, int b){
sayi1=a;
sayi2=b;
}
}
Degiskenler isimli sınıfta iki tane tamsayılı
değişken tanımlanmıştır.
Değişkenler sınıfının yapıcı fonksiyonu (kırmızı
ile gösterilen) ilk tanımlamada parametresiz
olarak tanımlanmıştır ve böylece sayi1 ve sayi2
değişkenlerinin 0 değerini alması sağlanmıştır.
İkinci tanımlamasında ise; içerisine parametre
atılmış ve sayi1 ve sayi2 değişkenlerinin bu
parametreleri alması sağlanmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA ÇOK BİÇİMLİLİK KAVRAMI
•
Yapıcı Fonksiyonun Çok Biçimliliği (Constructor Overload):
– Örnek; Degiskenler sınıfının yapıcı fonksiyonunun çok biçimliliğinin
Java ile kodlanması aşağıdaki gibidir;
Yapıcı
fonksiyonun
aşırı
yüklenmesi nesne tanımlanırken
kullanılmaktadır.
İki tane nesne tanımlanmıştır.
d1
nesnesinde
nesne
oluşturulurken herhangi değer
gönderilmemiştir.
Böylelikle
d1’in
sayi1
ve
sayi2
değişkenleri 0 olmuştur. d2
oluşturulurken 3 ve 6 değerleri
gönderilmiştir. Böylelikle d2’nin
sayi1 ve sayi2 değerleri 3 ve 6
olmuştur.
25
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA ÇOK BİÇİMLİLİK KAVRAMI
•
26
Örnek: nesne oluşturulurken parametre olarak isim yazıldığında konsola
«Merhaba isim» yazacak, hiçbir parametre gönderilmediğinde sadece
«Merhaba» yazacak Java kodu aşağıdaki gibidir.
Sınıf tanımlanırken ilk constructor parametre
almamaktadır. Parametre almayan constructor
ile nesne oluşturulduğunda konsola sadece
Merhaba yazmaktadır.
İkinci constructor String tipinde isim
parametresi
ile
oluşturulmuştur.
İkinci
constructor kullanarak nesne oluşturulursa
konsola Merhaba isim şeklinde yazılır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
GENEL BAKIŞ
•
27
•
•
•
Java’da kalıtım yoluyla bir sınıftan başka sınıflar türetilebilir. Kalıtım
yoluyla yeni sınıfların türetilmesi ile, aynı kodların sürekli tekrar
tekrar yazılmasının önüne geçilir.
Kalıtım tanımlanan ana sınıfın istenen özelliklerinin türetilmiş
sınıflara geçmesini sağlar.
Java’da çok biçimlilik yardımıyla fonksiyon isim karmaşasının önüne
geçilmiş olunur.
Aynı isimli fonksiyonlara başka başka işler yaptırılabilir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Ders Bitti.
Dinlediğiniz için teşekkürler…
•Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Download