Delegate və Event (C#)

Mən delegate və event mövzusunu yeni oxumuşam. Amma onlar barədə fikirləşəndə başım qarışır.
Onların esas cəhətləri nələrdir?
Oxşar və fərqli cəhətləri nələrdir?


Yadda saxlama
Kateqoriya: Proqramlaşdırma . , , , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (6 cavab var)

(12:23, 18/03/2011 ) #2088

Əslində Event elə özü bir Delegate növüdür (Multicasted Delegate). Gördükləri işə görə demək olar ki eynidirlər. Bir eventi tanıdarkən onun tipi kimi bir delegate qoymaq lazımdır.

// Delegatenin tanıdılması
public delegate void ToplamaDelegete(int eded1, int eded2, int eded3); 

// Eventin tanıdılması
public event Hadise ToplamaHadisesi;

Amma əsas fərqləri ondadır ki, bəzən Eventdən istifadə etmək Delegate`yə nisbətən daha təhlükəsiz ola bilər. Burda gözlənilən təhlükə proqramçının səhvən hansısa bir sinfin işinə müdaxilə edib onu korlamasıdır.
Biz bir delegatenin üzərində bu əməlləri apara bilərik: hər hansı method`a bərabərləşdirə, silə, üzərinə method gələ və Method`unu silə bilərik
Amma Eventdə isə bunlardan yalnız ikisini edə bilərik: Üzərinə method əlavə edə və çıxa bilərik.
Başqa bir fərqləri də ondadır ki biz delegateni proqramın islənilən yerində cağıra bilərik:

Delegate() //şəklində

amma biz bunu Event üçün edə bilmərik, çünki event yalnız öz yerləşdiyi class daxilində çağırıla bilər. O da eyni şəkildə çağırılır. Buna gərə də təhlükəsizlik baxımından Event daha yaxşıdır məncə. Amma bu o demək deyil ki Delegateni bir qırağa qoyub ancaq Eventdən istifadə eləməl lazımdır 🙂

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:49, 18/03/2011 ) #2092

Salam Togrul. class ve object haqqinda genis melulat vere bilersen? nese men yaxsi basa dusmurem onlari

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (20:19, 18/03/2011 ) #2093

    Salam. Belə başa düşdüm ki, siz class və object`in məntiqini başa düşə bilmirsiz. Əgər elədirsə onda bunu belə bir misalla başa salmağa çalışacam:
    Məsələn “İnsanlar” deyəndə ağlımıza düşünən, danışan, öyrənən və s. bacarıqları olan bir canlı qrupu ağlıma gəlir. “Vəli” (və ya “Əli” 🙂 ) deyəndə mən mən yenə də düşünən, danışan, öyrənən və. bir canlı fikirləşirəm. Amma bütün “İnsanlar” eyni deyil, Əlinin özünə məxsus xüsusiyyətləri də ola bilər , məsələn, boyu, yaşı, bildiyi dillər və s. Burada biz “İnsanları” bir Class`a bənzədə bilərik. Əlini isə həmin “İnsanlar” sinfinə mənsub olan bir Obyekt (insan) olacaq.

    C#`də class`ın yaradılması nümunəsi:

    public class İnsanlar
    {
        int boy;
        int yas;
    
        void danis(string soz)
        {
            //danis
            Console.WriteLine( soz );
        }
    }
    

    Obyekti tanıtmaq üçün isə aşağıdakı koddan istifadə etməlisiniz:

     İnsanlar Eli = new İnsanlar() 

    gördüyünüz kimi əvvəl obyektin aid olduğu sinfin adını, sonra öz adını sonra =, sonra new sonra isə yenidən sinif adı və () yazırıq. (Bunun daha mürəkkəb formaları da var, hələlik bu bəs edər məncə)

    Sonra yaratdığımız obyektin xüsusiyyətlərini dəyişə də bilərik, Məsələn əlinin boyu uzanacaq, Yaşı artacaq və s.
    bu xüsusiyyətlərə çatmaq üçün nöqtə operatorundan istifadə etməliyik.

    Əli.boy = 140;
    Əli.yaş = 12;
     

    Əlinin aid olduğu sinifdə (İnsanlar) danışmaq bacarığı var. Yəni Əli də danışa bilər. Aşağıdakı kodla Əliyə “Salam” dedizdirsək:

     Əli.danış("Salam"); 

    Qeyd: yuxarıda yazdığım kodları olduğu kimi Visual C#`ə əlavə edib yoxlamağa çalışmayın. Çünki onları yalnız işləmə prinsipini başa salmaq üçün yazmışam, Compilerdən keirə bilməyə bilərsiniz.

    Daha aydın başa düşmək üçün bir kitaba ya online resursa müraciət etsəniz yaxşı olar. Ümid edirəm bəzi şeyləri başa düşməkdə sizə kömək edə bildim.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(20:59, 18/03/2011 ) #2094

Bu haqda coxsayli yazilar vardir.
En sade ve qisa asagidaki link izah edir:
1. http://www.deknight.com/2010/10/difference-between-class-and-object-in.html

Lakin dahasi ucun bu linklere de baxmaginiz faydalidir, cunki bu sual artiq defelerle forumlarda verilib ve cavablandirilib :

1. http://docstore.mik.ua/orelly/java/javanut/ch03_01.htm

2. http://www.allinterview.com/showanswers/32551.html

3. http://forums.techarena.in/software-development/1131896.htm

4. http://www.codestyle.org/java/faq-Objects.shtml#classobjectdiff

5. http://en.wikipedia.org/wiki/Object_%28computer_science%29

6. http://en.wikipedia.org/wiki/Class_%28computer_science%29

7. http://answers.yahoo.com/question/index?qid=20081022052646AAtG6J3

8. http://mr-ponna.com/Question/343/What-is-the-difference-between-an-object-and-a-class-/

Yene nese sual olsa yazin.
Tesekkurler.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(17:53, 19/03/2011 ) #2098

Klass və Obyekt anlayışları müqaisə olunmamalıdırlar. Burda qeyri adi bir şey yoxdur. Ən sadə hala baxaq: tutaq ki, int tipindən hər-hansı x dəyişəni elan edirik aşağıdakı kimi:

 int  x;  

Bu zaman kompilyator başa düşür ki, biz

 int   

tipindən olan

 x  

adlı dəyişən elan etmişik. Daha sonra biz bu dəyişənə hər hansı qiymət mənimsədə bilərik (

 x=9;  

) v.s.
Klasslar isə

 int , char, double  

kimi standart yox, proqramçının
yaratdığı tiplərdir. Misal üçün yuxarıda Toğrul

 İnsanlar 

adlı yeni tip – klass yaratmışdır. Daha sonra isə bu yaratdığı tidən

 Eli  

adlı
dəyişən elan etmişdir. Klass tipindən olan dəyişənlərə

 obyekt  

deyirlər. Başqa sözlə desək, Yuxarıdakı nümunədə İnsanlar klass tipindən Eli obyekt dəyişəni elan edilib, yaradılıb.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:46, 28/03/2011 ) #2126

