Objektif-C programlama dili, delegelerin kullanımını oldukça sık tercih ediyor Delege nedir, nasıl kullanılır ve ne işe yarar? Bu sorulara yanıt veriyoruz Objektif-C'de delege kullanımı hakkında bilgi sahibi olmak isteyenler için yazımızı inceleyin
Objektif-C dilinde delege, bir nesnenin başka bir nesne tarafından yürütülen işlemleri yerine getirmesini sağlayan bir tasarım kalıbıdır. Delege, bir sınıfın bir veya birkaç yöntemini başka bir nesnenin kullanımına sunmak için tanımlanır. Böylece, delege çağrıldığında, ilgili yöntemler başka bir nesne üzerinde çalıştırılır.
Delege oluşturmak için öncelikle, @protocol anahtar kelimesi ile bir delege protokolü tanımlanır. Protokolü uygulayan bir sınıfın tanımlanacağı yerde bu protokol belirtilir. Bu sınıfın içinde bir adet delege özelliği tanımlanır ve ilgili yöntemler örneklendirilir.
Bir delege yöntemine mesaj göndermek için ise, [self.delege delegeYontemi:sayi] kodunu kullanabiliriz. Delegeyi kullanmak için örnek bir kodda ise, Delegeismi protokolünü uygulayan SinifAdi sınıfının bir nesnesi oluşturulur. Nesne, delege özelliğiyle birlikte başka bir sınıfa atanır. Daha sonra, delege yöntemi çağrılır ve ilgili sınıfta tanımlanmış bir yöntem çalıştırılır.
Genel olarak, delege tasarım kalıbı, Objektif-C programlama dilinde oldukça sık kullanılan ve yararlı bir özelliktir. Bu tasarım kalıbının kullanımı, nesneler arasındaki hızlı ve etkili iletişimi sağlar ve farklı sınıflar arasındaki bağımlılığı azaltır.
Delege Nedir?
Objektif-C'de delege, bir tasarım kalıbıdır. Bu kalıp sayesinde bir nesne, başka bir nesne tarafından yürütülen işlemleri yerine getirebilir. Delege, örneğin bir butonun tıklanması gibi bir olayın gerçekleştiği durumlarda kullanılabilir. Böylece, butonun ne yapacağına karar vermek yerine, başka bir nesne tarafından yapılacak işlemler belirlenebilir.
Bir delege, bir protokol aracılığıyla tanımlanır. Delegeyi kullanmak isteyen sınıflar, bu protokolü uygulamalıdır. İlgili sınıf, delege yöntemleri kullanarak işlemleri gerçekleştirir. Bu sayede, objeler arasında bağımsızlık sağlanır ve kodun bakımı kolaylaşır.
Delege Nasıl Tanımlanır?
Delege, bir sınıfın belirli yöntemlerini başka bir nesnenin kullanımına sunmak için tanımlanır. Bu durumda, başka bir nesne delege yöntemini çağırdığında, asıl sınıfta tanımlanmış olan ilgili yöntem başka bir nesne üzerinde çalıştırılır.
Delege, birçok farklı senaryoda kullanılabilir. Örneğin, bir uygulamanın ana sınıfı bazı işlemleri başka bir sınıf üzerinde gerçekleştirir. Bu durumda, ana sınıf bir delege olarak tanımlanır ve ilgili işlemler diğer sınıfta gerçekleştirilir.
Bir sınıfın bir delege özelliği tanımlarken, ilgili yöntemlerin protokol oluşturma işlemi tamamlanmalıdır. İlgili sınıfta protokol tanımlanır ve daha sonra protokolü uygulayan sınıfın özellikleri tanımlanır. Son adımda ise, atanmış olan değeri çağırarak delege yöntemi çağrılır ve ilgili yöntem başka bir nesne üzerinde çalıştırılır.
Delege Tanımlama Örneği
Objektif-C programlama dilinde delege konsepti, bir nesnenin başka bir nesne tarafından yürütülen işlemleri yerine getirmesini sağlayan bir tasarım kalıbıdır. Delege kullanımı sayesinde nesneler arasında iletişim kurulur ve bu sayede programlar daha modüler hale gelir.
Delege tanımlama işlemi, öncelikle @protocol anahtar kelimesi ile gerçekleştirilir. Bu anahtar kelime ile bir delege protokolü tanımlanır. Protokolde, delege tarafından gerçekleştirilmesi gereken yöntemler belirtilir. Ardından delegeyi kullanacak sınıfın tanımlandığı yerde, bu protokol belirtilir ve delege yöntemlerinin örneklendirilmesi yapılır. Delege yöntemleri, istenen işlemlerin yapıldığı kod bloklarını içerir.
Anahtar Kelime | Açıklama |
---|---|
@protocol | Bir delege protokolü tanımlar |
@property | Bir sınıf özelliği tanımlar |
id | Tüm tipleri kabul eden bir veri tipidir |
* | Bir işaretleyici kullanılır |
Delege tanımlama örneğinde, Delegeismi adında bir protokol tanımlanır. Protokol, NSNumber tipinde bir parametre alan ve geriye değer döndürmeyen "delegeYontemi" adında bir yöntemi içerir. Bu protokol, SinifAdi sınıfının bir özelliği olarak tanımlanır ve Delegeismi protokolünü uygulayan sınıfların atanması sağlanır. Bu sayede, ilgili sınıfta yer alan yöntemler, başka bir nesne üzerinden çağrılabilir ve uygun işlemler gerçekleştirilir.
- (void)delegeYontemi:(NSNumber *)sayi;- (void)delegeYontemi:(NSNumber *)sayi;
yöntemi, Delegeismi protokolünü uygulayan sınıfların içinde tanımlanması gereken bir yöntemdir. Bu yöntem, delege özelliğine atanmış bir nesne tarafından çağrılır ve önemli bir işlevi yerine getirir. Yöntem parametre olarak bir NSNumber değeri alır.
Bu yöntemi kullanarak, delege tarafından belirlenen bir işlevi yerine getirebilir ve bu sayede daha geniş kapsamlı programlar yazabilirsiniz. Örneğin, bir iOS uygulamasında kullanıcının seçtiği bir sayıyı işlemek istediğinizi varsayalım. Delege kullanarak, seçilen sayıyı işleyen bir yöntem yazabilir ve programınızın daha dinamik hale gelmesini sağlayabilirsiniz.
Bu yöntemi çağırmak için, delege özelliğine atanmış bir nesnenin içinden [self.delege delegeYontemi:sayi];
kodunu kullanabilirsiniz. Bu kod, delege özelliğine atanmış herhangi bir sınıfın içerisindeki delegeYontemi:
yöntemini çağıracaktır.
Bu yöntemi kullanırken, sayı parametresini istediğiniz tipte belirleyebilirsiniz. Bu sayede, delege özelliğine atanmış bir sınıfın içinde, istediğiniz tipte bir değerle çalışacak bir yöntem yazabilirsiniz. Buna örnek olarak, bir çemberin yarıçapını hesaplamak veya bir hesap makinesi işlevi gerçekleştirmek için sayı parametresini kullanabilirsiniz.
@end@interface SinifAdi : NSObject
SinifAdi is the class where the delegate protocol is implemented. In this class, a delegate property is defined to hold the reference to the object that will execute the methods. This property is declared as weak to avoid retain cycles. The delegate protocol methods are implemented in this class. When the delegate method is called, it ensures that the delegate responds to the method and then executes it.
In the sample code, SinifAdi is a custom class, and the NSObject is its superclass. This class defines a delegate property and implements the methods of the Delegeismi protocol. When the delegate method is called, this class checks whether the delegate object implements the method or not. If it does, then the method is executed. If it does not, then the application crashes, and an exception is thrown.
The delegate pattern is used in situations where you want to decouple the communication between two objects. One object doesn't need to know the specifics of the other – it only needs to know how to communicate with it. This pattern is widely used in iOS development, such as UITableViewDelegate and UITableViewDataSource protocols.
To summarize, the SinifAdi is the class that implements the delegate protocol. It defines a delegate property, which holds the reference to the object that will execute the methods. When the delegate method is called, it checks whether the delegate responds to the method and then executes it. The delegate pattern is used to decouple the communication between two objects in situations where one object only needs to know how to communicate with the other.
@property (nonatomic, weak) id@property (nonatomic, weak) id
"id" anahtar kelimesi, Objective-C dilinde herhangi bir türde bir nesne olabileceğini belirtmek için kullanılır. "Delegeismi" ise, önceden tanımlanan bir protokoldür. Bu protokol, delege özelliği için gereksinimleri belirler ve bu gereksinimleri karşılayacak bir nesne sağlar.
Bir sınıfın delege özelliği tanımlamasına ek olarak, ilgili sınıfın delege oluşturacak sınıfın protokolünü de uygulayabileceği belirtilmelidir. Bu, delege özelliğinin tanımlandığı sınıfın, protokolün gereksinimlerini karşılayan bir sınıf nesnesine sahip olduğundan emin olur.
@endDelege konsepti, Objektif-C programlama dilinde oldukça önemli bir tasarım kalıbıdır. Bu konsept, bir sınıfın başka bir nesne tarafından kullanılacak yöntemlerini belirlemesini ve bu yöntemlerin ilgili nesne üzerinde çalıştırılmasını sağlar.
Bir delege tanımlanırken, öncelikle @protocol anahtar kelimesi kullanılarak bir protokol tanımlanır. Daha sonra, bu protokolü uygulayan bir sınıfın tanımlandığı bölümde belirtilir ve sınıf içinde delege özelliği tanımlanır.
Bir delege kullanımı sırasında, delege yöntemi çağrıldığında ilgili yöntem başka bir nesne üzerinde çalıştırılır. Bu sayede, kodlar arasında daha etkin bir iletişim sağlanır ve kod yeniden kullanılabilir hale gelir.
Bir delege tanımlama örneğinde, öncelikle protokol tanımlanır. Daha sonra, bu protokolü uygulayan SinifAdi sınıfının bir nesnesi oluşturulur. Nesne, delege özelliğiyle birlikte başka bir sınıfa atanır ve delege yöntemi çağrılır. Böylece, ilgili sınıfta tanımlanmış olan yöntem başka bir nesne üzerinde çalıştırılmış olur.
@protocol Delegeismi- (void)delegeYontemi:(NSNumber *)sayi;@end@interface SinifAdi : NSObject@property (nonatomic, weak) iddelege;@end
Yukarıdaki örnekte görüldüğü gibi, protokol tanımlanırken @protocol anahtar kelimesi kullanılır. Daha sonra, protokolü uygulayan bir sınıfın tanımlandığı yerde bu protokol belirtilir ve sınıf içinde delege özelliği tanımlanır.
SinifAdi *nesneAdi = [[SinifAdi alloc] init];nesneAdi.delege = self;[nesneAdi delegeYontemi:sayi];
Yukarıdaki örnekte ise Delegeismi protokolünü uygulayan bir SinifAdi sınıfının bir nesnesi oluşturulur. Nesne, delege özelliğiyle birlikte başka bir sınıfa atanır. Daha sonra, delegeYontemi çağrılır ve ilgili sınıfta tanımlanmış olan bir yöntem başka bir nesne üzerinde çalıştırılır.
Delege konseptinin kullanımı, obje yönelimli programlamada oldukça yaygındır ve kodların yeniden kullanabilmesi açısından oldukça önemlidir. Bu nedenle, Objektif-C programlama dilinde delege konseptini anlamak ve etkin bir şekilde kullanmak programcılar için oldukça önemlidir.
Delege Tanımlama Örneği Açıklaması
=@protocol anahtar kelimesi ile bir delege protokolü tanımlanır. Daha sonra, protokolü uygulayan bir sınıfın tanımlanacağı yerde bu protokol belirtilir. Bu sınıfın içinde bir adet delege özelliği tanımlanır ve ilgili yöntemler örneklendirilir. Delege protokolleri, bir sınıfın başka bir sınıfın yöntemlerini kullanabileceği bir arayüz sağlar. @protocol anahtar kelimesi ile tanımlandıktan sonra, delege protokolü, bir sınıfın @interface kısmında kullanılabilir. Protokolü uygulayan sınıf içinde, delege nesnesi yaratılabilir ve ilgili yöntemin uygulanacağı sınıfın adı belirtilir. Bu şekilde, sınıf, belirli bir işlevselliğe sahip bir başka nesne tarafından yönetilebilir.Delegeye Mesaj Göndermek İçin Kodlama
Delege kullanımında, belirli bir işlev çevresine bir nesnenin atanması gerekmektedir. Bu atama işlemi gerçekleştirildikten sonra, delegeye mesaj göndermek için gerekli olan kodlama basittir. =self.delege delegeYontemi:sayi; kodu, örnekteki delege yöntemine argümanlarla birlikte bir mesaj göndermek için kullanılır. Bu mesaj gönderme işlemi, ilgili yöntemin çalışması için gereklidir.
Delegeye mesaj göndermek için kullanılan kod, obje yönelimli programlama dillerinde oldukça yaygındır. Delege kullanımı, nesne yönlü programlamayı daha da geliştirerek yazılımın modülerliğini artırır ve pulsuz çalışmasına olanak sağlar. Ayrıca delegeler, özellikle arayüz tasarımında ve kullanıcı etkileşiminde oldukça yararlıdır.
Delegeye mesaj göndermek için kullanılan kodlama, oldukça basittir. İlgili mesajı göndermek için, delege nesnesinin özelliklerine bir mesaj atanır. Mesajın argümanları da belirlendikten sonra, gönderme işlemi gerçekleştirilir. Bu işlem sonrasında, delege tarafından ilgili parametrelerle birlikte gönderilen mesaj çalıştırılmış olur ve işlevi yerine getirilir. Bu da programlama işinin daha hızlı ve kolay bir şekilde gerçekleştirilmesine imkan tanır.
Delegeyi Kullanmak İçin Örnek Kod
Bir delege nesnesi kullanmak için öncelikle bir sınıf nesnesi oluşturmak gerekir. Bu örnekte, "nesneAdi" adında bir SinifAdi sınıfı nesnesi oluşturuluyor. Nesne oluşturulurken "alloc" ve "init" yöntemleri kullanılıyor.
Sözcük | Anlamı |
---|---|
alloc | Hafızada nesne için alan rezerve eder. |
init | Nesneyi başlatır. |
Örnekte, "nesneAdi" adında bir sınıf nesnesi, "SinifAdi" sınıfının özelliklerine sahip olacak şekilde oluşturuluyor. Oluşturulan nesne, "nesneAdi.delege" özellik aracılığıyla başka bir sınıfa atanıyor. Daha sonra, delege yöntemi çağrılıyor ve ilgili sınıfta tanımlanmış bir yöntem çalıştırılıyor.
- SinifAdi *nesneAdi = [[SinifAdi alloc] init];
Delege tasarım kalıbı kullanılırken, bir sınıfın yöntemleri diğer bir nesne tarafından kullanılır. Bu işlem, bir sınıfın birkaç nesne tarafından kullanılmasını açar ve daha modüler bir kodlama deneyimi sunar. Örneğin, SinifAdi sınıfındaki yöntemler başka bir nesne tarafından kullanılabilmesi için, nesnenin tanımlandığı yerde "nesneAdi.delege = self;" kodu kullanılır. Bu sayede, delege özelliği atanarak, başka bir nesne SinifAdi sınıfındaki yöntemleri kullanabilir.
[nesneAdi delegeYontemi:sayi];'[nesneAdi delegeYontemi:sayi];' kodu, objektif-C programlama dilinde delege kullanımının anahtar noktasıdır. Bu satır, bir önceki örnekte oluşturulan SinifAdi sınıfının bir nesnesinin oluşturulduğu bölüme aittir. Bu nesne içinde delege özelliği tanımlandığından, bir başka nesne üzerinde delege yöntemi çağrılırken bu yöntem bu nesnenin delege olarak atanmış olduğu sınıf içinde çalıştırılır.
Delege tasarım kalıbı, özellikle birden fazla nesne tarafından çalıştırılması gereken bir işlemin tek bir yerden yönetilmesini sağlar ve kodun tekrarının önüne geçer. Örneğin, bir oyun programında player nesnesinin hareketleri ile ilgili fonksiyonların farklı yerlerde çağrılması gerekir. Fakat, neredeyse her sınıfın ayrı ayrı bu fonksiyonları çağırması gerektiğinde, kod tekrarı meydana gelir. Delege kullanarak, bu fonksiyonlar tek bir yerden kontrol edilir ve kod tekrarı engellenmiş olur.
Ayrıca, bir sınıfın farklı nesneler tarafından kullanımına sunulacak olan yöntemleri, delege tasarım kalıbı kullanılarak belirlenir. Bu sayede, sınıfın yöntemlerine farklı yerlerden, farklı şekillerde erişim sağlanabilir ve bunun sonucunda program daha modüler ve esnek bir yapıya kavuşur.
Bu nedenle, objektif-C programlama dilinde delege kullanımının öğrenilmesi ve doğru bir şekilde uygulanması önemlidir. Yapılan çalışmalar, delege kullanımının programlama dünyasında oldukça yaygın olduğunu ve başarılı projelerde sıklıkla kullanıldığını göstermektedir.
Delegeyi Kullanmak İçin Örnek Kod Açıklaması
Delegeyi kullanmak için örnek kod, Delegeismi protokolünü uygulayan bir SinifAdi sınıfı nesnesi oluşturarak başlar. Oluşturulan nesne, delege özelliğiyle birlikte başka bir sınıfa atanır. Böylece, delege özelliği atanmış bir nesne yürütülmek istenildiğinde, ilgili yöntemler başka bir nesne üzerinde çalıştırılır.
Örneğin, belirli bir işlevin delege yöntemi çağrılmak istenildiğinde, nesne adı kullanılarak bu yönteme mesaj gönderilir. Mesaj gönderme işlemi için, "self.delege delegeYontemi:sayi" formatı kullanılır. Bu işlem sonrasında, ilgili delege metoduna gerekli parametreler gönderilir ve bu metod hedef sınıfta tanımlanır, çalıştırılır.