知識點算法
1.初步認識 OC 編程
2.xcode使用xcode
3.面向對象編程思想,類和對象iphone
4.類的定義和使用編程語言
5.類的實例化--對象函數
6.聲明和實現相分離學習
===========================================spa
一、須要理解的(理論部分) 設計
第一部分:OC和麪向對象指針
1.一、OC語言的歷史,特色、重要程度
【什麼是OC】
objective - c 在C語言基礎上開發, 面向對象的語言;
注意C語言和oc語言語法的區別;
IOS, iphone, ipad …
【進入OC階段須要注意的事項】
一、 oc語言和c語言的區別;
二、多敲代碼, 多耐心調試程序;
三、經過幾個數據模型的項目熟悉oc語法,面向對象思想;
四、類提供大量的方法, 總結積累的習慣;
=====================================================================
二、如何在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
// 一、默認會換行 默認不會換行
// 二、預期打印出OC字符串 預期打印出c字符串
// 三、打印出工程名和時間 不會打印出工程名和時間
// 四、能夠打印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
================================================================================
三、面向過程和麪向對象:
C語言是面向過程的語言;
OC語言是面向對象的語言;
面向過程: 解決一個問題須要哪些過程(步驟);
面向對象: 解決一個問題須要哪些對象;
3.一、面向過程和麪向對象
3.1.1 面向過程編程
【面向過程的語言】
一、省略主語; (主語是cpu)
二、面向過程 = 數據 + 算法;
三、數學映射;
【例子】
面向過程
冰箱裝大象;
一、打開冰箱;
二、把大象放進冰箱;
三、關閉冰箱;
打開電腦玩遊戲;
一、打開電腦
二、開始玩遊戲;
三、關閉電腦;
【面向對象的語言】
一、主語是對象, 主要因素就是對象;每一個對象能夠接受不一樣信息, 這些共同合做完成一件事情;
二、面向對象 = 對象 + 消息;
三、生活映射;
應用程序都是用面向對象的語言寫;
轉變:
【例子】
面向對象
冰箱裝大象 (兩個對象: 冰箱, 大象)
一、冰箱打開門;
二、冰箱存儲大象;
三、冰箱關閉門;
打開電腦玩遊戲:
一、電腦打開;
二、人玩LOL
三、電腦關閉;
面向過程: 解決一個問題須要哪些過程(步驟);
面向對象: 解決一個問題須要哪些對象;
舉例:
一、造房子; 一、打地基; 二、 砌磚; 三、裝修;
一、須要會打地基的張三; 二、會砌磚的李四; 三、會裝修得老王;
二、接IOS項目; 一、 寫iOS代碼; 二、會美工; 三、會銷售;
一、會寫iOS代碼的全蛋; 二、會美工的小花; 三、會銷售的鐵柱;
3.2 類和對象的概念
類: 對對象的描述, 是對象的一個模板;
對象: 對象是實實在在存在,看得見摸得着, 在內存佔有存儲空間,同過類建立;
一.認識類和對象
對象是面向對象程序的核心。那麼如何理解對象呢,類和對象是什麼關係。
7.類和實例的區別
1)類是對象的模板,類是靜態的,自己並不佔用內存,只是對某類事物的一個說明
2)對象是某個模板的具體化
3.2.1 從生活邏輯上
類 對象
人 張三, 李四, 老王
電腦 我桌面這臺電腦, 你桌面那臺電腦;
狗 小白, 旺財
超級英雄 鋼鐵俠, 綠巨人, 蜘蛛俠;
3.2.2 從封裝的角度
結構體 = 對數據封裝;
函數 = 對代碼的封裝;
類 = 對數據和 函數的封裝;
函數(方法)
面向對象三大特徵: 一、封裝; 二、 繼承; 三、多態;
3.2.3 從編程語言的角度
類是一種自定義的類型 沒有佔用內存
對象是使用類建立的變量 用類型定義的變量會佔用內存
3.2.4 官方定義
類:同一類具備相同特徵的事物的抽象;
對象:某個類類型的變量
===========================================
4. 須要記住掌握的(實戰部分)
【如何設計一個類】
人類:
成員變量: 名字, 年齡;
成員方法(函數):吃飯, 睡覺,打豆豆;
在OC大多數關鍵字都是以@開頭;
設計一個類分兩部分: 類的聲明, 類的實現;
4.一、【類的聲明】
//@interface 類名 : 父類
{
// 成員變量
}
// 成員方法的聲明;
//@end
4.二、【類的實現】
//@implementation 類名
實現成員方法;
//@end
4.三、【成員變量】
描述擁有什麼;
4.4 【成員方法】
描述能作什麼;
4.五、【如何建立對象】
[類名 alloc];
4.六、【方法的調用】
[對象 方法名];
需求 : 訪問成員變量? 經過方法來訪問成員變量:
成員方法詳細說明:
1,無參 ,無返回值的成員方法 - (void) 方法名;
2,帶參數 - (void) 方法名:(參數類型)參數名;
3,帶返回值得方法 - (NSUInteger)getAge;
4,帶多個參數的方法 - (void)便籤:(參數類型1)參數名1 標籤2:(參數類型2)參數名2;
關於命名的那些事兒:
一、成員變量命名: 以_開頭;
二、方法名和成員變量命名: 第一個單詞小寫,從第二單詞開始首字母大寫;
三、類名: 每個單詞首字母大寫;
練習:【test1】
寫一個學生類:
成員變量: name,學號,體重;
實現方法三個方法: 設置名字;設置學號;設置體重;
實現一個方法: 同時能夠設置名字,學號,體重;
實現一個方法: 正在學習;
實現一個方法: 獲取學號;
實現一個方法: 自我介紹;
注:什麼是對象和什麼是對象指針?
Student *s = [Student alloc];
對象指針: s 在棧區;
對象: [Student alloc]; 在堆區;
面向對象:
一、先找出對象;
二、列舉出對象須要的成員變量和成員方法;
三、設計類;
四、經過類建立該對象;
五、讓對象完成事情;
練習:
一、編寫一個加法器,它可以接收兩個整數int,而後輸出兩個整數的和;
一個對象 : 加法器;
須要成員變量: int ,int
方法: 加法;
之後項目中建立類確定是每一個類都在單獨的文件 .h 和 .m中, 不會在main函數的上面建立類
.h 是類的聲明;
.m 是類的實現;
使用該類(注意) 把類的.h頭文件#import進來;
#import <系統提供.h>
#import「自定義的頭文件.h」
一、如何設計一個類;
二、成員方法的語法;
三、如何建立一個對象;
四、調用對象的成員方法;
練習:
二、有一個長方形類,成員變量:長,寬,面積,周長;
方法有:設置長和寬,打印面積,打印周長;
三、設計狗類
屬性: 名字,年齡,體重
方法:say說話,賣萌salesBud;
分別寫三個方法,給三個成員變量賦值;
再寫一個方法,同時給三個成員變量賦值;
再寫一個方法,打印三個成員變量的值;
【做業】
一、已知一輛汽車速度是20Km/h,若令它行駛過一段1000km路程,須要多少小時?
二、建立一條公路,屬性有長度和寬度,編寫關於長度和寬度的設置和取值方法。
三、小明手裏有兩張牌,左手紅桃A,右手是方片K,交換手裏的兩張牌,
問:交換以後,手裏的牌各是什麼?