面向对象整体机制的思考(什么事面向对象)


大家都知道无论是C还是C++都需要有函数入口,即main()函数,但是无论在对于C++来说,main()函数可以很短很短的,只需要调用类就行了,即声明一个类对象,就是所谓的面向对象编程,而C是面向过程编程,其最大的缺点就是全局对像,以及在main函数外部声明和实现的函数,比如window32程序的回调函数就是如此,在外声明和定义,在main数中使用,整个过程是一个流程话,因为机器只可能是逐行编译程序的,所以要想完成某件事,就需要按照主函数的顺序去完成。所以我认为面向对象编程其实说法不准确,因为他也是一个过程,只不过最大的特点是有了类这个思想,在类中建立自己想要的东西,实现自己想要的东西,而C则是在外部函数或者main函数内部中实现自己想要的东西。

对于C面向过程编程实现功能大部分是使用函数,而对于C++面向对象编程实现功能则是使用类。对于C没有什么好讲的,对于C++可以着重讲一下,因为C++中类很特殊,

现在就以QT来说,建立一个无须进程的东西即一个窗口main函数中代码很少很少,几乎在前期不会修改太多的东西,全部是在类中修改的,而计算机是是按照main()入口来进行编译走这个过程的,那么功能是如何实现,如何形成的?

举个列子

#include "mainwindow.h"
#include <QApplication>
#include"QSplashScreen"
#include"QPixmap"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
 
 

从上面的图中能看到main()函数的东西很少很少,然而这个就是建立一个窗口的各种框架,例如word文档的框架就可以建立出来 ,但是 对于他的实现是需要很多的类的,看的出来,这个主函数先建立了一个应用程序的对象,然后只建立一个MainWindow类的对象,然后调用了·这个类的show函数,之后返回了这个应用程序的消息exec()整型的数据,但是其中大有用处,因为实现声明这个类的时候就自动调用了这个类的构造函数,然后在这个类对象的生命周期消失的时候调用这个类的析构函数,然后就没有做什么了。

但是这个类却有很大的东西,比如窗口,工具栏,标题栏,状态栏,内窗口,子窗口,以及里面所有的控件,还有其他的东西,其实他们都是一个类,这个大类里面有他们的对象,或者说继承了某些类的特征,具有这些所有类的特点和内容,只要有这个对象和多态性就行。

比如我们运行程序,这个程序弹出了窗口,但是窗口没有消失,说明进程在这里停止了,等待我们给出我们的命令,所以在任务管理器中有这个进程,这个窗口类有一个消息机制(QT是槽和信号),这个我们给出的消息是需要在构造函数里面建立的(MFC是消息映射标配也应该在构造函数中实现),当我们构造这个类对象的时候,就已经建立了这些消息机制,等着我们来给触着这些命令,然后类执行这些对应的操作,其中这些类中都些properties,因为他们是配置文件,通过修改他们就可以不用改变类,然后给类传参数,就是这些参数构造了控件,比如工具栏,按钮建立等等这些,但是他们在程序中显示不出来。

然后类或者说面向对象程序设计就利用了这些类中构造函数的消息机制来调用类中的函数,可以这样说这些消息机制已经在main()函数中实现了,而函数中可以引用其它的类,及类中的函数,从而实现某种功能,

在QT中应该还存在一些隐含的槽和信号,或者说是事件,怎么处理事件是一个问题,可以看我转载的另一篇博文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值