.NET İle Olay Yönelimli Programlama

download .NET İle Olay Yönelimli Programlama

of 2

Transcript of .NET İle Olay Yönelimli Programlama

  • 8/9/2019 .NET le Olay Ynelimli Programlama

    1/2

    zmler

    EYLL 2004 Windows & .NET Magazine www.winnetmag.com.tr64

    zmler

    # dili ile kendi uygulamalarnz yazyorsunuz...Deiflken ve fonksiyonlarla aranz iyi... Snflar ya-ratyorsunuz, snflarnza yerel ve global deifl-kenler (Property) ve fonksiyonlar (Method)katarak hayat daha kolay bir hale getiriyorsunuz...

    Ya olaylar? Bu yazda, olay ynelimli programlamann temel-lerini ele alacaz.

    Olay nedir?Tahminimce bu yazy okuyan herkes, grsel programclklaaz ok ilgilenmifltir... Visual Studio ile formlar yarattnz, form-larn zerine dmeler yerlefltirdiniz ve yazdnz programn,kullanc dmeye tkladnda baz ifller yapmasn salad-nz... Tm bunlar yaptnza gre, kendinizi olay ynelimliprogramlamaya doru ilk adm atmfl sayabilirsiniz; zira kul-lancnn dmeye tklamas, programcnn gznde birolaydr.

    Olay ynelimli programlamann znde, hiyerarflinin da-ha alt seviyesinde yer alan (Child) snflarn belli bir durumortaya ktnda st seviyedeki snflar (Parent) uyarmas, vest seviyedeki snflarda sadece bu durum ortaya ktnda a-lflacak kodlarn yazlabilmesi yer alr.

    Az nceki rneimizde dme, dflk seviyeli bir snf ve(dmeyi iermekte olan) form ise yksek seviyeli bir snftr.Herhangi bir dme nesnesinde Fare ile tklama olay orta-ya ktnda dme, ait olduu formu uyaracaktr. Form ise,bizim sz konusu olaya atadmz kodu alfltracaktr. Bukod, byk ihtimalle Form1 bnyesinde Button1_Click() gi-bi bir ada sahip bir fonksiyon ierisinde yer alacaktr.

    Grdnz gibi, olaylar nasl kullanacamz hepimiz za-

    ten biliyoruz. Bu yaznn sonuna geldiimizde, kendi olayla-rnz nasl yaratacanz da renmifl olacaksnz.

    Kendi olaylarmz yaratalm!Kendi olaylarmz nasl yaratacamzbir rnek erevesinde reneceiz. r-neimizde bir adet form, ve formun arka-snda alflacak bir saya snfhazrlayacaz.

    Saya snfSaya snfmz, olaylarn nasl yaratlaca-

    n greceimiz snf olacak. Bu basit s-nfn alflma mant, temelde sayideiflkenin deerinin arttir() fonksiyonuile arttrlmasna dayanyor. Yani; sayi =5 ise, arttir() fonksiyonunu ardmz-

    da sayi = 6 olacaktr. Bu s-nfta iki tane de olaymzolacak: twoDigits ve thre-eDigits. Sayi deiflkenine ikibasamakl bir say atand

    anda twoDigits, basa-makl bir say atand andaise threeDigits olay ortayakacak.

    .Net platformunda olayyaratmann 4 temel admvardr:

    System.EventArgs tipin-de bir zellik snf yaratmak. Bu snf, ortaya kacak olayla-ra ait zellikleri ve deiflkenleri taflyacaktr. Bu snf ierisinde,ihtiyaca gre istediimiz deiflkenleri tanmlamakta zgrz.rneimizde, yaratacamz snfa basamakAtlama adn ve-

    receiz. info deiflkeninde ise, basamak saysna dair bir me-tin yer alacak.delegate void trnde bir fonksiyon modeli tanmlamak.

    rneimizde, twoDigits ve threeDigits olaylarnn temelini tefl-kil edecek olan digitEvent adl bir model tanmlayacaz.

    Az nce de grdmz gibi, rneimizde twoDigits vethreeDigits adl iki olay olacak.

    stediimiz koflullar bir araya gelince (saynn iki veya basamakl olmas), sz konusu olaya ait zellik snfn (basa-makAtlama) yaratacak ve olay (twoDigits, threeDigist) etkin-lefltireceiz.

    Karflk m gzkyor? Panik yok! Sayac snfna ait kodla-r inceledikten sonra her fley akla kavuflacak...

    public class basamakAtlama: System.EventArgs{

    public string info;

    public basamakAtlama()

    {

    }

    }

    public class Sayac

    {

    public int sayi;

    public delegate void digitEvent(object sender, ba-

    samakAtlama e);

    public event digitEvent twoDigits; //

    Olay: Saymz 2 basamakl

    Kerem Kseolu [email protected]

    NET le olay ynelimli

    programlamaOlay ynelimli programlamann temelleri.

    C

    KEREMKSEOLUWindows & .NET

    Magazine'in katkda

    bulunan

    yazarlarndandr.

    zmevi firmasnda

    e-business zmleri

    yneticisi olarak

    alflmaktadr.

    Kendisine keremk@

    winnetmag.com.tr

    adresinden

    ulaflabilirsiniz.

    fiekil 1: Olaylar, aslnda nesnelerinbirbiriyle sohbet etmesinden baflka

    birfley deildir.

    fiekil 2: rneimizde bir form,bir de saya snf yer alacak

  • 8/9/2019 .NET le Olay Ynelimli Programlama

    2/2

    www.winnetmag.com.tr Windows & .NET Magazine EYLL 2004

    public event digitEvent thre-

    eDigits;// Olay: Saymz 3 basamakl

    public Sayac()

    {

    }

    public void arttir()

    {basamakAtlama e;

    // Sayimizi arttira-

    lim

    sayi++;

    switch (sayi)

    {

    // Sayimiz 10

    ise, artik iki basamaklidir

    case 10:

    if

    (this.twoDigits != null)

    {

    e = new basamakAtlama();

    e.info = "Artik iki basamakliyiz!";

    twoDigits(this, e);

    }

    break;

    // Sayimiz

    100 ise, artik uc basamaklidircase 100:

    if

    (this.threeDigits != null)

    {

    e = new basamakAtlama();

    e.info = "Artik uc basamakliyiz!";

    threeDigits(this, e);

    }

    break;

    }

    }

    }

    FormumuzEvet, kendi olaylarmz yaratmak o ka-dar da zoru deilmifl, yle deil mi? fiim-di de, Sayac snfn kullanacamzforma eklememiz gereken kodlara geldisra... Bunun temelde, bir butonun tk-lanma olayn aktif hale getirmekten okbyk bir fark yok. Bu ifli 3 basit adm-da kolayca halledebiliriz:

    Bir saya nesnesi yaratmak.Bu adm zaten hepimizin bildiini dfl-nyorum.public Sayac c = new Sayac();

    Formumuzun yaratld noktada, ya-

    rattmz nesnenin olaylarn aktif halegetirmeliyiz. Aksi takdirde, olaylar orta-ya ksa bile forma yansmayacaktr.public Form1()

    {

    //

    // Required for Windows Form

    Designer support

    //

    InitializeComponent();

    // Olaylarimizi tanimlayalim

    c.twoDigits += new Sayac.digi-

    tEvent(c_twoDigits);

    c.threeDigits += new Sayac.di-

    gitEvent(c_threeDigits);

    }

    Olaylar aktif hale getirirken tanmla-mfl olduumuz fonksiyonlar (c_twoDi-gits, c_threeDigits) yazmak.private void c_twoDigits(object sen-

    der, basamakAtlama e)

    {

    label2.Text = e.info;

    }

    private void c_threeDigits(object

    sender, basamakAtlama e)

    {

    label2.Text = e.info;

    }

    SonuBu yazda, .NET platformunda olay yne-limli programlamann nasl yaplacanadair temelleri grmfl olduk. Yaznn rnek

    projesini, http://www. winnetmag.com.tradresinden indirip incelemenizi tavsiyeediyorum; bu flekilde konuya daha fazlahakim olacaksnz. Bir baflka yazda gr-flnceye dek, hoflakaln...

    fiekil 3: rneimizin teknik hiyerarflisiolduka basit...