Queue

  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Queue as PDF for free.

More details

  • Words: 483
  • Pages: 4
Queue (Kuyruklar)

Queue (Kuyruklar) Queue (kuyruk) denen yapı adından da anlaşılacağı gibi gelen nesneleri kuyruğa sokarak işler, ilk giren ilk çıkar mantığı ile çalışır. Şüphesiz Queue yapısını anlatmak için elimizde birçok örnek var. Bunların başında banka örneği, yemek kuyruğu, otobüs kuyruğu verilebilir. İlk gelen müşteri her zaman bankada ilk sıradadır ve sıra ondan başlar. Queue denen yapı da programlarımızda sırada olan işlemleri, web üzerinden gelen paketleri işleme sokma işlemi gibi işlemlerde kullanılabilir. Queue sınıfı ICollection, IEnumerable, IClonable arayüzlerinden implement edilmiştir. Queue kuyruk = new Queue(); Constructor’ının 4 overload’u bulunur. Bunlar :

Bunlardan ilki standartta kapasitesi 32 olan bir kuyruk oluşturur. Standart artış’ı 2 ‘dir. Diğer overload’larda ise kapasiteler ve/veya artış miktarı belirtilebilir. ICollection tipinden parametre bekleyen yapılandırıcı aşırı yüklenmesi ise gönderilen parametredeki koleksiyonun kapasitesi ve artış miktarına göre kuyruğu yapılandıracakdır. Kuyruk mekanizmasının methodlarına baktığımızda temelde ArrayList ile pek bir farkının olmadığını görüyoruz. Bunun sebebi ise implement etmiş olduğu arayüzlerden kaynaklanmaktadır. ArrayList’ten farkı ise Add metodunun olmayışı. Kuyruk’a eleman ekleneceği zaman Enqueue() metodu kullanılır. Yine kuyruktan başka bir elemanı çıkarmak için Dequeue() metodu kullanılır. Not : Olmayan elemanı kuyruktan atmaya çalışırsanız System.InvalidOperationExeption hatası fırlayacaktır. Kuyruk mekanizmasına giriş yaptıktan sonra örnek üzerinde bir class tanımlayarak inceleyelim. Yalnız bu örneğimizde Queue sınıfını değil bu sınıfın generic sürümü olan Queue<> kullanacağız.

Kuyruğa girecek olan müşteri bilgilerini kısaca tutacak olan Müşteri sınıfımızı oluşturduktan sonra sıra senaryomuzu uygulama geldi. Senaryomuza göre bir bankadaki sıraya giren müşterileri kullanacak olursak, hiçbir müşterinin hakkını yememek için onları sırasıyla kasalara yöneltmemiz gerekiyor. Aşağıdaki gibi bir arayüz ile devam ediyoruz.

Queue sınıfının veriyi sırayla tuttuğunu ve sırayla çıkardığına değinmiştir. ArrayList veya CollectionBase sınıfından türeyen sınıflarınıza nesne eklerken .Add metodu sayesinde eklersin,z fakat kuyruk kullanımında böyle bir metod yapısı yoktur. Bir nesneyi kuyruğa eklemek için Enqueue() metodu kullanılır. Yukarıdaki örnek üzerinden gidersek, Textbox1 kontrolüne tıklandığı zaman yeni bir müşteri oluştursun ve bu müşteriyi sıraya eklesin :

Artık müşterilerimiz bankaya gelip yeni sıra butonuna tıkladıklarında otomatik olarak sıraya girecekler. Örnek birkaç kişiyi sıraya soktuktan sonra Sıradaki Gelsin butonu ile sıradaki müşteriye hizmet sunmaya başlayalım. Sırada kim var, ne zaman gelmiş gibi bir bilgi bizi ilgilendirmiyor. Bir artık sadece kuyruk’un Dequeue metodunu çağırarak sıradaki müşteriyi çağırıyoruz :

Ekran çıktısına göz atacak olursak ;

Kuyrukta 3 müşteri vardı. Sıradaki gelsin dediğimiz zaman kuyruk’ta ilk sıradaki müşteriyi kuyruk bize sunuyor. Kuyruktaki sıradaki elemanı almak için Peek() metodundan yararlanırız. Yukarıda gördüğümüz Dequeue() metodu son elemanı kuyruktan çıkartıyordu. Peek ise kuyrukta sıradaki eleman bilgisini size sunar fakat kuyruktan çıkarmaz. Örneğin :

Çıktısı size kuyrukta sıradaki müşterinin AdSoyad bilgisini sunmaktadır. Not : Generic bir queue kullandığımız için Peek() metodundan sonra direk olarak AdSoyad property’si çıkmaktadır. Eğer siz Generic Queue kullanmayıp normal Queue sınıfını kullanırsınız Peek() ile sıradaki elemanı almak için lazybinding yaptıktan sonra AdSoyad property’sine ulaşacaksınz. Son olarak değinmemiz gereken metod ise TrimExcess metodudur. Bu metod ise Queue kapasitesini Queue’daki eleman sayısına eşitler. Daha teknik bir tabir ile TrimExcess metodu Queue.Capasity = Queue.Count işlemi yapar. Bir başka makalede görüşmek üzere Okan Tekeli

Related Documents

Queue
December 2019 34
Queue
November 2019 15
A Queue
October 2019 24
Assign5 Queue
November 2019 14
Fifo Queue
November 2019 28
Priority Queue
July 2020 12