objective - c 類和對象

來源:互聯網
上載者:User

標籤:

 

 

知識點

1.初步認識 OC  

2.xcode使用

3.物件導向編程思想,類和對象

4.類的定義和使用

5.類的執行個體化--對象

6.聲明和實現相分離

 

===========================================

1、需要理解的(理論部分)                            

 第一部分:OC和物件導向

1.1、OC語言的曆史,特點、重要程度

【什麼是OC】

 

objective - c   在C語言基礎上開發, 物件導向的語言; 

 

注意C語言和oc語言文法的區別; 

 

 

IOS, iphone, ipad …  

 

 

【進入OC階段需要注意的事項】 

 

1、 oc語言和c語言的區別;

 

2、多敲代碼, 多耐心偵錯工具;    

 

3、通過幾個資料模型的項目熟悉oc文法,物件導向思想; 

 

4、類提供大量的方法, 總結積累的習慣; 

 

 

=====================================================================

2、如何在Xcode中建立OC工程

 

 

【常用快速鍵】

 

【編譯】   command + b  

【運行】   command + r

【調試框和列印框顯示和隱藏】  command + shift + y  

【停止】   command + .

【注釋】   command + / 

【代碼對齊】   control + i 

 

其他快速鍵:

 

 

花:  command ,  ^ : control,  ?? : shift   

 

 

 

 

2.2 OC相容C, 區別於C語言的地方   

各種檔案尾碼名 .c和.m和.mm的區別

 

 

.c  C原始碼問價;

.m :  C+OC檔案; 

.mm : C++ + OC檔案; 

 

.h 標頭檔; 

 

#import作用

 

把檔案包括進來; 

 

 

 

 

 

 

@”hello”和C字串區別

 

oc字串:  @“字串” 

C字串:   “字串”  

 

 

NSLog函數和printf函數區別

 

//     NSLog                printf

//  1、預設會換行             預設不會換行

//  2、預期列印出OC字串     預期列印出c字串

//  3、列印出工程名和時間      不會列印出工程名和時間

//  4、可以列印oc對象 %@        不可列印oc對象

 

  【NSLog各種資料類型的列印】

 

char   1 Byte

short                2 Byte

int                     4 Byte

long                 8 Byte

float                 4 Byte

double            8 Byte

 

BOOL 

NSInteger

NSUInteger

CGFloat

 

 

 

練習:輸出各種資料類型的位元組數

 

 

 

【恢複快速鍵】      command  + z

 

 

 

 

================================================================================

 

3、面向過程和物件導向:

 

C語言是面向過程的語言;

 

OC語言是物件導向的語言;

 

 

面向過程:  解決一個問題需要哪些過程(步驟);    

 

 

物件導向:  解決一個問題需要哪些對象;  

 

 

3.1、面向過程和物件導向

3.1.1 面向過程編程

【面向過程的語言】

1、省略主語;  (主語是cpu)  

2、面向過程 = 資料 + 演算法;

3、數學映射; 

 

 

【例子】

面向過程

冰箱裝大象;

1、開啟冰箱;

2、把大象放進冰箱;

3、關閉冰箱; 

 

開啟電腦玩遊戲;

1、開啟電腦

2、開始玩遊戲;

3、關閉電腦;

 

 

【物件導向的語言】 

 

1、主語是對象, 主要因素就是對象;每個對象可以接受不同資訊, 這些共同合作完成一件事情;

2、物件導向 = 對象 + 訊息;

3、生活映射;

 

應用程式都是用物件導向的語言寫; 

 

轉變:

【例子】

物件導向     

冰箱裝大象     (兩個對象: 冰箱, 大象)

1、冰箱開啟門;

2、冰箱儲存大象;

3、冰箱關閉門;

 

 

開啟電腦玩遊戲:

1、電腦開啟;

2、人玩LOL

3、電腦關閉;

 

 

面向過程:  解決一個問題需要哪些過程(步驟);    

物件導向:  解決一個問題需要哪些對象;

 

舉例:

1、造房子;     1、打地基;   2、 砌磚;    3、裝修;

 

1、需要會打地基的張三; 2、會砌磚的李四; 3、會裝修得老王;

 

2、接IOS項目;     1、 寫iOS代碼;  2、會美工;  3、會銷售;

 

  1、會寫iOS代碼的全蛋;     2、會美工的小花;   3、會銷售的鐵柱; 

 

 

3.2 類和對象的概念

 

類:       對對象的描述, 是對象的一個模板; 

對象:   對象是實實在在存在,看得見摸得著, 在記憶體佔有儲存空間,同過類建立;

 

 

一.認識類和對象

 

對象是物件導向程式的核心。那麼如何理解對象呢,類和對象是什麼關係。  

 

7.類和執行個體的區別

  1)類是對象的模板,類是靜態,本身並不佔用記憶體,只是對某類事物的一個說明

  2)對象是某個模板的具體化

 

