Objective-C'de Metot Görünürlüğü ve Erişim Belirtecini Ayarlama

Objective-C'de Metot Görünürlüğü ve Erişim Belirtecini Ayarlama

Objective-C'de metot görünürlüğü ve erişim belirteçlerini doğru ayarlamak, kodunuzun daha okunaklı ve yönetilebilir olmasını sağlar Bu makalede, bu belirteçlerin ne olduğunu ve nasıl kullanılacağını öğreneceksiniz

Objective-C'de Metot Görünürlüğü ve Erişim Belirtecini Ayarlama

Objective-C, nesne yönelimli programlama dilleri arasında oldukça popüler olan bir dil olarak kullanılmaktadır. Erişim belirtecini kullanarak tanımlanan sınıflara ve metotlara farklı derecelerde erişim yetkileri ayarlanabilir. Bu durum, programlama esnasında farklı güvenlik seviyelerine sahip olan sınıflar oluşturulmasına izin verir.

Objective-C'de Metot Görünürlüğü ve Erişim Belirtecini Ayarlama, programcıların metotların görünürlük ve erişim haklarını nasıl kontrol edebileceğini öğrenmelerine yardımcı olacaktır. Örneğin, genel erişim belirtecini kullanarak bir metodu tüm sınıflarda kullanabilirsiniz. Ancak, özel bir erişim belirtecini kullanarak bir metot sadece tanımlandığı sınıfta kullanılabilir hale getirilebilir. Korumalı erişim belirteci ise, bir metodu sadece tanımlandığı sınıf ve alt sınıflarda kullanılabilir hale getirir.

Bu erişim belirteçlerinden hangisini kullanmanız gerektiği, sınıflarınızın kullanım amacına göre değişebilir. Örneğin, bir sınıfın bazı metotları yalnızca onun alt sınıfları tarafından çağrılabilir hale getirilebilir. Bu, metotların bazı özelliklerinin yalnızca bu sınıf ve alt sınıflara özgü olduğu anlamına gelir.

Objective-C'deki erişim belirteçlerinin yanı sıra, property'lerin de erişim ve görünürlük belirleyicileri vardır. Bu belirteçler sayesinde bir sınıf içindeki bir özelliği, dış dünya tarafından nasıl erişilip kullanılacağı belirlenebilir.

Metotların görünürlük ve erişim belirteçleri sayesinde, Objective-C programlama dili çok daha esnek bir dil haline gelir. Bu esneklik sayesinde, programlama esnasında oluşan farklı ihtiyaçlara uygun sınıflar oluşturmak son derece kolay hale gelir.

Daha fazla bilgi edinmek için aşağıdaki tabloya göz atabilirsiniz:

Erişim Belirteci Görünürlük
Public Herkes tarafından erişilebilir.
Private Sadece tanımlandığı sınıf tarafından erişilebilir.
Protected Tanımlandığı sınıf ve alt sınıflar tarafından erişilebilir.

Bu erişim belirteçlerini kullanarak sınıflarınızda metotların erişimini ve görünürlüğünü kolayca kontrol edebilirsiniz.


Public, Private, ve Protected

Objective-C programlama dili, metotlar için genel, özel ve korumalı erişim belirtecine sahiptir. Bu belirteçler, bir sınıftaki metotların hangi nesneler tarafından erişilebileceğini belirler.

Public: Genel erişim belirteci, metotların herhangi bir sınıftan erişilebilir olmasını sağlar. Bu, sınıf dışında bulunan nesnelerin erişimine açık olan tüm metotlar için kullanılabilir.

Private: Özel erişim belirteci, yalnızca sınıf içinde tanımlanan metotların erişebileceğini belirtir. Başka bir deyişle, bu metotlar yalnızca aynı sınıfın başka nesneleri tarafından kullanılabilir.

Protected: Korumalı erişim belirteci ise bir sınıfın alt sınıflarında kullanılabilecek olan metotları ifade eder. Yani korumalı metotlara, yalnızca sınıfın altında bulunan başka sınıflar tarafından erişilebilir.

Bu erişim belirteçleri, Objective-C'deki metotların güvenliğini ve birbirinden izole olmasını sağlar. Özel bir fonksiyonun veya değişkenin, sadece belirli bir nesne tarafından kullanılabilmesi, metotların güvenliğini sağlama açısından oldukça önemlidir.

