在OOP中,在它们适用的不同上下文中,接口的不同含义是什么

时间:2013-10-27 06:16:35

标签: oop user-interface interface

我对面向对象编程有点新意。在我的旅途中,我遇到了让我困惑了几天的事情。它是术语“界面”,它在不同的上下文甚至不同的编程语言中具有不同的含义。我想理解“界面”,但是当我进行研究时,我似乎得到了不同的定义,好像它有多重含义。

有人会在每个上下文(只是主要的)中给我一个简洁的界面定义吗?

我在Matt Weisfeld购买了一本名为面向对象的思维过程的书,其中部分已经确定如下:

  1. 图形用户界面
  2. 类的接口基本上是其方法的签名
  3. Objective-C代码可以分解为物理上独立的模块,称为interface和impelentation
  4. Java风格的接口和Objective-C协议基本上是父类和子类之间的契约
  5. (OOP中术语接口的使用/定义是否比上面确定的更多?)

    如果有人愿意在OOP中解释术语界面的不同背景,我们将非常感激。

5 个答案:

答案 0 :(得分:2)

简答:

您的第4个要点可能最接近OOP接口的普遍接受的概念:合同在需要彼此交互的各方之间。此类合同定义了一方提供的方式(a),以及(b)另一方要求的方式。

答案很长:

一般来说,界面是允许两个(可能是非常不同的)实体相互交互的东西;它使他们能够在一起工作,同时让他们分开。界面是双方同意的“共同点”。

(可以像门锁一样简单:锁和任何能够工作的钥匙都必须“合在一起”在一个地方;你可以把那个地方称为界面。)

此一般定义如何适用于您的列表?

  

图形用户界面

GUI允许人和计算机程序进行交互。它不需要计算机变成完全人类(并且用耳朵听,用嘴说话,微笑等),也不要求人类成为计算机程序本身。 (过去几十年的用户界面被排除在外。)

  

“类的接口基本上是其方法的签名”

(公开可见)方法及其精确签名是其他类型能够与该类交互的唯一方法,因此从这个意义上说,它们一起构成了该类的接口。

  

“Objective-C代码可以分解为物理上独立的模块,称为接口和[实现]”

我不太清楚Objective-C对此有何评论,但许多语言都有一个模块系统,允许您将代码库划分为独立的,功能独立的模块。这些通常不必将其所有类型和功能暴露给外人;每个模块都可以仔细声明其他模块可以看到的内容。如上所述,选择公开的所有内容都是“接口”,因为它将是与模块中的任何内容进行交互的唯一方式。 “模块中的任何东西”都隐藏着;它被称为“实施”,外人不应该知道它。

  

“Java风格的接口和Objective-C协议基本上是父类和子类之间的契约”

这可能与OOP中普遍接受的接口概念最接近:它们是希望进行交互的 方之间的契约。请参阅本问题开头的简短回答。

基本上,Java interface允许我们描述一组方法及其确切的签名,但它不允许我们提供实现。因此它是一个纯粹的界面;它无法直接调用。它只描述如何与实际实现它的类进行交互。 (双方不一定必须是“父母”和“孩子”。)

理想情况下,界面不应仅仅陈述一个类提供的内容;它还应描述典型的消费者需要什么,从而将界面集中在一个封装良好的系统中。 (我指的是Single-Responsibility Principle。)

答案 1 :(得分:1)

接口是抽象和封装的概念。它基本上是你应该遵守或给予的合同,即,Interface只是双方之间的合同,以便他们知道他们将如何相互作用。接口通常定义了如何与类进行交互,它支持的方法。

接口仅包含方法的签名。方法没有任何接口可以做任何事情。这只是一种模式。

enter image description here

现在在这个anAbstarctMethod()是定义的接口,它只有签名但没有实现。现在,当ASUBClass类实现了ineterface时,实际的实现就会提供给接口。

就图形用户界面而言,我不认为这可能是面向对象的编程。 wiki表示图形用户界面只是一个用户界面,您可以通过该界面通过图标和其他指示器与电子设备进行交互。

enter image description here

Java doc为此提供了一个很好的例子: -

  

方法形成对象与外界的界面;该   例如,电视机正面的按钮就是   您和另一侧的电线之间的接口   它的塑料外壳。按“电源”按钮转动   电视开关。

来自here的一个很好的例子: -

  

接口是对象可以执行的操作的描述...   例如,当您打开灯开关时,灯会亮起,而您却没有   关心如何,就是这样。 面向对象编程,   接口是对象必须具有的所有函数的描述   为了成为“X”。再举一个例子,任何“行动都喜欢”的东西   一个灯,应该有turn_on()方法和turn_off()方法。该   接口的目的是允许计算机强制执行这些   属性并知道TYPE T的对象(无论是什么   interface is)必须有X,Y,Z等函数。

您还可以查看 Why Use Interfaces?

  

另一种强大的设计技术是拥有一个类实现   多个接口。如果你这样做,你将有对象   支持多个接口,因此支持多种行为。什么时候   与运行时类型检查一起使用,这变得非常   强大。

答案 2 :(得分:0)

在OOP中,术语“接口”基本上表示可以发送到类对象的所有消息的所有方法签名。所以在Objective-C中,它将是头文件中的所有方法声明。

术语“图形用户界面”在OO上下文中未使用“interface”一词。 列表中的项目#2是OO接口。 项目#3指的是.h和.m文件。 Item#4引用Java语言中的关键字'interface',并将其与Objective-C语言中的关键字'protocol'等同。

答案 3 :(得分:-1)

一般含义:

接口本质上是与其他东西相互作用的东西

例如:一个接口可以与一个python应用程序和Skype-API(我的脑海中想到xD)

答案 4 :(得分:-1)

界面是一种多重继承的形式(没有带来的'涉嫌'并发症)(这是一个有争议的主题)

OO建立在“是一种”关系上,MI(多重继承)允许一个对象成为几件事。接口为他们定义了一种方式,无需实现。

他们是“你必须要_ 成为_ 无论如何”。