正如我们在 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/