【OC学习-3】什么是面向对象?和面向过程对比才明白

本文通过一个实例对比了面向对象和面向过程编程方式的区别,重点介绍了结构化编程中数据和算法分离可能导致的问题,以及面向对象编程如何通过封装属性和行为来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一提到“面向对象”,最多听到的是“一切皆对象”,“对象是属性和行为的结合”等等。但是你还是不懂。


其实和面向过程相比较或许更清楚明白。


以下是一个案例,其中要计算面积,应该是乘法*才是,但是下面使用了加法+,这暴露的问题就是,虽然我用struct定义了一个结构,即长方形的宽和高,但是我没有定义它们之间必须用乘法,而是在后面调用这两个数据的时候才使用算法,很不幸的是我们有可能把算法写错。这就是面向过程。


那么面向对象呢?就是不仅把数据定义出来,而且还定义了这两个数据之间只能相乘,那么我们再调用时就不会出错。这很类似于其他语言里面的函数,我们封装好一个计算面积的函数,调用时候只要传递参数(如宽和高)就行,而不用再写算法。


而这里面的数据(宽和高)就是对象的属性,相乘就是对象的行为。把这两者放在一个里面就是封装

#import <Foundation/Foundation.h>
struct rectangle{
    int width;
    int height;
}
int main(int argc,const char *argv[]){
    @autoreleasepool{
        int area;
        struct rectangle rec={10,12};
        area=rec.width+rec.height;  //计算错误
        NSLog(@"面积是%d",area);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值