使用以下信息在类图中遇到一些麻烦:
一个人可以申请抵押贷款买房。
1 Owns * hasSecurity
Person ------------> House <--------------- Bank
-NINumber -address
-salary -value
|
| has
|
\/*
Mortgage
-startDate
-EndDate
-total
-monthlyPayments
是否有人能够建议如何建模。使用图表的例子将不胜感激。
答案 0 :(得分:2)
我认为你对所有这些信息感到困惑。
(1)你可以从类图开始,通过识别哪些类相互作用,留下数量,属性和&amp;后续步骤的关系。
喜欢这些:
............................................
..+--------------+........+--------------+..
..| Person |........| Mortage |..
..+--------------+........+--------------+..
............................................
..+--------------+........+--------------+..
..| House |........| Bank |..
..+--------------+........+--------------+..
............................................
..+--------------+..........................
..| Payment |..........................
..+--------------+..........................
............................................
注意,这个不完整的图表,还没有属性,关系,操作等。有一些点代表空白页。
(2)根据给定的信息,确定&amp;赋值,&amp;每个实体或类的属性。
不要将表示内部值(“Mortage.StartDate”)的属性与表示与其他类或对象的关系的属性(“A House可以有零或更多Mort房”)混合。
仅具有内部属性的类的示例可以是:
....................
..+--------------+..
..| Mortage |..
..+--------------+..
..| StartDate |..
..| EndDate |..
..| Total |..
..+--------------+..
....................
属性由项目符号列表表示,我们通常在每个属性之前使用“+”,之后,您会看到它可以更改:
.......................
..+-----------------+..
..| Mortage |..
..+-----------------+..
..| [+] StartDate |..
..| [+] EndDate |..
..| [+] Total |..
..+-----------------+..
.......................
不要混淆项目上的“+”,并在课程的角落上加上“+”。
有时候,即使拥有它,类也可以显示它的一些属性,或者不显示所有属性。这可以用空白部分框或带有3个点的框来表示:
..................................................
..+-----------------+........+-----------------+..
..| Mortage |........| House |..
..+-----------------+........+-----------------+..
..| ... |........| |..
..+-----------------+........+-----------------+..
..................................................
具有表示其他对象或类的属性的类的示例, 链接,引用或子部分:
..................................................
..+-----------------+........+-----------------+..
..| Mortage |....+---+ House |..
..+-----------------+....|...+-----------------+..
..| [+] Owner +----+...| ... |..
..+-----------------+........+-----------------+..
..................................................
并且,表示具有这两种属性的类或对象,最好是在不同的部分。
....................................................
..+-----------------+........+-----------------+....
..| Mortage |........| Person |....
..+-----------------+........+-----------------+....
..| [+] StartDate |........| [+] Salary |....
..| [+] EndDate |........| |....
..| [+] Total |........| |....
..+-----------------+........+-----------------+....
..| [+] Owner +----+...| [+] Houses |....
..+-----------------+....|...+--------+--------+....
.........................|............|.............
.........................|............|.............
.........................|............|.............
.........................|...+--------+--------+....
.........................|...| House |....
.........................|...+-----------------+....
.........................|...| |....
.........................+---+ ... |....
.............................| |....
.............................+-----------------+....
.............................| [+] Owner |....
.............................| [+] Mortages |....
.............................+-----------------+....
....................................................
注意,还有几种类型的关系,用箭头,三角形,菱形表示,让我们暂时跳过这一点,并且只使用一条线,表示两个类之间“存在某种关系”。 / p>
(3)有一次,你已经确定了基本属性和基本属性之间的差异。表示关系的属性,您可以描述图中的所有关系。
............................................
..+--------------+........+--------------+..
..| Payment |........| Person |..
..+--------------+........+--------------+..
..| [+] Mortage |........| [+] Houses |..
..| |........| |..
..| |........| |..
..+------+-------+........+-------+------+..
.........|........................|.........
.........|........................|.........
.........|........................|.........
..+------+-------+........+-------+------+..
..| Mortage |........| House |..
..+--------------+........+--------------+..
..| [+] Owner |........| [+] Owner |..
..| [+] House +--------+ |..
..| |........| |..
..+-------+------+........+--------------+..
..........|.................................
..........|.................................
..........|.................................
..+-------+------+..........................
..| Bank |..........................
..+--------------+..........................
..| [+] Debtors |..........................
..+--------------+..........................
............................................
请注意,有一些关系,即间接关系,例如,一个人每月付款给抵押人,但与该人的付款关系不会直接显示,而是通过抵押品显示。< / p>
(4)在UML中,类之间存在多种关系。一些关系,必须与对象创建有关。
(5)还存在独立于其他对象的对象,并且存在对象的场景取决于另一对象。而且,这会产生两种不同的物体。
例如,付款取决于Mortage的存在。如果有业主人或所有者银行,或者有抵押,则存在房屋。银行存在抵押房屋或债务人。
当一个对象或类依赖于另一个类时,它的关系称为“Composition”,它由填充的菱形表示,位于关系箭头的边缘,主类if。
....................
..+--------------+..
..| Payment |..
..+--------------+..
..| [+] Mortage |..
..| |..
..| |..
..+------+-------+..
.........|..........
.........|..........
.........|..........
.........^..........
........<*>.........
..+------v-------+..
..| Mortage |..
..+--------------+..
..| ... |..
..+--------------+..
....................
(6)如果一个对象与另一个对象分开存在,但是,存在某种关联,它被称为“聚合”,它的表示类似,但是,用非填充的空钻石代替
....................
..+--------------+..
..| Person |..
..+--------------+..
..| [+] Houses |..
..+------^-------+..
........< >.........
.........v..........
.........|..........
.........|..........
.........|..........
..+------+-------+..
..| House |..
..+--------------+..
..| ... |..
..+--------------+..
....................
(7)在关系中,应用数量。 “许多”概念通常用星号“*”显示。
此图表与数量可能类似:
............................................
..+--------------+........+--------------+..
..| Payment |........| Person |..
..+--------------+........+--------------+..
..| [+] MonthNo |........| |..
..+--------------+........| |..
..| [+] Mortage |........| [+] Houses |..
..| |........| |..
..+------+-------+........+-------^------+..
.........|..12...................< >.1......
.........|........................v.........
.........|........................|.........
.........^ .......................|.........
........< >.1.....................|..*......
..+------v-------+........+-------+------+..
..| Mortage |........| House |..
..+--------------+........+--------------+..
..| [+] Ammount |........| [+] Address |..
..+--------------+........+--------------+..
..| [+] Owner |.*...1.^| [+] Owner |..
..| [+] House +------< > |..
..| |.......v| |..
..+-------+------+........+--------------+..
..........|..*..............................
..........|.................................
..........|.................................
..........^.................................
.........< >.1..............................
..+-------v------+..........................
..| Bank |..........................
..+--------------+..........................
..| [+] Debtors |..........................
..| [+] Mortages |..........................
..+--------------+..........................
............................................
(8)还有其他概念适用于Class&amp;对象图,如继承关系。或者,添加其他类,例如“请求”类。让我们暂时跳过它。
可能的最终类图可能是:
...............................................
..+----------------+........+---------------+..
..| Payment |........| Person |..
..+----------------+........+---------------+..
..| [+] MonthNo |........| [+] FirstName |..
..| [+] Ammount |........| [+] LastName |..
..+----------------+........| [+] NINNo |..
..| [+] Mortage |........| [+] Salary |..
..| |........+---------------+..
..| |........| [+] Houses |..
..| |........| |..
..+-------+--------+........+-------^-------+..
..........|..12....................< >.1.......
..........|.........................v..........
..........|.........................|..........
..........^ ........................|..........
.........< >.1......................|..*.......
..+-------v--------+........+-------+-------+..
..| Mortage |........| House |..
..+----------------+........+---------------+..
..| [+] StartDate |........| [+] Address |..
..| [+] FinishDate |........| [+] Value |..
..| [+] Total |........| |..
..+----------------+........+---------------+..
..| [+] Owner |.*...1.^| [+] Owner |..
..| [+] House +------< > |..
..+-------+--------+.......v+---------------+..
..........|..*................................
..........|...................................
..........|...................................
..........^...................................
.........< >.1................................
..+-------v------+............................
..| Bank |............................
..+--------------+............................
..| [+] Name |............................
..+--------------+............................
..| [+] Debtors |............................
..| [+] Mortages |............................
..+--------------+............................
..............................................
干杯。
[别忘了为小猫打开金枪鱼罐头]