正如我们在 OOP 中所知道的,接口提供了一组没有实现的操作,而类则相反。
在面向对象的设计中,我们使用 uml 接口有一组没有实现的操作,而类也有一组没有实现的操作(我知道类除了它的操作之外还有属性)?
那么,UML 有什么区别呢?
正如我们在 OOP 中所知道的,接口提供了一组没有实现的操作,而类则相反。
在面向对象的设计中,我们使用 uml 接口有一组没有实现的操作,而类也有一组没有实现的操作(我知道类除了它的操作之外还有属性)?
那么,UML 有什么区别呢?
正如我们在 OOP 中所知道的,接口提供了一组没有实现的操作,而类则相反。
不完全正确 -抽象类是声明了一个或多个方法但未定义的类(在 C++ 和 Java 中,这些是抽象方法)。你可以定义一个类,它的所有方法都是抽象的——在这种情况下,它与接口非常相似。
不过,UML 中的一个关键思想是,接口是暴露给其他类或组件的一组方法。目的是定义一组操作。
然而,转向编程,可以将方法抽象化以帮助开发(例如,通过确保所有子类都有实现)。这个方法可能纯粹是类内部的。
最后一个观察:UML 中的术语接口和类并不完全等同于一种语言中的接口和类,比如 Java。例如,Java 不允许多类继承。相反,Javainterface
允许一个类实现多种类型(不是类 - 一个细微的区别)
编辑
速记技术用语:
定义是声明,类是类型。
(请参阅Type 和 Class 有什么区别?)
接口的目的是定义一组操作,但我们是否对类也定义一组操作?
所以接口的目的是声明(而不是定义)一组其他对象想要使用的公共操作。一个类(在 UML 中)是一组完整的操作(公共的和私有的)。一个类(在 Java、C++ 等中)另外定义了所有非抽象操作。
所以关键是意图:当系统的其他组件要使用一组操作时,使用接口。当您使用 UML 来描述(组件、算法等的)实现时,请使用class。
当我去假设实现这些操作的类时,我看不到这些操作的任何实现,因为图表描述了这些操作或任何迹象表明实现?
UML 工具用于建模,因此故意避免提供输入操作定义的位置 - 留待以后使用。这个想法是你:
这种故意的差距(您可能会说缺陷)意味着 UML 中的“定义”与“声明”是没有意义的。对不起。
也许您刚刚看到了为描述概览而创建的模型,而不是对系统进行完全建模,但是您可以在大多数 UML 工具中对类操作的行为进行建模,并且某些工具还可以对可以执行的行为进行充分建模。
可以使用 UML 状态机、使用 UML 动作语义或以其他几种方式对与操作相关的行为进行建模。很多时候,这在模型中被忽略了——去到那个级别的细节并不总是有用的,所以实现可能只是在与操作相关的文档中暗示。但是 UML 中的具体类肯定有与其操作相关的具体行为,所以 UML 和编程的区别在于 UML 侧重于行为而不是实现。
根据维基百科-
统一建模语言(UML)是面向对象软件工程领域的标准化通用建模语言。统一建模语言包括一组图形符号技术,用于创建面向对象的软件密集型系统的可视化模型。
所以,最重要的是 UML 是通用的和图形化的。它不仅仅是关于类和接口。UML 提供了一种可视化系统架构蓝图的标准方法。软件建设需要一个计划。结构图、行为图、交互图有助于在多个维度和详细级别进行可视化,这适用于新系统和旧系统。统一通用,适应大型系统并行开发。
当我想到 UML 时,想到的一个术语是软件质量。近年来困扰软件行业的一件事是糟糕的软件设计。尽管软件行业在过去十年中表现相当不错,但全球化的影响正在改变软件的设计方式。