interface - uml 中的类与接口(interface)

标签 interface class-design uml class-diagram

正如我们在 OOP 中所知道的那样,接口(interface)提供了一组没有实现的操作,但是 类则相反。

在面向对象设计中,我们使用uml接口(interface)有一组操作没有实现 并且这个类还有一组没有实现的操作(我知道类除了操作之外还有属性)?

那么,UML 有什么区别呢?

最佳答案

As we know in OOP that interface provides a set of operations without implementation but class is the opposite.

不完全正确 - 抽象 类是具有一个或多个已声明但未定义的方法的类(在 C++ 和 Java 中,这些是抽象 方法)。您可以使用抽象的所有方法定义一个类 - 在这种情况下,它与接口(interface)非常相似。

不过,UML 中的一个关键思想是接口(interface)是一组暴露给其他类或组件的方法。目的是定义一组操作。

但是,转向编程,可以将方法抽象化以帮助开发(例如,通过确保所有子类都有实现)。此方法可能纯粹是类内部的。

最后一个观察:UML 中的术语接口(interface)和类并不完全等同于某种语言中的接口(interface)和类,比如 Java。例如,Java 不允许多个 class 继承。相反,Java 有 interface 允许一个类实现多种类型(不是类 - 一个细微的差别)

编辑

快速记技术词:

  • 声明:向系统声明变量或操作的存在及其类型或签名
  • 定义:与声明相同,但额外提供变量或操作的完整实现
  • 接口(interface):一组操作声明
  • 类型:对象的接口(interface)和其他操作
  • :对象的类定义(而非声明)对象的实现方式,包括其内部状态和操作的实现

定义是声明,就像类是类型。
(参见 What is the difference between Type and Class?)

The purpose of interface is to define a set of operations but we are do the same for class also define a set of operations?

所以接口(interface)的目的是声明(而不是定义)一组其他对象想要使用的public操作。一个类(在 UML 中)是一组完整的操作(公共(public)和私有(private))。类(在 Java、C++ 等中)另外定义所有非抽象操作。

所以关键是意图:当系统的其他组件想要使用一组操作时,使用接口(interface)。当您使用 UML 描述(组件、算法等)实现时,请使用

when I go to class that assumed to implement those operations I can't see any implementation for those operations as a diagram describe those operations or anything give a sign for implementation?

UML tool用于建模,因此有意避免提供您输入操作定义的位置 - 留待以后使用。这个想法是你:

  • 用 UML 定义模型
  • 使用 UML 工具生成目标语言的代码
  • (有些允许您将代码导入回工具,以使用实现期间所做的任何更改修改模型。这称为“往返”建模,这是旧的 TogetherJ 产品所擅长的)<

这种故意的差距(您可能会说不足)意味着 UML 中的“定义”与“声明”毫无意义。对不起。

关于interface - uml 中的类与接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14908612/

相关文章:

.net - 创建漂亮的 GUI

Android 类设计 - 每次我想显示它们时,我是否应该在我的 Activity 中重新实例化对话框类?

uml - 显示除 "<<extend>>"或 "<<include>>"以外的 UML 用例图的依赖关系

Java:如何声明一个变量实现了一个接口(interface)?

android - Activity和Fragment之间如何回调?

design-patterns - 类数据职责

c# - 实现属性或实现子类

uml - UML 中关联的主题/语义标记

events - 如何在 UML 类图中表示 "event"?

cocoa - 如何将WebView插入到cocoa应用程序中?