Kapsülleme (Encapsulation) Kavramı

Home  >>  Object Oriented Programming  >>  Kapsülleme (Encapsulation) Kavramı

Kapsülleme (Encapsulation) Kavramı

24
Eki,2013

0
Nesneye yönelik programlama(OOP) temellerinden biri de Kapsülleme (Encapsulation)  kavramıdır. Kapsülleme (Encapsulation) esas amacı; field,method,propert,class gibi yapılara kontrolsüzce,gereksiz erişimi engelleyerek kullananın kafasını karıştırmadan,yanlış tanımlamalara mahal vermeyip oluşabilecek hataları en aza indirerek istenilen noktaya en hızlı şekilde ulaşılmayı sağlamaktır. Erişim belirleyiciler imiz (Access Modifiers); Public anahtar sözcüğü bir yöntem yada alana hem içeriden hemde dışarıdan erişilmesi gerektiğinde kullanılırken, Private anahtar sözcüğü bir yöntem ya da alana sadece bir sınıfın içerisinden erişilmek istediğinde kullanılır. oluşturulan yöntem ya da alanlara varsayılan olarak  private anahtarı gelir. Proctected anahtar sözcüğü ise tanımlanan metoda bu metodun tanımlandığı sınıftan örneklendirilmiş nesnelerin içinden ve bu sınıftan türetilmiş olan alt nesnelerden erişilebilir. internal olarak tanımlanan öğe, bulunduğu assembly’nin (Dll veya Exe dosyası) içinde erişilebilirdir. Dll veya Exe dosyasının içerisinde erişim için kısıtlama yoktur, ama dışarıdan erişilemez. protected internal erişim belirleyicisi, protected ve internal erişim belirleyicilerinin VEYA (OR) işlemiyle birleştirilmiş halidir. protected internal olarak tanımlanmış öğe, tanımlandığı class’ın içinde ve o class’tan türetilmiş diğer class’ların içinde erişilebilir. Ayrıca, aynı assembly içinde olmasalar dahi, tanımlandığı class’tan türetilmiş diğer class’ların içinde de erişilebilirdir. Kaprekar sayılarını bulmaya çalışan bir örnek metod yazarak kavramımızın kullanımını inceleyelim. Kaprekar sayıları , 1949 yılında Hintli matematikçi Kaprekar tarafından tariflenen sayılardır. n basamaklı bir t Kaprekar sayısının karesi alınıp sağdaki n basamağı solda kalan n-1 basamağa eklendiğinde sonuç yine t sayısını verir. Örnek: 55 , iki basamaklı bir sayıdır. 552 = 3025 , sağdan iki basamak 25 , soldan iki basamak 30. Bu iki sayının toplamı 30+25=55 yani sayının kendisidir. 1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4879 sayıları da diğer bazı Kaprekar sayılarıdır. http://tr.wikipedia.org/wiki/Kaprekar_say%C4%B1lar%C4%B1 Kaprekar sayılarını bulmak bir class oluşturarak bulduğumuz kaprekar sayılarını bir dizi içerisinde toplayıp geri return eden bir metod yazalım.  

using System;
using System.Collections.Generic;

public class Kaprekar_Sayilari
{

private string karakter, ilkSayi, sonSayi, sonuc2;
private int bul ,basamak ,sonuc, sonuc3 ;

private List<int> Dizi = new List<int>();

public List<int> Kaprekar_Sayilari_Hesapla(int _BaslangicSayi, int _BitisSayisi)
{

for (int i = _BaslangicSayi; i <= _BitisSayisi; i++)
{

sonuc = i * i;
karakter = Convert.ToString(i);

basamak = karakter.Length;
sonuc2 = Convert.ToString(sonuc);
sonuc3 = sonuc2.Length;

bul = (sonuc3 - basamak);
ilkSayi = sonuc2.Substring(bul, basamak);
sonSayi = sonuc2.Substring(0, bul);

if (i == (int.Parse(ilkSayi) + int.Parse(sonSayi)))
{
Dizi.Add(i);
}

}
return Dizi;
}
}

  oluşturduğumuz classımızdan yeni bir tane türeterek  public anahtar sözcülüğüyle tanımlamdığımız yöntemlere ulaşabildiğimizi, private tanımlarımıza dışardan erişemiyor olduğumuzu görürüz.  

private void Hesapla_Click(object sender, EventArgs e)
{
Kaprekar_Sayilari _Kaprekar_Sayilari = new Kaprekar_Sayilari();

lsbListe.DataSource =
_Kaprekar_Sayilari.Kaprekar_Sayilari_Hesapla
(
Convert.ToInt32(txtSayi1.Text),
Convert.ToInt32(txtSayi2.Text)
);

}

 

  örneğin Kaprekar_Sayilari_Hesapla metodumuzu private olarak tanımlarsak  editörümüz hemen altını kırmızıyla çizerek bu metoda erişilemediğini belirtecektir. Kaprekar_Sayiları_02 programımıza örnek olarak 56 - 5446 arasındaki kaprekar sayılarını bulmasını isteyelim. Sonuç Kaprekar_Sayiları_01   Software Developer Mustafa Demircioğlu www.mustafademircioglu.net www.mustafademircioglu.org mustafa.demircioglu@outlook.com Object Oriented Programming

Bir cevap yazın

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