iOS開發之oc(回顧筆記)--類與對象(1)

來源:互聯網
上載者:User

標籤:

理論是枯燥的,所以有點長。哈哈哈~

要學習一門語言,我們首先得瞭解它,那麼

【什麼是OC】

objectiv-c  簡稱 OC,是一門基於C語言為基礎編寫而成的物件導向的語言。完全相容C語言;可以在OC代碼中混入C語言代碼,甚至是C++代碼;

可以使用OC開發Mac OS X平台和iOS平台的應用程式。

(一)首先,先瞭解一下面向過程和物件導向:

【面向過程】

1、面向過程的語言所有語句都是祈使句 

2、面向過程的語言是數學邏輯的映射

3、面向過程語言的程式 = 資料 + 演算法

C語言就是一門面向過程的語言,解決問題關注的是過程。

【物件導向】

1、對象作為接受訊息的單位,不同的對象負責接收和處理資料的某個方面,不同對象協同完成功能

2、是生活邏輯的映射

3、程式 =  對象 + 訊息

而oc就是物件導向的語言,解決問題關注的是對象。

至於【哪種方法更好】---具體情況具體分析

提示:

>物件導向語言開發的步驟

1.根據需求設計類

2.利用類建立需要的對象

一個OC程式編寫-->運行

>

/*方法一:

1.編寫OC程式:.m源檔案(在終端touch xxx.m  建立OC程式)

2.編譯.m檔案為.o目標檔案:cc -c xxxx.m

3.連結.o檔案為a.out可執行檔:cc xxxx.o -framework Foundation

4.執行a.out檔案:./a.out

 

 一步到位:

 cc xxxx.m -framework Foundation

 方法二:當然你也可以用Xcode(嘿嘿,就不那麼苦逼了)

*/

 

(二)類與對象的初識

1.認識

類:具有對象的屬性,是對對象的描述。

對象:類的執行個體化,看得見摸得著

武功的最高境界叫做“萬物皆對象”。

2.

【從封裝的角度】

【結構體】是對資料結構的封裝

【函數】對處理資料的演算法的封裝

 【類】    是對要處理的資料結構進行封裝      同時對處理資料的演算法做了封裝                            

 類 = 結構體 + 函數

從程式設計語言的角度分析

【類】它是一個自訂的類型             沒有占用記憶體

【對象】某個類建立出來的變數         用類型定義的變數會佔用記憶體

3.解決OC問題的步驟(核心思想)

第一:找到題目中所需要的對象

第二:列出對象的成員變數和成員方法

第三:根據找到的對象,建立相應的類

第四:用類建立出來對象

第五:給對象發訊息,讓對象完成相應的功能

4.設計一個類的3個步驟:

1).類名

2).屬性

3).行為(動作\功能)

(三)類和對象---實戰 類   =   屬性資料封裝(成員變數)    +  方法(函數)封裝

1、【標頭檔的引用】

#import <Foundation/Foundation.h>

#import "Cube.h"

<>表示匯入系統的標頭檔

“”表示匯入自訂的標頭檔

提示:#import作用跟#include一致,而且可以防止標頭檔的內容被包含多次

// 包含Foundation架構裡面的NSObjCRuntime.h

// 應該包含Foundation架構的主標頭檔Foundation.h

 

2、類聲明和實現

2.1、【類的聲明】

程式碼範例

@interface       Dog   :   NSObject{//屬性資料封裝在{ }以內     // 成員變數類型  成員變數名稱;        int   _age;    //屬性成員名加_(成員變數)    float _weight;}//封裝方法//最常用的方法 setter(設定)/getter(擷取)//c函數文法:傳回值類型  函數名(參數列表)//OC方法文法:// 方法類型//-  對象的方法//+  類的方法//方法類型 (傳回值類型)部分方法名:(參數類型)參數名稱1 部分變數名:(參數類型)參數名稱2;  // 多個參數//setter / getter 方法主要是為了保護對象的資料安全//成員變數的setter方法-(void)setAge:(int)newage;   //void setAge(int age)-(void)setWeight:(float)w;//成員變數的getter方法-(int)age;        //  對 -(int)getAge進行了最佳化,方法名與成員變數相對應-(float)weight;//功能方法-(void)run;-(void)bark;@end

代碼說明

a.

【首行代碼】

@interface 類名 : 父類名

1)用關鍵字@interface 聲明一個類

