【问题标题】:Why Inheritance is one of the four major principles of OOP, but not Composition? [closed]为什么继承是 OOP 的四大原则之一,而不是组合? [关闭]
【发布时间】:2017-01-26 13:16:33
【问题描述】:

继承相比,Composition如何是次要的原则级别?人们总是要考虑 Composition 而不是 Inheritance,但是在 OOP 的四大原则中却没有提到 Composition。这背后的原因是什么?他们不是一个级别的吗?

【问题讨论】:

  • 虽然组合是一种做事方式,但它并不是OOP引入的概念。组合是 OOP 原则的结果(有一个对象)。
  • 是的,相同级别的重要性/相关性。但是 OOP 并不真正依赖于它,组合也不真正依赖于 OOP。他们相处得很好..
  • OOP 严重依赖组合 > 没有组合,没有复杂的数据类型或对象关联。组合是 OOP 设计原则的先决条件。
  • 组合在 OOP 之前就已经存在。此外,没有级别。
  • 在谈到面向对象时,“四大原则”的实用性值得商榷。该概念的发明者说,OO 只涉及“消息传递和极晚绑定”。没有提到四个原则。可以设想一种不具有继承性的 OO 语言。你的问题的核心是“为什么这个人类概念是这样的?”。答案必须是,它是人们在讨论 OO 时发现有用的一组新兴概念。

标签: oop inheritance composition


【解决方案1】:

组合是一个比继承低层次和古老得多的概念;它来自分析-综合方法,该方法基本上指出事物要么由其他事物组成,要么由微不足道的(原子的)组成。它最早是在古希腊作为理解事物的一般方法引入的。

Composition 并非特定于 OOP,例如在远非 OO 的纯 C 语言中,结构是使用组合编写的,同样在函数式编程中,函数其他函数组成,尽管 composition 的性质完全不同在这两个例子中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2013-10-09
    • 2014-08-26
    • 1970-01-01
    • 2015-02-17
    • 2011-10-03
    相关资源
    最近更新 更多