
- 面向物件 C 基礎
- 面向物件 C - 主頁
- 面向物件 C - 概述
- 面向物件 C - 環境設定
- 面向物件 C - 程式結構
- 面向物件 C - 基本語法
- 面向物件 C - 資料型別
- 面向物件 C - 變數
- 面向物件 C - 常量
- 面向物件 C - 運算子
- 面向物件 C - 迴圈
- 面向物件 C - 決策制定
- 面向物件 C - 函式
- 面向物件 C - 程式碼塊
- 面向物件 C - 數字
- 面向物件 C - 陣列
- 面向物件 C - 指標
- 面向物件 C - 字串
- 面向物件 C - 結構
- 面向物件 C - 預處理器
- 面向物件 C - 型別定義
- 面向物件 C - 型別轉換
- 面向物件 C - 日誌處理
- 面向物件 C - 錯誤處理
- 命令列引數
- 高階面向物件 C
- 面向物件 C - 類和物件
- 面向物件 C - 繼承
- 面向物件 C - 多型
- 面向物件 C - 資料封裝
- 面向物件 C - 類別
- 面向物件 C - 裝扮
- 面向物件 C - 擴充套件
- 面向物件 C - 協議
- 面向物件 C - 動態繫結
- 面向物件 C - 複合物件
- Objective-C - 基礎框架
- 面向物件 C - 快速列舉
- Objective-C - 記憶體管理
- 面向物件 C 有用資源
- 面向物件 C - 快速指南
- 面向物件 C - 有用資源
- 面向物件 C - 探討
面向物件 C 資料封裝
所有面向物件 C 程式都由以下兩個基本元素組成 −
程式語句(程式碼) − 這是程式執行操作的部分,稱為方法。
程式資料 − 資料是受程式函式影響的程式資訊。
封裝是一種面向物件程式設計概念,將資料和用於處理資料的函式捆綁在一起,並保護它們免受外部干擾和誤用。資料封裝促成了 資料隱藏 這個重要的 OOP 概念。
資料封裝 是將資料與其使用函式捆綁在一起的一種機制,而 資料抽象 是一種僅公開介面並向用戶隱藏實施細節的機制。
面向物件 C 透過建立稱為 類 的使用者定義型別來支援封裝和資料隱藏特性。例如 −
@interface Adder : NSObject { NSInteger total; } - (id)initWithInitialNumber:(NSInteger)initialNumber; - (void)addNumber:(NSInteger)newNumber; - (NSInteger)getTotal; @end
變數 total 是私有變數,我們無法從該類外部進行訪問。這意味著它們只能由 Adder 類其他成員訪問,不能由程式的任何其他部分訪問。這是實現封裝的一種方式。
介面檔案內的函式可以訪問且其作用域是公共的。
還有私有方法,透過 擴充套件 編寫,我們將在下一章節中進行了解。
資料封裝示例
任何實施了公共和私有成員變數的類的面向物件 C 程式都是資料封裝和資料抽象的示例。請看以下示例 −
#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; }
編譯並執行以上程式碼時,會生成以下結果 −
2013-09-22 21:17:30.485 DataEncapsulation[317:303] The total is 19
上述類將數字相加並返回總和。公共成員 addNum和 getTotal 是對外界的介面,使用者需要了解這些接口才能使用該類。私有成員 total 是對外界隱藏的,但類需要它來正常執行。
設計策略
我們大多數人透過慘痛的教訓瞭解到,除非我們真的需要公開類成員,否則應預設將其設為私有。那才是好的 封裝。
瞭解資料封裝很重要,因為它是面向物件程式設計 (OOP) 語言的一個核心特性,面向物件 C 也包括在內。
廣告