1.首先在.h文件下面首先声明要写的字段和方法。
(1)、本练习中以dog为例子,字段有id,age,price。
(2)、方法主要分为三种,第一种是传入一个参数,第二种是传入两个参数,第三种是传入三个参数。
1 // 2 // DOG.h 3 // oc bassic 4 // 5 // Created by 裴烨烽 on 14-1-23. 6 // Copyright (c) 2014年 裴烨烽. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface Dog : NSObject 12 {//变量 13 //这里写字段 14 @protected 15 int ID; 16 @public 17 int age; 18 @private 19 float price; 20 } 21 //凡是以initXXXX开头的都是构造函数 22 -(id)init; 23 //函数名为init 不带参数 24 -(id)initWithID:(int)newID; 25 //函数名为 initwithid:带一个int的参数 26 -(id)initWithID:(int)newID andAge:(int)newAge; 27 //函数名为 ini他with:andage:带两个参数都为 int 28 -(id)initWithID:(int)newID andAge:(int)newAge andPrice:(float)newPrice; 29 //函数名为initWithID:andAge:andPrice 30 //带有三个参数都为int 31 32 33 //以下是六个函数。 34 -(void)setID:(int)newID; 35 -(int)getID; 36 //set/get ID 37 38 -(void)setAge:(int)newAge; 39 -(int)getAge; 40 41 -(void)setPrice:(float)newPrice; 42 -(float)getPrice; 43 44 -(void)setID:(int)newID andAge:(int)newAge; 45 //setID:andAge:2个参数 46 -(void)setID:(int)newID andAge:(int)newAge 47 andPrice:(float)newPrice; 48 //setID:andAge:andPrice:三个参数 49 @end
2.接下来在.m文件中写在.h文件下声明过的函数以及变量的方法。
(1)、通过写get/set方法来实现main()函数的数据传入传出的功能,类似于C#面向对象语法中的属性。
// // DOG.m // oc bassic // // Created by 裴烨烽 on 14-1-23. // Copyright (c) 2014年 裴烨烽. All rights reserved. // #import "DOG.h" //这里类似调用命名空间。 @implementation Dog -(id)init { return [self initWithID:1]; // self=[super init]; // //super表示父类 // //self表示对象自己 // if(self){ // ID=1; // age=2; // price=60.0f; // } //return self; } -(id)initWithID:(int)newID { return [self initWithID:newID andAge:2]; // self=[super init]; //if(self){ // ID=newID; //age=2; //price=60.0f; //} //return self; } -(id)initWithID:(int)newID andAge:(int)newAge { return[self initWithID:newID andAge:newAge andPrice:60.0f]; } -(id)initWithID:(int)newID andAge:(int)newAge andPrice:(float)newPrice { self=[super init]; if(self){ ID=newID; age=newAge; price=newPrice; } return self; } -(void)setID:(int)newID { ID=newID; } -(int)getID { return ID; } -(void)setAge:(int)newAge { age=newAge; } -(int)getAge { return age; } -(void)setPrice:(float)newPrice; { price=newPrice; } -(float)getPrice { return price; } -(void)setID:(int)newID andAge:(int)newAge andPrice:(float)newPrice { ID=newID; age=newAge; price=newPrice; } @end
3.通过对上面的.h和.m文件的编写,方法全部写好后,就可以在main()函数中进行调用。
(1)注意:在每次重新赋值以后都必须得重新写一遍参数。
例如:
[dog2 setID:2012 andAge:38 andPrice:87.2]; ID=[dog2 getID]; age=[dog2 getAge]; price=[dog2 getPrice];
以上三句话必须写清楚
// // main.m // oc bassic // // Created by 裴烨烽 on 14-1-23. // Copyright (c) 2014年 裴烨烽. All rights reserved. // #import <Foundation/Foundation.h> #import "DOG.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Dog *dog1=[Dog alloc]; //创建返回的对象 [dog1 init];//初始化 int ID=[dog1 getID]; int age=[dog1 getAge]; float price=[dog1 getPrice]; printf("dog1 id is %d age is %d price is %f\n",ID,age,price); // Dog *dog2=[Dog alloc]; //(1) // [dog2 initWithID:100 andAge:26 andPrice:68.88]; //(2) Dog *dog2=[[Dog alloc] initWithID:100 andAge:36 andPrice:68.88];//这行代码的意思就是和上面(1)+(2)等同。 ID=[dog2 getID]; age=[dog2 getAge]; price=[dog2 getPrice]; printf("dog2 id is %d age is %d price is %f\n",ID,age,price); [dog2 setID:2012 andAge:38 andPrice:87.2]; ID=[dog2 getID]; age=[dog2 getAge]; price=[dog2 getPrice]; printf("dog2 new id is %d age is %d price is %f\n",ID,age,price); } return 0; }
总结:今天是完全第一次自己通过视频慢慢地琢磨,自己慢慢地写,然后思考出来的,想明白了到底是什么意思,其实总的来说面向对象语言的话虽然从语法角度来说可能各有千秋,但是说到底还是差不多的,一通百通的。那么以上的代码可能就类似于C#编程思想里面的三层架构吧。希望能再接再厉!