Kategoriler
Java

Java Nesne Yönelimli Programlama Ders Notları -2

apuntes_de_java-logo

Diğer dersleri gördünüz mü? https://selimkaratas.com.tr/java-se-ders-notlari

Erişim Belirleyicileri

Public, Private, Protected ve default ( paket sınırlı) gibi erişim belirleyicilerine değinilecektir.

Public (Herkese Açık)

Uygulama içerisinde tüm sınıf ve fonksiyonlardan erişilmektedir. Aynı pakette olması gibi bir zorunluluk yoktur. Farklı paketten alıyorsan o paketin import edilmesi gereklidir.

Private (Özel)

Başka sınıf ve paketlerden erişimin olmadığı durumlardır. Sınıflar private olarak tanımlanamazlar. Sadece dahili sınıflar private olarak tanımlanabilirler. Public sınıfın içinde bir metot private olarak tanımlanırsa o metot artık o sınıfa özgü hale gelir. Bir özelliği read only yapmak için private yaparız. Ona erişmek için public metot yazılır. Dolaylı olarak sınıfın özeliklerini dışarıdan öğrenebiliriz.

Protected (Korumalı)

Bu şekildeki sınıf üyelerine ve dahili sınıflara aynı paket içerisindeki tüm sınıflardan erişilir. Ancak farklı paketten kalıtım ile ( daha sonra değinilecek) oluşturulan alt sınıflar ile erişilebilir. Sınıfların kendileri protected olamaz.

Default (Paket Sınırlı)

Hiç bir anahtar kelime kullanılmadan oluşturulur. Java otomatik olarak bunlara paket sınırı getirir. Bunlara aynı paket içinden erişilir ancak dışarıdan erişilemez.

Encapsulation (Kapsülleme)

Uygulamaların bazı özelliklerinin güvenlik vb çeşitli açılardan gizli kalması gerekmektedir.  Sonuçta dışarıdan tüm üyelere erişim sağlanmasını istemeyiz. Bu saklama işlemine encapsulation-kapsülleme denir.  Bu şekilde saklanan datalara get(), set() metotları ile erişiriz. Eğer saklanan şey bir metot ise erişmek imkansızdır.

kapsüllemeUcgen örneğimizde public olan data alanlarını private yaptık. Daha sonra bunlara main sınıfından erişmeye çalışacağız. Ve aşağıdaki hata ile karşılaşıyoruz.

private

Private olduğu için erişemediğini söylüyor bize.

Peki bunun neden yaptık? Bu alanlara diğer sınıflardan erişim olduğunda istemediğimiz değerlerin girilmesini engellemiş olduk. Örneğin negatif değer girildiğinde anlamsız sonuç elde etmiş oluruz. Diğer tüm olası hataları tek tek düşünüp engellemektense bu şekilde kolaysa hataların önüne geçmiş olduk. Bize lazım olan data alanlarına ise get(), set() metotları ile erişebiliriz.

Kapsülleme ile sakladığımız datalara önce erişmemiz daha sonra değer atamamız gerekiyor. Getter ve Setter metotlarını kullanarak bu işlemleri yapacağız.

insercode

getter and setter

getter setter

İşlemler sonunda aşağıdaki ekranı görürüz. Bizim yerimize getter ve setter metotlarını oluşturdu.
metotlar

setter getter

şeklinde dataları çağırıp yazdırabiliyoruz.

Ölçü birimleri negatif olamayacağı için şu şekilde şartlar koyabiliriz.

public void setKenar1(double x) {

 if( x < 0) {
 kenar1=0;
 }

 else {
 kenar1 = x;
 }
 }

set metotlarına bu şartları her bir kenar için yapabiliriz. Daha sonra main sınıfına gelip aşağıdaki işlemi yaptırırsak:

Ucgen cevre = new Ucgen();

 cevre.setKenar1(-10);
 cevre.setKenar2(25);
 cevre.setKenar3(35);

 System.out.println("1. Üçgenin Çevresi " + cevre.UcgenCevresi());
 System.out.println("1.kenar " + cevre.getKenar1());

negatif üçgen

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir