面向对象思想

来源:互联网 发布:网站阿里云备案要多久 编辑:程序博客网 时间:2024/06/17 23:46
面向对象思想
每个程序,都有一个程序入口。

首先把所有调用函数,调用方法全部想象是发消息(这是面向对象的主要思想,灵魂和核心)
或者你可以用其他想法,不过我觉得这是最好的。

在我个人的面向对象思想里,在main{}中调用函数,可以看出“发消息”。那么“发消息”这个过程有多少个对象在里面呢?
你们猜一下?

一个是发消息的对象,一个是接受消息的对象。(可以发消息给自己)。所以这里是牵涉到一个对象,只有计算机。
我解释一下,我个人把在main{}中调用C函数看成事计算机向自己发消息。
在main{}中,发消息的对象全部看成是计算机。而接受者不一定全部是计算机。因为我们可以创建类,类的对象有两种,一种是静态对象,也叫类对象(用来生成对象的那个方法,其实就是等于当前对象发消息给静态对象),另一种就是实例对象。

所以,当在main函数中调用函数,就看成是发消息。发消息一定是计算机,而接消息是谁呢?如果是调用函数,接受者就是计算机自己,如果是调用方法,就看这个方法是属于那个对象,那个对象就是接受者。
所有函数或者方法,他们所携带的参数,都是由当前{}发消息的对象提供的值,而函数或者方法的返回值,就是返回给当前对象发消息后得到的值,会返回到当前对象执行的{}中。就算返回值是void,脑子里面也要有接受消息者会给发消息者一个值的思想。返回void ,只不过是省略不写。

然后静态对象或者实例对象的方法中,调用方法(可以是自己的方法,也可以是其它对象的方法)或者函数,那么发消息就是当前拥有{}这个的对象,而接受消息的对象,就看是要向谁发消息了。

特别提醒,我们向对象发送消息。唯一的方法是通过指针或者引用来向它发送消息。而指针和引用可以为空,所以有些时候为了消息安全,确定有接受者,可以用if判断是否这个指针可以通向你想要的对象,不一定是nil。也有可能是不是你想要的对象类型。


例子,假设有类A和类B

@interface A : NSObject

- (NSInteger)methodA:(NSString *)string;

@end

@implementation A

- (NSInteger)methodA:(NSString *)string

{

    if (string != nil) {

        return [string integerValue];

    }else

    {

        return 0;

    }

}

@end

假设在main{}中创建一个类的代码
如:
int mian
{
A *objA = [[A alloc] init];

// 计算机对象向静态对象A发送alloc消息,计算机对象得到返回值(是一个实例对象)并再向这个对象发送init消息,计算机再得到这个对象,并且用objA保存(也可以理解为持有这个对象,也就是后续可以随便再向objA发送消息了);

NSInteger res = [objA methodA:@“123”];

/* 计算机向objA发送methodA:@“123”,然后

objA找到这个函数执行这个方法。

{

    if (string != nil) {

        return [string integerValue];// objA向传进来的string发送 integerValue消息,并且得到消息。然后objA把这个值也返回给发消息者。

    }else

    {

        return 0;// 如果string没有对象发送,那么objA就返回一个0给发消息者。

    }

}

*/
retrun 0;
}
0 0
原创粉丝点击