【转载】UML类图与类的关系详解 zt

本文详述了UML类图的基础及应用,包括类的表示、类间关系、实战演练和关系总结,旨在提升面向对象分析和设计能力。
摘要由CSDN通过智能技术生成
文章来源:  UML软件工程组织 ,作了很多整理,方便大家了解更全面。

摘要:类图(Class Diagram)可能是用得最多的一种UML图。类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力。类图是锻炼面向对象分析(OOAObject-Oriented Analysis)和面向对象设计(OODObject-Oriented Design)思想的重要的工具,是业务结构建模的重要工具。本章将会有大量的实战练习,你的OOA思想将会接受极大的考验和提升。

大纲:

  • 一、类的UML表示
  • 二、类之间关系
  • 三、演练类之间的关系
  • 四、类关系小结
  • 五、UML类图解义(类图实例)

一、 类的 UML 表示  

 1类的命名尽量应用领域中的术语,应明确、无歧义,以利于相互交流和理解。类的属性、操作中的可见性使用+、#、-分别表示publicprotectedprivate

UML类图与类的关系详解 - halesir - HaleSir的博客

2、抽象类和方法:
    
在类中定义的没有body 的方法称为抽象方法,至少有一个抽象方法的类是抽象类。使用斜体来描述:
 
UML类图与类的关系详解 - halesir - HaleSir的博客
3接口:

   和类表示差不多,在前边加上《》:

  UML类图与类的关系详解 - halesir - HaleSir的博客

4 、访问描述符:

    我们用如下的符号表示访问修饰符:
 
UML类图与类的关系详解 - halesir - HaleSir的博客

  我们在下图详细说明了各个访问修饰符的一些权限设定:
 
UML类图与类的关系详解 - halesir - HaleSir的博客

5、异常:
    
使用虚线以及箭头表示:
 
UML类图与类的关系详解 - halesir - HaleSir的博客

 6、便签(包含限制、注释和代码解释):
    
只用这种dog-eared 的框框:

UML类图与类的关系详解 - halesir - HaleSir的博客
 

练习:你需要做一个培训管理系统,请你用类图识别出课室中有什么人?这些人有什么关键属性?

强烈建议你先独立完成才继续阅读下文。

UML类图与类的关系详解 - halesir - HaleSir的博客

    1.8 学生与讲师1

说明:该图是类图的简单画法,只表达了类名。

这两个类有这样的关键属性:
 UML类图与类的关系详解 - halesir - HaleSir的博客

    图 1.9 学生与讲师2

说明:上面的类图同时表达了类名和类的属性。属性没有标记public还是private,也没有被标记属性的类型。业务建模时类图的属性可以看成全部是公开的,也不必标记属性的类型。

这个练习的场景是:你需要做一个培训管理系统,所以你识别出类以及他们的属性的时候,务必从这个角度出发。如果你得到的类是男人和女人,那就可能没有什么意义了。

如果你识别出来的属性是身高、体重,这些属性无论是属于学生还是老师,对于培训管理系统来说,可能是没有什么价值的。思考你识别出来的类的属性,能帮助你判断这个类是否合适。每一个类应该具备能表征它核心特点的关键属性,而一般的无特别意义的属性,可不必标记进去。

类图的基本语法是很简单的,但要体会什么是类,准确识别出类就不是那么简单了。实际工作中,我们需要将需求调研中了解到的所有业务对象、人物等列出来,画出他们的关系,反复推敲,逐步才能得到合适的业务模型。下面我们将开始学习类之间的关系。

 

二、类之间关系
一个类图通常不止有一个类,有多个类时,我们还需要表达出类之间的关系。

类与类之间存在以下关系:
    
1)泛化(Generalization)、实现Realization
    
2)依赖(Dependency
    
3)关联(Association
    
4)聚合(Aggregation)、构成( Composition 

1、泛化(Generalization表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。

[具体表现]

父类  父类实例=new 子类();
      
UML类图与类的关系详解 - halesir - HaleSir的博客

    图1.10 Animal类与Tiger,Dog类的泛化关系

[代码表现]

  1. class Animal{}   
  2. class Tiger extends Animal{}   
  3. public class Test   
  4. {   
  5.     public void test()   
  6.     {   
  7.         Animal a=new Tiger();   
  8.     }   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值