Enkapsulasi Data Objective-C
Semua program Objective-C terdiri dari dua elemen dasar berikut -
Program statements (code) - Ini adalah bagian dari program yang melakukan tindakan dan mereka disebut metode.
Program data - Data adalah informasi program yang dipengaruhi oleh fungsi program.
Enkapsulasi adalah konsep Pemrograman Berorientasi Objek yang menyatukan data dan fungsi yang memanipulasi data dan yang menjaga keamanan dari gangguan luar dan penyalahgunaan. Enkapsulasi data mengarah pada konsep OOP yang pentingdata hiding.
Data encapsulation merupakan mekanisme bundling data dan fungsi yang menggunakannya, dan data abstraction adalah mekanisme yang hanya mengekspos antarmuka dan menyembunyikan detail implementasi dari pengguna.
Objective-C mendukung properti enkapsulasi dan data yang bersembunyi melalui pembuatan tipe yang ditentukan pengguna, yang disebut classes. Misalnya -
@interface Adder : NSObject {
NSInteger total;
}
- (id)initWithInitialNumber:(NSInteger)initialNumber;
- (void)addNumber:(NSInteger)newNumber;
- (NSInteger)getTotal;
@end
Variabel total bersifat pribadi dan kami tidak dapat mengakses dari luar kelas. Ini berarti bahwa mereka hanya dapat diakses oleh anggota kelas Adder lainnya dan bukan oleh bagian lain dari program Anda. Ini adalah salah satu cara enkapsulasi dicapai.
Metode di dalam file antarmuka dapat diakses dan dalam lingkup publik.
Ada metode pribadi, yang ditulis dengan bantuan extensions, yang akan kita pelajari di bab selanjutnya.
Contoh Enkapsulasi Data
Setiap program Objective-C di mana Anda mengimplementasikan kelas dengan variabel anggota publik dan privat adalah contoh enkapsulasi data dan abstraksi data. Perhatikan contoh berikut -
#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;
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
2013-09-22 21:17:30.485 DataEncapsulation[317:303] The total is 19
Kelas di atas menambahkan angka bersama dan mengembalikan jumlahnya. Anggota publikaddNum dan getTotal adalah antarmuka ke dunia luar dan pengguna perlu mengetahuinya untuk menggunakan kelas. Anggota pribaditotal adalah sesuatu yang tersembunyi dari dunia luar, tetapi dibutuhkan agar kelas dapat beroperasi dengan baik.
Strategi Merancang
Sebagian besar dari kita telah belajar melalui pengalaman pahit untuk membuat anggota kelas menjadi pribadi secara default kecuali kita benar-benar perlu mengekspos mereka. Itu bagusencapsulation.
Penting untuk memahami enkapsulasi data karena ini adalah salah satu fitur inti dari semua bahasa Pemrograman Berorientasi Objek (OOP) termasuk Objective-C.