《《类图和对象》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《类图和对象》PPT课件.ppt(46页珍藏版)》请在三一办公上搜索。
1、第5章 类图和对象图,面向对象分析与设计&UML,2,5.1 类的定义,面向对象分析与设计&UML,3,5.1.1 类的属性,可见性属性名:类型多重性次序=初值特性,+size:Area=(100,100)#visibility:Boolean=falsecolors:Color3points:Point2.*orderedname:String0.1,面向对象分析与设计&UML,4,5.1.2 类的操作,可见性操作名(参数列表):返回值类型特性,+display():Location+hide()#create()-attachXWindow(xwing:XwindowPtr),面向对象分析
2、与设计&UML,5,5.2 类之间的关系,常见的类之间的关系包括:关联、聚集、组合、泛化、依赖等.,面向对象分析与设计&UML,6,5.2.1 关联,关联(association)是模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链(Link)的描述.,面向对象分析与设计&UML,7,5.2.1 关联,1.关联名,用来描述关联的作用.,面向对象分析与设计&UML,8,5.2.1 关联,2.关联的角色,关联的两端可以以某种角色参与关联,如果不标注角色则隐含用类名作为角色名.,角色的多重性,表示可以有多少个对象参与该关联.,面向对象分析与设计&UML,9,5.2.1 关联
3、,3.关联类,/Company.javapublic class Company private String companyName;public Person employee;/Person.javapublic class Person private int personName;public Company employer;/Contract.javapublic class Contract private Double salary;,面向对象分析与设计&UML,10,5.2.1 关联,4.关联的约束,面向对象分析与设计&UML,11,5.2.1 关联,5.限定关联,限定符,
4、关联的属性,面向对象分析与设计&UML,12,5.2.1 关联,6.关联的种类,(1)自反关联,public class EnginePart public EnginePart theEnginePart;,(2)二元关联,(3)N元关联,面向对象分析与设计&UML,13,5.2.2 聚集与组合,聚集(aggregation)是一种特殊的关联,表示类之间的整体与部分关系.,public class Circle public int radius;Style style;,public class Style Color color;boolean isFilled;,面向对象分析与设计&U
5、ML,14,5.2.2 聚集与组合,组合(composition)是一种特殊的聚集,强调整体和部分具有相同的生命期.,public class Circle public int radius;Point center;,public class Style int x,y;,面向对象分析与设计&UML,15,5.2.3 泛化关系,泛化关系指一般元素和特殊元素之间的分类关系.在OOPL中称为继承.,面向对象分析与设计&UML,16,5.2.3 泛化关系,面向对象分析与设计&UML,17,5.2.4 依赖关系,依赖关系也称使用关系.,调用,一个类调用另一个类的方法参数,一个类的方法使用另一个类作
6、为形式参数发送,消息的发送者与接收者之间的关系实例化,一个类的方法创建了另一个的实例,面向对象分析与设计&UML,18,5.2.4 依赖关系,class MyDependentClass.void myFunction1(MyReferencedClass r).MyReferencedClass myFunction2().void myFunction3()MyReferencedClass m,MyDependentClassatt:intmyFunction(),MyReferencedClass,依赖(引用一个类),参数,or 返回类型,or 局部变量,面向对象分析与设计&UML,1
7、9,5.3 派生属性和派生关联,派生属性(关联)指可以由其他属性()关联计算得到的属性,名字前加”/”.,面向对象分析与设计&UML,20,5.4 抽象类和接口,抽象类,接口,面向对象分析与设计&UML,21,5.4 抽象类和接口,interface MyAbstractClass.class MyClass implements MyInterface.,UML 符号-接口的实现描述,面向对象分析与设计&UML,22,5.5 版型,版型(stereotype)是UML的3种扩展机制之一.版型是建模人员在已有的构造块上派生出新的构造块,这些新的构造块与特定问题相关.版型可以应用于所有类型的模型
8、元素.,系统预定义的版型,用户自义的版型,面向对象分析与设计&UML,23,5.6 边界类、控制类和实体类,UML中三种主要的类版型边界类,boundary class控制类,control class实体类,entity class,引入多种类版型帮助分析和设计人员确定系统中的类.,面向对象分析与设计&UML,24,5.6.1 边界类,边界类位于系统与外界的交界处,包括:,用户界面类,如:窗口、对话框、报表类等通讯协议类,如:TCP/IP的类直接与外部设备交互的类直接与外部系统交互的类,边界类的UML表示方法:,面向对象分析与设计&UML,25,5.6.1 边界类,通过用例图可以确定需要的边
9、界类,每个Actor/User case对至少需要一个边界类.,但并不是每个Actor/Use case都需要生成惟一边界类,多个actor启动同一use case可以使用同一边界类.,面向对象分析与设计&UML,26,5.6.2 实体类,实体类保存要放进持久存储体(数据库/文件等)的信息.,实体类通过事件流和交互图发现,采用目标领域术语命名.通常实体类对应数据库中的表,其属性对应表的字段,但实体类与数据库中的表不一定是一一对应关系.,面向对象分析与设计&UML,27,5.6.3 控制类,控制类是负责管理或控制其他类工作的类.,每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个
10、用例间共用.控制较少接收消息,发出较多消息.,面向对象分析与设计&UML,28,5.7 类图,类加上它们之间的关系就构成类图,其中包含接口、包、关系等元素,同时也可以包含对象、链等实例.类图描述类和类之间的静态关系.,面向对象分析与设计&UML,29,5.7.1 类图的抽象层次,概念层类图,描述应用领域的概念.,说明层类图,描述软件的接口部分,不是实现部分.,实现层类图考虑实现问题,提供类的细节.,面向对象分析与设计&UML,30,5.7.2 构造类图,根据用例描述中的名词确定候选类.使用CRC分析法寻找类,CRC指:类(class)、职责(responsibility)、协作(collabo
11、ration).根据边界类、控制类和实体类的划分来帮助发现类.参考设计模式来确定类.根据软件开发过程的指导寻找类,如:UP,XP等.,寻找类的方法,构造类图时注意,不要试图使用所有的符号.不要过早陷入细节,根据阶段、层次逐步细化.构造完成要将模型与目标问题对照验证其是否合理.,面向对象分析与设计&UML,31,5.7.2 构造类图,研究分析问题领域,确定系统需求.确定类,明确类的含义和职责,确定属性和操作.确定类之间的关系.调整和细化类及类之间的关系.绘制类图并增加相应的说明.,建立类图的步骤,面向对象分析与设计&UML,32,5.8 领域分析,建立类图的过程就是对领域及其解决方案的分析与设计
12、过程.领域分析包括:通过对某一领域中的已有应用系统、理论、技术、开发历史等的研究,来标识、收集、组织、分析和表示领域模型及软件体系结构的过程;根据这一过程得到的结果.,面向对象分析与设计&UML,33,5.9 OO设计的原则,开闭原则(Open/Closed Principle,OCP)Liskov替换原则(Liskov Substitution Principle,LSP)依赖倒置原则(Dependency Inversion Principle,DSP)接口分离原则(Interface Segregation Principle,ISP),面向对象分析与设计&UML,34,5.9.1 开闭
13、原则,开闭原则指的是一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的.,其目的是在写模块时,应该尽量使得模块可以扩展,并且在扩展时不需要对模块的源代码进行修改.,为达到开闭原则,设计时就尽量使用接口进行封闭,采用抽象机制,并利用OO中的多态性技术.,面向对象分析与设计&UML,35,5.9.1 开闭原则,例:某输出类Output中包含一个output方法,该方法可能使用多种不同的打印机,如:HP、EPSON、Canon,每种打印机都有不同的print方法。,设计方案1,void output(int printType)if(printType=1)Hp prt=new Hp();
14、prt.print(args);else if(printType=2)Epson prt=new Epson();prt.print(args);else,面向对象分析与设计&UML,36,5.9.1 开闭原则,设计方案2,void output(Printer printer)printer.print(args);,如何增加打印机类型?,面向对象分析与设计&UML,37,5.9.2 Liskov替换原则,定义:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P,在所有对象o1被代换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型.,Jav
15、a等语言中是否允许左图中的继承,即子类使用较低访问权限覆盖父类的方法呢?,不允许,这样违背了Liskov替换原则.,面向对象分析与设计&UML,38,5.9.3 依赖倒置原则,定义1:抽象不应该依赖于细节,细节应该依赖于抽象.,定义2:要针对接口编程,不要针对实现编程.,设计人员希望遵守”开-闭”原则,倒置依赖关系是达到要求的途径.,面向对象分析与设计&UML,39,5.9.4 接口分离原则,使用多个专门的接口比使用单一的总接口要好.,面向对象分析与设计&UML,40,5.9.4 接口分离原则,一个真实的例子:某全文查找引擎的系统设计.,违反接口分离原则,面向对象分析与设计&UML,41,5.
16、9.4 接口分离原则,探索器接口索引生成器接口搜索结果集接口,功能接口的划分:,面向对象分析与设计&UML,42,5.9.6 设计过程中注意的问题,遵守OO设计原则.不同类中相似方法的名称应该相同.遵守已有的约定俗成的习惯.尽量减少消息模式的数目.只要可能,使消息具有一致的模式,以利于理解.设计简单的类.类的职责要明确,不要在类中提供太多的服务,应该从类名可以比较容易推断出用途.泛化结构的深度要适当.定义简单的方法.一个方法内不要包含过多的功能.,面向对象分析与设计&UML,43,5.9.6 设计过程中注意的问题,好的设计的变动轨迹:,面向对象分析与设计&UML,44,5.10 对象图,对象图表示地组对象及它们之间的关系.是系统详细状态在某一时刻的快照,表示复杂的类图的一个实例.,对象图的建模元素:对象和链,对象图在UML建模中使用有限,用于表达数据结构的示例,了解系统在某个特定时刻的具体情况.,面向对象分析与设计&UML,45,5.10 对象图,类图,对象图,面向对象分析与设计&UML,46,作业,建立”笔记本维修系统”的类模型,