MeslekForum Mesleki Gelişim Forumu

Go Back   MeslekForum Mesleki Gelişim Forumu > Bilgisayar Yazılım Donanım > Programlama > C#

Cevapla
 
LinkBack Seçenekler Stil
Alt 12-08-2009, 02:17   #1 (permalink)
Kullanıcı Profili
SITE ADMİN
Taner - ait Kullanıcı Resmi (Avatar)
Kullanıcı Bilgileri
Üyelik Tarihi: Oct 2009
Üye No : 2
Mesajlar: 94
Standart Erişim Türleri Nelerdir ?

Erişim Belirleyicileri

Nesnelerin erişim belirleyicileri için şöyle bir örnek verirsek sanırım yanlış
olmayacaktır. Ben özel eşyalarımı ailemden birisi ile paylaşabilirim ancak komşularımla
paylaşmam. Duruma nesne tabanlı programlama tarafından baktığımızda aile fertlerinden
birisi benim özel datalarıma ulaşabilir ancak komşular ulaşamaz.

Erişim belirleyicileri ile nesne sahip olduğu üyelere kimin ve hangi şartla
erişilebileceğini belirtir. Örneğin televizyonumuzun kullanıcı olarak erişebildiğimiz ve
erişemediğimiz kısımları vardır (sınıfın üye elemanları). Kanal değiştirmek için kanal
düğmelerini kullanırız, çünkü bunların kullanılması tamamıyla bize serbesttir. Ancak kanal
bilgisinin nasıl ve nerede tutulduğunu bilemeyiz ve bu kısma erişemeyiz. Sadece kullanmaya
iznimizin olduğu kısımları kullanabiliriz. Erişim belirleyicileri, nesne kullanıcısına nesneyi
nasıl kullanacağını gösterir.

Erişim Türleri

Public : Public olarak tanımlanmış bir metot veya özelliğe herhangi bir yerden
ulaşmak mümkündür. Herkese açık olarak tanımlayabiliriz.

Private : Bu sıfat ile tanımlanmış metot veya özelliklere sadece tanımlandığı sınıf
içerisinden ulaşabiliriz.

Protected : Protected metotlara veya özelliklere tanımlandıkları sınıftan ve bu sınıftan
üretilmiş alt sınıflardan ulaşabiliriz.

Internal : Internal metot veya özelliklere tanımlandıkları sınıftan ve tanımlandıkları
sınıfla aynı assemblede olan sınıflardan erişebiliriz.

Protected Internal : Bu tip metot ve özellikler hem protected hem de Internal
özelliğindedir. Diğer bir ifade ile bunlara ancak kendi sınıflarından veya aynı Assembly’deki
alt sınıflardan ulaşabiliriz.

A
Kod:
Class 1
public a,
private b,
protected c,
internal d,
protected internal e
Class 2
Class 3 : 1
B
Kod:
Class 4
Class 5 : 1
Yöntemler genelde public anahtar sözcüğü ile belirtilir. Böylece nesnenin kullanıcısı
bu yöntemleri kullanarak nesnenin private anahtar sözcüğü ile tanımlanmış ve dışa kapalı
verilerine ulaşılabilir.

C#’da tüm yöntemler sınıf içinde bildirilir ve tanımlanır, ancak C++’da sınıfın
yöntemleri, sınıfın dışında da tanımlanırdı.

Örnek:
Kod:
using System;
 namespace Siniflar
 {
   class Stok
   {
   private int StokMik;
      public void SetStokMiktari(int miktar)
      {
      StokMik = miktar;
      }
      public int GetStokMiktari()
      {
      return StokMik;
      }
   }
   class Uygulama
   {
      static void Main(string[] args)
      {
      Stok st = new Stok();
      int fmiktar = 0;
      st.SetStokMiktari(10);
      fmiktar = st.GetStokMiktari();
      Console.WriteLine("Stok Miktari:{0}", fmiktar);
      }
   }
}
Çıktı:



Yukarıdaki örnekte stok sınıfının private olarak tanımlanmış bir veri üyesi ve public
olarak tanımlanmış iki tane yöntemi vardır. Nesnenin kullanıcısı StokMik üyesine direkt
olarak erişemeyeceği için public yöntemlerinden yararlanır.

Bu örnekte stok sınıfı türünden bir nesne tanımlanmış ve bu nesnenin SetStokMiktarı
yöntemi ile nesnenin private veri üyesine değer atanmakta, GetStokMiktari yöntemi ile de bu
değer nesne kullanıcısı tarafından alınmaktadır.
Nesnenin herhangi bir üyesine erişmek için “ . ” operatörü kullanılır.
st.GetStokMiktari
Yöntemler parametreli veya parametresiz olabilir. Aynı şekilde geri dönüş değerleri de
olabilir veya olmayabilir. Eğer bir yöntem geriye değer döndürmüyorsa yöntem tanımında
geri dönüş değeri olmadığını belirtmek için yöntem adından önce void anahtar sözcüğü
getirilir. Yöntem bir değer geriye döndürüyorsa yöntem tanımında nasıl bir değer geriye
döndürdüğünün yöntem tanımındaki “geri_dönüş_değeri” kısmında belirtilmesi gerekir.

Metot Çağırma:
C# %100 nesne tabanlı bir dil olduğundan, bir metot kullanılırken bulunduğu sınıf
türünden bir nesne tanımlanır ve “.” operatörü ile metoda ulaşılır. Metotlar çağrılmadıkları
sürece çalışmaz.

Metotlar isimleriyle çağrılırken parametrelerden de yararlanılır.

