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

来源:互联网 发布:厦门关键词优化排名 编辑:程序博客网 时间:2024/05/21 10:24

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


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


以下是一个案例,其中要计算面积,应该是乘法*才是,但是下面使用了加法+,这暴露的问题就是,虽然我用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;}


1 0