OC 类的封装 set方法和get方法

       封装的目的是为了实现程序代码设计上的高内聚,低耦合性。类似我们生活中,看电视使用的“接口”-- 遥控器, 可以对电视机进行操作。至于电视机的内部构造原理,我们是不需要知道的。电视机的生产商也不希望我们知道。 哪个人切换频道时要到电视机上把两根线“短路”一下呢,这个技巧掌握不好,可能人和电视机一起就挂掉了!!!而我们又确实要对电视机进行相关操作来修改电视机运行状态和数据。所以电视机的生产厂商给我提供了遥控器这个设备 ------ 把用户所需要的操作功能都“封装”在里边,这样用户就可方便、快捷、安全的使用电视机了。

      程序设计中的封装概念和上边举例是一样的。程序设计就是用数据来表示不同的意义,最后由计算机计算得到正确结果,以供人们使用。 例如各大型工厂都会有一个员工工资查询、发放和统计的系统, 如果会计不小心把某个人的工资敲成了负数,而这套软件系统又没有相关的数据核查,不知道下个月发工资时,哪个员工该笑还是该哭呢

      所以OC语言中,可以设置只能通过set方法和get方法访问成员变量,而不允许外部直接对其进行访问,通过set方法可以严格核查外部传入参数是否合法,同样set方法和get方法都对成员变量实现了隐藏即封装。 增强和程序的鲁棒性。


#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    int age;
}
/* set方法
作用:
 提供外界访问成员变量的方法
命名规范
 1 方法名必须以set开头
 2 set后边跟上成员变量的名称,而且成员变量的首字母必须大写
 3 形参的名称不能和成员变量的名称一样
 4 set方法返回值必须为void
- (void)setAge: (int)newAge;
*/

/*
get方法
 作用:返回内部的成员变量
命名规范
 1 返回值类型和成员变量类型一致
 2 方法名和成员变量名相同
 3 不需要接收任何参数
 
*/

@end

@implementation Student

- (void)setAge: (int)newAge
{
    // 对外界传入的参数进行过滤ß
    if(newAge >= 1 && newAge <= 200)
    {
        age = newAge;
        return;
    }
    
    age = 1;
}

- (int)age
{
    return age;
}

@end


int main()
{
    Student *lili = [Student new];
    
    [lili setAge:25];
    
    NSLog(@"lili的年龄是%i", [lili age]);
    return 0;
}


set 方法 get 方法 小练习

#import <Foundation/Foundation.h>

// set方法 和 get方法练习
// 声明一个Score类
@interface Score : NSObject
{
    int _cScore; //c语言分数
    int _ocScore; // oc语言分数
    
    int _totalScore; // 总分数
    int _averageScore; // 平均分数
}

// _cScore 的set 方法 (只写 因为没有设置_cScore 的get 方法)
- (void)setCScore: (int)cScore;

// _ocScore 的set 方法 (只写 因为没有设置_ocScore 的get 方法)
- (void)setOcScore: (int)ocScore;

// _totalScore的get 方法 (只读 因为没有设置_totalScore的set 方法)
- (int)totalScore;

// _averageScore的get 方法 (只读)
- (int)averageScore;

@end

@implementation Score

- (void)setCScore: (int)cScore
{
    _cScore = cScore;
    
    // 在set方法里计算部分和平均分,达到“监听”效果
    // 计算总分
    _totalScore = _cScore + _ocScore;
    //计算平均分
    _averageScore = _totalScore / 2;
}

- (void)setOcScore: (int)ocScore
{
    _ocScore = ocScore;
    
    // 在set方法里计算部分和平均分,达到“监听”效果
    // 计算总分
    _totalScore = _cScore + _ocScore;
    //计算平均分
    _averageScore = _totalScore / 2;
}


- (int)totalScore
{
    return _totalScore;
}

- (int)averageScore
{
    return _averageScore;
}

@end

int main()
{
    Score * chengji = [Score new];
    
    [chengji setCScore: 95];
    [chengji setOcScore: 97];
    
    NSLog(@"totoalScore = %i", [chengji totalScore]);
    NSLog(@"averageScore = %i", [chengji averageScore]);
    
    
    
    return 0;
}




OCObjective-C)是一种面向对象的编程语言,它支持在中使用方法和block。方法是在中定义的方法,可以直接通过名来调用,而不需要实例化对象。而block是一种闭包,可以在代码中定义并传递给方法或函数,用于延迟执行特定的逻辑。 在OC中,可以使用方法来创建和操作的实例,例如通过一个工厂方法创建对象,或者在方法中实现一些与相关的逻辑。方法通常使用“+”符号进行声明和实现。 而block可以在方法中作为参数传递,也可以在方法中定义和使用。block可以捕获其所在作用域的变量,可以在方法内部延迟执行一段代码,也可以用于实现回调等功能。block的定义和使用使用“^(){}”语法。 方法和block可以结合使用,例如可以在方法中接受一个block作为参数,并在合适的时机调用该block,以实现一些灵活的逻辑。通过方法和block的组合,可以在OC中实现更加灵活和强大的功能,例如在异步操作中使用block来回调结果,或者在工厂方法中使用block来定制对象的初始化逻辑等。 总而言之,方法和block是OC中的两个重要特性,它们可以分别用于的操作和延迟执行逻辑,也可以结合使用以实现更加灵活的功能。在实际的OC开发中,方法和block通常会被广泛使用,可以帮助开发者更加简洁和灵活地实现代码逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值