第07讲_类与类图

上传人:门**** 文档编号:243358064 上传时间:2024-09-21 格式:PPT 页数:37 大小:3.18MB
返回 下载 相关 举报
第07讲_类与类图_第1页
第1页 / 共37页
第07讲_类与类图_第2页
第2页 / 共37页
第07讲_类与类图_第3页
第3页 / 共37页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,类与类图,回顾,用例规约:用例的文字描述,用例的核心,进行用例阐述,成功场景(正常事件流的描述),扩展场景(备选事件流),约束等,需要解决的,问题,类图,概要,类图以反映类的结构,(,属性、操作,),以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法,类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象,类图举例,类图中的事物及,解释,从上到下分为三部分,分别是类名、属性和操作。类名是必须有的,类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等,类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等,可见性,-,代表,private,+,代表,public,#,代表,protected,也可以使用图形表示,返回值类型,操作名称,斜体为抽象操作,缺省值,类名,斜体为抽象类,属性名称,参数列表,举例,Employee,+employeeID:Integer,-,Employeename:String,.,+setEmployeeDetails,(),+getEmployeeDetails,(),-,setSalary(,salary:Float,),#getSalary,():,Float,.,举例,Washing Machine,Brand name,Model name,Serial number,Capacity,Add clothes( ),Add detergent( ),Remove clothes( ),Take dirty clothes as input and produce clean clothes as output,类名,类的属性,类的操作,类的职责,职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。,斜体为抽象类,类图中的事物及解释,接口,:,一组操作的集合,只有操作的声明而没有实现,抽象类,:,不能被实例化的类,一般至少包含一个抽象操作,模版类,:,一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类,(标准图形),(变体图形),接口,抽象类,模版参数,模版类,类图中的关系及,解释,(,1,),关联,关系,描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关 联关系语义较弱。也有两种语义较强,分别是聚合与组合,UML,表示法,角色,类的角色是,“,事物,“,多重性,(用数字和*表示),1,*,:,1,个或多个,1,个类图有,1,个或多个类,1,个类属于,1,个或多个类图,方向,双向关联(省略箭头),名字,关系的名字是,“,使用,”,实例,不带箭头也可以,举例,Manager,Company,Works For,Manager,Company,Employee,Employer,FourWheeledVehicle,Door,1,4,聚合关系,:,特殊关联关系,指明一个聚集(整体)和组成部分之间的关系,组合关系,:,语义更强的聚合,部分和整体具有相同的生命周期,UML,表示法,UML,表示法,(空心菱形),实例,类图包含有事物和关系,类图不存在了,事物和关系还可用于其它的类图,(实心菱形),实例,类与关联关系之间有组合关系,类不存在了,则相应的关联关系也不存在,聚合举例,FourWheeledVehicle,Door,1,4,Seat,Wheel,4,2. 5,组合举例,Building,Bulidingname,NumberofFloors,setName(),setNumberofFloors(),Floor,floorNumber,NumberofRooms,getFloorNumber(),getNumberofRooms(),Room,roomNumber,roomLocation,getRoomNumber(),getRoomLocation(),1,12,1,18,类图中的关系及解释,(,2,),泛化,关系,在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间,UML,表示法,关联、泛化、实现、依赖都是一种关系,类、接口都是一种事物,泛化举例,Employee,ClericalStaff,SoftwareEngineer,Manager,SalesManager,ProductionManager,类图中的关系及解释,(,3,),实现,关系,对应于类和接口之间的关系,UML,表示法,类,Circle,、,Rectangle,实现了接口,Shape,的操作,类图中的关系及解释,(,4,),依赖,关系,描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式,,例如,绑定,(bind),、友元,(friend),等,UML,表示法,模板类,Stack,定义了栈相关的操作;,IntStack,将参数,T,与实际类型,int,绑定,,使得所有操作都针对,int,类型的数据,类,Memento,和类,Originator,建立了友元依赖关系,以便,Originator,使用,Memento,的私有变量,state,依赖关系,类图与代码的,映射,C+,代码,c,lass,Vehicle,public:,virtual,int,Start(),= 0;,virtual,int,Stop(),= 0;,virtual,int,Run(float,fSpeed,),= 0;,private:,float,fMaxSpeed,;,;,Java,代码,public abstract class,Vehicle,public abstract,int,Start();,public abstract,int,Stop();,public abstract,int,Run(float,fSpeed,);,private float,fMaxSpeed,;,关联关系的映射,C+,代码,class Dialog,private:,Button btnOK,;,Button btnCancel,;,TextBox txtInfo,;,;,class Button,;,class TextBox,;,组合关系,代码表现为,Dialog,的属性有,Button,和,TextBox,的对象,泛化关系的,映射,Java,代码,public class SavingsAccount extends Account, ,C+,代码,class SavingsAccount : public Account, ;,实现关系的映射,C+,代码,class,Shape,public:,virtual void,Draw() = 0;,;,class Circle : public Shape,public:,void,Draw();,Private:,Point,ptCenter,;,int,nRadius,;,;,Java,代码,public interface Shape,public abstract,void Draw();,public class Circle implements Shape,public void,Draw();,private Point,ptCenter,;,private,int,nRadius,;,在,C+,语言里面,使用抽象类代替接口,使用泛化关系代替实现关系,在,Java,语言里面,有相应的关键字,interface,、,implements,依赖关系的,映射,绑定依赖,C+,代码,template,class Stack,private:,int size;,public:,int Push(T elem);,int Pop();,const T,;,typedef Stack FloatStack;,C+,代码(编译器生成),class FloatStack,private:,int size;,public:,int Push(float elem);,int Pop();,const float,;,如何建立类图,分析问题域,确定需求;,寻找类,确定类的含义和职责;,定义类的属性和操作;,确定类之间的关系;,精化类和类间的关系;,绘制类图。,寻找类的方法(,1,),使用名词,/,动词寻找类:,收集相关信息,补充的需求规格说明,用例,项目说明文档,其他文档,分析信息,名词、名词短语,类或属性,动词、动词短语,操作,寻找类的方法(,2,),使用,CRC,分析法寻找类:,C-class,(类),R-responsibility,(职责),C-collaboration,(协作),CRC,分析法是根据类所要扮演的职责来确定类。,脑力风暴收集信息。,关键业务用类表示,其它卡片作为属性。,案例,李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。,发现类,李小平,是一个爱书之,人,,,家里,各类,书籍,已过千册,而平时又时常有,朋友,外借,因此需要一个,个人图书管理系统,。该系统应该能够将书籍的,基本信息,按,计算机类,、,非计算机类,分别建档,实现按,书名,、,作者,、,类别,、,出版社,等,关键字,的组合查询,功能,。在使用该系统录入,新书籍,时,系统,会自动按,规则,生成,书号,,可以修改,信息,,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行,记录,,可对,外借情况列表,打印。另外,还希望能够对书籍的,购买金额,、,册数,按,特定时间周期,进行统计。,筛选备选类,“李小平”、“人”、“家里”很明显是系统外的概念,无须对其建模;,而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模;,很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。,“基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模;,“功能”、“新书籍”、“信息”、“记录”都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉;,筛选修选类,“计算机类”、“非计算机类”是该系统中图书的两大分类,因此应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”,以减少歧义;,“外借情况”则是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要的角色是“朋友”,借阅主体。虽然到本系统中并不需要建立“朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将“外借情况”改名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表”;,“购买金额”、“册数”都是统计的结果,都是一个数字,因此不用将其建模,而“特定时限”则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类,书籍列表,也就是执行统计的主体。,得到候选类,在使用“名词动词法”寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过咬文嚼字,书籍 计算机类书籍 非计算机类书籍,借阅记录 借阅记录列表 书籍列表,关联分析建模,多重性分析建模,职责分析,书籍类:从需求描述中,可找到,书名、类别、作者、出版社,;同时从统计的需要中,可得知“,定价,”也是一个关键的成员变量。,书籍列表类:书籍列表就是全部的藏书列表,其主要的成员方法是新增、修改、查询(按关键字查询)、统计(按特定时限统计册数与金额)。,借阅记录类:借阅人(朋友)、借阅时间。,借阅记录列表类:主要职责就是添加记录(借出)、删除记录(归还)以及打印借阅记录,小结,类,设计类,类的关系,实验,08,主要用例的,设计类(属性和方法),设计类图(类之间的关系),谢谢,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!