Ayrıca, Objective-C'deki erişim belirteçleri, polymorphism (çok biçimlilik) konusunda da yardımcı olur. Çok biçimliği kullanarak, bir ana sınıf içindeki metotları alt sınıflarda farklı şekillerde uyarlayabiliriz. Erişim belirteçleri, bu işlemi yaparken hangi metotların uyarlanabileceğinin belirlenmesinde yardımcı olur.

Tüm bunların yanı sıra, erişim belirteçleri yazılımın daha kolay anlaşılmasını sağlar. Bir metodu açık veya korumalı hale getirmek, bir başka geliştiricinin kodunuzu anlamasını ve değiştirmesini kolaylaştırır. Bu nedenle, Objective-C'deki erişim belirteçlerine çok dikkat etmek önemlidir.


Property'lerde Görünürlük ve Erişim Belirteçleri

Objective-C'de, property'lerin görünürlük ve erişim belirteçlerinin ayarlanabilmesi mümkündür. Bu belirteçler, metotların erişim belirteçleriyle benzerlik gösterirler. Genellikle property'lerin erişimi, onların içinde yer aldıkları sınıfın iç ve dışındaki diğer sınıflara yönelik olabilir.

Property'lerin göstericileri şu şekilde belirlenir:

  • Private: Property'nin yalnızca sınıf içerisinde erişilmesine izin verir.
  • Protected: Property'nin, sınıf içindeki alt sınıflar tarafından erişilmesine izin verir.
  • Public: Property'nin, sınıfın içinde ve dışındaki tüm başka sınıflar tarafından erişilmesine izin verir.

Property'lerin belirteçleri yukarıdaki üç belirteçten biriyle belirtilebilir. Belirteçleri belirleyerek, property'nin nasıl erişilebilir olacağına karar verilir. Örneğin, bir sınıfın özelliklerini saklayan bir Property yalnızca sınıf içinde kullanılacaktır ve başka sınıfların bu property'e erişmesi engellenecektir.

Bununla birlikte, Objective-C'de property'lere ek olarak, erişimi kontrol etmek için izin koruyucuları kullanabilirsiniz. Bu, property'nin daha hassas bir şekilde erişimini kontrol edebileceğiniz anlamına gelir.

Property'lerin belirteçleri ve izin koruyucuları sayesinde Objective-C uygulamalarını daha güvenli ve verimli hale getirmek mümkündür.


İzin Koruyucuları

iOS ve macOS uygulamaları geliştirirken, bazen belirli kısımların sadece belirli kod bloklarında kullanılabilir olması gerekebilir. Bu noktada, Objective-C'de izin koruyucuları devreye girer. İzin koruyucuları, sadece belirli kod bloklarında kullanılmak üzere özel olarak tanımlanmış değişkenler veya metotlar için erişim sınırlamaları getirir.

Objective-C'de, iki farklı izin koruyucusu vardır: public ve private. Public koruyucu, öğe her yerde erişilebilir olmasını sağlar. Diğer yandan, private koruyucu yalnızca tanımlandığı sınıf veya dosya içinde erişilebilir olmasını sağlar. Bununla birlikte, korumalı bir erişim belirteci bulunmaz. Bunun yerine, @private kelimesi kullanılır ve yalnızca sınıfın tanımlandığı dosyada erişilebilir olmasını sağlar.

Bunların yanı sıra, Objective-C'de ayrıca protected izin koruyucusu da vardır. Bu koruyucu, yalnızca sınıfın üyeleri tarafından erişilebilir olmasını sağlar. Ancak, Objective-C'nin standart sürümünde bu koruyucu mevcut değildir. Bunun yerine, işlevselliği benzer şekilde sağlamak için diğer teknikler kullanılabilir.

İzin koruyucularını kullanmanın bir diğer yolu, özel izin koruyucuları oluşturmaktır. Böylece, belirli bir metot veya özellik, sadece belirli kod bloklarında kullanılabilir olacak şekilde özelleştirilebilir. Bu özel izin koruyucuları, belirli bir işlevi yerine getiren özel metotlar olarak tanımlanır.


İzin Koruyucu Örnekleri

Objective-C programlama dilinde, izin koruyucuları, bir sınıf veya bir sınıfın özelliği gibi daha düşük düzeydeki erişim belirteçlerini ayarlamak için kullanılır. Bu şekilde, sınıfın bir üyesi, uygulamanın başka bir yerindeki kod tarafından değiştirilemeyecek ya da erişilemeyecek hale getirilebilir.

