Jump to content

C# Get Ve Set Kullanımı


mertugruul
 Share

Recommended Posts

Merhaba.

 

get ve set sözcüklerini bir türlü anlayamadım. Ne için kullanılır, nerelerde kullanılır. Detaylı bir araştırmada yaptım. get sözcüğü değeri geriye döndürüyor. Tamam onda sıkıntı yok peki set?

 

Anlaşılır bir şekilde nerelerde kullanıldığını, ne için kullanıldığını anlatırsanız sevinirim.

Link to comment
Share on other sites

  • Editor

get ve set sözcüklerini aslında türkçeye çevirdiğinizde ne işe yaradığını anlayacaksınız.

veritabanı kullanıyorsanız bunu en bariz o şekilde anlarsınız. 

 

Şimdi biz veritabanına bir değer girerken

insert into tablo values degerler

şeklinde giriyoruz biz bu işlem neticesinde veritabanına bir değeri set etmiş oluyoruz yani girmiş oluyoruz.

 

Peki get sözcüğünü ele alalım bunda ise , veritabanından bir takım değerleri getireceğimizi düşünelim bunun için ne yapıyoruz.

select * from tablo

sql komutunu kullanıyoruz. Bunun neticesinde ise veritabanındaki girilmiş değeri get etmiş oluyoruz. Yani getirmiş oluyoruz. Kısa ve öz olarak bu şekilde anlatabilirim.

 

Daha detayına ve hiç bilmeyene anlatıyormuş gibi ele alırsakta.

 

Aslında bu get ve set methodları projeyi korumaya yarayan birtakım etkenlerdir.

 

Şimdi komik ama biraz daha anlaşılır bir örnek olacak.

 

Binanın dışarıdaki kapı zilini düşünün. Eve çıkmıyorsunuz eve gönderdiğiniz kişiler eve gidincede siz zile basarak evde kimin olduğunu soruyorsunuz.

 

Şimdi biraz daha ayrıntılı anlatayım.

       private int mEn;

        //değişkene değer atama işlemleri
        //meodumuzu oluşturalımki ve private nesnelerimize değer atayabilelim
       public int En {

           get {
               return mEn;
           }
           //önce set metodu çalışacak. sonra get metodu ile değişken geri döndürülecek.
           set {
               mEn = value;
           }
       }

Örnek bir tane getter ve setter tanımlaması. 

Şimdi buradaki mEn değişkenini mahkum gibi düşünün. Mahkumlara dışarıdan herkez erişebilirmi erişemez.Gardiyan vasıtasıyla felan yani direk erişimimiz yok buna.

 

Mahkumda dışarıya direk erişim sağlayıp içeriden birşey yollayabilirmi hayır. Gardiyan kontrolünde. Yani demek oluyorki bir kontrolcü nün kontrolünde biz dışarıdan içeriye 

birşeyler alıp ve içeriden dışarıyada bilgi gönderebiliriz.

 

Şimdi burada Gardiyanımız get ve set bloklarımızdır , dışarıdan gönderilen 

dortgen.En = 10;

gibi bir değerin içerideki mEn mahkumuna gitmesini yapan nedir set bloğumuzdur. Peki mahkumda dışarıdan gelen bilgiye göre tekrar içeriden dışarıya karşı bir cevap vermesi gerekiyor , bu seferde

işin içine get bloğumuz giriyor. Dışarıya içerideki mahkumun bilgisini gönderirkende get bloğumuz devreye girerek bilgiyi aktarıyor.

 

Umarım yeterince açıklayıcı olmuştur.

Link to comment
Share on other sites

  • Editor

Yanlış anlamışsınız. private değişkenlere direk erişim yok zaten ancak mevcut class içindende direk erişmemek için. 

 

Mesela. 

textbox.Text = "Ali YILDIRIM";   bu bir set işlemidir. yani biz textbox a ismimizi yazdırmış oluyoruz.

ancak aynı ibareyi  MessageBox.Show(textbox.Text); dediğimizde ise bize önceden göndermiş olduğumuz değeri getiricektir. 

 

Yani Property anlamına geliyor. 

Link to comment
Share on other sites

Hocam anlamakta ısrar çektiğim kısım şu. Private neden yazıyoruz?

