面向对象的编程范例

时间:2016-01-11 20:18:18

标签: oop theory paradigms

我最近偶然发现了一个有趣的问题(或者只是作者的错误),我开始质疑自己。经过一些研究后,我不得不说我不能100%肯定我的答案,所以我想问一下我的想法是否正确。问题是:

  

描述面向对象的编程范例 s

我首先想到的是这是多态,继承,封装,抽象。但为什么有多种形式?据我所知,我的答案是范式(单一)而不是范式(复数)的描述。我错过了什么,或者这是正确答案吗?

3 个答案:

答案 0 :(得分:1)

您可能想看看Alan Kay对此有何评论:http://c2.com/cgi/wiki?AlanKaysDefinitionOfObjectOriented

链接的必要摘录:

此定义源自Smalltalk(Smalltalk-72?)的早期版本,规则5和6清楚地显示了Smalltalk的Lisp遗产。凯这样说,注意到规则4-6会随着Smalltalk的发展而变异。

  1. EverythingIsAnObject。
  2. 对象通过发送和接收消息进行通信(就对象而言)。
  3. 对象有自己的记忆(就对象而言)。
  4. 每个对象都是一个类的实例(必须是一个对象)。
  5. 该类保存其实例的共享行为(以程序列表中的对象的形式)
  6. 要评估程序列表,控制权将传递给第一个对象,剩余部分将被视为其消息。
  7. " Alan Kay被一些人认为是面向对象编程之父,他认为以下特征是OOP的基础:"

    1. EverythingIsAnObject。
    2. 通信由彼此通信的对象执行,请求对象执行操作。对象通过发送和接收消息进行通信。消息是一个动作请求,与完成任务可能需要的任何对象捆绑在一起。
    3. 对象有自己的内存,由其他对象组成。
    4. 每个对象都是一个类的实例。类只是表示一组类似的对象,例如整数或列表。
    5. 该类是与对象关联的行为的存储库。也就是说,作为同一个类的实例的所有对象都可以执行相同的操作。 到目前为止,类似于1-5以上。规则6是不同的。删除了对列表的引用,而不是:
    6. 将类组织为单根树结构,称为继承层次结构。与此类实例关联的内存和行为可用于与此树结构中的后代关联的任何类。

答案 1 :(得分:1)

基于我对paradigm定义的论证,这通常是做某事的模式。范例将是:

  • 抽象
  • 封装
  • 多态性
  • 继承。

答案 2 :(得分:0)

这取决于视角,更好地说明粒度,或者你想要比较或强调什么。

面向对象编程是一种编程范式。但是,有不同类别的面向对象编程。将多个这些称为面向对象的编程范例是有意义的。

有关编程范例的详细列表,请参阅https://en.wikipedia.org/wiki/Object-oriented_programming

相关问题