【文档说明】面向对象的设计汇总课件.ppt,共(26)页,235.501 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44876.html
以下为本文档部分文字说明:
1第5章面向对象的设计ObjectOrientedDesign5.7任务管理重点用UML描述实时系统5.7.1实时系统特点5.7.2实时系统建模描述的主要内容5.7.3面向对象和实时系统概念5.7.4UML用于实时建模中2实施应用实时操作系统硬件接口传感器激励器环
境图5-145一个实时系统的例子实时系统的环境:35.7.1实时系统特点5.7.2实时系统建模描述的主要内容时间线是最重要的事件驱动进程并发执行对非功能需求要求高非确定性时间要求异步、事件处理通信并发和同步系统的分布45.7.3面向对象和实时系统概念1)活动
的类和对象(activeclass)活动类,并发执行“单元”UML中,活动类用粗线方框表示:Communicationsupervisor:commmanager图5-146活动对象及内部机构Por
t:CommunicationportInput:MessageBufferOutput:MessageBuffer如图52)通信(Communication)(1)最常用的通信实现机制操作调用:发送一条同步消息给一个对象,调用者等待操作完成并返回.同步:指定两条线程的同
步点.当一个线程到达指定的同步点后,等待另一个线程的到耒,而后,交换信息,并发执行.共享内存:将一块内存专用作通信区.邮箱/消息队列:发送一条异步消息,发送者将一条消息放在邮箱后,立继返回继续执行.接收
者到同一点去读消息,并处理消息.6将并发线程放在不同的计算机上实现.调用线程时,标识它调用的一个对象的操作,然后把请求放入RPC库中,RPC在网络上找到该对象,将请求打包,并通过网络发送给目标对象.接收方,将请求转为本地格式,执行
请求的调用.当调用完成时,将结果以同样方式返回给发送方.RPC即是一种通信机制,又是一种同步机制.远程过程调用RPC:7(2)通信中相关概念事件(Event)在实时系统中,事件是系统活动的驱动器在UML中,主要有四种不同类型
的事件条件成真--条件事件收到另一个对象的信号--信号事件收到另一个对象(或对象本身)操作调用--调用事件经过指定时间间隔的事件--时间事件8准备就绪运行等待创建调用结果调度运行时间>50秒调用终止图5-147带有引起状态转移事件的活动对象状态如图9信号(Signal)UML中将信号定
义为“可能发生的命名事件”是对象之间异步通信的规格说明.《signal》Signal{abstract}《signal》physical{abstract}《signal》logical{abstract}《signal》Synchronization《s
ignal》MouseMove《signal》KeyPressed《signal》ObjectDrop《signal》PerformCommand图5-148信号类的层次性10消息(Message)UML中消息的类型简单
消息表示普通的控制流同步消息一个嵌套控制流,表示一个操作调用异步消息异步控制流中,没有直接的返回给调用者,发送者发送完消息后,不需要等待消息处理完成而是继续执行同步问题不正确的共享访问—使用互斥机制解决低效率资源利用—挂起等待的线
程.调度器调度死锁—两个线程互相等待对方的资源饿死—一个线程总是得不执行.划分优先级解决解决同步问题与线程调度有关:优先级高的线程易得到系统控制权;调度参数化,选择调度算法;调用sleep等待11(3)在java中实现并发同步机制ClassDem
oThreadextendsThread{publicvoidrun(){try{//Doforeverfor(;;){//synchronousmessagetosystem.outobjectsystem.out.println(“Hello”)//Asynchronousmessage
placedinglobalmailbox//NeedsDefinitionofclasssignalandMailboxelsewheresignals=newsignal(“AsynchHello”);Global_mailb
ox.Put(s);//waitsfor10millisecondssleep(10);}}catch(InterruptedExecptione)}}12Publicstaticvoidmain(string[]arg){//Createaninstanceofthea
ctiveclass(thread)DemoThreadt1=newDemoThread();//startexecutiont1.start();//CreateanotherinstanceoftheactiveclassDe
moTHreadt2=newDemoThread();//Startexecutiont2.start();}}135.7.4UML用于实时建模中UML可以定义的信息时间并发异步事件同步分发14房
屋告警系统-传感器图传感器发送的消息有ACK,NAK或告警信号图5-149告警系统中的传感器《ActiveClass》传感器{abstract}+id:AddressSelfTest()Activate()DeActivate()图像
传感器与设备有关的配置参数SelfTest()Activate()DeActivate()热传感器与设备有关的配置参数SelfTest()Activate()DeActivate()声音传感器与设备有关的配置参数SelfTest()Activate(
)DeActivate()15房屋告警系统-告警器图图5-150告警系统中的告警器告警器发送的消息有ACK,NAK《ActiveClass》告警器{abstract}+id:AddressSelfTest()Trigger()触发TurnOff()
断开电话告警器与设备有关的配置参数SelfTest()Trigger()TurnOff()光告警器与设备有关的配置参数SelfTest()Trigger()TurnOff()声音告警器与设备有关的配置参数Self
Test()Trigger()TurnOff()16类图图5-151房屋告警系统中的活动对象和静态对象《Persistent》系统配置信息《Persistent》单元配置信息单元处理器日志LCD显示器包装器声音告警器键盘处理器包装器Supervisor超级用户传感器
告警器11..*11..*11..*1..*1..*系统处理器17图5-152房屋告警系统中的信号层次关系信号层次关系图《signal》Signal{abstract}TimeSent:TimeSender:ObjectId《signal》GeneralSignal(一
般信号){abstract}《signal》Sensor(传感器)Signals{abstract}《signal》Alarm(报警)Signals{abstract}《signal》Error《signal》Trigger(触发)《signal》Ack《signal》NAK《signal》Al
arm《signal》TurnOff(断路)《signal》Activate《signal》Deactivate《signal》Heartbeat(跳动)《signal》SelfTest18状态图图5-153状态图中的并发
子状态激活阶段告警器自检激活传感器设备传感器自检系统被激活自检/发送ACKNAK自检告警器传感器激活命令/发送ACK/发送ACK初始化线程循环创建设备表创建单元处理器NAK成功激活失败NAK19系统停止系统被激活激活失败激活传感器激
活告警器初始化单元处理器“激活系统”命令图5-154复杂状态图复杂状态图20顺序图:系统处理器:单元处理器:传感器:告警器:单元配置信息激活读配置同步返回配置信息异步简单自检ACK激活自检ACKACKACKAB循环处
理每一个告警器和传感器图5-155告警器激活序列图B-A<5秒21:声音告警:supervisor:日志:系统处理器2c.2触发2c.1存储(Date,Time,Cell,Sensor):电话告警:声音告警:单元处理器:照相单元传感器2c.告警
2b.触发2a.触发1.告警图5-156传感器协作图协作图22活动图等待信号告警激活关闭超时触发告警器触发告警器A触发告警器B触发告警器X报告给系统告警(给系统处理器)请求超时信号激活消息处理关闭消息处理超时消息处理在独立的活动图中描述给实时
OS发来的超时信号排序图5-157告警器活动图输入事件23组件和展开图图5-158房屋告警系统的展开器用户面板《Thread》告警系统处理器《Thread》传感器《Thread》单元处理器《Thread》告警器传感器告警器主单元1111..*11..*24实时系统分类:硬实时,考虑容
错性软实时系统经常是嵌入式系统实时系统特点:时间并发执行的线程非确定性实时系统建模:描述时间要求并发性异步通信同步通信分布活动对象和活动类:体现了实时和面向对象集成有自己控制线程被实现成进程或线程具体实现要操作系统支持总结25消息:简单消息同步消息异步消息
实时系统中通信:操作调用邮箱消息队列共享内存同步远过程调用UML中事件:时间事件调用事件信号事件条件成真总结26本章结束2022年11月24日