Private yerine public int sayi; yazsamda yine aynı oluyor. Değişen bir şey yok. Private olan değişkeni ben zaten public ile erişiyorum özelliğini kontrol ettirerek diğer class'tan. Burada ki amaç ne yani?

Link to comment
Share on other sites

  • Editor

Amaç gizlilik dedim ya. Anlattığım hapishane hikayesini iyice okuyun bence. 

Şayet public olarak tanımlayıp erişecek olursanız. O mahkumların hapishanede olması ile dışarıda olamsı arasındak fark ne olacak :D

Link to comment
Share on other sites

  • Editor

abi senin anlattıgın şekilde bize okulda böyle ögretseler var ya suan coder olmustum :D

 

:D Beğendiğine sevindim kardeşim. Ben genelde eğitim verirken bu şekilde senaryolu olarak anlatıyrum daha anlaşılır oluyor. 

Link to comment
Share on other sites

Object Oriented Programming'de data encapsulation diye bir konsept vardır. Bu konsept sınıf içinde bulunan verilerin diğer sınıflara veya fonksiyonlara kapatılması demektir. Bunun iki sebebi vardır: 

 

1- O veriye diğer yerlerden erişilmesi sınıfın çalışma işleyişini değiştirebilir. Sınıfı kullanan kişinin bu veriye erişmemesi gereklidir. Mesela sınıfın içindeki iki fonksiyon arasında veri ileten bir değişkenimizin değişmesini istemeyiz.Onu bir tek bir değiştirmek isteriz. 

2- Kullanıcının veriye erişmesini isteriz fakat ona her değeri atamasını istemeyiz. Mesela kare oluşturan bi sınıfımız olsun. Bu sınıfı oluştururken bu sınıfı kullanan kişiden karenin alan veya kenar bilgisini girmesini isteyebiliriz. Tabiki bu değerin 0 büyük olması gerekir. Bu kontrolü sağlamak için verimizi korumalıyız.

 

 

