OC第二讲成员变量可见度与方法

第一题  分数类(Fraction)

1、成员变量:分子、分母

2、方法:

    (1)初始化方法

    (2)分子、分母的赋值、取值方法

    (3)打印分数

    (4)约分

    (5)加、减、乘、除四个运算方法,返回分数对象

3、主函数中创建分数对象,测试加、减、乘、除。


提示:加减乘除运算只有一个Fraction类型的参数,有一个Fraction类型的返回值。


创建Fraction(分数)类

//  Fraction.h  文件

#import <Foundation/Foundation.h>

@interface Fraction : NSObject
{
    int _numerator;    // 分子
    int _denominator;  // 分母
}
///初始化
- (id)initWithNumerator:(int)numerator denominator:(int)denominator;
///赋值
- (void)setNumerator:(int)numerator;
- (void)setDenominator:(int)denominator;
///取值
- (int)numerator;
- (int)denominator;
///打印
- (void)print;
///约分
- (void)reduction;
///加
- (Fraction *)add:(Fraction *)fraction;
///减
- (Fraction *)reduce:(Fraction *)fraction;
///乘
- (Fraction *)multiply:(Fraction *)fraction;
///除
- (Fraction *)divide:(Fraction *)fraction;


@end


//  Fraction.m 文件

//  实现 Fraction.h 中的方法

#import "Fraction.h"

@implementation Fraction
///初始化
- (id)initWithNumerator:(int)numerator denominator:(int)denominator
{
    _numerator = numerator;
    _denominator = denominator;
    return self;
}
///赋值
- (void)setNumerator:(int)numerator
{
    _numerator = numerator;
}
- (void)setDenominator:(int)denominator
{
    _denominator = denominator;
}
///取值
- (int)numerator
{
    return _numerator;
}
- (int)denominator
{
    return _denominator;
}
///打印分数
- (void)print
{
    NSLog(@"%d / %d", _numerator, _denominator);
}
///约分
- (void)reduction
{
    int x = _numerator, y = _denominator;
    while (x % y != 0) {
        int a = x % y;
        x = y;
        y = a;
    }
    _numerator /= y;
    _denominator /= y;
}
///加
- (Fraction *)add:(Fraction *)fraction
{
    Fraction *_result = [[Fraction alloc] init];
    
    _result->_numerator = ([self numerator] * [fraction denominator]) + ([self denominator] * [fraction numerator]);
    _result->_denominator = [self denominator] * [fraction denominator];
    [_result reduction];
    
    return _result;
}
///减
- (Fraction *)reduce:(Fraction *)fraction
{
    Fraction *_result = [[Fraction alloc] init];
    _result->_numerator = ([self numerator] * [fraction denominator]) - ([self denominator] * [fraction numerator]);
    _result->_denominator = [self denominator] * [fraction denominator];
    [_result reduction];
    
    return _result;
}
///乘
- (Fraction *)multiply:(Fraction *)fraction
{
    Fraction *_result = [[Fraction alloc] init];
    _result->_numerator = [self numerator] * [fraction numerator];
    _result->_denominator = [self denominator] * [fraction denominator];
    [_result reduction];
    
    return _result;
}
///除
- (Fraction *)divide:(Fraction *)fraction
{
    Fraction *_result = [[Fraction alloc] init];
    _result->_numerator = [self numerator] * [fraction denominator];
    _result->_denominator = [self denominator] * [fraction numerator];
    [_result reduction];
    return _result;
}



@end

//   主函数mian.m

#import <Foundation/Foundation.h>
#import "Fraction.h"

int main(int argc, const char * argv[])
{
    @autoreleasepool {

        // 创建Fraction的对象叫a1
        Fraction *a1 = [[Fraction alloc] initWithNumerator:2 denominator:3];
        
        // 创建Fraction的对象叫a2
        Fraction *a2 = [[Fraction alloc] initWithNumerator:1 denominator:4];
        
        // 打印对象a1, a2
        [a1 print];
        [a2 print];
        
        // 创建fraction类temp1保存a1加a2的值
        Fraction *temp1 = [a1 add:a2];
        // 打印对象temp1
        [temp1 print];
    
        // 创建fraction类temp1保存a1减a2的值
        Fraction *temp2 = [a1 reduce:a2];
        // 打印对象temp2
        [temp2 print];
        
        // 创建fraction类temp1保存a1乘a2的值
        Fraction *temp3 = [a1 multiply:a2];
        // 打印对象temp3
        [temp3 print];
        
        // 创建fraction类temp1保存a1除a2的值
        Fraction *temp4 = [a1 divide:a2];
        // 打印对象temp4
        [temp4 print];

    }
    return 0;
}




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值