Birçok durumda, izin belirtecini doğru bir şekilde ayarlamak, kodunuzun daha temiz olmasını sağlarken, performansı da artırabilir. Örneğin, kısayol yöntemleri, yardımcı fonksiyonlar veya loglama gibi yardımcı programlar gibi daha düşük seviye ayarları, kodunuzu daha anlaşılır ve bakımı daha kolay kılar.

İzin Tipi Açıklama
public Bu izin kimlikli metot, sınıf dışındaki herhangi bir yerden erişilebilir.
protected Bu izin kimlikli metot, yalnızca sınıfın kendisinde veya alt sınıflarında erişilebilir.
private Bu izin kimlikli metot, yalnızca sınıf içerisinde erişilebilir.

Objective-C'de izin koruyucu kullanımı, özellikle daha büyük uygulamalarda son derece yararlıdır. Örneğin, bir ViewController sınıfındaki bir metot, yalnızca ViewController sınıfındaki diğer metotlar tarafından çağrılabilir, böylece uygulamanın başka bir yerindeki hatalı bir kod değişikliği, metodu yanlış kullanarak görünümü bozamaz.

Bu örnek, işlevler arasında net bir ayrım yapmanızı sağlar ve sisteminizi taslamanıza ve kendi işlevlerinizi bir arada toplamanıza yardımcı olabilir. Veri, yalnızca işlevleri yöneten bir sınıf aracılığıyla erişilebilir ve bir işlev değiştirildiğinde, sistemi değiştirmeden önce tasarımınızın etkisini anlamanıza izin verir. İzin koruyucuları, genel olarak alışılmış bir tavrın parçasıdır ve aşırı kullanımı, doğru özellik ayarları elde etmenizi zorlaştırabilir.


Özel İzin Koruyucular

Objective-C'de özel izin koruyucuları, belirli bir sınıfa veya nesneye özgü olan özel bir erişim belirtecidir. Başka bir deyişle, özel izin koruyucuları sadece belirli bir sınıfa veya nesneye ait olan metotların veya özelliklerin çağrılmasına izin verir. Bu, özellikle sınıflar arasındaki etkileşimleri sınırlandırmak için çok yararlıdır.

Özel bir izin koruyucu oluşturmak için, öncelikle "private" olarak da adlandırılan bir değişken veya metot tanımlamanız gerekir. Daha sonra, bu değişken veya metodu çağrılmadan önce erişilebilir kılmak istediğiniz sınıfın adını içeren bir uzantı fonksiyonu oluşturmanız gerekiyor.

Örnek olarak, bir "Person" sınıfı oluşturduğunuzu ve bu sınıfta özel bir metot kullanmak istediğinizi varsayalım. İlk adım olarak, "Person.h" dosyasında özel bir metot tanımlamanız gerekiyor:

@interface Person : NSObject@property (strong, nonatomic) NSString *name;- (void)publicMethod;@end

Sonra, "Person.m" dosyasında özel metodu oluşturmalısınız:

@interface Person ()- (void)privateMethod;@end@implementation Person- (void)publicMethod{NSLog(@"Bu bir genel metodtur.");}-(void)privateMethod{NSLog(@"Bu özel bir metottur.");}@end 

Bu metotlar sınıfın içinde olan 'method' lar tarafından çağrılabilecektir fakat sınıftan dışarıdan herhangi bir erişim mümkün olmayacaktır. Bunun önemli avantajları vardır ve programlamada oldukça kullanışlıdır.

Bu şekilde oluşturduğunuz özel izin koruyucuları, özellikle büyük bir proje yönetirken faydalı olabilir. Herhangi bir hata olmadan kodunuzun daha temiz ve daha okunaklı olmasına yardımcı olur. Ayrıca, değişkenlerinizi veya metotlarınızı yanlışlıkla başka bir sınıf veya nesne tarafından erişime açık hale getirme olasılığını azaltarak güvenliği de arttırır.


Kategori ve Ekleme Yöntemleri

Objective-C'de kategori ve ekleme yöntemleri, sınıfın mevcut tasarısında yenilikler yapmanın ve mevcut sınıfta yer almayan metotları tanımlamanın harika bir yoludur. Kategoriler, yeni metotları mevcut bir sınıfa eklemeye ve mevcut kodu yeniden derlemeye gerek kalmadan bir sınıfın davranışını değiştirmeye olanak tanır.

