Okulda verilen bir ödev Delegate ve Event kullanarak Kargo Aracının Hızını Takip Etmek. Ödev aslında oldukça basit ve ödevi yaparken Delegate ve Event kullanmamız gerekiyordu. Detaylara aşağıdan ulaşabilirsiniz.
Delegate ve event kullanımı başlarda zor olsa da aslında oldukça basit. Detaylı anlatıma -> http://www.gencayyildiz.com/blog/cta-delegatetemsilci-ve-eventolay-kullanimi linkinden ulaşabilirsiniz. Yeni başlayanlar ve kafası karışık olanlar için Delegate ve event nedir? ve nasıl kullanılır gibi terimleri örnekler yardımı ile oldukça güzel açıklamış.
Delegate ve Event kullanarak Kargo Aracının Hızını Takip Etme Detayları
- Bir kargo şirketinin ulaştırma filosundaki araçların birer nesne ile ifade edilebildiği bir kütüphane
olduğunu düşünelim. Bu kütüphane içerisindeki fonksiyonellikler den biriside, araçların uydu
sistemleri yardımıyla düzenli olarak izlenmesi ve güncel koordinat, anlık hız gibi bilgilerinin elde
edilmesi olduğunu varsayalım. - Araçların belirlenen hız limitlerini aşmaları sonrasında oluşacak durumların söz konusu
kütüphaneyi kullanan uygulamalar tarafından, istenirse ele alınmalarını sağlamak amacıyla
gereken olayları (event) ve sınıfları yazmanız istenmektedir. Böylece söz konusu program, araç
hız limitini aştığı zaman neler yapmak istiyorsa bunları istediği şekilde ele alabilecektir. - Sınıf, temsilci ve olay tanımlamalarını aşağıda bir bölümü verilen
Kaynak_Kod_2 çalıştırıldığında; verilen ekran çıktısını alabilecek şekilde projeyi geliştirmeniz
istenmektedir. CargoVehicle Kargo aracı nesnesi için tasarlanacak sınıfı, SpeedExceeded kargo
aracının hız bilgisinin değişmesi durumunda tetiklenecek olayı, SpeedHandler olay için kullanılan
temsilciyi göstermektedir. kargo_aracı_SpeedExceeded ise temsilciye bağlanacak metodun
ismidir. Hız limitinin varsayılan değeri olarak 110 alınmıştır.
Kaynak Kod 1
CargoVehicle kargo_aracı = new CargoVehicle("42SU1975"); kargo_aracı.SpeedExceeded += new SpeedHandler(kargo_aracı_SpeedExceeded);
Kaynak Kod 2
for (byte i = 80; i < 130; i += 5) { kargo_aracı1.Speed = i; kargo_aracı2.Speed = (byte)(i + j); Console.WriteLine(kargo_aracı1.Plaka+" plakalı aracın hızı = "+kargo_aracı_1.Speed); Console.WriteLine(kargo_aracı2.Plaka+" plakalı aracın hızı = "+kargo_aracı_2.Speed); Thread.Sleep(1000); }
Programın Vermesi Gereken Örnek Çıktı
Proje kodlarını GitHub hesabımda paylaştım. Aşağıda yer alan GitHub resmine tıklayarak ilgili kodlara ulaşabilirsiniz.