Iphone开发(3) obC特有的get,set模式

不知道从什么时候开始,我们的面向对象编程规范已经不希望我们直接访问实例对象,而是通过get,set方法。在Java里面,比如有一个属性name,那么,一般会把这个属性设置为private的,然后通过getName,setName来访问和修改name。

        在obC里面,我似乎看到了更加优雅的实现。

1.在接口里面通过@property来设定需要实现get,set方法的实例

    2.在实现文件中通过@synthesize来实现接口中的注解

   3.在使用中直接通过[对象.属性]的方式访问和修改属性。


   以下是例子:


   Fraction.h

//
//  Fraction.m
//  first
//
//  Created by coding on 12-2-19.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Fraction.h"

@implementation Fraction

//实现get,set方法
@synthesize numerator,denominator;

-(void) print
{
    NSLog(@"%i/%i",numerator,denominator);
}

-(void) set:(int)_numerator :(int)_denominator
{
    numerator = _numerator;
    denominator = _denominator;
}

@end

    Fraction.m

//
//  Fraction.m
//  first
//
//  Created by coding on 12-2-19.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Fraction.h"

@implementation Fraction

//实现get,set方法
@synthesize numerator,denominator;

-(void) print
{
    NSLog(@"%i/%i",numerator,denominator);
}

-(void) set:(int)_numerator :(int)_denominator
{
    numerator = _numerator;
    denominator = _denominator;
}

@end

  调用类:

//
//  main.m
//  first
//
//  Created by coding on 12-2-19.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#include "Fraction.h"
int main (int argc, const char * argv[])
{

    @autoreleasepool {
        
        Fraction *myFraction;   
        myFraction = [Fraction new];
        
        
        myFraction.numerator = 1;
        myFraction.denominator =3;
        [myFraction print];
        
        
        [myFraction set:1 :3];
        [myFraction print];
    }
    return 0;
}

//方法的调用语法:[ClassOrInstance method];

   注意里面有一个多参数的方法。

你可能感兴趣的:(Iphone开发(3) obC特有的get,set模式)