Formlar Arası Veri Transferi
Posted by mezo | Posted in C#, Introduction | Posted on 12-02-2012-05-2008
1
C# da form uygulamalarında formlar arasında veri aktarımı nedir nasıl yapılır ?
C# da form uygulamalarında formlar arasında veri aktarımı nedir nasıl yapılır ?
Merhaba arkadaşlar
Bu yazımda çokça bahsedilen çokça kullanılacak olan bir kontrol yapısı ve bunun database den gelen verilerle nasıl çalıştığını göstermek isterim sizlere…
Bahsettiğimiz kontrolümüz Treeview denilen bir nesne bu nesne bizlere ağaç yapısı bulunan bilgileri rahatlıkla ve tek ekranda görmemizde bizlere kolaylık sağlayan bir kontrol peki ama nasıl bu kontrole birşeyler ekler kullanılabilir hale getirebiliriz…
Öncelikle bir DB ye ve tabloya ihtiyacım var sırası gelmişken birde SQL tablosunda sınırsız ağaç yapısından bahsetmeden olmaz heralde. Şekildeki gibi bir veritabanı oluşturdum…
Buradaki mantık aslında basit eğer bir kayıt root kayıtsa yani kök kayıtsa o zaman AltKategoriID si NULL olmalıdır. Eğer girdiğimiz kategori başka bir kategori altında duruyorsa o halde hangi kategori üst ise AltKategoriID sine o kaydın ID değerini girmeliyiz. Zaten resimdeki birbirine bağlı yapıda bunu temsil eder. Birde girdiğimiz verileri inceleyin bakalım nasıl birşey varmış
Burada Elektronik root yani ana kategori Bilgisayar onun altında bulunduğu için Bilgisayar kaydının AltKategoriID si Elektronik kaydının ID sine eşit Bilgisayarın altında olanlarda Bilgisayar kaydının ID sine sahip olacaktır böylelikle alt alta uzayıp giden sınırsız bir ağaç yapısına sahip olabiliriz.
Peki tablomuz tamam verilerimizide girdik e hani Treeview derseniz onuda şöyle özetleyelim
Yeni bir Windows formuma Treeview ve button nesnemi yerleştirdim
Ardından button nesnesinin Click olayına gelerek dedim ki :
| DataRelation baglanti;private void btnListele_Click(object sender, EventArgs e){SqlConnection cnn = new SqlConnection(“Data Source = .; Initial Catalog = Deneme; User = sa; Password = 1234567?;”);SqlDataAdapter adp = new SqlDataAdapter(“Select * From Kategoriler”,cnn);
DataSet ds = new DataSet(); adp.Fill(ds,”Kategoriler”);
baglanti = new DataRelation(“baglan”,ds.Tables["Kategoriler"].Columns["KategoriID"], ds.Tables["Kategoriler"].Columns["AltKategoriID"]);
ds.Relations.Add(baglanti);
foreach (DataRow dr in ds.Tables["Kategoriler"].Rows) { if (dr["AltKategoriID"] == DBNull.Value) { TreeNode root = new TreeNode(dr["KategoriAdi"].ToString()); root.Tag = dr["KategoriID"]; tvAgac.Nodes.Add(root); AltKategorileriGetir(dr,root); } } tvAgac.ExpandAll(); }
|
Kodlara bakacak olursak klasik bir ADO.net ile verilerimi alıp bir DATASET e eklemişim biliyorsunuzki DATASET nesnesi içine birden
fazla DATATABLE nesnesi barındırabilen bir nesne yani sanal veritabanı gibide düşünebiliriz aslında. Peki database de bağlantılar olurda bunda olmazmı ? Olmamı tabikide olur bu bağlantıyıda DATARELATION nesnesi sağlar işte tam burada bende verilerimi çektikten sonra içindeki hangi veri ile hangi verinin eşleşeceği yani hangisinin ana ID hangisinin ona bağlı olan Altkategori olduğunu belirtip bağlantımı tamamladım. Ardından bir foreach ile Dataset içersine attığım Datatable içindeki satırları tek tek almaya başladım ve bu foreach içersinde sadece AltKategorisi NULL olanları aldım yani Root olan kök olan kayıtları aldım ve Treeview nesneme ekledim.
Peki bunun altında bişi yokmu ? Altındakini hatta onun altındaki kayıtları nasıl alacağız derseniz ondada bir metotun yardımını isteyip o metodu kendi içersinde çağırarak işimizi çözeceğiz…
| private void AltKategorileriGetir(DataRow dr,TreeNode pNode){foreach(DataRow row in dr.GetChildRows(baglanti)){TreeNode childNode = new TreeNode(row["KategoriAdi"].ToString());childNode.Tag = row["KategoriID"];
pNode.Nodes.Add(childNode); AltKategorileriGetir(row,childNode); } }
|
Bu metodu çalıştırırkende biraz once kontrol ettiğimiz root kaydı ve oluşturulan TreeNode nesnesini parametre olarak yolladıktan sonra oluşturduğumuz bağlantı nesnesi ile Altkategorideki değerleri kontrol ediyoruz ve varsa yine TreeNode oluşturup mevcut Node altına ekliyoruz. Vee sonra kategori ve altındaki elemanları tek tek karşıma geliyor
Umarım yararlı olur
Görüşmek Üzere
M.Zeki Osmancık
Merhaba arkadaşlar
GDI = Graphical Design Interface ile ilgili ufak bir bilgi vermek istiyorum sizlere. GDI, Windows uygulamaları üzerinde çizim işlemleri gerçekleştirmemize olanak tanıyan sınıflardır.
Bu sınıflar ile Windows formlar üzerine veya print nesneleri ile kağıt üzerine bazı çizimler yapabilmemiz mümkün.
Öncelikle bir çizim yapabilmek için de ilk gereken bir kağıt yada çizim yapılacak alandır öncelikle bunu belirtmemiz gerekiyor
| Form üzerine çizim yapabilmek için:
Graphics grp = this.CreateGraphics();
PictureBox üzerine çizim yapabilmek için: Graphics grp = pictureBox1.CreateGraphics(); |
Çizim alanımızı oluşturduktan sonra ile form veya picturebox üzerine ne çizdireceğimizi seçmemiz gerekiyor ama bunu seçmeden öncede çizmek için gerekli olan kalem veya içi dolu bir şekil çizeceksek fırça gerekiyor. Bunu da şu şekilde tanımlayabiliriz;
| Pen kalem = new Pen(Color.Blue);
kalem.Width = 5;
Brush firca = new SolidBrush(Color.Red) ; |
Bu şekilde tanımladığımızda kalem ve fircanin özelliklerini değiştirebilir durumda oluyoruz. Kalemin kalınlığı vs gibi özelliklerini ayarlayabiliyoruz. Ya bunlara ihtiyacımız yoksa bunlarla uğraşmadan nasıl yaparız derseniz onun çözümüde şu şekilde…
| Pens.Blue
Brushes.Red |
Hemen belirteyim bu şekilde kullanım tek başına mümkün olmuyor ancak gerekli kodlar içersinde bu şekilde kullanabilirsiniz biraz aşağıda bunun örneklerini göreceksiniz zaten
Çizim alanı tamam kalem tamam firça tamam eee ne kaldı geriye ??? Sadece çizmek kaldı
Çizim yapabilmek içinde ilk başta örneğini (instance) aldığımız Graphics nesnesini kullanacağız. Ve içersindeki çizim metotları ile form üzerine şekiller çizeceğiz….
| grp.DrawLine(Pen nesnesi, X1, Y1, X2, Y2);
grp.DrawLine(kalem, 50, 50, 150, 50); |

