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?

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

Azizova Sevinc (2011-03-28 13:46:30)
Cox sag olun. Minnetdaram. c#-dan maraqli linkler kitablar ve ya melumat tapanda paylasin zehmet olmasa. Haminiza ugurlar

ahmed (2011-03-19 17:53:46)
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: [code] int x; [/code] Bu zaman kompilyator başa düşür ki, biz [code] int [/code] tipindən olan [code] x [/code] adlı dəyişən elan etmişik. Daha sonra biz bu dəyişənə hər hansı qiymət mənimsədə bilərik ([code] x=9; [/code]) v.s. Klasslar isə [code] int , char, double [/code] kimi standart yox, proqramçının yaratdığı tiplərdir. Misal üçün yuxarıda Toğrul [code] İnsanlar [/code] adlı yeni tip - klass yaratmışdır. Daha sonra isə bu yaratdığı tidən [code] Eli [/code] adlı dəyişən elan etmişdir. Klass tipindən olan dəyişənlərə [code] obyekt [/code] 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.

Shahriyar Rzayev (2011-03-18 20:59:13)
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.

TogrulCeferli (2011-03-18 20:19:28)
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: [code] public class İnsanlar { int boy; int yas; void danis(string soz) { //danis Console.WriteLine( soz ); } } [/code] Obyekti tanıtmaq üçün isə aşağıdakı koddan istifadə etməlisiniz: [code] İnsanlar Eli = new İnsanlar() [/code] 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. [code] Əli.boy = 140; Əli.yaş = 12; [/code] Ə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: [code] Əli.danış("Salam"); [/code] 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.

Azizova Sevinc (2011-03-18 16:49:53)
Salam Togrul. class ve object haqqinda genis melulat vere bilersen? nese men yaxsi basa dusmurem onlari

Togrul Ceferli (2011-03-18 12:23:30)
Ə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. [code] // Delegatenin tanıdılması public delegate void ToplamaDelegete(int eded1, int eded2, int eded3); // Eventin tanıdılması public event Hadise ToplamaHadisesi; [/code] 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: [code]Delegate() //şəklində[/code] 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 :)

Mövzu üzrə bənzər suallara da baxa bilərsiniz.

C++ süni baza kitabxanası

C++ input

FIberNet Modemleri

C++ file

For operatorundakı ədədləri toplama

C diski