3.2.1 從生活邏輯上

類             對象

人                張三,   李四, 老王

電腦               我案頭這台電腦, 你案頭那台電腦;

狗   小白, 旺財

超級英雄       鋼鐵俠,  綠巨人, 蜘蛛俠;  

 

3.2.2 從封裝的角度

結構體 = 對資料封裝;

函數 = 對代碼的封裝;

類 = 對資料和 函數的封裝; 

 

函數(方法)

 

物件導向三大特徵:   1、封裝;   2、 繼承; 3、多態; 

 

 

3.2.3 從程式設計語言的角度

類是一種自訂的類型 沒有佔用記憶體

對象是使用類建立的變數 用類型定義的變數會佔用記憶體

 

 

3.2.4 官方定義

類:同一類具有相同特徵的事物的抽象;

對象:某個類類型的變數

 

 

===========================================

4. 需要記住掌握的(實戰部分)  

 

【如何設計一個類】

 

人類:

成員變數: 名字, 年齡;

成員方法(函數):吃飯, 睡覺,打豆豆; 

 

在OC大多數關鍵字都是以@開頭; 

 

設計一個類分兩部分:  類的聲明, 類的實現; 

 

4.1、【類的聲明】

 

//@interface 類名 : 父類

  {

// 成員變數

}

 

// 成員方法的聲明; 

 

 

//@end

 

4.2、【類的實現】

//@implementation 類名

實現成員方法;

 

//@end

     4.3、【成員變數】 

 

描述擁有什麼;  

 

     4.4   【成員方法】    

 

描述能做什麼; 

 

4.5、【如何建立對象】

 

[類名 alloc];

 

 

4.6、【方法的調用】

 

[對象 方法名];

 

 

需求 :  訪問成員變數?  通過方法來訪問成員變數: 

 

 

 

成員方法詳細說明:

1,無參 ,無傳回值的成員方法 - (void) 方法名;

2,帶參數   - (void) 方法名:(參數類型)參數名; 

3,帶傳回值得方法 - (NSUInteger)getAge; 

4,帶多個參數的方法  - (void)便簽:(參數類型1)參數名1 標籤2:(參數類型2)參數名2;

 

 

 

 

關於命名的那些事兒:

1、成員變數命名: 以_開頭; 

2、方法名和成員變數命名: 第一個單詞小寫,從第二單詞開始首字母大寫; 

3、類名:   每一個單字首大寫;

 

 

 

 

練習:【test1】

 

寫一個學生類:

成員變數:  name,學號,體重;

實現方法三個方法:  設定名字;設定學號;設定體重;

實現一個方法: 同時可以設定名字,學號,體重;

實現一個方法: 正在學習;

實現一個方法: 擷取學號;

實現一個方法: 自我介紹;

 

 

 

 

註:什麼是對象和什麼是對象指標?

 

Student *s = [Student alloc]; 

 

對象指標:  s                            在棧區; 

對象:  [Student alloc];        在堆區;

 

 

物件導向:

1、先找出對象; 

2、列舉出對象需要的成員變數和成員方法;

3、設計類;

4、通過類建立該對象;

5、讓對象完成事情; 

 

 

練習:

1、編寫一個加法器,它能夠接收兩個整數int,然後輸出兩個整數的和;

 

一個對象 : 加法器; 

 

需要成員變數: int ,int

方法: 加法;

 

 

 

 

以後項目中建立類肯定是每個類都在單獨的檔案 .h 和 .m中, 不會在main函數的上面建立類

 

 

.h 是類的聲明;

.m 是類的實現;

 

 

使用該類(注意)   把類的.h標頭檔#import進來; 

 

#import <系統提供.h>

#import“自訂的標頭檔.h”

 

1、如何設計一個類;  

2、成員方法的文法;    

3、如何建立一個對象;

4、調用對象的成員方法;

 

 

 

練習:

 

2、有一個長方形類,成員變數:長,寬,面積,周長;

  方法有:設定長和寬,列印面積,列印周長;

 

 

 

 

 

3、設計狗類

屬性:  名字,年齡,體重

方法:say說話,賣萌salesBud;

分別寫三個方法,給三個成員變數賦值;

    再寫一個方法,同時給三個成員變數賦值;

再寫一個方法,列印三個成員變數的值;

 

 

 

 

 

 

 

【作業】

1、已知一輛汽車速度是20Km/h,若令它行駛過一段1000km路程,需要多少小時?

 

 

 

2、建立一條公路,屬性有長度和寬度,編寫關於長度和寬度的設定和取值方法。

 

 

3、小明手裡有兩張牌,左手紅桃A,右手是方片K,交換手裡的兩張牌,

問:交換之後,手裡的牌各是什嗎?

 

objective - c 類和對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.