Objective-C Veri Kapsülleme

Tüm Objective-C programları aşağıdaki iki temel unsurdan oluşur:

  • Program statements (code) - Bu, programın eylemleri gerçekleştiren kısmıdır ve bunlara yöntem denir.

  • Program data - Veriler, program işlevlerinden etkilenen program bilgisidir.

Kapsülleme, verileri işleyen verileri ve işlevleri birbirine bağlayan ve hem dış müdahalelerden hem de kötüye kullanımdan koruyan bir Nesne Yönelimli Programlama kavramıdır. Veri kapsülleme, önemli OOP konseptine yol açtı.data hiding.

Data encapsulation verileri ve bunları kullanan işlevleri bir araya getiren bir mekanizmadır ve data abstraction sadece arayüzleri ortaya çıkaran ve uygulama detaylarını kullanıcıdan gizleyen bir mekanizmadır.

Objective-C, adı verilen kullanıcı tanımlı türlerin oluşturulması yoluyla kapsülleme ve veri gizleme özelliklerini destekler. classes. Örneğin -

@interface Adder : NSObject {
   NSInteger total;
}

- (id)initWithInitialNumber:(NSInteger)initialNumber;
- (void)addNumber:(NSInteger)newNumber;
- (NSInteger)getTotal;

@end

Toplam değişkeni özeldir ve sınıf dışından erişemeyiz. Bu, programınızın herhangi bir bölümü tarafından değil, yalnızca Adder sınıfının diğer üyeleri tarafından erişilebileceği anlamına gelir. Bu, kapsüllemenin elde edilmesinin bir yoludur.

Arayüz dosyası içindeki yöntemlere erişilebilir ve kapsamları geneldir.

Yardımıyla yazılan özel yöntemler vardır. extensionsönümüzdeki bölümlerde öğreneceğimiz.

Veri Kapsülleme Örneği

Genel ve özel üye değişkenleriyle bir sınıf uyguladığınız herhangi bir Objective-C programı, veri kapsülleme ve veri soyutlamasına bir örnektir. Aşağıdaki örneği düşünün -

#import <Foundation/Foundation.h>

@interface Adder : NSObject {
   NSInteger total;
}

- (id)initWithInitialNumber:(NSInteger)initialNumber;
- (void)addNumber:(NSInteger)newNumber;
- (NSInteger)getTotal;

@end

@implementation Adder
-(id)initWithInitialNumber:(NSInteger)initialNumber {
   total = initialNumber;
   return self;
}

- (void)addNumber:(NSInteger)newNumber {
   total = total + newNumber;
}

- (NSInteger)getTotal {
   return total;
}

@end

int main(int argc, const char * argv[]) {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];        
   Adder *adder = [[Adder alloc]initWithInitialNumber:10];
   [adder addNumber:5];
   [adder addNumber:4];
   
   NSLog(@"The total is %ld",[adder getTotal]);
   [pool drain];
   return 0;
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

2013-09-22 21:17:30.485 DataEncapsulation[317:303] The total is 19

Yukarıdaki sınıf, sayıları toplar ve toplamı döndürür. Kamu üyeleriaddNum ve getTotal dış dünyaya arayüzlerdir ve bir kullanıcının sınıfı kullanmak için bunları bilmesi gerekir. Özel üyetotal dış dünyadan gizlenmiş, ancak sınıfın düzgün çalışması için gerekli olan bir şeydir.

Strateji Tasarlama

Çoğumuz, onları gerçekten ifşa etmemiz gerekmedikçe, sınıf üyelerini varsayılan olarak özel kılmayı acı deneyimlerle öğrendik. Bu sadece iyiencapsulation.

Objective-C dahil olmak üzere tüm Object-Oriented Programming (OOP) dillerinin temel özelliklerinden biri olduğu için veri kapsüllemeyi anlamak önemlidir.