软件设计:把软件开发想清楚的过程
软件工程:对软件开发全过程进行建模和管理
建模:对现实系统进行适当的过虑,用适当的表现规则描述出简洁的模型
建模是一种深入解决问题的方法
建模的原则:
使用者的身份和使用的原因是评判模型好坏的关键
孤立的模型是不完整的
最好的模型总是能够切合实际的
软件建模的实现过程:
软件建模的作用
软件建模的实现过程
UML
UML是一种基于面向对象的可视化建模语言
UML采用了一组形象化的图形符号作为语言使用这些符号可以形象地描述系统的各个方面
UML 通过建立图形之间的各种关系(如类与类之间的关系)来描述模型
UML中的图:
静态模型图:类图、对象图、包图、组件图、部署图
动态模型图:用例图、时序图、协作图、状态图、活动图
UML的关系
1、 关联关系
2、 依赖关系
3、 泛化关系
4、 实现关系
泛化关系: 表示同一业务目的(父用例)的不同技术实现(各个子用例).
包含关系:
扩展关系:
类之间的关系 ---- 泛化关系
在 UML 中, 泛化关系用来表示类与类, 接口与接口之间的继承关系. 泛化关系有时也称为”is a kind of”关系
在 UML 中泛化关系用一条实线空心箭头由子类指向父类
类之间的关系 ---- 实现关系
在 UML 中, 实现关系用来表示类与接口之间的实现关系.
在 UML 中实现关系用一条虚线空心箭头由子类指向父类
类之间的关系 ---- 依赖关系
对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系.例如生产零件的机器和零件,机器负责构造零件对象; 充电电池和充电器,充电电池通过充电器来充电;自行车Bicycle和打气筒Pump,自行车通过打气筒来充气
类之间的关系 ---- 关联关系
对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司;自行车和主人,每辆自行车属于特定的主人,每个主人有特定的自行车。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系
关联关系 ---- 聚合关系
聚合关联是一种特殊的关联. 它表示类间的关系是整体与部分的关系. 简言之: 关联关系中的一个类描述了一个较大的事物, 它由较小的事物组成.
聚合关系描述了 “has a” 的关系, 即整体对象拥有部分对象
整体和部分之间用空心菱形箭头的连线连接, 箭头指向部分
关联关系 ---- 组成关系
组成关系是更强形式的聚合.
组成关系中, 整件拥有部件的生命周期, 所以整件删除时, 部件一定会跟着删除. 而且, 多个整件不可以同时共享同一个部件。
聚合关系中, 整件不会拥有部件的生命周期, 所以整件删除时, 部件不会被删除. 再者, 多个整件可以共享同一个部件.
UML 中组成关系用实心的菱形实线表示
关联关系 ---- 导航性
导航性表示可从源类的任何对象到目标类的一个或多个对象遍历. 即: 给定源类的一个对象, 可以得到目标类的所有对象. 可以在关联关系上加上箭头表示导航方向.
只在一个方向上可以导航的关联称为单向关联,用一个带箭头的方向表示; 在两个方向上都可以导航的关联称为双向关联, 用一条没有箭头的实线表示