面向对象语言与面向过程语言的关系
面向对象程序设计与面向过程程序设计的关系
程序设计可以分为面向过程程序设计和面向对象程序设计。面向过程的结构化程序设计强调功能的抽象和程序的模块化, 它将解决问题的过程看作是一个处理过程。而面向对象的程序设计则综合了功能抽象和数据抽象, 它将解决问题的过程看作为分类演绎的过程。
在结构化程序设计中, 模块是对功能的抽象, 每个模块都是一个处理单位, 它有输入和输出。而在面向对象程序设计中, 对象是包括数据和操作的整体, 是数据和功能的抽象和统一。也可以这样说: 对象可包括模块。
在结构化程序设计中, 过程是一个独立的实体, 显示其为它的使用者所见, 而且, 对于相同的输入参数, 每一次的过程调用, 其输出的结果是相同的。在面向对象的程序设计中, 方法是隶属于对象的, 它不是独立存在的实体, 而是对象功能的体现。面向对象程序借助于成员函数调用实现消息的发送。对象响应消息后, 按照消息的模式找出匹配的方法并执行。应当注意, 发送消息和过程调用的意义是不同的,发送消息只是触发自动机,同样地输入参数, 可能因为自动机状态不同其输出的结果会有不同。
类型和类都是数据和操作的抽象,但是类所定义的数据集(包括数据和操作)比常规语言的类型所定义的数据集要复杂得多。例如, 在生成实例时, 类不能像常规语言那样只做个定义就可以了,而是需要类的说明、定义类的实例、规定生成实例操作、无用内存单元的回收等。而且, 类还引入了继承机制, 实现了可扩充性。
在结构化程序设计方法中, 其核心是逐步细化。这种自顶向下的方法是通过不断在程序的控制结构中增加细节来开发程序。它生产的模块往往为了满足特定的需要, 其可重用性较差。面向对象程序设计以数据结构为中心开发模块,同时一体化的考虑操作的功能, 抓住了程序设计中最不易变化的部分--数据, 因此对象常具有良好的可重用性。