2)interface 後面跟的是類名

3)冒號表示繼承關係,後面跟的是父類

比如說你建立可Dog類

(: NSObject --讓Dog這個類具備建立對象的能力)

b.

【成員變數】

成員變數(執行個體變數)聲明在大括弧之間,成員變數是在描述對象有什麼.

c.

【成員方法】

1)無參 ,無傳回值的成員方法

-(void)方法名;

2)帶參數

-(void)方法名:(參數類型)形參;

3)帶多個參數的方法

-(void)標籤1:(參數1的類型)形參  and標籤2:(參數2的類型)形參;

4)帶傳回值得方法

-(傳回值類型)方法名;

【成員函數是描述對象可以做什麼】

 

3、【類的實現】---也可以說是方法的實現

 @implementation Dog//實作類別方法關鍵字  類名//  在這裡進行方法的實現 (也就是寫具體代碼)// set方法的實現 -(void)setAge:(int)newage{     _age = newage; } // get方法的實現 -(int)age{    return _age; }  //功能方法 -(void)run {     NSLog(@"run....."); }  @end

 

 

4、【對象的建立和使用】

1)建立對象

類名 *指標變數名 =[類名  alloc/new];

利用類的alloc/new方法建立一個新的對象(會在堆空間聲明一塊空間),並且把對象的地址返回左邊的指標變數

 (所以需要用該類類型的指標變數去接收)。

Dog * dog = [Dog alloc];

2)使用對象

1> 訪問成員變數

指標變數名->成員變數名 = 具體數值;

c->speed = 100;(前提是在成員變數前寫@public)

2> 讓對象執行方法

[指標變數名 方法名];

[c run];

[指標變數名 部分方法名:實參1  部分方法名:實參2];

[c sumOfNum1:100 andNum2:200];

// 訊息機制:給指標變數所指向的對象發送一條訊息(訊息名稱就是方法名),讓那個對象執行相應的方法(動態)

 

int main(){    //  通過定義類指標變數引用實際對象           //  類執行個體化對象 alloc,在堆上申請空間            Dog * wangcai  =  [Dog alloc];      [wangcai setAge:5];     //  調用set方法設定屬性      [wangcai setWeight:50];       int a = [wangcai age];  // 調用get方法取得值       float w = [wangcai weight];    //  給對象發訊息[對象 方法]、或【對象 訊息】    //  給指標變數wangcai指向的對象發送一條run訊息    //  接收訊息的那個對象,稱為“訊息接收者”                  [wangcai run];        [wangcai bark];                NSLog(@"a = %d w = %f",a,w);      return 0;}   

 

5、【方法的調用】

無參無傳回值格式:  [對象/類名   訊息/方法/函數名]

無傳回值 有參數:     [對象/類名   訊息/方法/函數名:參數]

有傳回值的方法調用  傳回值類型的變數 =  [對象/類名   訊息/方法/函數名]

/*

 OC對象方法和函數的區別

 1.函數屬於整個檔案,在檔案的任意地方都能調用;對象方法只屬於對象,只有對象才能調用對象方法

 2.對象方法只能聲明在@interface和@end之間,對象方法只能實現在@implementation和@end之間.

   函數的聲明和定義可以寫在任意地方,函數不能歸某個類所有,只屬於某個檔案

 */

補充:

對象在記憶體中的儲存情況

1.每一個對象都有自己的成員變數,每個對象的成員變數之間是獨立,互不影響

2.每一個對象內部都有方法列表,方法的代碼都的一樣的

 

 

iOS開發之oc(回顧筆記)--類與對象(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.