Getter ve setter metodları ikinci verdiğim sebep yüzünden ortaya çıkmışlardır. Dediğin gibi hiç bir kontrol gerektirmeyen sınıf içi değişkenleri public yapabilirsin. Sonuç olarak bu metodlar kontrol için konulmuşlardır. Fakat sınıfın içindeki veriler genel olarak (özel bir durum yoksa) private yapılır ve getter setter metodları yazılır.Çünkü ilerde bir zamanda sınıfın yapısı değiştirilmesi gerektiği zaman (mesela veriye ek kontrol gerekecek) tüm kodu değiştirmek yerine (C#'da olmasa bile C++'da propertyler yerine bir sürü metodla değiştirmek gerekir.) kolaylık sağlar. @pairs'in yazdıklarına tamamen katılmakla beraber biraz daha teknik ve somut bilgi vermek istedim. Kolay gelsin.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By abdullahTR
      Yaklaşık 83 tane eğitim ve ek olarak pdf dosyaları vardır.
       
      Eğitimlerin İçerikleri
      [spoiler]

      [/spoiler]
       
      Linkler
      http://www.youtube.com/watch?feature=player_embedded&v=ifDVpG5-uHA http://www.youtube.com/watch?feature=player_embedded&v=gCNqJnDokeA http://www.youtube.com/watch?feature=player_embedded&v=a5iHROLdLjY http://www.youtube.com/watch?feature=player_embedded&v=NvcIb93-5QE http://www.youtube.com/watch?feature=player_embedded&v=DZusCOXJmPA http://www.youtube.com/watch?feature=player_embedded&v=ZALENeVIKrI http://www.youtube.com/watch?feature=player_embedded&v=o3V_ftxes1Y http://www.youtube.com/watch?feature=player_embedded&v=G_sn827BETU http://www.youtube.com/watch?feature=player_embedded&v=-kQ8maA1djs http://www.youtube.com/watch?feature=player_embedded&v=jWAzTgJKqRE http://www.youtube.com/watch?feature=player_embedded&v=WrzMCF8sSOs http://www.youtube.com/watch?feature=player_embedded&v=0XRYulX43Bw http://www.youtube.com/watch?feature=player_embedded&v=CTbCQeCxN4k http://www.youtube.com/watch?feature=player_embedded&v=DIy1Ar4tI1M http://www.youtube.com/watch?feature=player_embedded&v=S5UFF35swQM http://www.youtube.com/watch?feature=player_embedded&v=19uaWJFZGt0 http://www.youtube.com/watch?feature=player_embedded&v=AywiYyTXxUU http://www.youtube.com/watch?feature=player_embedded&v=gMlGezC76Lo http://www.youtube.com/watch?feature=player_embedded&v=5uJtp43U4w8 http://www.youtube.com/watch?feature=player_embedded&v=zveCA-BFOjU http://www.youtube.com/watch?feature=player_embedded&v=L7Y1y7fd3Oo http://www.youtube.com/watch?feature=player_embedded&v=Okjo3naqAsk http://www.youtube.com/watch?feature=player_embedded&v=hHZ6UlC70j8 http://www.youtube.com/watch?feature=player_embedded&v=VhN73Mz8Y68 http://www.youtube.com/watch?feature=player_embedded&v=X7F5p5UmQgs http://www.youtube.com/watch?feature=player_embedded&v=vJzQYOrjiME http://www.youtube.com/watch?feature=player_embedded&v=6JSX9ydvfOA http://www.youtube.com/watch?feature=player_embedded&v=yq4MSkJ65eM http://www.youtube.com/watch?feature=player_embedded&v=cFb5KV3Byow http://www.youtube.com/watch?feature=player_embedded&v=ukDMGIJiDlc http://www.youtube.com/watch?feature=player_embedded&v=MsQjQuUCuWw http://www.youtube.com/watch?feature=player_embedded&v=GUu7CfmVMeE http://www.youtube.com/watch?feature=player_embedded&v=6YR9GwiWhVQ http://www.youtube.com/watch?feature=player_embedded&v=dYDmOOtM2bw http://www.youtube.com/watch?feature=player_embedded&v=FvRFA_iSjhQ http://www.youtube.com/watch?feature=player_embedded&v=rBVt_DxLiXw http://www.youtube.com/watch?feature=player_embedded&v=lJiuhG39XCE http://www.youtube.com/watch?feature=player_embedded&v=vb6ElLxsBv0 http://www.youtube.com/watch?feature=player_embedded&v=ptSNgg0Ln4k http://www.youtube.com/watch?feature=player_embedded&v=2Yk7Zu-TrCk http://www.youtube.com/watch?feature=player_embedded&v=poWWscvc2EI http://www.youtube.com/watch?feature=player_embedded&v=aTdTBAW_Y7g http://www.youtube.com/watch?feature=player_embedded&v=4QDqiZ_ZsQs http://www.youtube.com/watch?feature=player_embedded&v=Ie5z81a2OdM http://www.youtube.com/watch?feature=player_embedded&v=IJJ2oSAS7PU http://www.youtube.com/watch?feature=player_embedded&v=wT5VcmT9z7E http://www.youtube.com/watch?feature=player_embedded&v=KWv-x0nwFpk http://www.youtube.com/watch?feature=player_embedded&v=FALYb0fTtGY http://www.youtube.com/watch?feature=player_embedded&v=-tQBR4TKEQ4 http://www.youtube.com/watch?feature=player_embedded&v=UEG2PKk5G_o http://www.youtube.com/watch?feature=player_embedded&v=RK-q7XJsqK4 http://www.youtube.com/watch?feature=player_embedded&v=RqL6FlIRVA0 http://www.youtube.com/watch?feature=player_embedded&v=WrOC0vBWd8Q http://www.youtube.com/watch?feature=player_embedded&v=t9Om-Oht_2o http://www.youtube.com/watch?feature=player_embedded&v=bJqm87EktZs http://www.youtube.com/watch?feature=player_embedded&v=tRAOPD4nw7g http://www.youtube.com/watch?feature=player_embedded&v=0QcFt78KqmM http://www.youtube.com/watch?feature=player_embedded&v=Yqsy3_3FyVE http://www.youtube.com/watch?feature=player_embedded&v=NsEvYhlCj4Q http://www.youtube.com/watch?feature=player_embedded&v=Grszplz8hs4 http://www.youtube.com/watch?feature=player_embedded&v=G4SE0uff1VY http://www.youtube.com/watch?feature=player_embedded&v=NGtA5dtR23M http://www.youtube.com/watch?feature=player_embedded&v=4H9_8BEA-Yc http://www.youtube.com/watch?feature=player_embedded&v=bbc4xC1s1zU http://www.youtube.com/watch?feature=player_embedded&v=qxg4h8G8PIQ http://www.youtube.com/watch?feature=player_embedded&v=YrK3tEfxHKw http://www.youtube.com/watch?feature=player_embedded&v=AtogysiQy0s http://www.youtube.com/watch?feature=player_embedded&v=3yZO_PRMacw http://www.youtube.com/watch?feature=player_embedded&v=puupA-nzbJo http://www.youtube.com/watch?feature=player_embedded&v=9nAuVCurijw http://www.youtube.com/watch?feature=player_embedded&v=sT1xy8_RXr0 http://www.youtube.com/watch?feature=player_embedded&v=r95xwlgoWw4 http://www.youtube.com/watch?feature=player_embedded&v=GxGLRzhuLKA http://www.youtube.com/watch?feature=player_embedded&v=g9XI9jND4lY http://www.youtube.com/watch?feature=player_embedded&v=uquqZCo9u5s http://www.youtube.com/watch?feature=player_embedded&v=uquqZCo9u5s http://www.youtube.com/watch?feature=player_embedded&v=9egBuadSCTI http://www.youtube.com/watch?feature=player_embedded&v=85n67PMmn7g http://www.youtube.com/watch?feature=player_embedded&v=gO4ziD0Mo9U http://www.youtube.com/watch?feature=player_embedded&v=GqI7ZbNUN1I http://www.youtube.com/watch?feature=player_embedded&v=8CsoZueoEfA http://www.youtube.com/watch?feature=player_embedded&v=jO8dEBC27Mw http://www.youtube.com/watch?feature=player_embedded&v=bM1nU65mySg PDF
      https://mega.co.nz/#!lRY3QKRI!27nYV8Qlb7gUsoODb3rS9vcWPEzRfIyIaeeWU-J2T_Y  4K Video Downloader İle İndirebilirsiniz
       
      Kaynak:
      [spoiler]
      http://forumalbayrak.net/konu-bilge-adam-c-dersleri-dev-arsiv.html  [/spoiler]
    • By KintaRo
      Grid kontrollerinde veri listelemeye daha önce bir çok kez değindik. Bu sefer ayrıntılı bir tablo görünümü oluşturalım. Bunun için DevExpress eklentisine ihtiyacımız var. Bu eklenti paketi sitemizde ve internette bir çok yerde var.
       
      Bu iş için iki tane datatable tipinde tablo lazım. ve bunların birer kolonu bir biriyle eşleşmeli. Ben örnek olarak bir cari tablo oluşturdum ve bu cari kayıtlara ait harektleri listeledim. Master tablodaki Kod sütunu ile ayrıntı tablodaki Müşteri Kodu kolonları bir biriyle uyuşuyor dikkat ederseniz. Daha sonra bunları DataSet ile birbirine bağlıyoruz ve olaylar gelişiyor.
       
      Not: proje VS 2013 CE ve DevExpress 14,2 ile yapılmıştır.
       
      [spoiler]
      using System; using System.Data; using System.Windows.Forms; namespace DevEx_GridControl_Master_Detail { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataTable master = new DataTable(); DataTable detail = new DataTable(); DataSet relation = new DataSet(); master.Columns.Add("Kod"); master.Columns.Add("İsim"); master.Columns.Add("Şehir"); master.Columns.Add("Telefon"); master.Rows.Add("101", "Ali", "Mersin", ""); master.Rows.Add("102", "Mustafa", "Hatay", ""); master.Rows.Add("103", "Mehmet", "Ankara", ""); master.Rows.Add("104", "Şakir", "Denizli", ""); master.Rows.Add("105", "Mahmut", "İzmir", ""); master.Rows.Add("106", "Recep", "Aydın", ""); detail.Columns.Add("Tarih"); detail.Columns.Add("Açıklama"); detail.Columns.Add("Borç"); detail.Columns.Add("Alacak"); detail.Columns.Add("Müşteri Kodu"); detail.Rows.Add("01.01.2015", "ELDEN", "10,00", "", "101"); detail.Rows.Add("02.01.2015", "BANKADAN", "", "20,00", "101"); detail.Rows.Add("03.01.2015", "KREDİ KARTI", "33,00", "", "101"); detail.Rows.Add("04.01.2015", "ELDEN", "35,00", "", "102"); detail.Rows.Add("05.01.2015", "BANKADAN", "", "44,00", "102"); detail.Rows.Add("06.01.2015", "BANKADAN", "100,00", "", "102"); detail.Rows.Add("07.01.2015", "KREDİ KARTI", "120,00", "", "103"); detail.Rows.Add("08.01.2015", "BANKADAN", "", "50,00", "103"); detail.Rows.Add("09.01.2015", "ELDEN", "60,00", "", "103"); detail.Rows.Add("10.01.2015", "KREDİ KARTI", "98,00", "", "104"); detail.Rows.Add("11.01.2015", "KREDİ KARTI", "", "100,00", "104"); detail.Rows.Add("12.01.2015", "ELDEN", "80,00", "", "104"); detail.Rows.Add("13.01.2015", "BANKADAN", "", "70,00", "105"); detail.Rows.Add("14.01.2015", "KREDİ KARTI", "100,00", "", "105"); detail.Rows.Add("15.01.2015", "ELDEN", "", "90,00", "105"); detail.Rows.Add("16.01.2015", "BANKADAN", "70,00", "", "106"); detail.Rows.Add("17.01.2015", "ELDEN", "", "50,00", "106"); detail.Rows.Add("18.01.2015", "KREDİ KARTI", "80,00", "", "106"); relation.Tables.Add(master); relation.Tables.Add(detail); relation.Relations.Add("Ayrıntı", master.Columns["Kod"], detail.Columns["Müşteri Kodu"]); gridControl1.LevelTree.Nodes.Add(relation.Relations["Ayrıntı"].RelationName, gviewDetail); gridControl1.DataSource = relation.Tables[0]; } } }   [/spoiler]
       

      https://yadi.sk/d/Qk7UzV9HheeSe
    • By KintaRo
      Bir arkadaşımızın isteği üzerine küçük bir örnek hazırladım. Aslında bir süredir aklımdaydı ama anca fırsat bulduk diyelim.
       
      Projede MySQL bağlantısı için MySQL.Data.dll 6.9.5.0 versiyonunu kullandım. Bu dll dosyasını referans olarak ekleyince tüm .NET 4.5 kurulu tüm sistemlerde sorunsuz bağlantı sağlayacaktır. MySQ yönetimi için Library klasöründe MySQL class'ı bulunmaktadır. Bu class içinde 
       
      void MySQL.Query(string sorgu); // insert, delete, update gibi işlemler için
      int MySQL.Count(string sorgu); // satır sayısı için
      DataTable MySQL.GetDataTable(string sorgu); // birden çok satırı çekmek için
      string MySQL.tekSutun(string sorgu); // select isim from rehber gibi tek sütun ve tek veri için
       
      public metodları bulunmaktadır.
       
      Projeyi kullanabilmeniz için Xampp/Wamp gibi bir yerel mysql sunucusu ya da remote mysql destekli web siteniz olması gerekmektedir. Yerel ağda phpmyadmin ayarlarını aşağıdaki gibi yaparsanız tüm bilgisayarlardan verilere ulaşabilirsiniz:
       

       
      yani veritabanı kullanıcısına bağlanacak ip lere izin vermeniz gerekmektedir. Yukarıda IP adresi 192.168 ile başlayan tüm iplere izin verildiği görülüyor.
       
      Daha sonra phpmyadminden ornekdb adlı bir veritabanı oluşturup ekteki dosyada bulunan ornekdb.sql dosyasını bu veritabanını import etmeniz gerekiyor.
       

       
      Son olarak Projemizde Solution penceresinden Library klasöründe bulunan MySQL.cs dosyasındaki şu satırları kendi bağlantınıza göre düzenlemelisiniz:
       
              private void Initialize()         {             server = "localhost";             uid = "root";             password = "";             database = "ornekdb";             port = "3306";             string connectionString = String.Format("SERVER={0};DATABASE={1};UID={2};PASSWORD={3};charset=utf8;PORT={4}", server, database, uid, password, port);             connection = new MySqlConnection(connectionString);         } Hepsi bu kadar. 
       

      https://yadi.sk/d/1QB56qLDhU7nd
    • By nnadiröztürk
      selamun aleykum arkadaslar 
      bn c#  ta, bir form içinde inretnete baglanmak istiyorum. 
      herşey formun içinde olacak. bu konu da sizlerden yardım ve fikirlerinizi bekliyorum.
      şimdiden teşekkürler. :)
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...