標籤:
知識點
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 類和對象