- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
软件设计与实践
课程主要内容软件设计根底VisualC#.NET根底VisualC#.NET控件及其应用图形图像和多媒体编程文件操作组件设计数据库编程企业人事管理系统案例图像处理系统案例
软件设计根底软件设计任务 软件设计的任务是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。
软件设计根底软件设计要素 软件设计包括软件的结构设计,数据设计,接口设计和过程设计。结构设计是指:定义软件系统各主要部件之间的关系。数据设计是指:将模型转换成数据结构的定义。接口设计是指:软件内部,软件和操作系统间以及软件和人之间如何通信。过程设计是指:系统结构部件转换成软件的过程描述。
表示软件结构的图形工具层次图和HIPO图层次图表示软件层次结构结构图软件设计根底
软件设计根底订单处理软件层次图〔H图〕
IBM公司创造的HIPO图:层次图+输入/处理/输出图(H图)(IPO图)(HierachyInputProcessOutput)软件设计根底
软件设计根底确定能够供货模块的IPO图
软件设计根底软件设计原那么单一职责原那么:就一个类而言,应该只有一个引起它变化的原因。
???例:如果开发一个计算器小程序,只用一个类就可以实现。但这个类就违反了单一职责原那么,因为这个类不但有计算逻辑,还用来显示了。所以除了计算外,显示也会引起这个类的变化。如果现在想改成控制台程序呢?容易改吗?
软件设计根底开-闭原那么:软件实体〔类,方法等〕,应该可以扩展,但不能修改。
???如何到达这样要求? 抽象化与继承。在面向对象语言中,可以创立固定却能够描述一组任意个可能行为的抽象体。这个抽象体就是抽象基类。 模块可能对抽象体进行操作。它对于更改是封闭的。同时通过从这个抽象体派生,可以扩展此模块的行为。
软件设计根底CS游戏中:士兵用枪杀敌
软件设计根底依赖倒置原那么:〔1〕高层模块不应该依赖底层模块。两个都应该依赖抽象。〔2〕抽象不应该依赖细节。细节应该依赖抽象。
“依赖抽象,不要依赖具体”要针对接口编程,不要针对实现编程例:母亲给孩子讲故事,只要给她一本书,她就可以照着书给孩子讲故事了。
class?Book{????public?String?getContent(){??????return?xxxxxxxxxxxxxxxxxx;?????}????}??class?Mother{????public?void?narrate(Book?book){???Console.WriteLine(妈妈开始讲故事);??????????Console.WriteLine(book.getContent());???}????}????public?class?Program{????staticvoidMain(string[]args){?????Mother?mother?=?new?Mother();???????mother.narrate(new?Book());????}???}??软件设计根底
让这位母亲讲一下报纸上的故事class?Newspaper{????public?String?getContent(){????????return?yyyyyyyyyyyyyyyyy;??????}??}???软件设计根底
这里母亲是高层模块,负责复杂的业务逻辑;类书和类报纸是低层模块,负责根本的原子操作;假设修改类母亲,会给程序带来不必要的风险。??将类母亲修改为依赖接口,类书和类报纸各自实现接口,类母亲通过接口间接与类书或者类报纸发生联系,那么会大大降低修改类母亲的几率。引入一个抽象的接口Ireader读物,只要是带字的都属于读物。interface?IReader{???????String?getContent();???}具体的读物类实现这个接口。软件设计根底
软件设计根底里氏替换原那么:子类应该能替换掉它的父类。它表述为一个行为对父类可行的,对子类也一定可行。里氏代换原那么说明了我们不能乱用继承
?例:矩形,正方形 长方形的长和宽和正方形的长和宽明显有不同的特点。正方形继承长方形是错误的,正确的写法是我们可以把正方形和长方形抽象出来,再让正方形和长方形继承这个抽象类,从而这两个类互不影响,各实现各的功能。
软件设计根底接口隔离原那么: 这个原那么要求我们定义多个不同的专门接口,而不要依赖一个大而全的
文档评论(0)