软件建模技术-电子教案-曹静 第5章 静态模型

上传人:E**** 文档编号:89494521 上传时间:2019-05-25 格式:PPT 页数:47 大小:366.50KB
返回 下载 相关 举报
软件建模技术-电子教案-曹静 第5章  静态模型_第1页
第1页 / 共47页
软件建模技术-电子教案-曹静 第5章  静态模型_第2页
第2页 / 共47页
软件建模技术-电子教案-曹静 第5章  静态模型_第3页
第3页 / 共47页
软件建模技术-电子教案-曹静 第5章  静态模型_第4页
第4页 / 共47页
软件建模技术-电子教案-曹静 第5章  静态模型_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《软件建模技术-电子教案-曹静 第5章 静态模型》由会员分享,可在线阅读,更多相关《软件建模技术-电子教案-曹静 第5章 静态模型(47页珍藏版)》请在金锄头文库上搜索。

1、软件建模技术,中国水利水电出版社,高职高专计算机类专业“十二五”规划教材,主编 曹静,软件建模技术,第二部分 实 践 篇,2,第5章 静态模型,5.1 静态模型的基本概述 5.2 类图 5.2.1 类图概述 5.2.2 类图的基本组件 5.2.3 关系 5.2.4 关联关系的不同重数与代码的映射 5.2.5 如何建模类图 5.2.6 实例“饮料自动售货机系统”的类图,第5章 静态模型,5.3 对象图 5.3.1 对象图的概念 5.3.2 对象图和类图的区别 5.4 包图 5.4.1 包图的概念 5.4.2 包图建模,第5章 静态模型,教学要求 掌握:类图的标记符组件,如何建模类,如何建模类图。

2、 理解:如何表现类的特性、职责和约束,类之间的关系。 了解:如何建模对象图、包图。,5.1 静态模型的基本概述,静态模型的基本概述 静态模型包括类图、对象图、包图、组件图和部署图。 类图描述系统中类的静态结构,它不仅定义系统中的类,表示类之间的关系(如关联、依赖、聚集等),也表达类的内部结构(即类的属性和操作)。类图描述的这种静态关系涉及软件系统开发的整个生命周期。 对象图是类图的实例,符号与类图非常相似,可以认为对象图是类图在程序执行的某个过程中一瞬间的快照。 包图由包或类组成(有时也包括组件),表示包与包之间的关系。包图可以用于描述系统的分层结构。 组件图和部署图涉及程序的物理实现。,5.

3、1 静态模型的基本概述,采用面向对象技术设计系统步骤 描述需求 根据需求建立系统的静态模型以构造系统的结构 描述系统的行为,5.1 静态模型的基本概述,静态模型的基本概述 用例图、类图(包含包)、对象图、组件图和部署图5类图形,是统一建模语言UML的静态建模机制。 状态图、活动图、顺序图和协作图4类图形,是统一建模语言UML的动态建模机制 。,5.2 类图,类图概述 类图是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,它用于描述系统的结构。 类图的建模贯穿系统的分析和设计阶段的始终,通常从商务伙伴能够理解的用例开始建模,最终往往成为只有开发小组能够完全理解的类。 建模类图

4、也是一个反复迭代的过程。 类图包含两个元素:类、关系 。,5.2.1 类图概述,当对系统的静态模型建模时,通常以下面的3种方式之一使用类图: 对系统的静态对象建模。如书店借书系统的Book类、学生管理系统的Student类等。 对简单的协作建模。协作是一些共同行为的类、接口和其他元素的群体。如数据库连接类、用户验证类、过滤字符串类等。 对逻辑数据库模式建模。在很多领域中,都需要在关系数据库或面向对象数据库中存储永久信息,系统分析者可以用类图对这些需要永久化的实体建模。,5.2 类图,5.2.1 类图概述,类图的基本组件 类,5.2 类图,5.2.2 类图的基本组件,类 命名时应该遵守以下几条准

5、则: 使用标准术语。 使用具有确切含义的名词。 必要时用名词短语作名字。 对于类图中的类而言,它的类名、属性、操作也有一定的书写规范。 类名:正体字说明类是可被实例化的,斜体字说明类为抽象类。 属性:按照“可见性 属性名 :类型 =初始值”的书写顺序。 操作:按照“可见性 方法名称( 参数列表) :返回类型”的书写顺序。,5.2 类图,5.2.2 类图的基本组件,类的表示方法,5.2 类图,5.2.2 类图的基本组件,隐藏属性部分或操作部分,或者两者都隐藏,5.2 类图,5.2.2 类图的基本组件,通过在属性名称和数据类型之后添加等号来为属性指定默认值 在UML中,可以通过 符号表示类的某些属

6、性的多重性,5.2 类图,5.2.2 类图的基本组件,类图中还可以指明另一种类的信息。在操作部分下面的区域,可以用来说明类的职责,也就是类的属性和操作能完成什么任务,5.2 类图,5.2.2 类图的基本组件,使用一个用花括号括起来的自由文本,括号中的文本指定了该类所要满足的一个或多个约束,5.2 类图,5.2.2 类图的基本组件,使用注释为类的属性或操作添加更详细的说明,5.2 类图,5.2.2 类图的基本组件,UML中的类可以作为面向对象语言中的类 public class TaxCalculator private long taxRate ; private int salary ; p