Metotlara görünürlük ve erişim belirteçlerini belirlemek için kategori ve ekleme yöntemleri de kullanılabilir. Kategori yöntemi, mevcut bir sınıfın metotlarına yeni bir görünürlük veya erişim belirteci eklemek için kullanılabilir. Ekleme yöntemi ise, yeni bir sınıfın metotlarına görünürlük veya erişim belirteci eklemek üzere kullanılabilir.

Kategori düzeyinde görünürlük belirteçleri, normalde metotların görünürlük belirteçleri gibi belirlenir. Ayrıca mevcut bir metodun görünürlüğünü değiştirerek gösterme kapsüllemesi yapabiliriz. Bu tip durumlarda, özel bir kod bloğu içinde kategori metodunu wrap etmeniz yeterlidir, ancak değişkenleri yerel değişken olarak kullanmayı unutmayın, bunu yaparak bu değişkenlere erişimi kapsülleyebilir ve daha yüksek koruma seviyeleri sağlayabilirsiniz.

Ekleme yöntemi, yeni bir sınıfın metotlarına görünürlük ve erişim belirteci eklemek için kullanılabilir. Bu tip durumlarda, mevcut bir metodu yeni bir erişim veya görünürlük belirteci ekleyerek bir işlem gerçekleştiriyoruz. Bu, metotları farklı amaçlar için kullanırken bir metotun mevcut davranışını değiştirmekte faydalı olabilir.

Özetle, kategori ve ekleme yöntemleri, Objective-C'de metotların görünürlüğü ve erişim belirteçlerinin ayarlanmasına olanak tanır. Bunlar, mevcut kodun değiştirilmesine gerek kalmadan mevcut bir sınıfa yeni özellikler eklemenin harika bir yoludur. Kapsülleme ve gösterme teknikleri de kullanılarak metotların daha yüksek koruma seviyeleri ve daha iyi kod okunabilirliği sağlanabilir.


Kapsülleme ve Gösterme

Objective-C programlama dilinde, kapsülleme ve gösterme, metotların erişimini kontrol etmek için kullanılan iki önemli kavramdır. Kapsülleme, metotların sınırlarını belirler ve diğer sınıfların veya nesnelerin erişimine kapatır. Gösterme ise kontrol ettiğiniz metotları yalnızca belirli yerlerde görüntülemenizi sağlar.

Kapsülleme, sınıfın içinde erişime açılan ve açılmayan metotları belirleyen bir koruyucu duvar gibidir. Bu, programınızın güvenli, düzenli ve bilgilendirici olmasını sağlar. Aynı zamanda, işlevsellikle ilgili kavramları açıklığa kavuşturur ve gelecekteki geliştirme çalışmaları için iyi bir temel oluşturabilir.

Aşağıdaki örnekte, bir sınıfın içindeki özel metotları açıklıyoruz. Bu sınıfın başka nesneler tarafından erişilmesini önlemek için, örnek olarak "Employee" sınıfındaki özel değişkenlerimizin <private> erişim belirteciyle tanımlandığına dikkat edin.

Özellik Açıklama
<public> Herhangi bir yerde erişilebilir
<protected> Aynı sınıfta veya alt sınıflarda erişilebilir
<private> Sadece sınıfın içinde erişilebilir

Gösterme, metotların yalnızca belirli yerlerde görünmesine ve kullanılmasına izin verir. Örneğin, bir sınıfın içindeki değişkenleri ve fonksiyonları, o sınıfın dışındaki herhangi bir yerde göstermek istemezsiniz.

  • <public>: Bu metotlar herkes tarafından kullanılabilir. Kullanımı gereken metot önceden belirlenmiştir.
  • <private>: Bu metotlar sadece sınıfın içinde kullanılabilir. Sınıf üyeleri arasında paylaşabilirsiniz, ancak başka yerlerde kullanılamazlar.
  • <protected>: Bu metotlar sadece sınıfın türetilen üyelerinde kullanılır. Bu, sınıfın korumalı ve özel Fonksiyonları için kullanılır.

Bu örneklerde, bir sınıf içindeki değişkenlerin <private> erişim belirteci ile tanımlanarak erişimi kısıtlandığına dikkat edin. Ayrıca, <public> ve <protected> erişim belirteçlerinin, sınıfın başka yerlerinde kullanımının nasıl sınırlandırıldığını da görebilirsiniz.


Kapsülleme Örnekleri

