Nesneye Yönelik Programlama Dillerinde Encapsulation(Kapsülleme)

01-01-2014
Nesneye yönelik programlama dillerinin yapıtaşlarından biri olan encapsulation, bir sınıfın data field(sınıf değişkenleri)’lerine direkt erişimi engellemeyi sağlar.
Circle sınıfının radius değişkenine, nesne yaratıp, nesneAdi.radius şeklinde erişebiliyorduk. Yazdığımız sınıfların daha güvenli ve daha sağlıklı kullanılmasını sağlamak için, encapsulation yapmak gerekir.
Bu özellik, dilin nesne kullanıcısından gereksiz uygulama ayrıntılarını saklayabilme yeteneği olarak ifade edilebilir. Örnek olarak .Net Framework temel sınıf kütüphanesi içerisinde yer alan ve Open() ve Close() metotlarına sahip SqlConnection sınıfını ele alalım.

1
2
3
4
5
//SqlConnection, veritabanına yapılan bağlantının detaylarını kapsüllemektedir.
SqlConnection baglanti = new SqlConnection("server = London; database = AdventureWorks; integrated security = true");
baglanti.Open();
//Burada veri yönetilir.
baglanti.Close();

SqlConnection sınıfı, veritabanına açılan bağlantının sağlanması, yüklenmesi, yönetimi, kapanması gibi içsel detayları gizlemiştir. Nesne kullanıcısı kapsüllemeyi sever; çünkü programlama görevlerini daha kolay hale getirir. SqlConnection sınıfında olduğu gibi, nesnenin görevini yerine getirmesi için arka tarafta çalışan onlarca satır kodu düşünmeye gerek yoktur. Tek yapılması gereken nesne örneğinin oluşturulması ve uygun metotların çağrılmasıdır.

Örnek:
1
2
3
4
5
6
public class Foo{
private int i=5; //Başa private keyword getirilerek Encapsulation yapildi.
private static int k=2; //Başa private keyword getirilerek Encapsulation yapildi.
public static void main(String[] args){
}
}

Nesneleri Metodlara Aktarmak

1
2
3
4
5
6
7
8
9
public class TestPassObject{
public static void main(String[] args){
Circle circle=new Circle(5.2);
printCircleArea(circle);
}
public static void printCircleArea(Circle daire){
System.out.println("The area of your circle is "+daire.getArea());
}
}

circle nesnesi Circle tipinde olduğu için printCircleArea() metoduna parametre olarak gönderilebilmiştir. Hatırlarsak, sınıflardan yaratılan nesneler referans değişkenlerdi. printCircleArea() metodunun parametresi olan daire referans değişkenine circle nesnesinin tuttuğu adres atanmaktadır. Bu nedenle printCircleArea metodu içindeki kodta daire değişkeni circle değişkeni oldu diyebiliriz.

Nesnelerden Oluşan Array Yaratmak

1
2
3
4
5
6
7
8
9
10
public class ClassArrays{
public static void main(String[] args){
double[] sayilar=new double[10]; //10 tane double türünden değişken tutabilir
Circle[] daireler=new Circle[10];//10 tane Circle türünden nesneler tutabilir
Circle circle1=new Circle(3.2);
Circle circle2=new Circle(5.3);
daireler[0]=circle1; //nesne atandi
daireler[1]=circle2; //nesne atandi
}
}

© 2019 Tüm Hakları Saklıdır. Codesenior.COM