UML之接口

语义
接口是类、构件或没有内部结构说明的其他实体(包括包等汇总单元)的外部可见的操作的描述符。每个接口仅描述实际类的行为的有限部分。一个类可以支持多个接口,效果上或互斥,或覆盖。接口没有实现,缺少属性、状态和关联;它只有接收的信号和操作,接口可以有泛化关系,子接口有其祖先的全部操作和所接收的信号。接口可有泛化关系。子接口包括其父所有操作和信号,但可以有附加操作。接口与没有属性、方法只有抽象操作的抽象类等价。接口中的所有操作都是公共可见的(否则,不可能引用它们,因为接口没有所谓的"内部"来引用它们)。
下列扩展定义说明
.接口是用于说明类或构件的某种服务的操作集合。
.接口用于为一组操作命名,并说明其信号和效用,接口着眼于服务的效果,而不是结构。接口不为其中的操作提供实现,接口的操作列表中还可以包括类可以处理的信号。
.接口用于说明服务者为其他模型元素提供的服务。接口为一组操作命名,这组操共同实现系统或部分系统的部分行为。
.接口定义了类或构件提供的服务,它定义的服务由类或构件实现。因此接口跨过了系统的逻辑和物理的界限。一个或几个类(可能是某个构件子系统的部分)可以提供一个接口的逻辑实现。一个或几个构件可以提供符合同一接口的物理包。
.如果类实现一个接口,则它必须声明或继承接口的所有操作,它也可以有另外的操作(见实现)。如果一个类实现多个接口,它必须包含所有接口的操作。多个接口中可以有相同的操作。如果标志相符合,就一定是同一操作,否则会发生冲突,说明系统为非良性结构(实现可以采用语言特定规则来匹配标志。例如C++中忽略参数名和返回类型)。接口不声明类的属性或关系;它是类的实现的一部分。
.接口是可泛化元素,子接口继承祖先的全部操作并可以有新的操作。实现被视为行为继承;类继承其他类元的操作,而不是结构。一个类可以实现另一个类。起说明作用的类就象是接口,只有操作部分影响关系。
.接口参与关联。接口不能作为关联的出发点,但可以是关联的目标;只要该关联只对接口有导航性。
表示法
接口是一种类元,可以用带关键字《interface》的矩形表示。接口支持的操作列在操作分格中。操作分格中还可以有信号(带构造类型《signal》)。信号也可列在独立分格中。属性分格可以省略,因为它总是为空的。
接口还可以表现为小圆圈,接口名字在圆圈下方。圆圈符号用实线与支持接口的类或其他元素相连,它还可以连向高层的单元,例如包含类的包。这说明类支持接口类型的全部操作(可能更多)。圆圈表示法不表示接口支持的操作,用完整矩形表示法表示操作列表。虚线将接口和使用其操作的类连起来,箭头指向圆圈。虚线箭头表示类使用接口中声明的操作,但用户类并不需要接口中所有的操作。服务通常用效果测试来说明,如果提供者提供一列接口中的操作,则满足客户的需求。
实现关系用带实心三角形箭头的虚线表示(虚线泛化关系标志),箭头从类指向它支持的接口。这与表示通过实现类来实现类型的方法相同。事实上,这种符号可用于任意两个类元之间,表示客户(箭尾)支持提供者(箭头)定义的所有操作,但不必支持服务者的数据结构(属性和关联)
举例
图13-111是处理有价证券财政的商业构件的简化视图。FinancialPlanner是记录个人花费与投资的个人财政应用程序。它要有刷新有价证券价格的能力。MutualFundAnalyzer仔细检查公共基金,需要刷新当前有价证券价格的能力。刷新价格的能力用接口Updateprice表示。有两个构件实现该接口,用将它们连到接口符号的实线表示。构件ManualPriceEntry允许用户人工输入选定有价证券的价格。QuoteQuery通过调制解调器或网从报价服务器上得到有价证券的价格。
图13-111 接口的提供者和客户
图13-112表示作为类的关键字的接口的完整形式。该接口有两个操作--询问有价证券的价格并获得值,提交有价证券价格表并接受改动的价格表,在此例中,QuoteQuery用实线箭头与接口相连,这与上一图中关系相同,只是更确切而已。
图中还有一个新的接口PeriodicUpdatePrices,它是原始接口的子。它继承了两个原始操作并增加了一个操作,用请求定期自动刷新价格。该接口由构件QuoteServer实现。它也实现了QuoteQuery中的两个操作,但方法不同。它不共享QuoteQuery的实现(本例中),因此不继承它的现实。
图13-112表示了接口继承和完全继承的区别。后者包含前者,但子接口可以用与父接口不同的方法实现,QuoteServer支持QuoteQuery实现的接口(即UpdatePrices),但不能继承QuoteQueryde 实现(通常,同时继承实现和接口更为便利,所以两种结构常常是等同的)
接口可以包括它能处理的信号列表(图13-113)。
图13-112 完整接口表示
图13-113 带有信号的接口

接口用于定义类、构件的行为,而不限制其实现。这样,允许将接口继承与实现继承分开,如JAVA语言的声明。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值