UML类图构造

时间:2013-12-07 16:13:35

标签: uml

使用以下信息在类图中遇到一些麻烦:

  • 一个人拥有零个或多个房屋。
  • 抵押贷款有开始日期和结束日期。
  • 抵押贷款总额为每月付款额。
  • 银行存储有关要求房屋抵押的每个人的国民保险号和工资的信息。
  • 抵押属于一个人。
  • 房子可以有零或更多的抵押贷款,但它只有一个人拥有。
  • 房屋具有价值,并作为相关银行担保 抵押贷款。
  • 一个人有零或多个抵押贷款。
  • 一个人可以申请抵押贷款买房。

             1   Owns    *              hasSecurity
     Person  ------------> House    <--------------- Bank
     -NINumber             -address          
     -salary               -value
     |
     | has
     |
     \/*
    Mortgage
    -startDate
    -EndDate
    -total
    -monthlyPayments
    

是否有人能够建议如何建模。使用图表的例子将不胜感激。

1 个答案:

答案 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 |............................
..+--------------+............................
..............................................

干杯。

[别忘了为小猫打开金枪鱼罐头]