快照图
(由MIT 6.031 02、08)
一个对象由圆圈表示,圆圈里的区域指向对应的值。
一、可更改和不可更改
1.immutable如String
String为不变类型,被创建后一个String对象有一样的值,如果在String的字符串后加上其他的字符串,会创建一个新的String对象
2.mutable如StringBuilder
3.不可更改的引用(final):
final用双箭头表示。
注意:final只限定了引用不可变,但是可以引用到一个可更改的值,引用不变但是引用的对象的本来的内容可以改变如:
final StringBuilder sb;
可更改的引用也可以作用到不可更改的值,变量值的改变就是将引用改变。
二、
1.List
List
2.Map
Map<String, Turtle>
3.Set
StringBuilder对象为可变的,在修改时直接修改了这个值本身
例题:
一个terrarium的使用者可以更改红色的Turtle对象吗?
答:不能,因为Turtle对象是不变的。
一个george的使用者可以更改蓝色的Gecko对象吗?
答:不能,因为Gecko对象是不变的
一个petStore的使用者可以使另一个terrariu的使用者无法访问蓝色的Gecko对象吗?
答:可以,因为List对象是可变的
UML
参考
浅谈UML的概念和模型之UML九种图
深入浅出UML类图
1.类图
1)由三部分组成:
(1)类名称
(2)属性
+:public
-:private
#:protected
(3)类操作
2)关联关系
(1)单向关联
带箭头的直线
(2)双向关联
不带箭头的直线
(3)自关联
带箭头且指向自身的直线
3)聚合关系
如图Engine可以单独存在,也是Car的组成部分
带空心菱形和带箭头的直线
4)组合关系
Mouth不可以单独存在,是Head的组成部分
实心菱形和带箭头的直线
5)依赖关系
Car需要被Driver使用
带箭头的虚线
6)继承关系
父类与子类的关系
带空心三角形的直线
7)接口实现关系
带空心三角形的虚线
对象图
实例:
如图,本地编目和联合编目是父类编目的子类;普通书刊流通和电子书刊流通是流通的子类。
用户接口与流通、编目等都是继承关系
2.构件图(Component diagrams)
描述软件的各种组件和他们之间的关系
组成:
构件+接口+依赖关系
例: