类的设计
類的設計
c語言是面向過程的編程語言,c語言中的代碼是"祈使句",強調的是存儲數據,管理數據,程序員通過寫代碼操作cpu進行數據存儲,數據管理
oc語言是面向對象的編程語言,oc語言的代碼是強調主語的語言.oc程序中,會添加很多可以接收消息的單元(對象),每個單元具有一個單獨的功能,這些單元相互配合,完成一個完整的應用程序
oc語言(objective-c)是ios應用開發的核心語言?
[oc的用途]
oc語言可以用來編寫mac os操作系統
oc語言可以用來編寫基于mac os系統的應用程序
oc語言可以用來編寫ios操作系統
oc語言可以用來編寫基于ios操作系統的應用程序?
同樣是面向對象的語言有c++,java,oc
公認的第一個面向對象的程序設計語言是 simula 67 語言,而c++就是基于 simula 67 誕生的新的面向對象的語言
公認的第二個面向對象的程序設計語言是 smalltalk 語言,而oc,java就是基于 smalltalk 誕生的新的面向對象的語言?
區別:
[繼承性]
c++,支持多繼承
oc,java只支持單繼承
[動態性]
c++,靜態語言.在編譯期,編譯器會做靜態語法檢查,靜態編譯,運行起來的程序安全性比較高
oc,動態語言.在程序運行期間可以根據字符串的內容決定調用哪個方法,加載哪個類,運行起來的oc程序靈活性較高
?
一.類和對象
通過上面的了解,知道oc程序中充斥著各種各樣的對象,而這些對象都要由對應的類來創建
什么是類?什么是對象?類和對象的關系?
[從生活角度看]
類 對象
人 你,我
書 你桌上的那本書,我桌上的那本書
球 你家的那個籃球,我家的那個籃球
機器人 R2-D2,BB8
[從代碼角度看]
[創建oc工程]?
工程名:可以是中文,但是如果后期創建ios的工程,工程名必須是英文,因為ios工程使用中文工程名會產生一些無法預 料的錯誤
? 語言類型:選擇Foundation或者Objective-c?
[oc工程的特點]
#import <Foundation/Foundation.h>
<1>自動包含Foundation.h頭文件,Foundation.h文件寫有常用的絕大部分頭文件的包含語句
<2>使用#import指令來包含Foundation.h頭文件
oc語言的程序是基于Foundation框架的,Foundation框架是oc的基礎框架,脫離Foundation框架幾乎無法寫出一個 完整的ios應用程序
? import,可以保證被包含的頭文件只被包含一次
<3>oc默認的源代碼文件是.m結尾的文件
<4>oc特有的打印語句,和oc特有的字符串
NSLog(@"Hello, World!");
oc中打印字符串,使用NSLog函數
oc中字符串,都是@開頭的字符串(c中的字符串在oc中依然可以使用)
[注] oc語言是完全兼容于c語言的
<5>NSLog打印字符串,帶有特殊的日志字符串
?
二.類的創建
c語言的結構體和oc語言的類非常相似
oc中為了描述一個事物,使用類來實現
c中的結構體:負責存儲數據
c中的函數:負責管理數據
oc中的類,就是c中的結構體和函數的結合,既負責存儲數據,又負責管理數據
//Person是我們創建的類的名字 //:表示繼承關系 //NSObject是Person類的父類 //在oc語言中,NSObject類是所有其他類的直接/間接的父類 @interface Person : NSObject {//年齡int age;//身高int height;//名字char name[20]; }//oc中的函數一般稱為“方法”method //oc中的方法,分兩類:對象方法 和 類方法 //對象方法,減號(-)開頭的方法,必須由對象進行調用 //類方法,加號(+)開頭的方法,必須由類名進行調用 //吃飯 - (void)eat;//睡覺 - (void)sleep;@end通過File -> New -> File,使用模板創建的類都會自動生成.h和.m文件
[類的.h文件] 類的聲明,類的聲明關鍵字:interface
<1>添加成員變量
<2>添加成員方法(方法的聲明)
[注] 類的聲明,是由 成員變量 + 成員方法聲明 構成
[類的.m文件] 類的實現(具體指 方法的實現),類的實現關鍵字:implementation
一個類一旦創建成功,就可以使用類名來創建對象
?
三.對象的創建?
//創建對象方法一:Person *liyifeng=[Person alloc];//在堆區創建對象liyifeng=[liyifeng init];//給堆區的對象初始化//創建對象方法二:Person *linzhiling=[[Person alloc] init];//創建對象的同時給堆區初始化?
四.方法的調用?
//oc中的函數一般稱為“方法”method
//oc中的方法,分兩類:對象方法 和 類方法
//對象方法,減號(-)開頭的方法,必須由對象進行調用
//類方法,加號(+)開頭的方法,必須由類名進行調用
調用類的方法必須用[]的方式
[liyifeng eat];?
[注] 在同一個類的.h和.m文件中相互切換,ctrl+win+??/??
[注] 在一個類的所有對象方法(減號方法)中,都可以直接使用成員變量
一旦某個對象調用了對象方法,這個對象方法內部使用到的這些成員變量一定是屬于這個對象的
[ self 和 super ]?
-(id)init {if (self=[super init]){//給當前對象的成員變量賦值(初始化)age = 10;height = 1.7;strcpy(name, "liyifeng");}return self; }[注] self,代表當前對象(誰調用這個方法,self就代表誰)
[注] super,super關鍵字用來調用父類的方法
轉載于:https://www.cnblogs.com/firstsky/p/5892897.html
總結
                            
                        - 上一篇: 关于多线程之GCD的一些学习要点
 - 下一篇: DPDK 18 log日志系统使用