7、ublic TaxCalculator (long taxRate) this.taxRate = taxRate ; public long countTax ( ) return taxRate*salary ; public int getSalary ( ) return salary; public void setSalary (int salary) this.salary = salary; ,5.2 类图,5.2.2 类图的基本组件,接口 在UML中,接口是用一个带有名称的小圆圈表示的,并且通过一条实线与它的模型元素相连。 当一个接口是在某个特定的类中实现时,使用该接口的类通

8、过一个依赖关系(一条带箭头的虚线)与该接口的小圆圈相连接。,5.2 类图,5.2.2 类图的基本组件,接口对应的Java代码映射 interface Callback void callback(int param); class Client implements Callback public void callback(int p) public void nonIfaceMeth( ) class TestIface public static void main(String args) Callback c = new Client( ); c.callback(42); ,5.2

9、 类图,5.2.2 类图的基本组件,关系 泛化关系:一个类(子类)继承另外的一个类(超类)的同一功能,并增加它自己的新功能。泛化关系就是用来表示类与类、接口与接口之间的继承关系的。关系中的实线空心封闭箭头由子类指向父类,5.2 类图,5.2.3 关系,关系 实现关系:实现关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。关系中的箭头由实现接口的类指向被实现的接口。 在Java中,实现关系可以直接用接口,implements关键字表示。 在有些程序语言中不支持接口,但支持类之间的多重继承。在UML中,可以使用泛化关系表示。,5.2 类图,5.2.3 关系,

10、关系 依赖关系:依赖也是类与类之间的连接,并且依赖总是单向的。实体之间的“依赖”关系暗示一个实体的值发生变化后可能影响依赖于它的其他实例。 在面向对象的系统中,作为方法的一个部分,一个对象可能创建另一个对象,让它执行一定的功能。也可以一个对象还可能在一个方法中创建另一个对象,对它进行配置,然后将它作为方法的返回值传给方法的调用者。,5.2 类图,5.2.3 关系,关系 关联关系:在对系统建模时,特定的对象间将会彼此关联,我们称这种关系为关联关系,它反映了对象之间相互依赖、相互作用的关系。,5.2 类图,5.2.3 关系,关联关系 双向关联 单向关联 聚集关联 组成关联 自身关联 关联类,5.2

11、 类图,5.2.3 关系,关联关系 双向关联 关联总是被假定是双向的。这意味着,两个类彼此知道它们间的联系。一个双向关联用两个类间的实线表示。在线的任一端,可以放置角色名和多重值,5.2 类图,5.2.3 关系,关联关系 单向关联 虽然两个类是相关的,但是只有一个类知道这种联系的存在。一个单向的关联表示为一条带有指向已知类的开放箭头的实线。 单向关联只包含已知类的角色名和多重值描述,5.2 类图,5.2.3 关系,关联关系 聚集关联 聚集是关联的一种形式,代表两个类之间的整体/局部关系。,5.2 类图,5.2.3 关系,关联关系 组成关联 组成关联表明一个对象是被一个更大的整体所拥有。这个被包

12、含的对象可能不能参与更多的组成关联,并且不能独立于这个整体而存在。在整体创建的时候创建这个部分,并在整体销毁的时候销毁。在UML中,组成的表示是在关联线上靠近“整体”类的一端加上一个实心的菱形。,5.2 类图,5.2.3 关系,关联关系 自身关联 类也可以使用自身关联与它本身相关联。当一个类关联到它本身时,并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关 。,5.2 类图,5.2.3 关系,关联关系 关联类 Person类和 Company 类之间关联时产生了称为 Contract的关联类。这意味着当Person类的一个实例关联到 Company 类的一个实例时,将会产生C

13、ontract类的一个实例。,5.2 类图,5.2.3 关系,关联关系的不同重数与代码的映射 (1)单向关联(01) (2)单向关联(11) (3)单向关联(1*) (4)双向关联(1,01),5.2 类图,5.2.4 关联关系的不同重数与代码的映射,关联关系的不同重数与代码的映射 (1)单向关联(01) public class Account private DebitCard theCard; public DebitCard getCard( ) return theCard; public void setCard ( DebitCard card ) theCard = card;

14、 public void removeCard ( ) theCard = null; ,5.2 类图,5.2.4 关联关系的不同重数与代码的映射,关联关系的不同重数与代码的映射 (2)单向关联(11) public class Account private Guarantor theGuarantor; public Account (Guarantor g) if (g = = null) ; theGuarantor = g ; public Guarantor getGuarantor ( ) return theGuarantor ; ,5.2 类图,5.2.4 关联关系的不同重数

15、与代码的映射,关联关系的不同重数与代码的映射 (3)单向关联(1*) public class Manager private Vector theAccounts; public void addAccount (Account acc) theAccount.addElement ( acc ) ; public void removeAccount (Account acc) theAccount.removeElement(acc); ,5.2 类图,5.2.4 关联关系的不同重数与代码的映射,关联关系的不同重数与代码的映射 (4)双向关联(1,01) public class Account private DebitCard theCard; public DebitCard getCard( ) return theCard; public void addCard ( ) theCard = new DebitCard ( this ) ; public class DebitCard private Account theAccount ; DebitCard (Account a) theAccount = a ; public Account getAccunt ( ) return theAccount ,5.2 类图,5.2.4 关联关

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号