Formun üzerine Line çizerken verilen koordinatlar 2 tane x ve y noktalarıdır bu iki noktayı belirtiriz ve DrawLine metodu bizim yerimize bu iki noktayı birleştirir ve şekildeki gibi bir görüntü ortaya çıkar.
Birde Dikdörtgen Yuvarlak bişiler çizelim.
| grp.DrawEllipse(Pen nesnesi, X, Y, Genişlik, Yükseklik);
grp.DrawEllipse(kalem, 100, 100, 100, 100);
grp.DrawRectangle(Pen nesnesi, X, Y, Genişlik, Yükseklik); grp.DrawRectangle(Pens.Blue, 200, 100, 100, 100); |
Bu şekilleri çizerkende gerekli olan veriler önce bir kalem sonra X ve Y noktası ardından çizilecek olan şeklin yükseklik ve genişlik bilgileridir.
Son olarak Pie yani kekden bahsetmek istiyorum
evet sizi keklemiyorum pasta grafik olarak adlandırdımız şekli nasıl çizeriz ona bakalım…
| grp.DrawPie(Pen nesnesi, X, Y, Genişlik,Yükseklik , Başlangıç Açısı, Yay Açısı);
grp.DrawPie(kalem, 50, 200, 100, 100, 0, 270); |
Şimdi birde bunların içi dolu olanları nasıl yazılıyor aralarında ne fark var görelim
| grp.FillEllipse(firca, 100, 100, 100, 100);
grp.FillRectangle(firca, 200, 100, 100, 100); grp.FillPie(Brushes.Purple, 50, 200, 100, 100, 0, 270);
|
GDI nesnesi sadece bu işemi yarar diyebilirsiniz
Bu sadece başlangıç bir sonraki yazıda GDI nin asıl nasıl kullanılabildiğini göreceğiz
Görüşmek Üzere…
Merhaba arkadaşlar bu yazımda sizlere Javascript ile yapılabilen çok yararlı bir o kadar performanslı hep görüp acaba nasıl dediğimiz bir yapıyı anlatmaya çalışacağım…
XML HTTP REQUEST Javascript ile herhangi bir server’a http request yapmanıza olanak veren guzel bir objedir. Gelen cevabı parse edip sayfadaki bazi öğeleri değistirebilir ve sayfa refresh olmadan bir cok şey yapilabilir. Yani işin kısası Postback olmadan bilgileri çekebilme işlemini gerçekleştirmemize yardımcı oluyor. Örnek olarak Google da yazdığımız bir harf tamamlanarak öneriler halinde geliyor. Sayfanın yenilendiğini görmüyoruz sadece önerilerin belirdiği gözlemleniyor ama bu verilerde bir veritabanından geliyor o derece hızlı

