第13章-数码录音机UML建模实例介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第13章数码录音机UML建模实例介本章导读统一建模语言UML对于面向对象软件的分析和设计提供了一个标准化的表示方法。使用UML图能够对复杂的软件系统(包括实时的嵌入式系统)进行建模。13.1数码录音机的需求分析数码录音机是一个用来录制和播放声音的电子设备,内置的麦克风能够把声音录下来并把其存放到一个存储器中,用户可以通过该设备前部的扬声器来播放在任意时刻录制下来的声音片段。数码录音机的体积应该比较小,使用方便,并能使用电池进行供电。该产品在外观上应该简洁大方,操作方便,并能具备以下几个特点:3.1常用UML建模工具1.能够存储10条信息,消息的长度有内置的存储器容量来决定。2.屏幕上的操作菜单要简单,方便用户的使用。3.用户可以直接访问任何的信息。4.具有一个带日历的闹钟,用户可以设置闹钟。闹钟启动后,用户需要按下某个按键或者60秒后,闹钟会停止。5.屏幕上显示当前的日期和时间。另外,当前的操作和用户帮助还要显示在上面。6.屏幕上应该有一个电压指示器,当电池的电量低于一定值时,系统要提示用户需要充电。7.要求具有待机模式,当用户长时间不使用时,系统能进入待机的状态,当用户按下某一个按键时,还可以继续操作,这样可以节省能量。8.数码录音机的声音质量要好,使用8位6Khz的采样频率。3.1常用UML建模工具图13.1系统总体模块图13.1.1外部事件1.系统范围图系统范围图描述了整个系统和外部环境之间的交互,把整个系统看成一个整体,不具体的描述系统的内部实现,只说明系统的参与者和系统之间连接问题。根据上述的系统功能需求的分析,可以得出系统的主要参与者有:用户(user),电池(battery)和时间(time)。2.事件事件是外部环境和系统之间传递的重要消息。对于一个实时系统,系统必须在规定的时间内对外部事件作出响应。13.1.2数码录音机的用例图用例是从使用者的角度所描述的系统的功能。使用者可能是一个人或者某个设备。每个用例表示对系统使用的一种方法,每个用例完成后产生不同的结果。在本系统中共有6个用例。数码录音机的用例图如图13.3所示。13.1.2数码录音机的用例图UserRecordamessagePlaybackamessageDeleteamessageSetthealarmtimeSettheclocktimeWatchthetime图13.3用例图13.1.2数码录音机的用例图1.记录一条信息(Recordamessage)使用者在录制的信息时,要将信息存储在某个目录中,所以在记录一条信息时首先是选中要某个存储目录,按下“录音”(Recording)键。如果在该位置已经有一条存储信息,该记录将被删除。系统开始通过麦克风录音,直到用户按下“停止”(Stop)键或者是将系统的内存耗尽。2.回放一条信息(Playbackamessage)用户找到某个信息的存储位置,然后按“播放”(Play)按钮。如果在该位置有信息,则系统通过扬声器回放该声音,直到播放完毕或是用户按下‘停止’按钮。13.1.2数码录音机的用例图3.删除一条信息(Deleteamessage)用户选中某个信息的存储位置,按下“删除”(Delete)按钮,该位置存储的信息将被永久的删除,并释放其占用的内存空间。4.定时闹钟(Setthealarmtime)用户可以设定是否开启或是关闭闹钟,以及响铃的时间。这些操作在闹钟菜单中进行设置。5.设定系统的时钟(Settheclocktime)用户可以通过此设定系统的时钟来调整和校准系统的时间,也可将系统的时间改为当前时区的时间。6.显示系统时间(Watchthetime)用户可以查看屏幕上显示的系统当前时间和日期。13.1.3用例场景用例的内容描述使我们对系统的功能有了一个整体的认知,可以知道有哪些参与者会与系统发生交互,每一个参与者需要系统为它提供什么样的服务。用例描述的是参与者与系统之间的对话,但是这个对话的细节并没有在用例图中表述出来,针对每一个用例可以用事件流来描述其内容细节。场景就是用来描述系统与外部参与者之间的交互行为。比如,我们必须要研究在系统回放声音的时候,如果电池电量不足以及当系统播放声音时闹钟响起来,这两种情况系统将如何处理。播放声音信息的用例场景的事件流如表13.2所示。13.1.3用例场景当播放声音时闹铃响起来时,系统将如何处理呢?设计时给闹钟响铃一个较高的优先级,回放声音时闹钟响铃的场景的事件流描述如表13.3所示。系统可以关闭显示屏幕的背景灯、麦克风和扬声器。这些部件在系统中都是要耗费大量电池电量的。通过关闭这些功能可以节省能源以及延长电池的使用寿命。当电池电量不足的时候能够向系统发出报警,系统能关闭所有外设并切换到待机状态。当用户给电池充电后,系统将离开待机模式。当系统处于待机模式时,将所有信息保存在内存中。当系统进入待机模式,被闹钟唤醒,然后接收到电量不足的警告后,重新进入待机模式场景的事件流如表13.4所示。13.2数码录音机中的类图前面介绍了系统的需求分析,下面将根据已有的需求,给出问题整体解决方案的类图。图中将包含系统需要的主要的类以及其相互关系。13.2.1数码录音系统中的对象建立类图的第一步是找出系统中的相关的对象。在本系统中涉及的对象描述如表13.5所示。13.2.2数码录音机中的类图使用者通过Display类(显示器)和keyboard(键盘)与系统交互。这些都是被动对象,因此系统提供了一个UserInterface(用户接口)类来管理上述的交互行为。UserInterface类依赖AudioContoller(音频控制器)类来完成其任务。13.2.2数码录音机中的类图Display+On()+Off()UserInterface+setUserModel()+Alarm!()Keyboard+getLastKey()Battery+getLevel()AlarmClock+getTime()+getDate()+getAlarm()+getAlarmState()+setAlarmstate()AudioController+playMessage(A:Message)+recordMessage()+deleteMessage(A:Message)+playAlarm()+stop()MessageMemory+newMessage()+deleteMessage()+getMessage()1Microphone+getSample()Speaker+playSample()AudioInput+recordCompressedAudioBlock()+selectinputFilter()AudioOutput+playCompressedAudioBlock()+playAudioBlock(Block)+selectOutputFilter()Message+getAudioBlock()+appendAudioBlock()+getHeader()+setHeader()*图13.4数字录音机系统类13.2.2数码录音机中的类图AlarmClocksubsystemUserInterfacesubsystemMessageMemorysubsystemBatterysubsystemAudiosubsystem图13.5数字录音机的子系统13.2.2数码录音机中的类图1.音频子系统类图(AudioSubsystem)每条信息是由一组音频块组成,而每个音频块又包含了一组音频样本。音频子系统总是记录或是回放一个完整的音频块。音频的输入类AudioInput和输出类AudioOutput是实时工作的,Timer类是硬件定时器的封装类,它为AudioInput和AudioOutput类提供精确定时。Display+On()+Off()UserInterface+setUserModel()+Alarm!()Keyboard+getLastKey()Battery+getLevel()AlarmClock+getTime()+getDate()+getAlarm()+getAlarmState()+setAlarmstate()AudioController+playMessage(A:Message)+recordMessage()+deleteMessage(A:Message)+playAlarm()+stop()MessageMemory+newMessage()+deleteMessage()+getMessage()1Microphone+getSample()Speaker+playSample()AudioInput+recordCompressedAudioBlock()+selectinputFilter()AudioOutput+playCompressedAudioBlock()+playAudioBlock(Block)+selectOutputFilter()Message+getAudioBlock()+appendAudioBlock()+getHeader()+setHeader()*图13.6音频子系统类图13.2.2数码录音机中的类图回放一条信息和记录一条信息是一个比较复杂的过程,需要精确的定时以及和硬件进行交互。因此在系统中使用3个不同的类来播放信息。而且,这样的设计能够很容易将系统扩展成可以处理包含2声道音频块或使用管道压缩技术的立体声信息。13.2.2数码录音机中的类图Message+getAudioBlock()+appendAudioBlock()+getHeader()+setHeader()AudioBlock+getSample()+addSample()isasequenceof10..*SoundSampleAudioController+playMessage(A:Message)+recordMessage()+deleteMessage(A:Message)+playAlarm()+stop()playsAudioOutput+playCompressedAudioBlock()+playAudioBlock(Block)+selectOutputFilter()Speaker+playSample()isasequenceof*0..*playsplays图13.7声音信息的内部表示13.2.2数码录音机中的类图:UserInterface:AudioController:Message:AudioOutput:Speaker1:playMessage()2:getAudioBlock()3:playCompressedAudioBlock()4:playSample()5:playSample()6:playSample()7:getAudioBlock()8:playCompressedAudioBlock()9:playSample()10:playSample()11:playSample()图13.8回放信息的顺序图13.2.2数码录音机中的类图2.信息内存子系统类图(MessageMemorySubsystem)MessageMemory类主要负责管理系统的存储空间,它维护了一个目录来保存已有的信息,同时为新信息分配存储空间。用户接口通过MessageMemory类取得已有的信息清单,但不能对其进行修改。只能通过AudioController类来修改MessageMemory管理的内容。用户可以通过MessageMemory类的deleteMessage删除一条信息。实际上deleteMessage将调用AudioController类中的相关方法对信息进行删除。删除一条正在播放信息的情况如图13.9所示。13.2.2数码录音机中的类图Display+On

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功