Java'da güvenlik ve kapsülleme (set ve get metotları)

Java programlama dili yapısı itibarı bakımıyla diğer programlama dillerine nazaran daha güvenlidir.

Java programlama dili yapısı itibarı bakımıyla diğer programlama dillerine nazaran daha güvenlidir.

Java'nın güvenli olmasını sağlayan en büyük etken kendinden önce geliştirilen dillerin zaafları göz önünde bulundurarak bu zaafları hesaplayıp ve bu doğrultuda geliştirilmiş olmasıdır. Bir önce ki makalemiz olan "C Programla dili ile Ram Bellekte Kısa Bir Seyahat" adlı makalemizde diziden taşan bir döngüden bahsetmiştik ve hatta aynı örneği Java da denediğimizde bize aşağıda ki hatayı vermişti.


Exception in thread "main" java.lang.NullPointerException

at tr.Run.main(Run.java:11)



Java C ve C++'ın yıkıcı özelliklerini kapatmış, güçlü ve yapıcı özelliklerini alarak geliştirilmiştir. Bu yüzden Java yapısı itibari ile de güvenli bir programlama dili olarak kendini göstermektedir. Bunun dışında Java da çeşitli şifreleme yöntemleri ve değişkenleri saklama gibi bazı güvenlikle ilgili metotlar kullanılmaktadır. Bunlardan en bilenini ise kapsüllemedir.

[B]Kapsülleme Nedir?[/B]

Kapsülleme Java da belirlenen private(class'a özel) değişkenleri bazı metotlar arıcılığı ile direkt çağırılarak kullanmasını engelleyen bir metottur. Yani dolaylı olarak değişkenlere erişim sağlamaktadır. Bu metodun ana kullanılma sebebi ise class'ların içerisinde kullanılan değişkenlerin diğer class'ların direkt erişimine izin vermeyip olası bir güvenlik sorununa yol açmasını engellemektir. Bilindiği gibi private türünde ki değişkenler sadece bulunduğu class içerisinde kullanılabilir. Olası güvenlik zaaflarından kastımız; Deşifre edilen değişkenlerin ram bellekte bir adresi tutulur, adresi tespit edilen değişkene de her türlü müdahale söz konusu olabilir.

Bir çizimle anlatacak olursak kapsüllemeyi durum aşağıda ki örnekten ibarettir.



Durumu açıklayacak olursak;

Başbakanın bir değişken olduğunu düşünelim, devletin önemli sırlarına vakıf ama aynı zaman da halkla da iletişimde olması gerek, Halkla direkt iletişim kurmaya çalışırsa başbakan, halkın içerisine sızmış kötü niyetli kişilerle de karşı karşıya gelmesi mümkün olabilir. Bu durum da milletin bekası için kurulmuş devletin, sırlarının gün yüzüne çıkma ihtimalini ortaya koyar. Yani milletimizin zor durumlarda kalmasına neden olabilir. Bu yüzden hem devletin sırlarını korumak hem de başbakanın halkla iletişimi sağlamak için başbakanlık kendine özgü bir kapsülleme metodu geliştirmiştir. İletişimin başladığı ilk nokta olan E-mail halktan atılan mesajdır, bu mesaj ilk olarak Şikâyet sorumlularına gelir süzgeçlerle süzer ve bir üst kat olan danışman yardımcısına iletilir, bu olayı Java da JFormattedTextField olarak düşünebiliriz JFormattedTextField sadece sayıları aldırmamızı sağlar, bir nevi yukarıda bahsettiğimiz Şikâyet sorumlularının görevini üstlenir ve bir süzgece tabi tutar, Sonra ise Şikâyet Sorumluları durumu bir üst katman olan Danışmana yardımcısına iletir. Oradan ise Danışmana Danışmadan Korumaya, Korumadan ise Başbakana gönderilir. Başbakan ise kendine gelen bilgileri alt kollara ayrılan devletin kademelerine gönderir. Java da durum bu kadar dolaylı ve güvenli olmasa da bu duruma benzer bir uygulama ile uygulanmaktadır. Derslerimizi takip eden arkadaşlar telefon rehberi projesini muhakkak incelemiştir. Dikkat ederseniz arayüz ile veritabanı arasında sürekli Domain class'ını kullandık veritabanından alınan bilgiler domain aracılığı ile arayüze gönderilir, aynı işlem yine tekrar edilip bu sefer arayüzden alınan bilgiler veritabanına gönderilir, kapsülleme sadece veritabanı için kullanılmaz. Kapsülleme güvenlik gerektiren her alanda kullanılabilir.

Şimdi Kapsüllemenin kullanımını anlatan öğrencilere yönelik bir örnek paylaşacağım;

public class OgrenciDomain {

                private int ogrno;

                private String ogradi;

                private String ogrsoyadi;

                public int getOgrno() {

                               return ogrno;

                }

                public void setOgrno(int ogrno) {

                               this.ogrno = ogrno;

                }

                public String getOgradi() {

                               return ogradi;

                }

                public void setOgradi(String ogradi) {

                               this.ogradi = ogradi;

                }

                public String getOgrsoyadi() {

                               return ogrsoyadi;

                }

                public void setOgrsoyadi(String ogrsoyadi) {

                               this.ogrsoyadi = ogrsoyadi;

}


Kısaca Kapsülleme bu şekilde çağırılmaya hazır hale getirilir. Şimdi ise Kapsüllemenin arayüz de çağırılmasını anlatacağım;

OgrenciDomain ogrenciDomain = new OgrenciDomain();

ogrenciDomain.setOgrno(Integer.parseInt(ogrenciNoField.getText()));

ogrenciDomain.setOgradi(ögrenciadıField.getText());

ogrenciDomain.setOgrsoyadi(ogrenciSoyadField.getText());


Dikkat ederseniz arkadaşlar arayüzden veritabanına kayıt yaptırılmak isteniyor ve hiçbir şekilde OgrenciDomain class'ın da ki değişkenler kullanılmıyor ve OgrenciDomain class'ından başka hiç yerde de o değişkenler direkt çağırılamıyor. Kısaca Kapsüllemenin kullanılma amacı budur. Bugün ki dersimiz bu kadar bir sonra ki dersimizde görüşmek dileğiyle.

Not: BU MAKALE EMRAH DEDEOÐLU TARAFINDAN YAZILMIŞTIR, İÇERİSİNDE KULLANILAN ÖRNEKLER DENENMİŞTİR VE OLUMLU SONUÇLAR ALINMIŞTIR
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

• 7 yıl önce
this.ogrsoyadi = ogrsoyadi; Bundan sonra } ile kapatmayi unutmussun (en sondaki } class a ait). Kodu kopyalayanlar sorun yasayabilirler.

Yukarı Git