根据您的说法,该功能是什么使面向对象的编程如此成功的?

  1. 消息传递
  2. 遗产
  3. 多态性
  4. 封装

或您可能想介绍的其他功能。

我也想知道,抽象数据类型和面向对象的编程之间有什么联系?

有帮助吗?

解决方案

我建议,面向对象的编程的最重要特征是 复杂性管理.

人的大脑一次只能持有如此多的概念 - 想到7 +/- 2独立项目的经常引用的极限。

当我在工作中使用600kloc系统时,我不能一次将整个东西固定在脑海中。如果我必须这样做,我将仅限于 很多 较小的系统。

幸运的是,我不必。我们在该项目上使用的各种设计模式和其他结构意味着我不必一次处理整个系统 - 我知道它们适合更广泛的应用程序以明确的方式。

所有重要的OO概念都提供了管理复杂性的方法。

封装 - 让我处理一个为我提供各种服务的外部API,而不必担心如何实施这些服务。

抽象 - 让我专注于基本特征,而忽略无关紧要的内容。

作品 - 让我重用已经以新组合构建的组件

多态性 - 让我询问服务,而不必担心不同的对象如何以不同的方式提供它。

遗产 - 让我重复使用界面或实现,只提供与以前不同的作品。

单一责任原则 - 让每个对象的目的保持清晰,简洁,因此很容易推理

Liskov替代Prinicple - 让我们不要通过引入奇数依赖性来互相陷阱

开/关 - 让我们以不需要我们破坏现有代码风险的方式进行扩展和修改

依赖注射 - 让我们将构图提高到一个新的水平,并在稍后将组件组装在一起。

面向界面的开发 - 让我们将抽象提升到一个新的水平,仅取决于抽象,而不取决于具体的实现。

其他提示

图形用户界面。 在八十年代末,九十年代初,当Mac,Amigas,Atari STS,Windows和Gem开始替换基于角色的用户界面时,很明显,像C这样的语言不适合编写GUI程序。虽然传统的数据处理被认为是“输入数据 - >处理 - >输出数据”模式,也可以使用程序语言进行,但OOS功能只是方便地处理GUI的固有复杂性。

封装提供的数据隐藏。

其他任何答案尚未提及的功能: 域建模. 。由于人们倾向于考虑使用或对象进行操作,以及具有内在属性的对象,因此使用面向对象的软件对问题或工作流进行建模非常容易。从本质上讲,它使我们能够利用现有的能力来处理代码中的名词,动词和形容词。

我认为继承是OOP最重要的一点。

从游戏开发中]您可以使用渲染方法和属性来创建类似可绘制的类,并创建一个从可绘制的太空飞船和行星类。从那些[和其他Sprite Child]中获取所有对象,扔进DrabableObjarray,然后为每个对象调用Draw方法。您只需要知道这是可绘制的。

抽象

提供隐藏不必要事物的必要服务。在这里查看我的解释 -什么是抽象?

这有点成功,因为它鼓励将人类思想的组织组织到对象中。人们通常擅长看到事物的关系 - 诸如差异,相似性和行为之类的事物。 OO鼓励开发软件,以模仿人类的世界概念化。

使软件开发类似于我们如何看待世界,使我们的头脑更容易处理复杂性。

"ADT与对象“这里已经有多次问。单行答案是“ adts和对象是彼此的倒数 - 一个人整齐地抽象的是什么。每个都以不同的方式允许灵活性。”

有关更长的答案,请参见William Cook的 了解数据抽象,重新审视. 。简而言之,对象允许您轻松地使用某些基准的多个实现/表示(看起来像列表可能是数组或自我平衡树,或...),但很难添加新的操作(因为您必须在每个表示形式中添加新操作),而ADT使您可以轻松地在数据类型上添加新操作,但很难具有多个实现。

编辑:我说传递的消息使OO成功。根据乔纳斯的评论,这是不正确的,因为人们认为OO的大多数语言都不使用消息传递。由于它不对,所以我从答案中掌握了它。

我的三个功能。对象组成 - 允许对象协作。多态性 - 支持运行时的动态行为。继承 - 通过重复使用代码并通过覆盖方法修改行为。

ADT-即使在Pascal等非对象的语言中,您也可以拥有它。堆栈或队列是ADT的示例。

简而言之,OOP是可重复使用和封装的关键,它导致了大型框架的生产,这使得这个时代的程序员的生活很容易,因为可以将API称为API并最常做一天。

作为您的问题是关于OOP的4个功能,因此您可以说

  1. 继承和4.封装是最重要的功能,而其他两个非常必要以实现前两个

因此1.消息传递和3.多态性实际上支持2.继承和4.封装。

  1. 继承和4.封装是OOP成功的关键

我认为,最后三个功能曾经是影响OOP广泛使用的最重要的功能:

2. Inheritance
3. Polymorphism
4. Encapsulation

编辑: 另一点是 IDE 以及图形接口开发环境,例如Visual Studio和Eclipse。当他们拥抱OOP语言时,越来越多的设计倾向于OOP。

而且当然 坚实的原则 曾经使软件产品摇滚实心可交付:)

许可以下: CC-BY-SA归因
scroll top