Kod:
// Bu satır 2 parametre ile birlikte Cevir isminde bir metot
çağırmaktadır.
Cevir(45, "Derece");
Eğer giriş parametresi yoksa parantez içi boş bırakılır.
“Static” olarak tanımlanan metotları çağırmak için bir nesne tanımlamaya gerek
yoktur. Eğer metot, içinde olduğu sınıftan çağrılacaksa metodun sadece ismi yazılarak
çalıştırılabilir, eğer sınıf dışından bir çağrım yapılacaksa “SınıfAdi.Metot()” şeklinde
çağrılmalıdır.
Static tanımı ile oluşturulmuş metot için new operatörü ile yeni bir nesne tanımlamaya
gerek yoktur.

Durağan ve Örnek Üyeler ( Static ve Instance Member)
Bir sınıfın üyeleri durağan (static) veya örnek (instance) olabilir.
Durağan olması durumunda sınıf üyesinden sadece bir tane oluşturulur, yani her nesne
oluşturulduğunda durağan üyeden bir tane daha oluşturulmaz. Durağan üyeler belleğin stack
bölgesini kullanır.

Tanımladığımız bir sınıfı kullanmak için o sınıftan bir nesnenin oluşturulması gerekir.
Bu da nesne oluşturmadan sınıftaki herhangi bir üyeyi kullanamamız demektir. Ancak bazen
öyle durumlarla karşılaşırız ki, nesne tanımlamadan da sadece sınıf adı ile
kullanabileceğimiz üyelere ihtiyacımız olur. Durağan üyelere ulaşmak için nesne
oluşturulmasına yani nesne örneğine gerek yoktur ve bu üyelere sınıf ismi ile erişilir. Bunun
en güzel örneği main yöntemidir. “Main yöntemi” sınıfın durağan bir üyesi olduğundan, bir
nesne örneğinin oluşturulmasına gerek kalmadan kullanılmakta ve programın başlangıç
noktasını belirtmektedir. Kısacası durağan bir sınıf üyesi herhangi bir nesneye bağlı değildir.

Örnek üyelerin ise her nesne için bir kopyası oluşturulur ve her nesne için bu üyelerin
içerikleri birbirleriyle karışmaz. Çünkü her nesne için belleğin heap bölgesinde bir yer
ayrılır. Dolayısıyla her nesnenin örnek üyeleri bu bölge içinde yer alır. Örnek üyeler,
durağan üyeler gibi sınıf ismi ile kullanılamaz. Bu üyelerin kullanılabilmesi için new anahtar
sözcüğü ile bir nesnenin oluşturulması gerekir. Daha sonra nesne adı referans edilerek bu
üyelere erişilir.

Durağan yöntemler sınıfın durağan olmayan üyelerine ulaşamaz. Çünkü nesnenin
adresi gizli olarak nesnenin örnek üye yöntemlerine geçirilmektedir. Bu adres nesnenin
bellekte bulunduğu heap bölgesinin adresidir. Durağan üyelere nesne adresi geçmediğinden
nesnenin durağan olmayan üyelerine ulaşması mümkün değildir. Zaten böyle bir durumda
derleme zamanında hata alınacaktır.

Nesne adresinin üye yöntemlerine geçmesi ile yöntem hangi nesneye ait olduğunu
bilir. Bu adrese this denilir.

Kod:
   class OrnekThis
   {
      private int x;
      public void Setx()
      {
      int x = 0;
      x = 10;
      this.x = 20;
      }
   }
Yukarıdaki örnekte Setx yönteminin içinde local olarak tanımlanmış bir x değişkeni
ve bir de this ile birlikte kullanılan x değişkeni bulunmaktadır. this.x değişkeni sınıfın private
olarak tanımlanmış olan x üye değişkenini temsil etmektedir, çünkü this nesnenin adresidir.

Örnek:
Kod:
using System;
using System.Collections.Generic;
using System.Text;
namespace fun
   {
   class Sınıf
      {
      public static void Yaz(int a)
         {
          Console.WriteLine("Sınıf.Yaz()'ın Çıktısı=" + a);
         }
      }
   class Program
   {
      static void Yaz(int a) //Static tanımlama nesne için bir
      bakıma global bir değer tanımı şeklinde oluyor.
      {
       a += 100;
       Console.WriteLine("Yaz()'ın Çıktısı=" + a);
       return;
      }
      static void Main(string[] args)
      {
       int a = 134;
       Sınıf.Yaz(a);
       Yaz(a);
       Console.ReadKey();
      }
   }
}
Çıktı:



Yapıcılar da durağan olabilir. Bu durumda sadece ilk nesne oluşturulurken
çağrılacaktır. Peki, yapıcıların durağan olarak kullanılmasının sebebi ne olabilir?
Bu sorunun cevabı gayet basittir: Nesnenin durağan veri üyelerine ilk değerlerini vermek.

Yukarıdaki örnekte Base sınıfından iki tane nesne tanımlanmıştır. Base sınıfının
durağan bir yapıcı yöntemi bulunmaktadır. Nesnelerin new anahtar sözcüğü ile oluşturulması
sırasında durağan yapıcı yöntem sadece bir kez çağrılmıştır.
Durağan yapıcı yöntemlerde diğer yapıcı yöntemlerden farklı olarak erişim
belirleyicisi kullanılmaz.

Durağan yapıcı yöntemler parametresiz olarak kullanılır.

Kaynak : MEGEP | Nesne Tabanlı Programlama 1
__________________
Beni Sevmek İçin Programlanma Devrelerini Yakarım !
Taner isimli Üye şimdilik offline konumundadır  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Alıntı ile Cevapla
Cevapla

Etiketler
erişim türleri anlatımı, erişim türleri nasıl kullanılır, erişim türleri ne işe yarar, erişim türleri nelerdir, erişim türleri nerede kullanılır

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 16:42.


Powered by vBulletin
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30