Kapsülleme, Sınıf Oluşturma, Nesne Oluşturma, Constructor

advertisement
JAVA PROGRAMLAMA
Öğr. Gör. Utku SOBUTAY
İÇERİK
2
•
•
•
•
•
•
Java’da Kapsülleme (Erişim Denetleyiciler)
Java’da Sınıf Oluşturmak
Java’da Nesne Oluşturmak
Java’da Constructor Kavramı
Java’da This Kavramı
Java’da Constructor Çok Biçimliliği
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Kapsülleme / Depolama
(Erişim Denetleyiciler)
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
•
•
4
•
Java’nın kapsülleme/depolama özelliği erişim denetleyiciler
(sınırlandırıcılar) yardımıyla gerçekleştirilmektedir.
Kapsüllemeye aynı zamanda koruma da denilebilmektedir.
Değişkenlerin ve fonksiyonların sadece tanımlandığı sınıf içerisinde
kullanılmasını sağlar, diğer sınıflar veya nesneler tarafından
erişilmesini engeller.
Java’da 4 farklı erişim denetleyici (sınırlandırıcı) bulunmaktadır;
–
–
–
–
Açık (public)
Korumalı (protected)
Özel (private)
Paketle Sınırlı (package)
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
Açık (public) Erişim Seviyesi:
–
–
–
5
–
–
–
Diğer sınıflar, türemiş sınıflar ve nesneler tarafından erişime açık anlamındadır.
public ifadesi ile tanımlanan sınıf, değişken ve fonksiyonlar başka sınıflar ve
nesneler tarafından kullanılabilir, değiştirilebilirler.
Değişken ve sınıfların aynı pakette olup olmaması önemli değildir, herkesin
kullanımına açıktır.
Örneğin; Java’nın main fonksiyonu public olarak tanımlanmak zorundadır.
Herkesin kullanımına açık olmalıdır.
public static void main(String[] args)
Değişkenleri tanımlarken başlarına public kelimesinin konmasına gerek yoktur,
doğrudan doğruya tanımlandığında public olarak tanımlanır, böyle kullanılır.
Örneğin; tam sayılı değişkeni tanımlarken;
public int sayi1; biçiminde tanımlanma zorunluluğu yoktur,
int sayi1; yazılması yeterlidir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
Özel (private) Erişim Seviyesi:
–
–
6
–
Diğer sınıflardan, türetilmiş sınıflardan veya aynı pakette bulunan sınıflardan
erişim mümkün olmaz.
Değişken
veya
fonksiyonlar
sadece
tanımlandığı
sınıf
içerisinde
kullanılabilmektedir. Sınıf dışında kesinlikle kullanılamaz.
Örneğin; değişkenlerin özel (private) kısıtlaması ile tanımlanması aşağıdaki
gibidir;
private int sayi1; değişken tanımlamasının başına private yazılır.
private void merhabaDe(String isim){
Fonksiyon
….
tanımlanmasının
}
başına private yazılır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
Özel (private) Erişim Seviyesi:
–
Örnek; privateOrnegi sınıfı içerisinde dairenin alanını hesaplayan bir fonksiyon
tanımlanmıştır ve pi sayısı, içeriği değiştirilmemesi için private olarak
tanımlanmıştır. Böylece, ornek ismiyle oluşturulan yeni sınıf içerisinde pi sayısı
kullanılamaz.
piSayisi double tipindeki değişken
private (özel) olarak tanımlanmıştır.
7
Darenin alanını hesaplayan fonksiyon
public (açık) olarak tanımlanmıştır.
deneme isminde yeni bir sınıf tanımlanmıştır.
Yeni tanımlanan deneme sınıfı içerisinde
private olarak tanımlanan piSayisi değişkenine
erişilemez.
Yeni tanımlanan deneme sınıfında public
olarak tanımlanan daireninAlani
fonksiyonuna erişilebilir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
Korumalı (protected) Erişim Seviyesi:
–
–
–
8
–
Diğer sınıflardan kullanılmasına izin verilmez.
Değişken ve fonksiyonların türetilmiş sınıflardan ve aynı pakette bulunan
sınıflardan kullanılmasına izin vermez.
Özel (private) erişim seviyesinden farkı; private olarak tanımlanan değişken ve
fonksiyonlar türetilmiş sınıflar dahil hiçbir sınıftan erişilemez, fakat protected
olarak tanımlananlar, türetilmiş sınıflardan ve aynı pakette yer alan sınıflardan
erişilebilir.
Örneğin; değişkenlerin korumalı (protected) kısıtlaması ile tanımlanması
aşağıdaki gibidir;
protected int sayi1; değişken tanımlamasının başına protected yazılır.
protected void merhabaDe(String isim){
Fonksiyon
….
tanımlanmasının başına
}
protected yazılır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
Paketle Sınırlı (package) Erişim Seviyesi:
–
–
–
9
Sınıflara, değişken ve fonksiyonlara sadece paket içerisinde kullanıma izin veriri.
Aynı pakette içerisinde tanımlanmayan sınıflar, değişkenler ve metotlara, paket
dışından erişim izni verilmez.
Örneğin; paket olarak tanımlanan bir sınıftan başka bir paket içerisinde bulunan
sınıf içinde nesne oluşturmak istediğimizde farklı paketlerde olduğu için bu
nesneyi oluşturmamıza izin verilmez.
package com.mca.a; com.mca.a paketi içerisinde tanımlanmıştır.
class A{
….
}
package com.mca.b; paket olarak farklı paket com.mca.b tanımlanmış.
class B{
A a=new A();
com.mca.a paketinde yer almamaktadır.
}
bu şekilde erişime izin verilmez.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA KAPSÜLLEME
(Erişim Denetleyiciler)
•
Erişim Denetleyicilere Genel Bakış:
Erişimci
10
•
Sınıf
Paket
Alt Sınıf
Diğer
public
Erişim Var Erişim Var Erişim Var Erişim Var
private
Erişim Var Erişim Yok Erişim Yok Erişim Yok
protected
Erişim Var Erişim Var Erişim Var Erişim Yok
default
Erişim Var Erişim Var Erişim Yok Erişim Yok
Default: değişken, fonksiyon ve sınıflarda hiçbir erişim
denetleyici belirtilmezse default olarak kabul edilir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Sınıf Oluşturmak
JAVA’DA SINIF OLUŞTURMAK
•
•
•
12
•
Java’da yazdığımız her kod sınıf içerisinde yer almalıdır.
Java dosyası ile aynı isimde olan sınıfa ana sınıf denilmektedir.
Dosya içerisinde bir tane ana sınıf olma zorunluluğu olduğu gibi
başka sınıflar hatta türemiş sınıflar da bulunabilir.
Bir sınıf içerisinde aşağıdakiler tanımlanabilir;
– Değişkenler
– Fonksiyonlar
– Yapılandırıcılar
– Sınıflar
– İç sınıflar
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA SINIF OLUŞTURMAK
•
Sınıf Oluşturmak; Java’da sınıf oluşturmak için class ön eki
kullanılmaktadır. Aşağıdaki örnekte DenemeSinif ismiyle bir sınıf
oluşturulmuştur.
class DenemeSinif{
……
}
13
•
•
Eğer sınıf tanımlarken ana sınıf olarak kullanacak isek; dosya ismini
de yukarıdaki tanımlamaya göre DenemeSinif.java vermemiz
gerekmektedir.
Sınıf ismi olarak Türkçe karakterler ve Java ifadeleri dışında
istediğimizi yazabiliriz. Sınıf içeriği ile uygun isim vermemiz
karışıklığı önleyecektir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA SINIF OLUŞTURMAK
•
Sınıf Oluşturmak;
Ana sınınf oluşturulduğu için public olarak
tanımlanmıştır.
Sınıf içerisinde değişkenler tanımlanmıştır.
14
Sınıf içerisinde fonksiyonlar tanımlanmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA SINIF OLUŞTURMAK
•
İç Sınıf Oluşturmak;
Java’da iç sınıflar bir sınıf içerisinde tanılanan diğer
sınıflardır.
IcSinifOrnegi isimli ana sınıf oluşturulmuştur.
Ana sınıfta sayi1 ve sayi2 değişkenleri tanımlanmıştır.
IcSınıfOrnegi isimli ana sınıf içerisinde DortIslem
iç sınıfı oluşturulmuştur.
15
DortIslem iç sınıfının değişkenleri tanımlanmıştır.
DortIslem iç sınıfının fonksiyonları tanımlanmıştır. Bu iç
sınıf Ana sınıfın değişkenlerini kullanabilmektedir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Nesne Oluşturmak
JAVA’DA NESNE OLUŞTURMAK
•
•
•
•
17
Tanımlanan sınıflardan nesne oluşturulup, sınıf değişkenleri ve fonksiyonları
bu nesneye aktarılabilir.
Her oluşturulan nesne, tanımlandığı sınıfın değişkenlerini kullanabilir,
fonksiyonlarını çağırabilir.
Sınıf kullanılarak nesnenin oluşturulması demek, sınıf özelliklerine göre
bellekte o sınıfa ait yerin ayrılması demektir.
Java’da oluşturulmuş bir sınıftan nesne tanımlamak aşağıdaki gibi
olmaktadır;
DortIslem islem=new DortIslem();
Nesne tanımlayacağımız sınıfın ismi
Sınıf yapılandırıcısını çağırmak için kullanılır.
Yeni nesne oluşturacağımızı new ile belirtiyoruz
Nesnenin referans değişkeni, nesnenin ismi
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA NESNE OLUŞTURMAK
•
Nesne Oluşturma Örneği; isim değişkenine ve bu ismi ekranda gösterecek
fonksiyona sahip bir sınıf tanımlanmıştır. Bu sınıfın değişkenlerini ve
fonksiyonlarını kullanabilmek için bu sınıftan nesne oluşturulmuştur.
18
Sınıf değişkenleri ve
fonksiyonları
tanımlanmıştır.
Nesne
oluşturulmuştur
Oluşturulan nesnenin değişkenine erişilmiştir
Oluşturulan nesnenin fonksiyonu çağrılmıştır
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Constructor Kavramı
JAVA’DA CONSTRUCTOR KAVRAMI
•
•
20
•
•
Constructor’a aynı zamanda yapıcı/kurucu fonksiyon da
denilmektedir.
Sınıftan bir nesne oluşturulurken, oluşturma esnasında
otomatik olarak yapılmasını istediğimiz işlerin yazıldığı
fonksiyona kurucu/yapıcı fonksiyon denilmektedir.
Nesne oluşturulurken, yapıcı fonksiyon (constructor)
otomatik olarak çağrılır.
Kurucu fonksiyonunu yazılması zorunlu değildir, başlangıçta
değişkenlere değerler atanacaksa, nesne oluşturulurken bazı
işler yapılmak isteniyorsa kurucu fonksiyon sınıf içerisine
yazılabilir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA CONSTRUCTOR KAVRAMI
•
Kurucu fonksiyon (constuctor) sınıf içerisinde aşağıdaki gibi
tanımlanmaktadır;
public class DortIslem{
public DortIslem(){
….
}
}
21
•
Bu tanımlamada dikkat edilmesi gerekilen iki tane nokta vardır;
bunlardan biri yapıcı fonksiyonların dönüş değeri (sonuç)
bulunmamaktadır (void olarak bile tanımlanmazlar). İkincisi ise;
yapıcı fonksiyonun ismi; ana sınıf ile aynı olmak zorundadır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA CONSTRUCTOR KAVRAMI
•
Örnek; Ekrana isim yazdıran bir sınıf oluşturulmuştur, ismin doğrudan
doğruya nesne oluşturulurken verilmesi sağlanmıştır. Bu işlem yapıcı
fonksiyon yardımıyla mümkündür.
ConstructorOrnegi isimli ana sınıf tanımlanmıştır
22
ConstructorOrnegi ana sınıfı ile aynı
isimde fakat içerisine parametre alan
yapıcı fonksiyon tanımlanmıştır.
ConstructorOrnegi sınıfından
ornek isimli nesne oluşturulmuştur
ve nesne oluşturulurken «Utku»
parametre değeri olarak
gönderilmiştir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da This Kavramı
JAVA’DA THIS KAVRAMI
•
•
Sınıf içerisinde bir fonksiyona parametre gönderirken, parametre değişkeni
ile aynı isimde bir değişken daha önce sınıf içerisinde tanımlanmış ise; sınıf
içerisinde tanımlananı temsil etmek üzere this kelimesi kullanılır.
Aynı örnek this kelimesi ile yazılırsa aşağıdaki gibi değişecektir;
24
this.isim ile belirtilen sınıf içerisinde
tanımlanan isim değişkenidir. Eşitliğin
sağında kalan isim ise; yapıcı fonksiyon
parametresi olan isim değişkenidir.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Java’da Constructor Çok Biçimliliği
JAVA’DA CONSTRUCTOR ÇOK BİÇİMLİLİĞİ
•
•
•
•
26
Yapıcı fonksiyonların aşırı yüklenmesi ile gerçekleştirilmektedir
(Constructor Overload).
Fonksiyonların çok biçimliliği gibi, constructor’a farklı parametreler ile
farklı işleri yapması sağlanır.
Yapıcı fonksiyonu aşırı yüklerken; yapıcı fonksiyon nasıl tanımlanıyorsa aynı
şekilde fakat farklı parametreler kullanılarak tanımlanır.
Yapıcı fonksiyonun çok biçimli hale getirilmesi (aşırı yüklenmesi) aşağıdaki
gibidir;
public class DortIslem{
public DortIslem(){
….
}
public DortIslem(int a,int b){
…..
}
}
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA CONSTRUCTOR ÇOK BİÇİMLİLİĞİ
•
27
Örnek; Tam sayı tipinde sayi değişkeni tanımlanmıştır. Constructorlar,
nesne oluştururken parametre almazsa sayi değişkenine 100 değerini
atayacak, parametre alırsa da parametre değerini atayacak şekilde çok
biçimli hale getirilmiştir.
Sınıfın ilk constructorı parametre almadığı
durumda sayi değişkenine 100 değerini
atamaktadır.
Sınıfın aynı isimde ikinci constructorı parametre
gönderildiği durumda sayi değişkenine
parametredeki değerin atamaktadır.
Bu sınıftan iki tane nesne oluşturulmuştur.
Birine parametre atanmamış, ötekine 75
parametresi atanmıştır.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA’DA CONSTRUCTOR ÇOK BİÇİMLİLİĞİ
•
Örnek; Dikdortgen sınıfı tanımlanmıştır. Bu dikdörtgen sınıfında tam sayısı
en ve boy değişkenleri bulunmaktadır. İlk constructor parametre almamıştır
ve böylece en,boy değişkenlerine 0 atanmıştır. İkinci constructor iki tane
tam sayılı parametre almıştır ve en,boy değerlerine parametreler
atanmıştır.
Sınıfın ilk constructoru parametre almamış,
en ve boy değerlerine sıfır atanmıştır.
28
Sınıfın ikinci constructoru parametre almıştır,
en ve boy değerlerine bu parametreler
atanmıştır.
Dikdortgen sınıfından ilk d1 nesnesi
oluşturulurken parametre verilmemiştir (en
ve boy 0 değerini almıştır.
İkinci d2 nesnesi oluşturulurken 4 ve 6
parametreleri girilmiştir. En=4, boy =6
olmuştur.
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
GENEL BAKIŞ
•
•
29
•
•
•
Java’nın temelini sınıflar ve nesneler oluşturmaktadır.
Değişken ve fonksiyonlar tanımlanan sınıflardan bu değişken ve
fonksiyonları kullanabilecek nesneler oluşturulabilmektedir.
Oluşturulan nesneler yardımıyla, sınıfların değişken ve fonksiyonu her
nesne için ayrı ayrı kullanılabilir, değiştirilebilir.
Yapıcı fonksiyonlar, nesneler oluşturulurken otomatik olarak yapılması
gerekilen işlerin tanımlandığı fonksiyonlardır.
Ayrıca yapıcı fonksiyonlar yardımıyla, daha nesne oluşturulurken
nesneye parametre gönderilebilir.
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