標籤:
物件導向
物件導向(Object-Oriented)是基於面向過程(procedure-oriented)而言的
物件導向 強調對象<指揮者> OC, Java語言就是物件導向
面向過程 強調過程<執行者> C語言就是面向過程
物件導向是一種編程思想 運用對象 類 封裝 繼承 多態和訊息等概念來構造 測試 重構軟體
物件導向的特點 A:封裝 B:繼承 C:多態
物件導向思想的特點 A:它是一種更符合人們思想習慣的思想 B:它使複雜的內容簡單化 C:它使我們從執行者變成指揮者
物件導向的優點 符合人們通常的思維方式 從分析到設計再到編碼採用一致的模型表示 具有高度連續性 軟體重用性好
類和對象
類 對現實世界中事物的描述(成員變數和方法)
對象 現實世界中實際存在具體的個體
範例程式碼一
#import <Foundation/Foundation.h>/** 類的聲明 **/@interface Car : NSObject {//大括弧內聲明成員變數 預設初始化為0(與函數的大括弧是不一樣的); NSObject: 根類 讓Car具備建立對象的能力 @public//此關鍵字可以讓成員變數被外界訪問 int age;//成員變數1 int height;//成員變數2}- (void) run;//對象方法@end/** 類的實現 **/@implementation Car- (void) run { NSLog(@"小車%i歲,%icm,它在跑",age,height);}@end/** 主函數 **/int main() { Car *c = [Car new];//建立對象 c->age = 10;//設定對象的屬性 c->height = 180;//設定對象的屬性 [c run];//調用對象方法 return 0;}/** 記憶體分析 **///[Car new] 每次都會建立出新的對象 並且返回對象的地址值 那麼就應該用一個指標變數儲存對象的地址
範例程式碼二
#import <Foundation/Foundation.h>@interface Person : NSObject { @public int age; int height;}- (int) test : (int) i;//帶參數方法的聲明//- (int) test : (int) i test1 : (int) i1;//多參數方法的聲明@end@implementation Person- (int) test : (int) i {//帶參數方法的實現 return i * i;}//- (int) test : (int) i test1 : (int) i1 {//多參數方法的實現// return i * i1;//}@endint main() { Person *p = [Person new]; int tmp = [p test : 7];//帶參數方法的調用 //int i = [p test : 10 test1 : 9];//多參數方法的調用 NSLog(@"test方法的值是:%i", tmp); return 0;}/** 注意 **///同一個類中不允許兩個對象方法同名/** 方法文法詳解 **///- (int) test : (int) i;//方法類型 (方法傳回值類型) 方法名 : (參數類型) 參數名;//[p test : 7]//[指標變數名 方法名 : 實際參數]//- (int) test : (int) i test1 : (int) i1;//方法類型 (方法傳回值類型) 方法名 : (參數類型) 參數名 方法名 : (參數類型) 參數名;//[p test : 10 test1 : 9]//[指標變數名 方法名 : 實際參數 方法名 : 實際參數]
Objective-C 類和對象