uml中的类与接口

Chr*_*iss 2 uml class-design class-diagram interface

正如我们在OOP中所知,接口提供了一组没有实现的操作,但类是相反的.

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

那么,UML有什么区别?

And*_*ock 6

正如我们在OOP中所知,接口提供了一组没有实现的操作,但类是相反的.

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

但是,UML中的一个关键思想是接口是一组暴露给其他类或组件的方法.目的是定义一组操作.

然而,转向编程,可以使方法抽象化以帮助开发(例如,通过确保所有子类具有实现).这个方法可能纯粹是类的内部.

最后一个观察:UML中的术语接口和类与语言中的接口和类并不完全同义,比如Java.例如,Java不允许多继承.相反,Java有一个interface允许类实现多种类型(不是类 - 一个微妙的区别)

编辑

快速说明技术词汇:

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

定义是声明为类是否类型.
(请参阅类型和类有什么区别?)

接口的目的是定义一组操作但我们是否也为类同样定义了一组操作?

因此,接口的目的是声明(不定义)其他对象想要使用的一组公共操作.类(在UML中)是完整的操作集(公共和私有).类(在Java,C++等中)还定义了所有非抽象操作.

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

当我去那些假设实现这些操作的课程时,我看不到这些操作的任何实现,因为图表描述了那些操作或任何事情都给出了实现的标志?

UML工具用于建模,因此故意避免提供输入操作定义的位置 - 这将留待以后使用.你的想法是:

  • 用UML定义模型
  • 使用UML工具生成目标语言的代码
  • (有些允许您将代码导回到工具中,以便在实现过程中进行任何更改来修改模型.这称为"往返"建模,旧的TogetherJ产品擅长于此)

这种深思熟虑的差距(你可能会说缺点)意味着UML中的'define'与'declare'毫无意义.抱歉.