Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
BIL528 – Bilgisayar Programlama II
Nesneler, Koleksiyonlar ve Olaylar
2
İçerik Nesne ve Sınıflar Özellikler Metotlar Olaylar
3
Nesneler
4
Nesneler C# tam bir nesne tabanlı programlama dilidir.
Visual C# kullandığınız her şey bir nesnedir. Formlar üzerine yerleştirdiğimiz tüm formalar ve kontroller birer nesnedir. Tüm nesneler özelliklere(properties), bir çok metotda(methods) ve bir çok olaya(events) sahiptir. Basit uygulamaları oluşturmak veya büyük ölçekli kurumsal çözümler inşa etmek, bir nesne nedir ve başarılı olmak için nasıl çalıştığını anlamak gerekir.
5
Nesneler (devam) Bir nesne veriyi saklayan, tek bir birim olarak işlevselliği olan ve sadece genel erişimi programlama boyunca yapının arayüzü olan bir bir programlama yapısıdır (Özellikler, metotlar ve olaylar). Basit uygulamaları oluşturmak veya büyük ölçekli kurumsal çözümler inşa etmek, bir nesne nedir ve başarılı olmak için nasıl çalıştığını anlamak gerekir.
6
“Kontroller” Geçen haftaki sınıfta bir PictureBox ve iki Button nesnesi kullanmıştık. PictureBox ve Button nesneleri birer Kontrolerdir. Onlar farklı nesnelerdir ancak bazı özellikleri paylaşırlar. Paylaştıkları özellikleri kontrol sınıfı sağlamaktadır.
7
Özellikler Özel ve nesnenin durumunu anlatan nesne niteliklerine o nesnenin özellikleri denir. Geçen hafta bazı özellikleri gördünüz. Özellikler penceresinde görmüş olduğunuz form üzerindeki seçilmiş olan bir nesnenin tüm özellikleridir. Bir Button’un texti, bir Form’un yükseklik(Height) ve genişlikleri(Width) ve bir PictureBox’ın resmi hepsi birer özelliktirler.
8
Kod ile Özellikleri Değiştirme
Tasarım aşamasında, Özellikler (Properties) penceresi kullanılarak bir nesnenin özelikleri değiştirilebilir. Ancak yürütme sırasında Özellikler penceresi kullanılamaz. Kod içinde özellikler referans edildiğinde, ilk önce o nesnenin özel adı belirtilir ve (.) periyodunu takiben daha sonra aşağıdaki söz dizilimi gibi nesnenin özelliğinin adı belirtilir: {NesneAdı}.{Özellik} ({ObjectName}.{Property})
9
Özellik Değiştirme(devam)
Örneğin, btnClickMe adında bir buttonunuz varsa, buttonun Text özelliğine referans etmenin yolu: btnClickMe.Text Bu kod satırı, btnClickMe button nesnesinin Text özelliğinde bir değerin içerip içermediğini ifade eder. Bazı değerleri için bir özelliği değiştirmek için (=) eşit işareti kullanılabilir. Örneğin bir Button nesnesinin sol (Left) özelliğini değiştirmek için aşağıdaki kod satırı kullanılabilir: btnClickMe.Left = 90;
10
Geçici Bir Değişkende Bir Özelliği Saklama
Aşağıdaki kod satırı, geçici bir değişken içeren btnClickMe adındaki button nesnesinin Text özelliğinin değerini değiştirmektedir. Bu durum Text özelliğin değerini tekrardan geri çağırmaktadır. Çünkü Text özelliği eşitliğin sağ tarafında; eşitliğin sağ tarafında olan değer sol taraftaki değişkene atanmaktadır. strText = btnClickMe.Text;
11
Sadece Okunabilen Özellikler (Read-Only Properties)
Bazı özellikler okunabilir ancak değiştirilemezler. Bu özellikler sadece okunabilen özellikler (read-only properties) olarak adlandırılır. Sadece okunabilen özelliklere bir örnek olarak combo box kontrolunun yükseklik (Height) özelliği verilebilir. Combo box’ın bu özelliği Özellikler penceresinde görünmesine rağmen onu değiştiremiyorsunuz. Eğer Visual C# kodu içinde combo box’ın bu yükseklik (Height)özelliğini değiştirmeye kalkmışsanız, Visual C#’ın size hata değeri döndürdüğünü görmüş olmalısınız.
12
Uygulama(Exercise) Geçen hafta, Özellikler penceresinden bir Form’un boyutunu(Size) değiştirdik. Bugün, Visual C# kodu ile bir Form’un yükseklik ve genişlik özelliğini değiştireceğiz. Picture Viewer projesine iki button ekleyeceğiz. Form’a tıklandığında bu buttonlardan biri büyürken diğeri küçülecektir.
13
Button Ekleme Özellik Değer Adı btnBuyume Lokasiyon 338, 261 Boyut
21, 23 Text ^ Özellik Değer Adı btnKuculme Lokasiyon 365, 261 Boyut 21, 23 Text v
14
Büyüme kodu btnBuyume’ye çift tıklanır ve aşağıdaki kod yazılır:
this.Width = this.Width + 20; this.Height = this.Height + 20;
15
Küçülme Kodu btnKuculme’e çift tıklanır ve aşağıdaki kod yazılır:
this.Width = this.Width - 20; this.Height = this.Height - 20;
17
this this kodun sahip olduğu nesneyi gösterir.
this özel anlamı olan bir sözcüktür. Bu sözcük nesne veya değişken ismi olarak kullanılamaz çünkü Visual C# da özel bir anlama sahiptir.
18
Intellisense Kod yazma sırasında otomatik olarak açılan bir nesnenin tüm özelliklerini ve formun tüm metotlarını içeren küçük tık açılır pencereler. Visual Studio this’in yapmış olduğu işi ve daha fazlasını yapmaya fırsat veren akılı bir sistemdir. Örneğin bir nesne için kod yazdığımızda yardımcı tık açılır listeden nesneye ait tüm özelliklerin ve form hakkındaki tüm metotların sıralanması Visual Studio’nun akılılığını göstermektedir. Bu özelliklere IntelliSense denilir. Bunun faydası daha önceden tanımlanmış bir ismi yanlış hatırlamanıza engel olması ve dolayısıyla derleme hatasının verilmesi önüne geçmesidir.
19
Intellisense
20
Metotlar
21
Metotları Anlamak Özelliklerine ek olarak nesneler en çok metotlara sahiptirler. Metotlar nesnelerin niteliklerinin belirtmiş oldukları yoğunluk içinde gerçekleştirdikleri eylemlerdir. Tıpkı özellikler gibi aşağıdaki kod satırı ile metotlar çağırılabilir: {NesneAdı}.{MetotAdı}({Parametreler}); ({ObjectName}.{MethodName}({Parameters}); )
22
Parantezler Visual C# da metot çağırmada her zaman parantezler olmalıdır. Çoğu zaman onlar boş olabilirler ancak diğer zamanlarda onlar metotları yürütme bilgisini içerirler. Örneğin: MessageBox.Show("Merhaba Dünya!");
23
Uygulama(Exercise) Bizim bir button içeren ve bu buttona tıklandığında resmin kenarına renkli bir sınır çizen PictureViewer projesin değiştireceğiz.
24
Arayüz Oluşturma Yeni bir button eklenir ve onun özellikleri lokasiyonu değiştirilir (pp.69’deki gibi). Button çift tıklanır ve aşağıdaki kod yazılır: Graphics objGrafikler = this.CreateGraphics(); objGrafikler.Clear(SystemColors.Control); objGrafikler.DrawRectangle(Pens.Blue, picShowPicture.Left - 1, picShowPicture.Top - 1, picShowPicture.Width + 1, picShowPicture.Height + 1); objGrafikler.Dispose(); Program Çalıştırılır.
25
Grafik Nesneleri Bir Grafik Nesnesi bazı geometrik şekilleri çizmek veya text’leri yazmak için kullanılabilir. Bir formun CreateGraphics() metotlar formun client alanını temsil eden bir nesne döndürür. Herhangi bir şey formun Grafikler nesnesi içine çizildiğinde form üzerinde o şey görülür. Sayılar metinler gibi lokal değerler olmayan bir özellik döndürüldüğünde bunların bir de nesne olabileceği unutulmamalıdır.
26
Kod İçinde Kullanılan Metotlar
Clear() metotu formun arka planını temizler. DrawRectangle() metotu belli koordinatlarda bir kalem(Pen) nesnesi kullanılarak bir dikdörtgen çizer. Dispose() metotu nesne tarafından kullanılan kaynakları sıfırlar (C’deki free() metotu gibi).
27
Proje Çalıştırma(Yürütme)
28
Koleksiyonlar
29
Koleksiyonları Anlamak
Bir Koleksiyon(collection) sadece isim anlamına gelir: Bir nesne koleksiyonu. Koleksiyonlar, bir koleksiyon içindeki items üzerinde tekrarlı yürütmeleri(processing) gerçekleştiren oluşturulmuş kodun etkinleştirilmesiyle çok sayıdaki benzer nesnelerin çalışmasını kolaylaştırır. Tekrarlı yürütme, her nesne için faal kod yazmaktan ziyade çoklu nesneler üzerine tekrarlı bir işlem gerçekleştiren bir işlemdir. İndeksli bir nesne kümesini içermeye ek olarak bir de koleksiyonlar özelliklere ve metotlara sahip olabilir.
30
Koleksiyonların Kendi Özellik ve Metotları
Tüm koleksiyonlar bir sayma(Count) özelliğine sahiptirler. Ayrıca Koleksiyonların bir ekleme(Add() ) ve bir silme (Delete() ) metoduna sahip olabilirler.
31
Uygulama(Exercise) Tüm kontrollerinin içeriğinin isimlerini veren küçük bir form oluştur: Forma isimleri aynı olmayan bazı kontroller ekle. İsmi Kontrol İsimlerini Göster adında button ekle ve ona tıkla(Click) kodunu oraya yaz.
32
Gerekli Kod for (int i = 0; i < this.Controls.Count; i++) { MessageBox.Show("Control #" + i.ToString() + " has the name " + this.Controls[i].Name); }
33
Ya da int i = 1; foreach (Control cnt in this.Controls) { MessageBox.Show("Control #" + i.ToString() + " has the name " + cnt.Name); i++; }
34
Olaylar(Events)
35
Olayları Anlamak Bir arayüz oluşturmaya ek olarak, programının hem bir kullanıcı ile hem Windows ile nasıl etkileşiminin içinde olduğunu göstermek programı güçlendirir. Tabiki bu işlem de olaylar(events) ile mümkündür.
36
Olay-Güdümlü (Event-Driven) Programlama
Klasik(geleneksel) programlama dilleri ile kodun ilk satırı işletilir ve o şekilde devam ederek program sonuna kadar işletilir. Olay-güdümlü programlar olaylar içinde yer alan lokal kod bölmeleri mevcuttur. Bunlar önceden planlanmış olaylar değiler. Olay-güdümlü programlar içerisinde bir takım olaylar barındıran mantıksal birimleri bulunan kodlara sahiptirler. Olayların gerçekleşmesinde önceden belirlenmiş bir sıra yoktur. Kullanıcının olay-güdümlü program içerisinde yürütülen kod üzerinde kontrol yetkisi vardır ve belirli olayları interaktif olarak tetikleyebilir. Örn.: Butona tıklamak.
37
Olaylar (Events) Bir olay bir obje tarafından kullanılan ve müşteriler için faydalı olabilecek durum değişmeleri hakkında bilgi veren bir özel methoddur (objeyi kullanan kod). Olaylar bir takım özel yollarla çağırılabilirler: Kullanıcılar olayları tetikleyebilir (örneğin; bir butona tıklamak) Objeler kendi olaylarını tetikleyebilir (örn: zamanlayıcılar) İşletim sistemi olayları tetikleyebilir. Bir olayı tetiklemek için yalnızca methodu çağırmanız yeterlidir.
38
Uygulama: Farenin bulunduğu koordinatları gösterme
PictureViewer projesini açın. X ve Y koordinatları için 2 adet label (Etiket) ekleyin. Resim kutucuğunu (PictureBox) seçin ve Özellikler (Properties) penceresinden yeni MouseMove olayını oluşturun. Aşağıdaki kodu girin: lblX.Text = "X: " + e.X.ToString(); lblY.Text = "Y: " + e.Y.ToString();
39
Projeyi Çalıştırma Fareyi resim kutucuğundan uzaklaştırdığınız zaman etiketler son koordinatları gösterir. Çözüm: MouseLeave olayını kullanmak! lblX.Text = ""; lblY.Text = "";
40
Notes Olayların 2 adet parametresi bulunur: Sender ve EventArgs.
Fare olay metodlarının EventArgs parametresi yerine MouseEventArgs parametresi bulunur. Diğer olay metodlarının kendi farklı parametre tipleri bulunabilir fakat yine de EventArgs sınıfından türetilmişlerdir. EventArgs objesi programlamacıya olayla ilişkili faydalı bilgiler vermektedir.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.