欢迎来到天天文库
浏览记录
ID:12432851
大小:325.50 KB
页数:8页
时间:2018-07-17
《面向对象设计(ood)思想》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、面向对象设计(OOD)思想(C#)面向对象分析(道法自然)面向对象的思维方式:面向对象是围绕对象和类来分析、设计软件系统的。面向对象分析:面向对象分析的主要任务是根基用户的需求,建立一个准确的、完整的、一致的系统模型。在面向对象的分析过程里,项目组通过分析软件的功能性需求,得到一个理想化的系统模型,该模型更多的侧重于描述我们需求解决的问题是什么---我们称这种模型为分析模型。面向对象分析与面向对象设计的区别:1、在侧重点上,面向对象分析侧重于理解问题,描述软件做什么,而面向对象设计侧重于理解解决方案,描述软件如何做。2、面向对象分析一般只考虑理想的设计,不关心
2、技术和实现的细节,而面向对象设计更具体、更详细、更接近真实的代码的设计方案。3、在设计结果的描述方式上,分析阶段侧重描述对象的行为,设计阶段侧重于描述对象的属性和方法。4、面向对象分析只关注功能性需求,而面向对象设计既关注功能性需求,也关注非功能性需求。5、面向对象分析的产生的系统模型通常规模较小,而面向对象的设计产生的系统模型规模较大,内容也比较完整、详尽。用例驱动的面向对象分析:面向对象分析的过程包括:1、从用例中提取实体对象和实体类。提取实体对象的方法,依据用例描述中出现的名词和名词短语来提取实体对象,必须对原始的名词和名词短语进行筛选。得到实体对象后,
3、对实体对象进行归纳、抽象出实体类。2、提取属性3、提取关系4、添加边界类5、添加控制类6、绘制类图7、绘制顺序图8、编制术语表有了思想才能飞翔,缺乏灵活就象少了轮子的汽车,难以飞奔。为了更好的理解设计思想,结合一个尽可能简洁的实例来说明OOD、设计模式及重构。通过下面的代码,详细地阐述面向对象设计思想。一、传统过程化设计思想假定我们要设计一个媒体播放器(只从软件设计的角度,不涉及硬件)。该媒体播放器目前只支持音频文件mp3和wav。按照结构化设计思想,设计出来的播放器的代码如下:面向对象设计(OOD)思想(C#)有了思想才能飞翔,缺乏灵活就象少了轮子的汽车,难
4、以飞奔。为了更好的理解设计思想,结合一个尽可能简洁的实例来说明OOD、设计模式及重构。通过下面的代码,详细地阐述面向对象设计思想。一、传统过程化设计思想假定我们要设计一个媒体播放器(只从软件设计的角度,不涉及硬件)。该媒体播放器目前只支持音频文件mp3和wav。按照结构化设计思想,设计出来的播放器的代码如下:Code1publicclassMediaPlayer2{3privatevoidPlayMp3()4{5MessageBox.Show("Playthemp3file.");6}78privatevoidPlayWav()9{10MessageBox.S
5、how("Playthewavfile.");11}1213publicvoidPlay(stringaudioType)14{15switch(audioType.ToLower())16{17case("mp3"):18PlayMp3();19break;20case("wav"):21PlayWav();22break;23}24}25}从传统的过程化设计思想来看,这是一段既实用又简洁的代码。如果,客户又提出新的要求:要播放器不仅仅播放mp3和wav文件,还要播放其他音频文件如wma、mp4等,为此我们要不断地增加相应地播放方法和修改条件语句,直止条件语
6、句足够长。如果,客户感到这个媒体播放器功能太少了,只能闻其声,不能见其人,太单一。如果在听着优美音乐的同时又能看到歌唱者潇洒、英俊的舞姿那就更好了。从代码设计的角度看,他们希望媒体播放器支持视频文件了。也许你会想,不会再增加视频这方面的代码,可以,在增加视频媒体的播放方法,在修改条件判断语句,如果还有其他,还可以同样地增加、修改。到此你也许会提出,要是不修改或很少修改原来的代码就能增添其他功能该多好啊!这样看,原来的软件设计结构似乎有点问题。事实上,随着功能的不断增加,你越来越发现这个设计非常的糟糕,因为它根本没有为未来的需求变更提供最起码的扩展。为了应接不暇
7、的变更需求,你不得不不厌其烦地修改原来的代码,使其适应需求变化,甚至在修改代码时,由于过多的代码依赖关系弄得人焦头烂额,直止一塌糊涂。二、面向对象设计思想还是以设计一个媒体播放器为例,设计要求相同。不访我们换个设计思路利用面向对象设计思想(OOD)来做做看如何!根据OOD的思想,我们应该把mp3和wav分别看作是两个独立的对象。代码设计如下:Code1publicclassMP32{3publicvoidPlay()4{5MessageBox.Show("Playthemp3file.");6}7}89publicclassWAV10{11publicvoid
8、Play()12{13MessageB
此文档下载收益归作者所有