Cox sag olun. Minnetdaram. c#-dan maraqli linkler kitablar ve ya melumat tapanda paylasin zehmet olmasa. Haminiza ugurlar

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Proqramlaşdırma - fəlsəfə (19 saat əvvəl)

kapiltp cavab verdi - Proqramlaşdırma - fəlsəfə (2 gün əvvəl)

Cənab cavab verdi - kurs diplomu ilə işləyə bilərəm? (2 gün əvvəl)

kapiltp cavab verdi - Proqramlaşdırma - fəlsəfə (5 gün əvvəl)

E. Hacı cavab verdi - Proqramlaşdırma - fəlsəfə (5 gün əvvəl)

kapiltp cavab verdi - Proqramlaşdırma - fəlsəfə (6 gün əvvəl)

kapiltp cavab verdi - Proqramlaşdırma - fəlsəfə (7 gün əvvəl)

E. Hacı cavab verdi - Proqramlaşdırma - fəlsəfə (7 gün əvvəl)

kapiltp cavab verdi - Proqramlaşdırma - fəlsəfə (8 gün əvvəl)

Aysu2009 cavab verdi - Azərbaycan əsgər mahnısının sözlərini ingilis dilinə tərcümə etmək (9 gün əvvəl)

Aysu2009 cavab verdi - Atestat almaq üçün ne etmeliyem? (9 gün əvvəl)

Aysu2009 cavab verdi - Azərbaycan əsgər mahnısının sözlərini ingilis dilinə tərcümə etmək (9 gün əvvəl)

Software Developer cavab verdi - Xamaya başqa nə deyirlər? 6 hərflidir (14 gün əvvəl)

Erol34 cavab verdi - Xamaya başqa nə deyirlər? 6 hərflidir (15 gün əvvəl)

Software Developer cavab verdi - Xamaya başqa nə deyirlər? 6 hərflidir (15 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23295 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024