Objective-C-Datenkapselung

Alle Objective-C-Programme bestehen aus den folgenden zwei grundlegenden Elementen:

  • Program statements (code) - Dies ist der Teil eines Programms, der Aktionen ausführt und als Methoden bezeichnet wird.

  • Program data - Die Daten sind die Informationen des Programms, die von den Programmfunktionen betroffen sind.

Die Kapselung ist ein objektorientiertes Programmierkonzept, das die Daten und Funktionen, die die Daten manipulieren, zusammenhält und sowohl vor Störungen von außen als auch vor Missbrauch schützt. Die Datenkapselung führte zu dem wichtigen OOP-Konzept vondata hiding.

Data encapsulation ist ein Mechanismus zum Bündeln der Daten und der Funktionen, die sie verwenden, und data abstraction ist ein Mechanismus, bei dem nur die Schnittstellen verfügbar gemacht und die Implementierungsdetails vor dem Benutzer verborgen werden.

Objective-C unterstützt die Eigenschaften der Kapselung und des Versteckens von Daten durch die Erstellung benutzerdefinierter Typen, die als aufgerufen werden classes. Zum Beispiel -

@interface Adder : NSObject {
   NSInteger total;
}

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

@end

Die variable Summe ist privat und wir können nicht von außerhalb der Klasse zugreifen. Dies bedeutet, dass nur andere Mitglieder der Adder-Klasse und kein anderer Teil Ihres Programms auf sie zugreifen können. Dies ist eine Möglichkeit, eine Einkapselung zu erreichen.

Methoden innerhalb der Schnittstellendatei sind zugänglich und öffentlich zugänglich.

Es gibt private Methoden, die mit Hilfe von geschrieben werden extensions, die wir in den kommenden Kapiteln lernen werden.

Beispiel für die Datenkapselung

Jedes Objective-C-Programm, in dem Sie eine Klasse mit öffentlichen und privaten Mitgliedsvariablen implementieren, ist ein Beispiel für Datenkapselung und Datenabstraktion. Betrachten Sie das folgende Beispiel -

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

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

Die obige Klasse addiert Zahlen und gibt die Summe zurück. Die öffentlichen MitgliederaddNum und getTotal sind die Schnittstellen zur Außenwelt und ein Benutzer muss sie kennen, um die Klasse verwenden zu können. Das private Mitgliedtotal ist etwas, das vor der Außenwelt verborgen ist, aber benötigt wird, damit die Klasse richtig funktioniert.

Strategie entwerfen

Die meisten von uns haben durch bittere Erfahrung gelernt, Klassenmitglieder standardmäßig privat zu machen, es sei denn, wir müssen sie wirklich entlarven. Das ist einfach gutencapsulation.

Es ist wichtig, die Datenkapselung zu verstehen, da sie eine der Hauptfunktionen aller OOP-Sprachen (Object-Oriented Programming) einschließlich Objective-C ist.