Kapsülleme, Objective-C'de veri saklama ve güvenliğini sağlamak için önemli bir kavramdır. Bu konsepti anlamak için, örnek kodlarla gösterim yapmak oldukça faydalıdır.

  • Bir Class'ın temiz bir arayüzü olduğunu düşünebilirsiniz. Bu arayüz, Class'ın veya Nesnenin içinde ne olduğunu bilmeksizin sadece kullanabileceğiniz metot ve özelliklerinin bir listesidir. Kullanıcıların nesnenin iç kısmını değiştirmeden sadece arayüzü kullanabilmesini sağlamanın bir yolu, metotların bir kısmını özel (private) olarak ayarlamaktır.
  • Bir arayüz aynı zamanda, nesnenin içindeki verileri saklamak için de kullanılabilir. Bu, nesnenin içindeki verilere sadece belirli yollarla erişilebileceği anlamına gelir. Objective-C'de, bir değişkeni kapsüllenen bir özelliğin özel belirteçle, farklı adımlarla veya ihtiyaç duyulduğunda ilave işlevsellikle erişilebilir hale getirebilirsiniz.

Aşağıdaki örnek, bir sınıfın adını ve sayısını kapsüllemesini göstermektedir. :

ClassAdıClassSayısı
MyClass42

Yukarıdaki tablo, MyClass adında bir Class'ın var olduğunu ve sınıfın bir özelliği olarak ClassSayısı'ı sakladığını göstermektedir. Ancak, sınıfın kullanıcıları ClassSayısı verisine doğrudan erişemez.

Aşağıdaki örnek, ad ve sayı özelliklerini alacak ve ayarlayacak get ve set metotlarını göstermektedir:

@interface MyClass : NSObject@property (setter=setNum:, getter=num) int sayi;@property (setter=setName:, getter=name) NSString *ad;@end@implementation MyClass- (void) setName:(NSString *) aName{    if ( ad != aName ) {        [ad release];        ad = [aName copy];    }}- (NSString *) name{    return ad;}- (void) setNum:(int) aNumber{    sayi = aNumber;}- (int) num{    return sayi;}@end

Bu kod, MyClass adında bir sınıf tanımlar. Sınıf, iki özellik içerir: ad ve sayı. Ad özelliği bir NSString ve sayı özelliği bir int'tir. get ve set metotları, sınıfın dışında bu özelliklere erişimi sağlar. Metotlar ayrıca özelliklerin sınıf içinde nasıl tutulacağını da belirler. Ad ve sayı özelliklerini tutmak için, setNum: ve setName: metotları kullanılır. Bunlar aynı zamanda, get - num ve set - ad gibi yöntemlerle referans verilir.


Gösterme Örnekleri

Objective-C programlama dilinde, metot ve değişkenleri göstermek için farklı yöntemler vardır. Bunlardan bazıları şunlardır:

  • NSLog(): Bu yöntem en sık kullanılanlardan biridir ve konsol ekranında belirtilen metinleri yazdırır. Örneğin:
    NSLog(@"Merhaba Dünya!");
    Kod satırı, "Merhaba Dünya!" metnini konsol ekranına yazdıracaktır.
  • %@ belirteci: Bu belirteç, özellikle nesnelerin hafızadaki yerlerinin değerlerini göstermek için kullanılır. Örneğin:
    NSString *ad = @"Ahmet"; NSLog(@"Ad: %@", ad);
    Kod satırı, "Ad: Ahmet" metnini konsol ekranına yazdıracaktır.
  • %d veya %i belirteci: Bu belirteçler, tamsayı değerlerini göstermek için kullanılır. Örneğin:
    int sayi = 42; NSLog(@"Sayı: %d", sayi);
    Kod satırı, "Sayı: 42" metnini konsol ekranına yazdıracaktır.
  • %f veya %lf belirteci: Bu belirteçler, ondalık sayıları göstermek için kullanılır. Örneğin:
    float not = 3.14; NSLog(@"Not: %f", not);
    Kod satırı, "Not: 3.140000" metnini konsol ekranına yazdıracaktır.
  • NSMutableString sınıfı: Bu sınıf, bir metnin içeriğini düzenlemeyi sağlar. Örneğin:
    NSMutableString *metin = [NSMutableString stringWithString:@"Merhaba"]; [metin appendString:@" Dünya!"]; NSLog(@"%@", metin);
    Kod satırı, "Merhaba Dünya!" metnini konsol ekranına yazdıracaktır.

Bu gösterme yöntemleri Objective-C programlama dilinde sık sık kullanılır ve bir metodu veya değişkeni yazdırmak için etkili bir şekilde kullanılabilir.