Bu teknolojiyi Internet Explorer, Mozilla Firefox,Opera ve Safari destekliyor.Xml Http Request İnternet Explorer ‘da ActiveX Control , Firefox ‘ta ise DOM (Document Object Model)’ in bizzat parçasidir. Internet Explorer 7’ den itibaren native olarak desteklenmektedir. Bu sayede de artik ActiveX ‘i kapatilmis browserlarda dahi calisabilmektedir.
Bu yapının avantajlarını şöyle sıralayabilirim :
• En önemli artısı, sayfa yenilenmediği için değişken olmayan diğer kısımların sunucuda yeniden işlenip sunucuyu yorması engellenir;
• Kullanıcıda tekrar yüklenmediğinden bant genişliği boşa harcanmaz, aynı zamanda kullanıcı tarafında sayfalarda daha hızlı işlem yapılır.
• Sayfayı yenilenmeden içeriğimizi alıyor olmamız, web uygulamamıza bir masaüstü uygulama görünümü katar.
• Web uygulamalarının tek sıkıntısı, hızlı ve pratik çalışamıyor olmanızdır. Web yazılımları masaüstündeki yazılımlar gibi pratik kullanılan şeyler olmalıdır
• XMLHttpRequest aslında javascript ile sunulmuş bir kolaylıktır. Web sitesinin eş zamanlı olarak arka planda çalışan olaylarını takip eder. XML CSS ve javascript ile sonucun anında görülmesini sağlar.
• XMLHttpRequest istemci tarafında (Client Side) çalışır. Birden fazla asenkron web sayfasına postback ve yenileme yapmadan istekte bulunabilir ve gelen cevapları istekte bulunanlara iletir.
ONREADYSTATECHANGE
Sunucuya bir istek gönderilmesinden sonra, sunucudan dönen veriyi alabilecek bir işleve ihtiyacımız var. onreadystatechange özelliği sunucunun yanıtını işleyecek olan fonksiyonu tutar.
Aşağıdaki kod hem boş bir fonksiyon tanımlar hemde onreadystatechange özelliğini ayarlar
| xmlHttp.onreadystatechange=function()
{ // Buraya kod yazacağız} |
READYSTATE ÖZELLİĞİ
Sunucu yanıtının durumunu tutar. readyState her değiştiğinde onreadystatechange fonksiyonu çalıştırılır. Sunucudan gelen yanıtın tamamlandığını (veriyi alabileceğimiz durumu) kontrol etmek için onreadystatechange işlevimize bir If ifadesi ekleyeceğiz:
| xmlHttp.onreadystatechange=function()
{ if(xmlHttp.readyState==4) { // Veriyi sunucu yanıtından al } |
RESPONSETEXT ÖZELLİĞİ
Sunucudan gelen veri responseText özelliği ile alınabilir.
Kodumuzda “time” form değişkenimizin değerini responseText değerine eşitleyeceğiz:
| xmlHttp.onreadystatechange=function()
{ if(xmlHttp.readyState==4) { document.myForm.time.value=xmlHttp.responseText; } |
XMLHttpRequest nesnesini etkin şekilde kullanmanın 2 yolu mevcut:
Send the Request
Bu yöntem bir XMLHttpRequest nesnesi yaratıp olayları dinlemesi için atamaktır.
Basit olarak bir xhr nesnesi yaratıyoruz:
| var xhr = new XMLHttpRequest(); |
Daha sonra oluşturduğumuz nesneyi onreadystatechange ile olayları dinlemesi için görevlendirmek:
| xhr.onreadystatechange = myCallback; |
Ardından open() metodunu çağırıyoruz.
| xhr.open(‘GET’, ‘somefile.txt’, true); |
ilk parametre HTTPRequest tipini belirler (GET,POST,HEAD,……) Get ve Post en sık kullanılanlardır. Get deyimini istekle birlikte çok fazla data göndermemiz gerekmiyorsa kullanırız. Bunun aksi durumlarda POST kullanırız.
İkinci parametre bizim istekte bulunduğumuz URL dir. Örnekte belirtilen bir text dosyasıdır sayfamızla aynı adres içerisinde bulunur.
Son parametremizde isteğin boolean değerdir isteğin eş zamanlı olmaması durumunu true veya false değer ile belirler.
Son adım olarak isteği göndermektir.
| xhr.send(”); |
Send() metodu istekle birlikte herhangi bir datayıda içerebilir. Get ile gönderilen isteklerde bu boş bir stringdir çünkü data URL olarak belirttiğimiz dosya yada adrestedir. POST ile gönderilen isteklerde bir query string mevcuttur key=value&key2=value2.
Bu noktada istek gönderilir ve kodlar diğer bir göreve atanabilir. Callback fonksiyonu isteğimizim serverdan geri gelmesi ile çağırılır.
Process the Response
Olay dinleyici cevap geldiğinde uyarır ve kodlarımız gelen cevap ile yararlı işler yapar her gelen cevabı boşa kontrol ve ya işleme sokmak zorunda kalmayız.
Readystatechange olayı ile bir dinleyici yerleştirdik XHR nesnesinin readystate özelliğini çağırdık. Readystatechange olayı çalıştığında her zaman değişen bir özelliktir .
Readystate özelliği şu değerleri takip eder
0—uninitialized
1—loading
2—loaded
3—interactive
4—complete = istek geri geldi ve işlendi.
Readystate özelliğini 4 olarak ayarladığımızda bunun anlamı istek geri geldi ve işleme girdi demektir. 4 özelliği sadece bununlada kalmayarak HTTP istek durum kodlarınıda inceler. Olmayan bir URL gönderildiğinde alınadan HTTP istek kodu 404 (Dosya bulunamadı) hatasıdır.
Eğer dönen durum kodu 200 (ok ) ise bu geçerli bir adres bulunduğunu XHR nesnesinin çalışabileceğini belirtir.
| function myCallback() {
if (xhr.readyState < 4) { return; // not ready yet } if (xhr.status !== 200) { alert(‘Error!’); // the HTTP status code is not OK return; } // all is fine, do the work alert(xhr.responseText); } |
Önce istekte bulunduğumuz sayfayı yeni içerik olarak almış olacağız ve bunu ister sayfada görüntüleyebilir istersekte bir takım hesaplamalarda kullanabiliriz.
Hadi bununla ilgili bir uygulama yapalım kafalarda nasıl çalışır bu sorusu olmasın ![]()
XMLHTTP REQUEST yöntemiyle databasede bulunan kategorilere ait ürünleri hızlı bir biçimde ekranda görüntüleyeceğiz.
Öncelikle XmlHttpRequest nesnemizi yaratmak için bir function yazıyoruz.
Daha sonra oluşturduğumuz bu nesneye get ile parametre yollayabileceğimiz ve geri dönüş sağlayabileceğimiz başka bir function daha yazıyoruz.
Daha sonra Handler ile istekte bulunduğumuz ürün grubunun kategori id sini birlikte yollayabileceğimiz başka bir function daha yazıyoruz.
Sayfamızın CodeBehind kısmındada Repeater nesnesi ile databasedeki “Categories” tablosundaki kategori isimlerini buton nesneleri ile birlikte oluşturuyoruz.
Son olarak sayfamızı görüntülediğimizde hem butonlarla bir seçim yapabiliyoruz hemde Dropdown menü ile istediğimiz Kategoriye ait ürünleri görüntüleyebiliyoruz.
Hiç beklemeden sanki masaüstü uygulamasıymışcasına hızlı ve pratik
Umarım Yararlı olur
M.Zeki Osmancık
Merhaba arkadaşlar
Sizlerle yeni çıkmış olan bir teknoloji ile alakalı bazı bilgileri paylaşmak istiyorum. Herkesin bildiği gibi Microsoftun çokda kullanışlı olmayan bir Windows Mobile işletim sistemi mevcut ne kadar uğraşsalarda normal kullanıcılara erişemediler. Bilgisayar bilgisi olanların tercih ettiği bir telefon işletim sistemi şuanda.
Microsoft bu durumu değiştirmek istiyor ve rakiplerine son kullanıcıyada ulaşabileceğini ıspat edebilmek için bir devrim ile geliyor .
Windows Mobile 7
İnternette dolaşan haberlere göre Microssoft WM7 yi devrim olarak nitelendiriyor. Bir çok telefon firması WM7 ile ilgili çalışmalarını bitirmişler bile bunların arasında Dell, Garmin-Asus, HTC Corp., HP, LG, Samsung, Sony Ericsson, Toshiba ve Qualcomm gibi firmalar var . Üreticiler dışında WM7 ye destek veren operatörlerde var bunlarda ilk etapda Orange, O2, Vodafone, T-Mobile ve Three adlı firmalar.
Windows Mobile 7 işletim sisteminin en büyük kozlarından biri şüphesiz oyun teknolojisi Game Hub denilen yeni bir özellikle gelen WM7 ,Xbox Arcade oyunlarını WM7 ye port edebilecek . Ayrıca XNA Framework geliştiricilerinede müjde artık sizde WM7 için Xbox Arcade oyunları gibi oyunlar geliştirebileceksiniz. Geliştiriciler kolaylıkla çoklu dokunmatik, kamera, GPS, uyarılar, ivmeölçer gibi özelliklerden ve Silverlight geliştirici platformundan faydalanabiliyorlar.
Artık mobile cihazımızı bilgisayara bağlarken Windows Mobile Center kullanılmayacak bunun yerine Dorado adında bir Zune yazılımı kullanılarak tüm senkronizasyon işlemleri bu yazılım aracılığı ile gerçekleşecek.Ekran çözünürlüğü olarak şuan WVGA yani 800×480 çözünürlüğü destekliyor ilerleyen günlerde bu HVGA 480×320 de eklenecekmiş. Toast isimli bir platform üzerinden reklam erişimi sağlanabiliyor Microsoft reklamdan para kırmayıda düşünmüş
Donanım olarakda sağlam özelliklere hitap edecek olan WM7 1Ghz işlemcili cihazlarda çalışabiliyor.
Şimdiye kadar güzel ve fark yaratan özelliklerinden bahsettik şimdide saçmalayan özelliklerinden bahsedelim . WM7 işletim sisteminde daha düşük sürümlerde olan ama 7 versiyonunda ilk etapta bulunmayacak özellikler var. Bunlardan ilki Copy –Paste . evet yanlış okumuyorsunuz WM7 içersinde Copy-Paste yok. Bazı sitelerde bu tür özelliklerin sonradan ekleneceği yönünde söylentiler var ama ilk etapda olmaması büyük bir negatif düşünce bir soru işareti . Gelelim diğer eksiğe MultiTasking!!! En büyük kayıp bence. Standart bir kaç uygulama var müzik ,mesaj falan bunlarda birden fazla uygulama çalışırken sorun yok ama 3. Parti yazılımları aynı anda çalıştırmak imkansız hale gelmiş sanki biraz iphone kokuyor gibi birazda saçmalama var. Güzel yapacaz derken fazla abartmışlar. Ha unutmadan birde sadece telefon üzerindeki hafızayı kullanmak zorunda kalıyoruz ayrıca SD kart vs gibi genişletme seçeneklerini desteklemiyor bu özellikte Copy-Paste gibi sonradan eklenebilecekler listesindeymiş.

Son olarak uygulamalarına gelelim büyük bir uygulama mağazası oluşturulmuş WM7 için bu mağazada geliştiriciler için abonelikler ,tek seferde kredi kartı üzerinden alımlar ve reklam sponsorlu uygulamalar destekleniyor. Ayrıca uygulamalar ücretsiz ve ücretli sürümler olarak bir arada sunuluyor, deneme sürümleri daha iyi değerlendirilebilir hale getirilebilecek.
Umarım Microsoft WM7 yi daha kullanılabilir hale getirir de senelerdir alışageldiğim Windows işletim sistemli telefonlardan vazgeçmek zorunda kalmam .
Bilgiyle Kalın…
M.Zeki Osmancık
Windows Phone 7 Features Video from John on Vimeo.
Access Modifier : Bir tipe veya tipin üyelerine erişimi sınırlayan private, protected, internal, public gibi kelimelerdir.
Accessible Member : Verilen tip tarafından ulaşılabilen üyedir. Bir tip ile erişilebilen bir üye başka bir üye tarafından erişilebilir olmayabilir.
Accessor : Bir özellik (Property) ile ilişkilendirilmiş Özel (private) veri alanı (data field) üyenin değerini alan veya ayarlayan metodlardır. Okunur-Yazılır özellikler get ve set erişimcilerine sahipken salt okunur özellikler sadece get erişimcisine sahiptirler.
Anonymous Method : Bir delegeye parametre olarak geçilirilen bir kod bloğudur.
Base Class : Türetilmiş sınıf (Derived Class) tarafından miras alınan sınıftır (Inherited Class).
Call Stack : Çalıştırma zamanında (runtime) programın başından başlayarak çalıştırılacak ifadeye kadar olan yapılan metod çağrılarının dizisidir.
Class : Nesneyi tanımlayan, nesneye şablon oluşturan veri tipidir. Sınıflar veri ve veriyi etkileyen metodlardan her ikisini de içerebilirler.
Constructor: Bir sınıf veya yapı üzerinde bulunan ve o tipteki nesneleri oluşturan özel metodlardır.
Delegate : Bir metodu referans eden bir tiptir. Bir delege metoda atandığında tam olarak o metod gibi davranır.
Derived Class : Başka bir taban sınıfın davranışına ve verisine erişmek, geliştirmek veya değiştirmek için miras yöntemini kullanan sınıftır.
Destructor : Örneğin sistem tarafından sonlandırılmasını hazırlayan, sınıf veya yapı üzerindeki özel bir metodtur.
Event : Bir değişikliğin bilgilendirmelerini gönderen sınıf veya yapı üyesidir.
Field: Sınıfın ya da yapının doğrudan erişilen veri üyesidir.
Generics : Jenerikler, bir sınıf ya da metodun bir tip parametresi ile tanımlanabilmesine olanak sağlarlar. İstemci kodu tipin örneğini yaratırken parametre olarak tanımlanan tipi belirli bir tipte değişken olarak tanımlar. Böyle parametrenin hangi tipte olduğu tanımlandığından sınıf ya da metodta o tip olarak kullanılabilir.
IDE (Integrated Development Environment) : Derleyici, debug edici, kod düzenleyici ve tasarım araçları gibi çeşitli geliştirme araçları için birleştirilmiş bir arayüz sağlayan uygulamalardır.
Immutable Type : Örnek yaratıldıktan sonra, örneğinin veri, alan ve özellikleri değişmeyen tiplerdir. Değer tiplerinin çoğu böyle tiplerdir.
Inaccessible Member : Belirtilen bir tip tarafından erişilemeyen bir üyedir. Bir tipe Erişilmez bir üyenin başka bir tipe de erişilmez olması gerektiğine dair bir zorunluluk yoktur.
Inheritance : C#, Miras almayı destekler. Yani bir sınıf (class) taban sınıf (base class) olarak adlandırılan sınıftan türetilir ve aynı metod ve özellikleri miras alır. Bunu sınıfa Türetilmiş Sınıf (Derived Class) denir.
Interface : Sadece public metod, olay ve delegelere ait imzaları içeren bir tiptir. Arayüzü miras alan bir nesne arayüzde imzaları tanımlanan tüm metod, olayları geliştirmek zorundadır. Sınıflar veya Yapılar (Structs) herhangi bir sayıda arayüzden miras alabilirler…
Iterator : Öteleyici, bir sınıfın içerdiği bir koleksiyon veya diziyi (array) sınıf kullanıcılarının foreach ile kullanabilmesine olanak sağlar.
Member : Bir sınıf (class) ya da yapı (struct) üzerinde tanımlana alan (field), özellik (property), metod (method) veya olaylara (events) o sınıfın üyeleri (class members) denir.
Method: Bir sınıf (class) ya da yapı (struct) için davranışı sağlayan isimlendirilmiş kod bloğudur.
Mutable Type : Örnek yaratıldıktan sonra, örneğinin veri, alan ve özellikleri değiştirilebilen tiplerdir. Referans tiplerinin çoğu böyle tiplerdir.
Nested Type : Diğer bir tipi tanımının içinde tanımlanmış tiptir.
Object : Sınıf örneğidir (instance). Bir nesne bellekte bulunur ve verisi ve bu veriler üzerinde etkisi olan metodları vardır.
Property : Özellikler, erişimcileri aracılığı ile bir veri üyesine ulaştırırlar.
Refactoring :
Bilgisayar terminolojisinde bilgisayar yazılımının çıktılarını ve işlevlerini değiştirmeden iç yapısının yeniden düzenlenerek uygulamanın geliştirilmesi, iyileştirilmesi demektir. Kısaca önceden girilmiş kodun tekrar kullanılması diyebiliriz. Visual Studio C# düzenleyicisi akıllıca kodunuzu tekrar biçimlendirebilir. Mesela işaretlediğiniz bir kod bloğunu bir hamleyle bir metoda dönüştürebilirsiniz.
Reference Type : Bir veri tipidir. Referans tipi olarak tanımlanan bir değişken verinin depolandığı konumu işaret eder.
Static : Statik olarak tanımlanan bir sınıf ya da metod “new” anahtar kelimesi ile ilklendirilmeden varolabilir.
Örneğin Main() statik bir metoddur.
Struct : Tipik olarak bazı mantıksal ilişkileri olan değişkenler içermesi için kullanılan birleşik veri tipidir. Yapılar aynı zamanda metodlar ve olaylar içerebilirler. Miras almayı desteklemezken arayüz kullanımını desteklerler. Sınıflar referans tipiyken, yapılar değer tipidir.
Value Type : Öbek (Heap) üzerine yerleştirilen referans tiplerine karşın yığın (stack) üzerine yerleştirilen veri tipidir. Yapı ve null değer alabilen (Nullable) tiplerin de olduğu gibi Nümerik tipleri de içeren Yerleşik (built-in) tiplerin hepsi değer tipleridir. Sınıf tipi ve string tipi referans tipleridir.
kaynak: http://msdn2.microsoft.com/en-us/library/ms173231.aspx
Bilgiyle Kalın…
M.Zeki Osmancık
http://izmiradam.net/2010/10/c-oop-terminolojisi/
Merhaba Arkadaşlar.
Yazıya başlamadan önce sizleri bir terim ile alakalı bilgilendirmek istiyorum bu terim ; IDE sakın harddisklerdeki bağlantı türü ile karıştırmayın
IDE = Integrated Development Environment yani Entegrasyonlu Geliştirme Platformu programların gelişme aşamalarının gerçekleştiği platformlardır. Farklı diller için farklı IDE ler geliştirilmiştir.
Biz bu IDE ler içersinde en gelişmiş olanını kullanacağımız için bende bu gelişmiş IDE yi sizlere basitçe tanıtmak istedim. Kullanacağımız IDE :
Visual Studio
Teknolojisini basit cümlelerle anlatmak zor elbette ama özetlemek gerekirse çok gelimiş özelliklere ve yardımcı araçlara sahip bir IDE dir. Sadece tek bir dil için geliştirilmemiştir bir önceki yazımızda bahsettiğimiz .Net uyumlu tüm programlama dillerinin desteklendiği ve aynı projelerde dahi çalıştırılabildiği bir ortamdır. Program geliştirenlere kullanışlı ve kolay bir ortam sağlayarak uygulamaların daha işlevsel olması konusunda bizlere destek sağlar.
Peki ne var bu Visual Studio nun içersinde.
Visual Studio’yu genel görünüm olarak 4 bölümde inceleyebiliriz;
*Çalışma Sayfaları
*Araç Çubukları
*Menüler
*Pencereler
Visual Studio programımızı ilk açtığımızda bizi Başlangıç sayfası karşılıyor ve bizlere (eğer internete bağlıysak) MSDN den çeşitli gelişme ve haberleri sunuyor. Visual studio içersinde web sayfalarıda açabiliyorsunuz bu arada. Start Page başlangıç sayfamızın bulunduğu kısma daha sonra projelerimizi yazacağımız sayfalarda geliyor işte bu alana Çalışma Sayfaları diyoruz. Sekmeler halinde pencerelerle çalışabileceğimiz bu çalışma alanı hem form veya web sayfaları tasarımlarında hemde kod yazarken çokça kullanacağımız bir alan olacaktır.
İkinci olarak çoğu programda gelenek haline gelmiş olan Araç Çubuklarımız var. Bu araç çubukları menü komutları için görsel kısayollar sunarak işimizi kolaylaştırırlar. Benzer işlemler aynı araç çubuğu üzerinde gruplanarak kullanım dahada işlevsel hale gelir. Yada istersek biz bu araç çubukları üzerindeki görsel kısayolları değiştirerek kişiselleştirebiliriz de.
Üçüncü olarak hemen hemen her programda görmeye ve kullanmaya aşina olduğumuz Menüler aslında tüm programlarda benzer niteliklerdedir. Çeşitli komut ve yardımcı pencerelere ulaşmamızda bize kolaylık sağlarlar.
Menülerde bulunan temel başlıkları kısaca tanıyalım :
File: Adındanda anlaşılacağı gibi dosya işlemlerinin yapıldığı menüdür yeni proje yada varolan projelerin açılması gibi işlemleri bu menü seçeneği içersinde bulunan seçeneklerden yönetebiliriz.
Edit : Tüm yazı ile ilgili düzenleme işlemlerinin yer aldığı menüdür. Kopyala Kes Yapıştır Bul Değiştir gibi seçenekleri mevcuttur.
Project: Üzerinde çalıştığımız projenin özelliklerinin yönetilebileceği referans ve dosya ekleme çıkarma gibi işlemlerin var olduğu menüdür.
Built: Geliştirdiğimiz projelerin çalıştırılmak üzere içersinde bulunan komutların derlenmesi için gereken komutlara ulaşabildiğimiz menüdür.
Debug : Adındanda anlaşılacağı gibi Hata bulma ve ayıklama ile ilgili tüm seçeneklerin bulunduğu menüdür.
Tools : Visual Studio ile birlikte yüklenen yardımcı araçların bulunduğu menüdür. Ayrıca Visual Studio ile alakalı ayarların yapılabildiği Options seçeneğide bu menü altında yer alır.
Ve Help menüsü sanırım bunun açıklamasına gerek yoktur. =)
Visual Studio içersindeki yolculuğumuza devam edelim çalışma sayfaları araç çubukları menüler derken son olarak belirttiğimiz Pencereler seçeneğine geldik
Dördüncü ve son olarak bahsedeceğimiz Pencerelerden kasıt ise Visual studio içersinde uygulama geliştirme aşamasında sık sık kullanılabilecek olan birçok elemanı bir araya getiren yada durum belirten pencerelerdir.
Bu pencerelerden çok kullanılan bir kaçını tanımlamak gerekirse:
Properties: Projedeki tüm öğelerin özelliklerinin yer aldığı bir penceredir. İstenen değişiklikleri yine bu pencere üzerinden gerçekleştirmekde mümkündür.
ToolBox :Projelerde kullanılan çeşitli kontrollerin listelendiği penceredir. Buradaki öğeler sekmeler içersinde gruplanmıştır.
Solution Explorer : Projeler bir solution (çözüm) içersinde yer açılır. Bir çözüm içersine farklı dilde ve tipte projeler dahil edilebilir.Bu pencere solution yapısını gösterir ve ilgili işlemlerin yapılmasına olanak sağlar.
Uygulama geliştirirken en çok kullanacağımız pencereler olacaktır.
Visual Studio yu basitçe olsa tanımış olduk geliştirme ortamını etkin bir şekilde kullanmak önemlidir. Bu yüzden bu yazının klavuzluğunda sizde biraz merak ile Visual Studio içersinde ne var ne yok karıştırarakda bulabilirsiniz.
Görüşmek Dileğiyle.
Merhaba arkadaşlar programlama ile alakalı ilk makaleme tabiki işin en başından başlamam gerekiyor. Elimden geldiğince size yararlı bilgiler sunmaya çalışacağım.
Programlama dilleri ile ilgileniyorsak bu kelimeyi çok duymuşuzdur.
. NET
Peki nedir bu .Net denilen şey ?
Tek başına tanımlanamayacak bir sistemler bütünüdür aslında; Microsoft tarafından geliştirilen farklı teknoloji , araç ve programlama dillerinin bir arada, tek bir iskelet üzerinde çalışmasına olanak veren uygulama geliştirme platformudur.
Uygulama derken neyi kastettim peki , aslında o kadar geniş bir kavram ki .Net platformunda uygulama diyorsak eğer aklınıza gelebilecek her türlü uygulamayı bu kelime içersine sığdırabiliriz. Web ,Windows,Mobile vb bir çok uygulamayı geliştirmemize olanak tanır .
.Net güzel bir şeymiş tanımını duyunca heyecanlandık . Nasıl çalışır peki ? Nasıl bu kadar geniş bir çerçevede programcılara özgürlük sunabilir. Gelin .Net içersinde kısa bir yolculuk yapalım :
Öncelikle .Net ile uygulama geliştirebilmemiz için onun kaynağını bilgisayarımıza yüklemiş olmamız gerekiyor. BCL (Base Class Library ) Temel Sınıf Kütüphanesi adı verilen bu kütüphane uygulama geliştirmek için gerekli olan arayüz ,sınıf ,fonksiyonları barındırır bizlerde bu arayüz sınıf ve fonksiyonları kullanalarak uygulamalarımızı kolayca geliştirebiliriz.
.Net çok güzel ve kütüphane olmak zorunda bunları öğrendik peki asıl soru geliyor hangi programlama dilini kullanmak gerekiyor?
Microsoft bu soruya bizim için çok radikal bir biçimde karar vermiş bile .Net platformunu destekleyen herhangi bir programlama dili cevabı sanırım bizim için yeterli . Her .Net uyumlu dilin kendine özgü bir derleyicisi vardır. Herhangi bir dilde yazılmış uygulama derlendiğinde o dilin derleyicisi kodları ortak bir dile çevirir.
Oluşan bu ortak dilin adı ise MSIL (Microsoft Intermediate Language) yani Microsoft un Ortak Dili . .Net platformu destekli programlama dillerinden herhangi biri veya birden fazlası ile bir uygulama geliştirdiğimizde o dilin derleyicileri kodları alıp MSIL e çevirerek hepsinin aynı anda makine diline çevrilmesini sağlar.
Buraya kadar geldik yolculuğumuz sürüyor uygulamamızı yazdık derledik MSIL e çevirdik daha sonra bu kodların işletim sistemine ulaşması gerekiyor yani makine kodlarına çevrilmesi gerekiyor bu işide
CLR devralıyor ve MSIL kodlarımızı alıp makine koduna çeviriyor ve işletim sistemine iletiyor.
Bu işlemi yaparken JIT (Just In Time) derleme yöntemini kullanarak görevini tamamlıyor.
Böylelikle .Net platformunda geliştirdiğimiz bir uygulamamızın hangi devrelerden geçerek karşımıza geldiğini ve azda olsa .Net platformunun mantığını umarım anlayabilmişsinizdir.
Sonraki Yazılarda Görüşmek Üzere…