在前面幾篇文章,大致介紹了一下C語言,因為這次的整理的目的主要還是iOS開發,所以關于C語言的知識并不多,但是也都是我在工作中使用到的,而且是需要注意的東西。以后的文章就是OC和iOS開發的文章了。
好了,廢話不多說,下面開始新的篇章--OC(Objective-C)。
OC被翻譯成類C,是擴充C的面向對象編程語言。在這里有一個面向對象的概念,在剛開始接觸java的時候,被提到過面向對象,當時不能很好的理解面向對象到底是什么意思,它和C語言的面向過程到底不同在何處。但是,就在很久以前的一個java for Android的視屏中,終于理解了什么是面向對象。
在面向對象的語言中,有兩個關鍵詞:類和對象。
類是一類相同事物的總稱,對象是一類事物中的一個個體。在現實生活中也是這樣,比如,dog是一類,你家的dog小花就是個體。而面向對象的編程語言,其實就是對這些對象(個體)進行操作的語言。
我記得當時在視屏中,給講到了一句話,“這個世界就是一個面向對象的世界,當你遇到任何一個事物的時候,去想和他的關系,去想這個事物的特征,這樣有助于更好的理解面向對象”,我也一直是在思考這個問題,比如,我現在進入一間房子,那么我會想房子和我有什么關系,這個房子有什么特征。下面,我們就來分析一下。
一般來說,房子都有門,有燈,當然也有開關,我們就拿這個簡單舉例。這三點算是房子的特征。那么,有這樣3點特征的,我們就可以給它歸于一類,也就是House類。我們進入的某一個房子也就是這個House類的一個個體,當我們開門的時候,就是使用了這個個體的開門這個動作。當我們打開燈的時候,這個房子的燈也就出于了亮著的狀態。這就是面向對象。我們操作的不是類,而是類中的一個對象,我們使用對象的方法去完成操作,從而改變對象中一些屬性的狀態。
下面我們用一個示例來體現一個面向對象。
示例:有Dog類,dog的屬性有性別(sex)、年齡(age)、名字(name),dog的行為有吃飯(eat),溜達(walk)。
創建項目:我是使用Xcode演示的代碼
打開Xcode,創建一個項目在選擇template的時候選擇macOS下的Command Line Tool,點擊next輸入項目名稱,再將language選成objective-C就創建了一個OC項目了。
然后,我們創建一個Dog類(新建一個cocoa Class文件),并給Dog類添加sex、age、name這3個屬性,在添加eat、walk這2中行為。
在Dog.h文件中添加屬性和方法:
@interface Dog : NSObject
//Dog的3個屬性
@PRoperty (nonatomic,copy)NSString *sex;//性別
@property (nonatomic,copy)NSString *age;//年齡
@property (nonatomic,copy)NSString *name;//名字
//Dog的2種行為
- (void)eat;
- (void)walk;
@end
在添加完屬性和行為后,我們還要去實現行為,也就是讓dog‘真正’的吃起來,溜達出去。
在Dog.m文件中實現行為:
#import "Dog.h"
@implementation Dog
- (void)eat{
NSLog(@"吃起來~~~");
}
- (void)walk{
NSLog(@"溜達出去~~~");
}
@end
Dog這個類做好了以后,那么怎么去體現面向對象呢?很簡單,我們去引用Dog類,也就相當于先將Dog這類東西帶到我們的代碼世界里去。
在創建項目的main.m文件中引入Dog.h:
#import "Dog.h"
下面要注意了,下面就是面向對象了:現在這個世界有Dog了,那么我想領養一只dog回家,怎么辦?那就去領養唄,該辦手續辦手續,該填單子填單子。
Dog *dog = [[Dogalloc]init];
這是OC種創建一個對象的方法。這樣辦了手續,填了單子以后,我就有了一只dog了,那么,要看看是什么性別,多大了,還要給它起個名字。dog.name =@"小花";
dog.sex =@"公的";
dog.age =@"0";
這樣領養的dog就有了名字了。我們來看看結果:NSLog(@"dog的名字:%@/n", dog.name);
NSLog(@"dog的性別:%@/n", dog.sex);
NSLog(@"dog的年齡:%@/n", dog.age);
結果:2017-03-07 17:31:50.659 OCdemo[1216:160061] dog的名字:小花
2017-03-07 17:31:50.660 OCdemo[1216:160061] dog的性別:公的
2017-03-07 17:31:50.660 OCdemo[1216:160061] dog的年齡:0
Program ended with exit code: 0
結果出來顯示沒問題。
那么,現在我想讓小花吃點東西,然后讓它出去溜達溜達。這個時候我們就要調用dog的行為了。
[dog eat];
[dog walk];
結果:
2017-03-07 17:34:07.825 OCdemo[1227:160930] 吃起來~~~
2017-03-07 17:34:07.825 OCdemo[1227:160930] 溜達出去~~~
Program ended with exit code: 0
從結果來看,也是沒有問題的。
在面向對象的編程語言里,對于方法和屬性的調用,大多是通過對象調用的。還存在一些其他的方法,在以后會詳細的講解。
總之,在面向對象里,我們是使用對象去調用屬性和方法即可。
新聞熱點
疑難解答