class and object diagrams


本章将讨论类图,以及类图怎么被用在软件结构中

8.1 数据类型

可以是预定义的,也可以是枚举型的。

multiplicity

一个实体可以出现的次数,*代表无限制的。0...*代表非负的整数 

8.2 classes

类和实例表示方法如图8.4,左边代表的是类,右边的是实例,虚线代表关系,这里表示 instanceof

注意一点,类和对象图不会同时的出现

class multiplicity

类的多样性,如果类可以是零个或者多个,可以不标注,但是如果是一个,需要在右上角标注上1

8.3描述对象用类

对象包括属性和操作

属性值见图8.6,8.7,8.8(P146-147)

operation操作

属性和操作一个也不能少

visibility of features

公共的+ ,保护型的# ,私人的-,包~ ,首要的一条是:属性是私人的,和受保护的,操作是公共的

8.4 Associations(关联)

属性关联有一个角色,见图8.15

navigability

导航,见图8.17

different types of association

大多数关联都是二进制的,有一些关联是同类的,自关联见图8.18

labelling associations

给联系加上标签见图8.19和8.20

reifying associations

使具体化见图8.22,增加一个中间的类,即可

generalization and specialization

联系很多很复杂,有重复的属性,增加一个属性很麻烦,提出泛化与特化,见图8.24

The meaning of generalization

见图8.25,增加删除一个账户是简单的

Abstract class(抽象类)

抽象类抽象出相同的属性,提供了统一的接口,便于实现

Generalization hierarchies(泛化层次)

见图8.28,父类和子类是相对的,不是绝对的。泛化是为了增加一个子类其他的不需要改动,这个是面向对象思想的重要特点。

Inheritance of attributes and operations继承的属性和操作
继承的好处是不必在每个类里面重写这些类,在父类中定义了就可以了,这样避免了重复 别让层次清楚和容易读懂,泛化和继承相对应。
Adding features in the subclasses
每个子类都要加上额外的属性,来支持他们特殊的动作。
Overriding operations in subclasses(重写子类的方法)

见图8.30,OnlineAcount每次存钱或者取钱都会收到email

Abstract operations

包含抽象操作的为抽象类 ,抽象操作必须让子类来实现

Aggregation(聚集)

见图8.32(P164)

The meaning of aggregation(聚集的意义)

图8.33显示了如果不用聚集会产生循环,因此采用聚集见图8.34和图8.35

composition

见图8.36,8.37,8.38,8.39

组成是一种比聚集更强烈的关系,用黑色的实心箭头来表示,表示是一部分

8.9Association classes

两个类之间用关联类来表示,图8.40显示需要一个关联类来记录成绩

见图8.41和8.42,8.42可以记录重修的次数,同样通过8.43显示可以很容易的修改关联类增加相关的属性

8.10N-ARY 

三元组表示方法用8.44,聚集和组成不能用在多元组连接中

qualified associations

见图 8.46和8.47,加了一个qualifier,这样做解决了同一目录不同名字,不同目录同一名字的问题。

Qualifiers and identifiers每个学生都有不同的id,为了突出这一点,用标识符表示,见图8.49

Interface

接口同类的表示方法一样,区别是上面加上<<>>来区别,现实了一个接口用虚线箭头表示,见图 8.54,使用借口标识符。

8.13Templates

见图8.55,这都是源于多态的优点





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值