从零开始学习Object-C---第三天

今天主要涉及Object-C中类,对象和方法的使用,这也是与C语言不同的地方,C语言被定义为过程性语言,而Object-C则像Java和C#一样是面向对象。一段代码开始新的学习,首先新建文件 main.m 主函数, NSObject+Fraction.h(如同java中定义接口)和NSObject+Fraction.m(如同java中接口实现类)

//
//  NSObject+Fraction.h
//  Demo1
//
//  Created by lee on 14/10/28.
//  Copyright (c) 2014年 lee. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Fraction: NSObject
{
    int numerator;
    int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
-(void) result;
@end

首先讲解@interface部分

1.Fraction类名,通常首字母大写

2.Fraction: NSObject 定义类来自何处即定义新类时必须指明它的父类

3.{...}中定义的为类成员,即实例变量

4.-(void) print;等定义处理该类的对象时将要用到的方法。

通用格式如下:

@interface <#class name#> : <#superclass#>
{
    memberDeclarations;
}
methodDeclarations;
@end

5.实例方法 : -(void) setNumerator: (int) n;

  5.1 开头的-号表明该方法为实例方法,还有一种为+号开头,表明该方法为类方法。

  5.2(void)表示该方法的返回值类型。

  5.3 setNumerator 表示该方法的名称。

  5.4 (int) n 表示该方法需要的参数,一个整形的参数。

  5.5 每一个方法均以;结束

6.方法声明如图所示:

从零开始学习Object-C---第三天_第1张图片

//
//  NSObject+Fraction.m
//  Demo1
//
//  Created by lee on 14/10/28.
//  Copyright (c) 2014年 lee. All rights reserved.
//

#import "NSObject+Fraction.h"

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

-(void) setNumerator:(int)n
{
    numerator = n;
}

-(void) setDenominator:(int)d
{
    denominator = d;
}

-(void) result
{
    int quotient = numerator/denominator;
    NSLog(@"the quotient is %i :", quotient);
}
@end

@implementation部分讲解

1.@interface中声明方法,@implementation中实现。

2.@implementation中类名与@interface中类名相同。

3.@implementation中包含@interface中指定的每个方法的代码。

//
//  main.m
//  Demo1
//
//  Created by lee on 14/10/28.
//  Copyright (c) 2014年 lee. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSObject+Fraction.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int quotient, numertor, denominator;
        numertor = 10;
        denominator = 2;
        quotient = numertor/denominator;
        NSLog(@"The fraction is %i/%i \nthe quotient is %i", numertor, denominator, quotient);
        
        NSLog(@"*** break ***");
        
        Fraction *myFraction;
        myFraction = [Fraction alloc];
        myFraction = [myFraction init];
        
        [myFraction setNumerator: 10];
        [myFraction setDenominator: 2];
        NSLog(@"The value of myFraction is :");
        [myFraction print];
        [myFraction result];
    }
    return 0;
}

两种方法来实现两数的相除,主要讲解下一种即 NSLog(@"*** break ***");后面的部分,有C基础的能很快的明白

1.Fraction *myFraction;用法同C语言中指针类似,表示定义Fraction类型的对象。

2.对象建立后,需要为该存储对象分配存储空间,即myFraction = [Fraction alloc];

3.alloc获得类的新实例,使得对象的所有实例变量成初始化状态。

4.然后需要对对象进行实例化操作,即myFraction = [myFraction init];

5.init用语初始化类的实例变量。

6.上述方法简写如下:Fraction *myFraction = [[Fraction alloc] init];

7.[myFraction setNumerator: 10];调用方法存储实例变量。

运行结果如下:

2014-10-29 00:52:37.980 Demo1[2834:13881] The fraction is 10/2 
the quotient is 5
2014-10-29 00:52:37.981 Demo1[2834:13881] *** break ***
2014-10-29 00:52:37.981 Demo1[2834:13881] The value of myFraction is :
2014-10-29 00:52:37.981 Demo1[2834:13881] 10/2
2014-10-29 00:52:37.981 Demo1[2834:13881] the quotient is 5 :
Program ended with exit code: 0

注:1.Object-C中变量名称命名规则:名称必须以字母或下划线开头,之后可以是任何字母,下划线或者数字组合。

  2.Object-C保留名不能作为变量名,如:int

  3.Object-C中大小写字母是有区别的。如:sum和Sum和SUM是表示不同的变量。

你可能感兴趣的:(object)