[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域

1.首先在.h文件下面首先声明要写的字段和方法。

(1)、本练习中以dog为例子,字段有id,age,price。

(2)、方法主要分为三种,第一种是传入一个参数,第二种是传入两个参数,第三种是传入三个参数。

[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域
 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
[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域

 

2.接下来在.m文件中写在.h文件下声明过的函数以及变量的方法。

(1)、通过写get/set方法来实现main()函数的数据传入传出的功能,类似于C#面向对象语法中的属性。

[1练习]Objective-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
[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域

 

3.通过对上面的.h和.m文件的编写,方法全部写好后,就可以在main()函数中进行调用。

(1)注意:在每次重新赋值以后都必须得重新写一遍参数。

例如:

     [dog2 setID:2012 andAge:38 andPrice:87.2];
        ID=[dog2 getID];
        age=[dog2 getAge];
        price=[dog2 getPrice];
     以上三句话必须写清楚
[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域
//
//  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;
}
[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域

 

 

总结:今天是完全第一次自己通过视频慢慢地琢磨,自己慢慢地写,然后思考出来的,想明白了到底是什么意思,其实总的来说面向对象语言的话虽然从语法角度来说可能各有千秋,但是说到底还是差不多的,一通百通的。那么以上的代码可能就类似于C#编程思想里面的三层架构吧。希望能再接再厉!

[1练习]Objective-C 类的声明、函数消息的定义方法、字段作用域

上一篇:[CLR via C#]5.2 基元类型


下一篇:《信息可视化的艺术:信息可视化在英国》