江苏大学计算机工程系面向对象技术第3讲类与对象关系建模面向对象技术内容提要概念数据建模概述类图与对象图类的确定类间关系确定建模方法与实例面向对象技术概念数据建模概述在完成用例建模之后,便可以进行其他系统分析活动,而概念数据建模是最重要的分析活动之一。概念数据建模是对组织数据的描绘,它以一种独立于实现的方式说明了数据的结构和数据之间的相互关系,为后续的分析设计提供了基础。面向对象技术概念数据建模概述概念数据建模的过程面向对象技术概念数据建模概述概念数据建模在系统分析中的作用面向对象技术概念数据建模概述如何进行概念数据建模?必须包括以数据为中心的问题和调查,而不是以过程、逻辑或用户界面为中心,从对业务性质的透彻理解导出数据模型,也可以通过审查系统内部处理的特定业务文档——计算机显示、报表和业务表单来收集。开发准确而完整的数据模型要考虑的问题类:业务的主题/客体是什么?什么类型的人、地点、事物和材料被用于这个业务或者和这个业务交互?每个对象可能存在多少实例?面向对象技术概念数据建模概述如何进行概念数据建模?开发准确而完整的数据模型要考虑的问题(续)属性:需要维护关于对象的什么数据?什么特征描述各个对象?对象在什么基础上被引用、选择、限定、整理和分类?对象的一个特性能有多少个值?对给定的一个对象,特性是必须的还是可选的?标识符:什么独有特性区分相同类型的各个对象?这个区别特性是随着时间变化还是持久的?即使在我们知道一个对象存在的时候,该对象的这个特性可以缺少吗?对象可以通过一个数字序列标识吗?关联、聚合和组合:对象之间存在什么关系?一个关系是部分整体的那种吗?如果是,一个对象可以在没有另一个时存在吗?一个关系中涉及了多个对象吗?关系是同类对象之间的吗?参与一个关系的对象的基数是什么?面向对象技术概念数据建模概述如何进行概念数据建模?开发准确而完整的数据模型要考虑的问题(续)泛化:一个对象是“一种”或另一个对象的“一种”吗?对象形成一个比较一般到比较特殊的层次吗?面向对象技术概念数据建模概述Mark咖啡机控制软件设计加热器,开关保温盘,开关保温盘传感器加热传感器冲煮按钮减压阀门面向对象技术概念数据建模概述Mark咖啡机控制软件设计基本接口namespaceCoffeeMaker{publicenumWarmerPlateStatus{//保温盘WARMER_EMPTY,POT_EMPTY,POT_NOT_EMPTY}publicenumBoilerStatus{//加热器EMPTY,NOT_EMPTY}publicenumBrewButtonStatus{//冲煮按钮PUSHED,NOT_PUSHED}publicenumWarmerState{//保温ON,OFF}publicenumIndicatorState{//指示灯ON,OFF}publicenumReliefValveState{//减压阀OPEN,CLOSED}面向对象技术概念数据建模概述Mark咖啡机控制软件设计基本接口namespaceCoffeeMaker{……publicinterfaceCoffeeMakerAPI{WarmerPlateStatusGetWarmerPlateStatus();BoilerStatusGetBoilerStatus();BrewButtonStatusGetBrewButtonStatus();voidSetBoilerState(BoilerStates);voidSetWarmerState(WarmerStates);voidSetIndicatorState(IndicatorStates);voidSetReliefValvelState(ReliefValvelStates);}}面向对象技术概念数据建模概述Mark咖啡机控制软件设计类设计ButtonLightCoffeeMakerBoilerWarmerPlateBoilerSensorBoilerHeaterPlateHeaterPlateSensorHeaterSensor面向对象技术概念数据建模概述Mark咖啡机控制软件设计存在问题如何实现这些类,只是一个函数调用的转换器,水蒸气类publicclassLight{publicvoidOn(){CoffeeMaker.api.SetIndicatorState(IndicatorState.ON);}publicvoidOff(){CoffeeMaker.api.SetIndicatorState(IndicatorState.OFF);}}面向对象技术概念数据建模概述Mark咖啡机控制软件设计存在问题虚构的抽象publicinterfaceHeater{voidTurnOn();voidTurnOff();}publicinterfaceSensor{intSensor();}面向对象技术概念数据建模概述Mark咖啡机控制软件设计如何改进:根据功能抽象HotWaterSourceContainmentVessel面向对象技术概念数据建模概述Mark咖啡机控制软件设计如何改进:追加用户...